beta_tools 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. data/.gitignore +11 -0
  2. data/Capfile +2 -0
  3. data/Gemfile +4 -0
  4. data/README +7 -0
  5. data/Rakefile +7 -0
  6. data/beta_tools.gemspec +31 -0
  7. data/bin/deploy +9 -0
  8. data/bin/documentation_daemon +12 -0
  9. data/bin/loginToUrl +6 -0
  10. data/bin/onVpn +6 -0
  11. data/bin/pub +91 -0
  12. data/bin/query_solr +11 -0
  13. data/bin/solrWebApp +6 -0
  14. data/conf/schema.xml +220 -0
  15. data/config/deploy.rb +44 -0
  16. data/config.ru +2 -0
  17. data/docs/#next_design.mmd# +0 -0
  18. data/features/deploy.feature +9 -0
  19. data/features/git.feature +15 -0
  20. data/features/maven.feature +21 -0
  21. data/features/step_definitions/deploy_steps.rb +11 -0
  22. data/features/step_definitions/git_steps.rb +20 -0
  23. data/features/step_definitions/maven_steps.rb +35 -0
  24. data/features/support/env.rb +8 -0
  25. data/int/it_tools/suite_it_tools.rb +2 -0
  26. data/int/it_tools/test_integ1.rb +17 -0
  27. data/lib/beta_tools/version.rb +3 -0
  28. data/lib/beta_tools.rb +5 -0
  29. data/lib/it_tools/calc.rb +14 -0
  30. data/lib/it_tools/config.ru +2 -0
  31. data/lib/it_tools/environment.rb +86 -0
  32. data/lib/it_tools/git.rb +3 -0
  33. data/lib/it_tools/html_publish.rb +287 -0
  34. data/lib/it_tools/mail.rb +21 -0
  35. data/lib/it_tools/maven.rb +101 -0
  36. data/lib/it_tools/md5.rb +4 -0
  37. data/lib/it_tools/multipart.rb +78 -0
  38. data/lib/it_tools/network_tools.rb +72 -0
  39. data/lib/it_tools/options.rb +46 -0
  40. data/lib/it_tools/pub_driver.rb +188 -0
  41. data/lib/it_tools/publisher2.rb +232 -0
  42. data/lib/it_tools/sample.rb +9 -0
  43. data/lib/it_tools/shared.rb +22 -0
  44. data/lib/it_tools/solr.rb +157 -0
  45. data/lib/it_tools/views/search_results.erb +16 -0
  46. data/log/thin.log +177 -0
  47. data/spec/it_tools/deploy_spec.rb +20 -0
  48. data/spec/spec_helper.rb +0 -0
  49. data/test/bin/test_pub.rb +30 -0
  50. data/test/cleaner.rb +6 -0
  51. data/test/driver.rb +24 -0
  52. data/test/integration/tp.rb +107 -0
  53. data/test/it_tools/for_debugger.rb +4 -0
  54. data/test/it_tools/publisher2.rb +13 -0
  55. data/test/it_tools/suite_it_tools.rb +6 -0
  56. data/test/it_tools/suite_it_tools.rb~ +13 -0
  57. data/test/it_tools/test_deploy.rb +83 -0
  58. data/test/it_tools/test_html_publish.rb +54 -0
  59. data/test/it_tools/test_maven.rb +31 -0
  60. data/test/it_tools/test_multipart.rb +31 -0
  61. data/test/it_tools/test_network_tools.rb +14 -0
  62. data/test/it_tools/test_publisher2.rb +42 -0
  63. data/test/it_tools/test_publisher2_support.rb +16 -0
  64. data/test/it_tools/test_sample.rb +10 -0
  65. data/test/it_tools/test_shared.rb +36 -0
  66. data/test/it_tools/test_solr.rb +22 -0
  67. data/test/it_tools/test_solr2.rb +22 -0
  68. data/testdata/assembly_pom.xml +157 -0
  69. data/testdata/desir.txt +39 -0
  70. data/testdata/ear_pom.xml +82 -0
  71. data/testdata/java.html +524 -0
  72. data/testdata/pom.xml +174 -0
  73. data/testdata/publish/src_dir/#arch.mmd# +0 -0
  74. data/testdata/publish/src_dir/ajax-loader.gif +0 -0
  75. data/testdata/publish/src_dir/file1.mmd +5 -0
  76. data/testdata/publish/src_dir/file2.mmd +3 -0
  77. data/testdata/publish/src_dir/file3.abc +0 -0
  78. data/testdata/publish/src_dir/file4.mmd +3 -0
  79. data/testdata/publish/src_dir/help.png +0 -0
  80. data/testdata/publish/src_dir/images/linux.jpeg +0 -0
  81. data/testdata/publish/src_dir/inputStyles.css +0 -0
  82. data/testdata/publish/src_dir/search.html +0 -0
  83. data/testdata/publish/src_dir/search.js +0 -0
  84. data/testdata/publish/target_dir/.@arch.html +0 -0
  85. data/testdata/publish/target_dir/file1.html +7 -0
  86. data/testdata/publish/target_dir/file2.html +5 -0
  87. data/testdata/publish/target_dir/search.js +0 -0
  88. data/testdata/publish/target_dir_static/.@arch.html +1 -0
  89. data/testdata/publish/target_dir_static/file1.html +7 -0
  90. data/testdata/publish/target_dir_static/index.html +1 -0
  91. data/testdata/publish/target_dir_static/style.css +61 -0
  92. data/testdata/ruby.mmd +404 -0
  93. data/testdata/simple.mmd +3 -0
  94. data/testdata/simple.xml +3 -0
  95. data/testdata/small.txt +2 -0
  96. data/testdata/utf8_chars.txt +1 -0
  97. metadata +338 -0
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ *~
6
+ TAGS
7
+ nbproject/log.txt
8
+ sinatra.log
9
+ log.txt
10
+ tmp/
11
+ doc
data/Capfile ADDED
@@ -0,0 +1,2 @@
1
+ load 'deploy' if respond_to?(:namespace) # cap2 differentiator
2
+ load 'config/deploy'
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in beta_tools.gemspec
4
+ gemspec
data/README ADDED
@@ -0,0 +1,7 @@
1
+ To run unit tests:
2
+
3
+ ruby test/it_tools/suite_it_tools.rb
4
+
5
+ Integration tests:
6
+
7
+ ruby test/integration/tp.rb
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require 'cucumber/rake/task'
3
+
4
+ Cucumber::Rake::Task.new do |t|
5
+ # t.cucumber_opts = "--format pretty"
6
+ t.cucumber_opts = "--format progress"
7
+ end
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "beta_tools/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "beta_tools"
7
+ s.version = BetaTools::VERSION
8
+ s.authors = ["Fenton Travers"]
9
+ s.email = ["fenton.travers@oracle.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{tools that are working and not in active development, to cutdown on rake install time}
12
+ s.description = %q{tools that are working and not in active development, to cutdown on rake install time}
13
+ s.rubyforge_project = "beta_tools"
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_dependency "pygments.rb"
21
+ s.add_dependency "RedCloth"
22
+ s.add_dependency "redcarpet"
23
+ s.add_dependency "shotgun"
24
+ s.add_dependency "sinatra"
25
+ s.add_dependency "mime-types"
26
+ s.add_dependency "sanitize"
27
+ s.add_dependency "xml-simple"
28
+ s.add_dependency "it_tools"
29
+ s.add_dependency "thin"
30
+
31
+ end
data/bin/deploy ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'it_tools/deploy'
4
+
5
+ ops = Deployment::Options.new
6
+
7
+ env = Deployment::Environment.new(ops.options)
8
+
9
+ env.deploy
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../lib/it_tools/solr'
4
+ require 'thin'
5
+
6
+ rackup_file = "#{File.dirname(__FILE__)}/../lib/it_tools/config.ru"
7
+
8
+ argv = ARGV
9
+ argv << ["-R", rackup_file] unless ARGV.include?("-R")
10
+ argv << ["-p", "2003"] unless ARGV.include?("-p")
11
+ argv << ["-e", "production"] unless ARGV.include?("-e")
12
+ Thin::Runner.new(argv.flatten).run!
data/bin/loginToUrl ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'it_tools/network_tools'
4
+
5
+ vpnTools = NetworkTools::VpnTools.new
6
+ puts vpnTools.login_to_url
data/bin/onVpn ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'it_tools/network_tools'
4
+
5
+ vpnTools = NetworkTools::VpnTools.new
6
+ puts vpnTools.on_vpn
data/bin/pub ADDED
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'logger'
4
+ require 'optparse'
5
+ require_relative '../test/it_tools/test_publisher2_support'
6
+ require_relative '../lib/it_tools/pub_driver'
7
+ require_relative '../lib/it_tools/network_tools'
8
+
9
+ src_dir = '/home/fenton/projects/documentation'
10
+ dest_dir = '/home/fenton/bin/website'
11
+ stat_dir = '/home/fenton/bin/website_static'
12
+ solr_search_files_dir = '/home/fenton/projects/documentation'
13
+ index_category = 'public'
14
+
15
+ # src_dir = '/home/fenton/projects/beta_tools/testdata/publish/src_dir'
16
+ # dest_dir = '/home/fenton/projects/beta_tools/testdata/publish/target_dir'
17
+ # stat_dir = '/home/fenton/projects/beta_tools/testdata/publish/target_dir_static'
18
+
19
+ #support = PublisherSupport.new
20
+ #support.before src_dir
21
+
22
+ ARGV[0] = '-s'
23
+ ARGV[1] = src_dir
24
+ ARGV[2] = '-w'
25
+ ARGV[3] = dest_dir
26
+ ARGV[4] = '-t'
27
+ ARGV[5] = stat_dir
28
+ ARGV[6] = '-d'
29
+ ARGV[7] = 'debug'
30
+ ARGV[8] = '-l'
31
+ ARGV[9] = solr_search_files_dir
32
+ ARGV[10] = '-c'
33
+ ARGV[11] = index_category
34
+
35
+
36
+ pub = PubDriver::Pub.new
37
+ pub.publish_locally2
38
+
39
+ # support.after [dest_dir, stat_dir]
40
+
41
+ # -----------------------------------------------------
42
+
43
+
44
+ src_dir = '/home/fenton/projects/work-doco/docs'
45
+ dest_dir = '/home/fenton/bin/work-doco'
46
+ stat_dir = '/home/fenton/bin/work-doco_static'
47
+ solr_search_files_dir = '/home/fenton/projects/documentation'
48
+ index_category = 'work'
49
+
50
+ ARGV[0] = '-s'
51
+ ARGV[1] = src_dir
52
+ ARGV[2] = '-w'
53
+ ARGV[3] = dest_dir
54
+ ARGV[4] = '-t'
55
+ ARGV[5] = stat_dir
56
+ ARGV[6] = '-d'
57
+ ARGV[7] = 'debug'
58
+ ARGV[8] = '-l'
59
+ ARGV[9] = solr_search_files_dir
60
+ ARGV[10] = '-c'
61
+ ARGV[11] = index_category
62
+
63
+ pub = PubDriver::Pub.new
64
+ pub.publish_locally2
65
+
66
+ # ---------------------------------------------------------
67
+ vpnTools = NetworkTools::VpnTools.new
68
+ if not vpnTools.on_vpn
69
+ ops = { :wdoc => '/home/fenton/bin/work-doco_static/',
70
+ :doc => '/home/fenton/bin/website_static/',
71
+ :int_docs => '/home/fenton/website/',
72
+ :int_wdocs => '/home/fenton/work-doco/',
73
+ :ext_docs => '/home/ftravers/spicevan.com/current/public/',
74
+ :int_host => 'l1',
75
+ :ext_host => 'dh'}
76
+ pub = PubDriver::Pub.new
77
+ pub.publish_remote ops
78
+
79
+ rsync_ops = {}
80
+ rsync_ops[:from_dir] = '/home/fenton/bin/website/'
81
+ rsync_ops[:to_host] = 'searcher'
82
+ rsync_ops[:to_dir] = '/data/documentation/'
83
+ rsync_ops[:as_user] = 'docs'
84
+ pub.rsync_it rsync_ops
85
+
86
+ rsync_ops[:from_dir] = '/home/fenton/bin/work-doco/'
87
+ rsync_ops[:to_host] = 'searcher'
88
+ rsync_ops[:to_dir] = '/data/documentation/'
89
+ rsync_ops[:as_user] = 'docs'
90
+ pub.rsync_it rsync_ops
91
+ end
data/bin/query_solr ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/it_tools/solr'
4
+
5
+ options = { :solr_host => '127.0.0.1', :solr_port => '8983' }
6
+
7
+ query = Solr::Query.new options
8
+
9
+ params = { "query" => "web" }
10
+ resp = query.do_query params
11
+ p resp
data/bin/solrWebApp ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'it_tools/solr'
4
+
5
+ wa = Solr::Upload.new
6
+ puts wa.foo
data/conf/schema.xml ADDED
@@ -0,0 +1,220 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+
3
+ <schema name="example" version="1.2">
4
+ <types>
5
+ field type definitions. The "name" attribute is
6
+ just a label to be used by field definitions. The "class"
7
+ attribute and any other attributes determine the real
8
+ behavior of the fieldType.
9
+ Class names starting with "solr" refer to java classes in the
10
+ org.apache.solr.analysis package.
11
+
12
+ The StrField type is not analyzed, but indexed/stored verbatim.
13
+ - StrField and TextField support an optional compressThreshold which
14
+ limits compression (if enabled in the derived fields) to values which
15
+ exceed a certain size (in characters).
16
+ <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
17
+
18
+ <!-- boolean type: "true" or "false" -->
19
+ <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
20
+ <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
21
+ <fieldtype name="binary" class="solr.BinaryField"/>
22
+ <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
23
+ <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
24
+ <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
25
+ <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
26
+ <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
27
+ <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
28
+ <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
29
+ <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
30
+ <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0"/>
31
+
32
+ <!-- A Trie based date field for faster date range queries and date faceting. -->
33
+ <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>
34
+ <fieldType name="pint" class="solr.IntField" omitNorms="true"/>
35
+ <fieldType name="plong" class="solr.LongField" omitNorms="true"/>
36
+ <fieldType name="pfloat" class="solr.FloatField" omitNorms="true"/>
37
+ <fieldType name="pdouble" class="solr.DoubleField" omitNorms="true"/>
38
+ <fieldType name="pdate" class="solr.DateField" sortMissingLast="true" omitNorms="true"/>
39
+
40
+ <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
41
+ <fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/>
42
+ <fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/>
43
+ <fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/>
44
+ <fieldType name="random" class="solr.RandomSortField" indexed="true" />
45
+ <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
46
+ <analyzer>
47
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
48
+ </analyzer>
49
+ </fieldType>
50
+ <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
51
+ <analyzer type="index">
52
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
53
+ <filter class="solr.StopFilterFactory"
54
+ ignoreCase="true"
55
+ words="stopwords.txt"
56
+ enablePositionIncrements="true"
57
+ />
58
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
59
+ <filter class="solr.LowerCaseFilterFactory"/>
60
+ <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
61
+ </analyzer>
62
+ <analyzer type="query">
63
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
64
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
65
+ <filter class="solr.StopFilterFactory"
66
+ ignoreCase="true"
67
+ words="stopwords.txt"
68
+ enablePositionIncrements="true"
69
+ />
70
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
71
+ <filter class="solr.LowerCaseFilterFactory"/>
72
+ <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
73
+ </analyzer>
74
+ </fieldType>
75
+ <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100" >
76
+ <analyzer>
77
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
78
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
79
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
80
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
81
+ <filter class="solr.LowerCaseFilterFactory"/>
82
+ <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
83
+ <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
84
+ </analyzer>
85
+ </fieldType>
86
+ <fieldType name="textgen" class="solr.TextField" positionIncrementGap="100">
87
+ <analyzer type="index">
88
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
89
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
90
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
91
+ <filter class="solr.LowerCaseFilterFactory"/>
92
+ </analyzer>
93
+ <analyzer type="query">
94
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
95
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
96
+ <filter class="solr.StopFilterFactory"
97
+ ignoreCase="true"
98
+ words="stopwords.txt"
99
+ enablePositionIncrements="true"
100
+ />
101
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
102
+ <filter class="solr.LowerCaseFilterFactory"/>
103
+ </analyzer>
104
+ </fieldType>
105
+ <fieldType name="text_rev" class="solr.TextField" positionIncrementGap="100">
106
+ <analyzer type="index">
107
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
108
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
109
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
110
+ <filter class="solr.LowerCaseFilterFactory"/>
111
+ <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
112
+ maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
113
+ </analyzer>
114
+ <analyzer type="query">
115
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
116
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
117
+ <filter class="solr.StopFilterFactory"
118
+ ignoreCase="true"
119
+ words="stopwords.txt"
120
+ enablePositionIncrements="true"
121
+ />
122
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
123
+ <filter class="solr.LowerCaseFilterFactory"/>
124
+ </analyzer>
125
+ </fieldType>
126
+ <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
127
+ <analyzer>
128
+ <tokenizer class="solr.KeywordTokenizerFactory"/>
129
+ <filter class="solr.LowerCaseFilterFactory" />
130
+ <filter class="solr.TrimFilterFactory" />
131
+ <filter class="solr.PatternReplaceFilterFactory"
132
+ pattern="([^a-z])" replacement="" replace="all"
133
+ />
134
+ </analyzer>
135
+ </fieldType>
136
+
137
+ <fieldtype name="phonetic" stored="false" indexed="true" class="solr.TextField" >
138
+ <analyzer>
139
+ <tokenizer class="solr.StandardTokenizerFactory"/>
140
+ <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
141
+ </analyzer>
142
+ </fieldtype>
143
+
144
+ <fieldtype name="payloads" stored="false" indexed="true" class="solr.TextField" >
145
+ <analyzer>
146
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
147
+ <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
148
+ </analyzer>
149
+ </fieldtype>
150
+ <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
151
+ <analyzer>
152
+ <tokenizer class="solr.KeywordTokenizerFactory"/>
153
+ <filter class="solr.LowerCaseFilterFactory" />
154
+ </analyzer>
155
+ </fieldType>
156
+ <fieldtype name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" />
157
+ </types>
158
+ <fields>
159
+ <field name="id" type="string" indexed="true" stored="true" required="true" />
160
+ <field name="sku" type="textTight" indexed="true" stored="true" omitNorms="true"/>
161
+ <field name="name" type="textgen" indexed="true" stored="true"/>
162
+ <field name="alphaNameSort" type="alphaOnlySort" indexed="true" stored="false"/>
163
+ <field name="manu" type="textgen" indexed="true" stored="true" omitNorms="true"/>
164
+ <field name="cat" type="text_ws" indexed="true" stored="true" multiValued="true" omitNorms="true" />
165
+ <field name="features" type="text" indexed="true" stored="true" multiValued="true"/>
166
+ <field name="includes" type="text" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" />
167
+ <field name="weight" type="float" indexed="true" stored="true"/>
168
+ <field name="price" type="float" indexed="true" stored="true"/>
169
+ <field name="popularity" type="int" indexed="true" stored="true" />
170
+ <field name="inStock" type="boolean" indexed="true" stored="true" />
171
+ <field name="title" type="text" indexed="true" stored="true" multiValued="true"/>
172
+ <field name="subject" type="text" indexed="true" stored="true"/>
173
+ <field name="description" type="text" indexed="true" stored="true"/>
174
+ <field name="comments" type="text" indexed="true" stored="true"/>
175
+ <field name="author" type="textgen" indexed="true" stored="true"/>
176
+ <field name="keywords" type="textgen" indexed="true" stored="true"/>
177
+ <field name="category" type="textgen" indexed="true" stored="true"/>
178
+ <field name="content_type" type="string" indexed="true" stored="true" multiValued="true"/>
179
+ <field name="last_modified" type="date" indexed="true" stored="true"/>
180
+ <field name="links" type="string" indexed="true" stored="true" multiValued="true"/>
181
+
182
+ <field name="body" type="text" indexed="true" stored="true" multiValued="true"/>
183
+ <field name="text" type="text" indexed="true" stored="false" multiValued="true"/>
184
+ <field name="text_rev" type="text_rev" indexed="true" stored="false" multiValued="true"/>
185
+ <field name="manu_exact" type="string" indexed="true" stored="false"/>
186
+ <field name="payloads" type="payloads" indexed="true" stored="true"/>
187
+ <dynamicField name="*_i" type="int" indexed="true" stored="true"/>
188
+ <dynamicField name="*_s" type="string" indexed="true" stored="true"/>
189
+ <dynamicField name="*_l" type="long" indexed="true" stored="true"/>
190
+ <dynamicField name="*_t" type="text" indexed="true" stored="true"/>
191
+ <dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
192
+ <dynamicField name="*_f" type="float" indexed="true" stored="true"/>
193
+ <dynamicField name="*_d" type="double" indexed="true" stored="true"/>
194
+ <dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
195
+
196
+ <!-- some trie-coded dynamic fields for faster range queries -->
197
+ <dynamicField name="*_ti" type="tint" indexed="true" stored="true"/>
198
+ <dynamicField name="*_tl" type="tlong" indexed="true" stored="true"/>
199
+ <dynamicField name="*_tf" type="tfloat" indexed="true" stored="true"/>
200
+ <dynamicField name="*_td" type="tdouble" indexed="true" stored="true"/>
201
+ <dynamicField name="*_tdt" type="tdate" indexed="true" stored="true"/>
202
+
203
+ <dynamicField name="*_pi" type="pint" indexed="true" stored="true"/>
204
+
205
+ <dynamicField name="ignored_*" type="ignored" multiValued="true"/>
206
+ <dynamicField name="attr_*" type="textgen" indexed="true" stored="true" multiValued="true"/>
207
+
208
+ <dynamicField name="random_*" type="random" />
209
+ </fields>
210
+ <uniqueKey>id</uniqueKey>
211
+ <defaultSearchField>text</defaultSearchField>
212
+ <solrQueryParser defaultOperator="OR"/>
213
+ <copyField source="cat" dest="text"/>
214
+ <copyField source="name" dest="text"/>
215
+ <copyField source="manu" dest="text"/>
216
+ <copyField source="features" dest="text"/>
217
+ <copyField source="includes" dest="text"/>
218
+ <copyField source="manu" dest="manu_exact"/>
219
+ <copyField source="body" dest="text"/>
220
+ </schema>
data/config/deploy.rb ADDED
@@ -0,0 +1,44 @@
1
+ #========================
2
+ #CONFIG
3
+ #========================
4
+ set :application, "searcher"
5
+
6
+ set :scm, :git
7
+ set :git_enable_submodules, 1
8
+ set :repository, "ft_git3@spicevan.com:beta_tools.git"
9
+ set :branch, "master"
10
+ set :ssh_options, { :forward_agent => true }
11
+
12
+ set :stage, :production
13
+ set :user, "docs"
14
+ set :use_sudo, false
15
+ set :runner, "docs"
16
+ set :deploy_to, "/data/apps/#{stage}/#{application}"
17
+ set :app_server, :passenger
18
+ set :domain, "searcher"
19
+
20
+ #========================
21
+ #ROLES
22
+ #========================
23
+ role :app, domain
24
+ role :web, domain
25
+ role :db, domain, :primary => true
26
+
27
+ #========================
28
+ #CUSTOM
29
+ #========================
30
+
31
+ namespace :deploy do
32
+ task :start, :roles => :app do
33
+ run "touch #{current_release}/tmp/restart.txt"
34
+ end
35
+
36
+ task :stop, :roles => :app do
37
+ # Do nothing.
38
+ end
39
+
40
+ desc "Restart Application"
41
+ task :restart, :roles => :app do
42
+ run "touch #{current_release}/tmp/restart.txt"
43
+ end
44
+ end
data/config.ru ADDED
@@ -0,0 +1,2 @@
1
+ require File.dirname(__FILE__) + '/lib/it_tools/solr'
2
+ run Rack::URLMap.new "/" => WebApp
File without changes
@@ -0,0 +1,9 @@
1
+ Feature: Deployment
2
+ In order to easily deploy artifacts to their servers
3
+ As the jenkins build server
4
+ I want to be able to deploy all artifacts that I build
5
+
6
+ Scenario: Deploy assembly artifact
7
+ Given I have built the assembly jar
8
+ When I press execute deploy
9
+ Then the artifact should get deployed
@@ -0,0 +1,15 @@
1
+ Feature: GIT Repo Info
2
+ In order to deploy maven artifacts
3
+ As the jenkins build server
4
+ I need to know details about the constructed artifacts
5
+
6
+ Scenario Outline: There are no uncommitted changes in the current project
7
+ Given the git repo: "<git repo directory>"
8
+ Given there are no uncommitted changes in that directory
9
+ When I ask if there are any uncommitted changes
10
+ Then the program should return "<output>"
11
+
12
+ Examples:
13
+ | git repo directory | output |
14
+ | /tmp/git_repo_no_uncommitted | true |
15
+ | /tmp/git_repo_uncommitted | false |
@@ -0,0 +1,21 @@
1
+ Feature: Maven
2
+ In order to deploy maven artifacts
3
+ As the jenkins build server
4
+ I need to know details about the constructed artifact
5
+
6
+ Scenario: I get the correct artifact name for an assembly project
7
+ Given I have an assembly pom.xml
8
+ Given that the assembly jar is built
9
+ When I ask for the artifact name
10
+ Then I should return the name of the assembly jar
11
+
12
+ Scenario Outline: I get the correct artifact name for an assembly project and a regular project
13
+ Given I have an "<input pom>"
14
+ Given its artifact "<artifact>" is built
15
+ When I ask for the artifact name
16
+ Then I should return the name of the "<artifact>"
17
+
18
+ Examples:
19
+ | input pom | artifact |
20
+ | CRMOD_WS_Wriassembly_pom.xml | hrmsToCrmodUserDataIntegration-jar-with-dependencies.jar |
21
+ | autosr2_ear_pom.xml | autoSR2-EAR.ear |
@@ -0,0 +1,11 @@
1
+ Given /^I have built the assembly jar$/ do
2
+ pending # express the regexp above with the code you wish you had
3
+ end
4
+
5
+ When /^I press execute deploy$/ do
6
+ pending # express the regexp above with the code you wish you had
7
+ end
8
+
9
+ Then /^the artifact should get deployed$/ do
10
+ pending # express the regexp above with the code you wish you had
11
+ end
@@ -0,0 +1,20 @@
1
+ Before do
2
+ @git = Git.new
3
+ end
4
+
5
+ Given /^the git repo: "([^"]*)"$/ do |arg1|
6
+ pending # express the regexp above with the code you wish you had
7
+ end
8
+
9
+ Given /^there are no uncommitted changes in that directory$/ do
10
+ pending # express the regexp above with the code you wish you had
11
+ end
12
+
13
+ When /^I ask if there are any uncommitted changes$/ do
14
+ pending # express the regexp above with the code you wish you had
15
+ end
16
+
17
+ Then /^the program should return "([^"]*)"$/ do |arg1|
18
+ pending # express the regexp above with the code you wish you had
19
+ end
20
+
@@ -0,0 +1,35 @@
1
+ Given /^I have an assembly pom\.xml$/ do
2
+ maven = Maven.new "testdata/assembly_pom.xml"
3
+ maven.ops[:artifact_type].should == "assembly"
4
+ end
5
+
6
+ Given /^that the assembly jar is built$/ do
7
+ pending # express the regexp above with the code you wish you had
8
+ end
9
+
10
+ Then /^I should return the name of the assembly jar$/ do
11
+ pending # express the regexp above with the code you wish you had
12
+ end
13
+
14
+ #------------------------------------------------------
15
+
16
+ When /^I ask for the artifact name$/ do
17
+ # @maven.ops[:artifact_name].should == "abc"
18
+ end
19
+
20
+ Then /^I should get the name of the artifact$/ do
21
+ pending # express the regexp above with the code you wish you had
22
+ end
23
+
24
+ Given /^I have an "([^"]*)"$/ do |arg1|
25
+ @maven.ops[:deploy_artifact_type].should == "assembly"
26
+ end
27
+
28
+ Given /^its artifact "([^"]*)" is built$/ do |arg1|
29
+ pending # express the regexp above with the code you wish you had
30
+ end
31
+
32
+ Then /^I should return the name of the "([^"]*)"$/ do |arg1|
33
+ pending # express the regexp above with the code you wish you had
34
+ end
35
+
@@ -0,0 +1,8 @@
1
+ require_relative '../../lib/it_tools/calc'
2
+ require_relative '../../lib/it_tools/deploy'
3
+ require_relative '../../lib/it_tools/maven'
4
+ require_relative '../../lib/it_tools/environment'
5
+ require_relative '../../lib/it_tools/options'
6
+ require_relative '../../lib/it_tools/git'
7
+
8
+
@@ -0,0 +1,2 @@
1
+ require_relative 'test_integ1'
2
+
@@ -0,0 +1,17 @@
1
+ require "test/unit"
2
+ require_relative "../../../it_tools/lib/it_tools/solr.rb"
3
+ require_relative "../../lib/it_tools/html_publish.rb"
4
+
5
+ class TestInteg1 < Test::Unit::TestCase
6
+ def test_convert_upload
7
+ converter = Website::MarkdownConverter.new
8
+ file = "ruby"
9
+ input = file + ".mmd"
10
+ output = file + ".html"
11
+ contents = File.open("testdata/" + input).read
12
+ converted = converter.convert_markdown_contents contents
13
+ solr_url = "http://127.0.0.1:8983/solr/"
14
+ uploader = Solr::Upload.new(:solr_base_url => solr_url )
15
+ uploader.upload_file(output, converted, output)
16
+ end
17
+ end