beta_tools 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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