leafy-health 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +34 -4
  3. data/.travis.yml +19 -0
  4. data/CHANGELOG.md +7 -0
  5. data/Gemfile +1 -5
  6. data/README.md +10 -116
  7. data/examples/datadog/.gitignore +2 -0
  8. data/examples/datadog/Gemfile +12 -0
  9. data/examples/datadog/Mavenfile +22 -0
  10. data/examples/datadog/README.md +16 -0
  11. data/examples/datadog/lib/java_gauge.rb +20 -0
  12. data/examples/datadog/lib/metrics.rb +18 -0
  13. data/examples/datadog/lib/ruby_gauge.rb +19 -0
  14. data/examples/hellowarld/.gitignore +3 -0
  15. data/examples/hellowarld/Gemfile +15 -0
  16. data/examples/hellowarld/Mavenfile +162 -0
  17. data/examples/hellowarld/README.md +44 -0
  18. data/examples/hellowarld/Rakefile +13 -0
  19. data/examples/hellowarld/WEB-INF/web.xml +31 -0
  20. data/examples/hellowarld/app/hellowarld.rb +55 -0
  21. data/examples/hellowarld/app/views/person.erb +52 -0
  22. data/examples/hellowarld/config.ru +12 -0
  23. data/leafy-complete.gemspec +22 -0
  24. data/leafy-health/.gitignore +4 -0
  25. data/leafy-health/Gemfile +7 -0
  26. data/leafy-health/LICENSE +22 -0
  27. data/leafy-health/README.md +123 -0
  28. data/{Rakefile → leafy-health/Rakefile} +0 -0
  29. data/{leafy-health.gemspec → leafy-health/leafy-health.gemspec} +0 -0
  30. data/{lib → leafy-health/lib}/leafy-health.rb +0 -0
  31. data/{lib → leafy-health/lib}/leafy-health_jars.rb +0 -0
  32. data/{lib → leafy-health/lib}/leafy/health.rb +0 -0
  33. data/{lib → leafy-health/lib}/leafy/health/health_check.rb +0 -0
  34. data/{lib → leafy-health/lib}/leafy/health/registry.rb +0 -0
  35. data/{lib → leafy-health/lib}/leafy/health/version.rb +1 -1
  36. data/{spec → leafy-health/spec}/registry_spec.rb +0 -0
  37. data/{spec → leafy-health/spec}/setup.rb +0 -0
  38. data/leafy-logger/.gitignore +5 -0
  39. data/leafy-logger/Gemfile +9 -0
  40. data/leafy-logger/LICENSE +22 -0
  41. data/leafy-logger/README.md +174 -0
  42. data/leafy-logger/Rakefile +14 -0
  43. data/leafy-logger/leafy-logger.gemspec +32 -0
  44. data/leafy-logger/lib/leafy-logger.rb +1 -0
  45. data/leafy-logger/lib/leafy-logger_jars.rb +33 -0
  46. data/leafy-logger/lib/leafy/logger.rb +1 -0
  47. data/leafy-logger/lib/leafy/logger/appender_factories.rb +89 -0
  48. data/leafy-logger/lib/leafy/logger/factory.rb +141 -0
  49. data/leafy-logger/lib/leafy/logger/version.rb +6 -0
  50. data/leafy-logger/spec/appender_factories_spec.rb +147 -0
  51. data/leafy-logger/spec/factory_spec.rb +176 -0
  52. data/leafy-logger/spec/logging.yml +16 -0
  53. data/leafy-logger/spec/setup.rb +2 -0
  54. data/leafy-metrics/.gitignore +5 -0
  55. data/leafy-metrics/Gemfile +7 -0
  56. data/leafy-metrics/LICENSE +22 -0
  57. data/leafy-metrics/README.md +221 -0
  58. data/leafy-metrics/Rakefile +14 -0
  59. data/leafy-metrics/leafy-metrics.gemspec +29 -0
  60. data/leafy-metrics/lib/leafy-metrics.rb +2 -0
  61. data/leafy-metrics/lib/leafy-metrics_jars.rb +5 -0
  62. data/leafy-metrics/lib/leafy/metrics.rb +2 -0
  63. data/leafy-metrics/lib/leafy/metrics/console_reporter.rb +32 -0
  64. data/leafy-metrics/lib/leafy/metrics/csv_reporter.rb +26 -0
  65. data/leafy-metrics/lib/leafy/metrics/graphite/graphite.rb +28 -0
  66. data/leafy-metrics/lib/leafy/metrics/graphite/graphite_reporter.rb +43 -0
  67. data/leafy-metrics/lib/leafy/metrics/registry.rb +108 -0
  68. data/leafy-metrics/lib/leafy/metrics/reporter.rb +51 -0
  69. data/leafy-metrics/lib/leafy/metrics/version.rb +6 -0
  70. data/leafy-metrics/spec/console_reporter_spec.rb +72 -0
  71. data/leafy-metrics/spec/csv_reporter_spec.rb +75 -0
  72. data/leafy-metrics/spec/graphite_reporter_spec.rb +72 -0
  73. data/leafy-metrics/spec/graphite_spec.rb +23 -0
  74. data/leafy-metrics/spec/registry_spec.rb +106 -0
  75. data/leafy-metrics/spec/setup.rb +10 -0
  76. data/leafy-rack/.gitignore +4 -0
  77. data/leafy-rack/Gemfile +10 -0
  78. data/leafy-rack/LICENSE +22 -0
  79. data/leafy-rack/README.md +155 -0
  80. data/leafy-rack/Rakefile +14 -0
  81. data/leafy-rack/leafy-rack.gemspec +29 -0
  82. data/leafy-rack/lib/leafy-rack.rb +1 -0
  83. data/leafy-rack/lib/leafy-rack_jars.rb +10 -0
  84. data/leafy-rack/lib/leafy/instrumented/basic_instrumented.rb +38 -0
  85. data/leafy-rack/lib/leafy/instrumented/instrumented.rb +27 -0
  86. data/leafy-rack/lib/leafy/json/health_writer.rb +15 -0
  87. data/leafy-rack/lib/leafy/json/json_writer.rb +33 -0
  88. data/leafy-rack/lib/leafy/json/metrics_writer.rb +22 -0
  89. data/leafy-rack/lib/leafy/rack.rb +1 -0
  90. data/leafy-rack/lib/leafy/rack/admin.rb +73 -0
  91. data/leafy-rack/lib/leafy/rack/health.rb +43 -0
  92. data/leafy-rack/lib/leafy/rack/instrumented.rb +20 -0
  93. data/leafy-rack/lib/leafy/rack/metrics.rb +35 -0
  94. data/leafy-rack/lib/leafy/rack/ping.rb +29 -0
  95. data/leafy-rack/lib/leafy/rack/thread_dump.rb +56 -0
  96. data/leafy-rack/lib/leafy/rack/version.rb +6 -0
  97. data/leafy-rack/spec/admin_rack_spec.rb +141 -0
  98. data/leafy-rack/spec/basic_instrumented_spec.rb +31 -0
  99. data/leafy-rack/spec/health_rack_spec.rb +136 -0
  100. data/leafy-rack/spec/health_writer_spec.rb +47 -0
  101. data/leafy-rack/spec/instrumented_rack_spec.rb +37 -0
  102. data/leafy-rack/spec/instrumented_spec.rb +36 -0
  103. data/leafy-rack/spec/metrics_rack_spec.rb +110 -0
  104. data/leafy-rack/spec/metrics_writer_spec.rb +55 -0
  105. data/leafy-rack/spec/ping_rack_spec.rb +63 -0
  106. data/leafy-rack/spec/setup.rb +3 -0
  107. data/leafy-rack/spec/thread_dump_spec.rb +59 -0
  108. metadata +106 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e7c218fee643df0c427cf2efeb235ed4dafb0af2
4
- data.tar.gz: dfea6a68110ea08bdbcd440200740373aceddd2f
3
+ metadata.gz: 8dcd1798270792639a107c6ccf5869135d9022f2
4
+ data.tar.gz: 1f7e29163f2adf8cfa07cd37fd2ecaa07104155f
5
5
  SHA512:
6
- metadata.gz: a8d94307581820fee45866e020a94fe4ff59c5c9f1b80bfa40e77e50f4b4436c206a926e42c6962b3d3f9a3017de5c2c34d8735020c6dcad0eaeef102463f074
7
- data.tar.gz: 3137c1b7110271dd3bb8d8b4e12281627d91427a7f46b10b2165598d8e161b8753313473fcad84acfed65a85d9d01054f3da8ae68336fd37c894ba2e846dc69c
6
+ metadata.gz: 7a0e6c24f21a780d96c5b08ea8e7fa14779844b53c9c002a4e90c0a0ebb769cee58dd8e902c606b26ceaf3082e0534662c6b60eebfcbd13dcc7733d35f73e219
7
+ data.tar.gz: fd552f9fa3ca5d89e58598824e18836115e14773e5b7da29fdc26a6dbc81bc113c80aa345906eae73ff2b993f151fc59212b4363c8ca969c424a4ace0e40386b
data/.gitignore CHANGED
@@ -1,4 +1,34 @@
1
- .yardoc
2
- doc
3
- pkg
4
- *.lock
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /test/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+
12
+ ## Specific to RubyMotion:
13
+ .dat*
14
+ .repl_history
15
+ build/
16
+
17
+ ## Documentation cache and generated files:
18
+ /.yardoc/
19
+ /_yardoc/
20
+ /doc/
21
+ /rdoc/
22
+
23
+ ## Environment normalisation:
24
+ /.bundle/
25
+ /lib/bundler/man/
26
+
27
+ # for a library or gem, you might want to ignore these files since the code is
28
+ # intended to run in multiple environments; otherwise, check them in:
29
+ Gemfile.lock
30
+ .ruby-version
31
+ .ruby-gemset
32
+
33
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
34
+ .rvmrc
@@ -0,0 +1,19 @@
1
+ language: ruby
2
+ rvm:
3
+ - jruby
4
+ - jruby-9.0.0.0-pre1
5
+ env:
6
+ - DIR=leafy-health
7
+ - DIR=leafy-metrics
8
+ - DIR=leafy-rack
9
+ - DIR=examples/hellowarld
10
+
11
+ gemfile: $DIR/Gemfile
12
+ install: cd $DIR; gem install jar-dependencies --development -v '~> 0.1.8'; bundle install --jobs=1 --retry=3 --gemfile Gemfile
13
+
14
+ script: bundle exec rake
15
+
16
+ matrix:
17
+ allow_failures:
18
+ - env: DIR=examples/hellowarld
19
+ rvm: jruby-9.0.0.0-pre1
@@ -0,0 +1,7 @@
1
+ # Changelog
2
+
3
+ ## 0.3.0
4
+
5
+ * [#30](https://github.com/lookout/leafy/pull/30) allow to reconfigure the loggers via yaml or options during runtime
6
+ * [#26](https://github.com/lookout/leafy/issues/26) Admin endpoint URLs are not relative to where the app is being served
7
+
data/Gemfile CHANGED
@@ -1,7 +1,3 @@
1
- #-*- mode: ruby -*-
2
-
3
1
  source 'https://rubygems.org'
4
2
 
5
- gemspec
6
-
7
- # vim: syntax=Ruby
3
+ # dummy Gemfile for travis to run ```bundle install```
data/README.md CHANGED
@@ -1,123 +1,17 @@
1
- # Leafy-Health
1
+ # Leafy
2
2
 
3
- ## installation
3
+ [![Build Status](https://travis-ci.org/lookout/leafy.svg?branch=master)](https://travis-ci.org/lookout/leafy)
4
4
 
5
- via rubygems
6
- ```
7
- gem install leafy-health
8
- ```
9
- or add to your Gemfile
10
- ```
11
- gem 'leafy-health'
12
- ```
5
+ The green way to build Ruby-based web services
13
6
 
14
- installing the gem also takes care of the jar dependencies with jruby-1.7.16+
15
7
 
16
- ## usage
8
+ ## Goals
17
9
 
18
- an instance of the registry ```Leafy::Health::Registry``` can register and unresgister health-checks under a given name. any object with a #call method will do or block on the register method.
10
+ The goal of Leafy is to provide an out-of-the-box set of best practices and tools for building [JRuby](http://jruby.org)-based web services. In its initial form, it is based largely on [Dropwizard](http://dropwizard.io) underneath but this is not a long-term guarantee and may change in the future. As such the APIs exposed by Leafy should be stable regardless of what is "under the hood."
19
11
 
20
- registry = Leafy::Health::Registry.new
12
+ Leafy should provide standard means of:
21
13
 
22
- you can ask the registry which names have already health-checks registered:
23
-
24
- registry.names
25
-
26
- ### simple health check
27
-
28
- simple in the sense that either call returns ```nil``` which means healthy or a message which is the unhealthy state. the message can be any ```String```.
29
-
30
- registry.register( 'simple.block') do
31
- if app.crashed
32
- 'application crashed'
33
- end
34
- end
35
-
36
- or with a health-check object
37
-
38
- class AppCheck < Leafy::Health::HealthCheck
39
- def call
40
- if app.crashed
41
- 'application crashed'
42
- end
43
- end
44
- end
45
- registry.register( 'simple.class', AppCheck.new )
46
-
47
- ### health checks with message on healthy state
48
-
49
- here the call method gets an argument which allows to create both
50
- healthy and unhealthy states with message.
51
-
52
- registry.register( 'app.block') do
53
- if app.crashed
54
- unhealthy( 'application crashed' )
55
- else
56
- healthy( 'application ok' )
57
- end
58
- end
59
-
60
- or with a health-check object
61
-
62
- class AppCheck < Leafy::Health::HealthCheck
63
- def call
64
- if app.crashed
65
- unhealthy( 'application crashed' )
66
- else
67
- healthy( 'application ok' )
68
- end
69
- end
70
- end
71
- registry.register( 'app.class', AppCheck.new )
72
-
73
- ### health checks with structural data as message
74
-
75
- registry.register( 'app.block') do
76
- if app.crashed
77
- unhealthy( :host => 'localhost', :msg => 'not good' )
78
- else
79
- healthy( :host => 'localhost', :msg => 'application ok' )
80
- end
81
- end
82
-
83
- or as health-check object
84
-
85
- class AppCheck < Leafy::Health::HealthCheck
86
- def call
87
- if app.crashed
88
- unhealthy( :host => 'localhost', :msg => 'application crashed' )
89
- else
90
- healthy( :host => 'localhost', :msg => 'application ok' )
91
- end
92
- end
93
- end
94
- registry.register( 'app.class', AppCheck.new )
95
-
96
- ### unregister health checks
97
-
98
- registry.unregister( 'app.class' )
99
-
100
- ### builtin ThreadDeadlockHeathCheck
101
-
102
- registry.register( 'app.deadlock', Leafy::Health::ThreadDeadlockHeathCheck.new )
103
-
104
- ### note
105
-
106
- currently there is not further introspection on the registry and its health-check. with the ```Leafy::Json::HealthWriter``` (from leafy-rack) you can get a json representation of the current **health report**
107
-
108
- Leafy::Json::HealthWriter.to_json( registry.health )
109
-
110
- ## developement
111
-
112
- get all the gems and jars in place
113
-
114
- gem install jar-dependencies --development
115
- bundle install
116
-
117
- for running all specs
118
-
119
- rake
120
-
121
- or
122
-
123
- rspec spec/reporter_spec.rb
14
+ * Tracking metrics
15
+ * Logging
16
+ * Health checks
17
+ * Exposing operations-friendly interfaces
@@ -0,0 +1,2 @@
1
+ target
2
+ Jars.lock
@@ -0,0 +1,12 @@
1
+ #-*- mode: ruby -*-
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'leafy-metrics', :path => '../../leafy-metrics'
6
+
7
+ group 'development' do
8
+ gem 'ruby-maven'
9
+ gem 'rake', '~> 10.2'
10
+ end
11
+
12
+ # vim: syntax=Ruby
@@ -0,0 +1,22 @@
1
+ #-*- mode: ruby -*-
2
+
3
+ repository :id => 'bintray', :url => 'http://dl.bintray.com/lookout/systems'
4
+
5
+ jar 'com.github.lookout:metrics-datadog:0.1.4'
6
+
7
+ # dump Jars.lock
8
+ ################
9
+
10
+ plugin_repository :id => 'sonatype-snapshots', :url => 'https://oss.sonatype.org/content/repositories/snapshots'
11
+
12
+ repository :id => 'rubygems-releases', :url => 'http://rubygems-proxy.torquebox.org/releases'
13
+
14
+ #properties 'jruby.plugins.version' =>
15
+ jruby_plugin! :gem, '1.0.9-SNAPSHOT' do
16
+
17
+ # duplicate dependency here and assume the local gem has the same
18
+ # dependencies as this one here
19
+ execute_goal 'jars-lock', :gems => ['leafy-metrics:0.3.0']
20
+ end
21
+
22
+ # vim: syntax=Ruby
@@ -0,0 +1,16 @@
1
+ # datadog gauge with tags example
2
+
3
+ ## setup
4
+
5
+ execute with jruby
6
+
7
+ # installs all the gems
8
+ bundle install
9
+ # install all the jars and creates Jars.lock for the runtime
10
+ rmvn initialize
11
+
12
+ ## run example
13
+
14
+ needs the datadog agent running and then
15
+
16
+ bundle exec ruby lib/metrics.rb
@@ -0,0 +1,20 @@
1
+ class JavaGauge
2
+ include Java::OrgCourseraMetricsDatadog::Tagged
3
+ include com.codahale.metrics.Gauge
4
+
5
+ def value
6
+ r = Time.now.usec
7
+ p r
8
+ r
9
+ end
10
+
11
+ def name
12
+ 'leafy.demo.usec.java'
13
+ end
14
+
15
+ def tags
16
+ t = [Date::DAYNAMES[Time.now.wday]]
17
+ p t
18
+ t
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ require 'leafy/metrics'
2
+ require 'leafy/metrics/reporter'
3
+ require_relative 'java_gauge'
4
+ require_relative 'ruby_gauge'
5
+
6
+ metrics = Leafy::Metrics::Registry.new
7
+ my = metrics.register_gauge( 'leafy.demo.java.usec', JavaGauge.new )
8
+ my = metrics.register_gauge( 'leafy.demo.ruby.usec', RubyGauge.new )
9
+
10
+ transport = Java::OrgCourseraMetricsDatadogTransport::UdpTransport::Builder.new.build
11
+
12
+ reporter = metrics.reporter_builder( Java::OrgCourseraMetricsDatadog::DatadogReporter ).withTransport(transport).build
13
+
14
+ reporter.start(1, Leafy::Metrics::Reporter::SECONDS)
15
+
16
+ sleep 3
17
+
18
+ reporter.stop
@@ -0,0 +1,19 @@
1
+ class RubyGauge < Leafy::Metrics::Gauge
2
+ include Java::OrgCourseraMetricsDatadog::Tagged
3
+
4
+ def value
5
+ r = Time.now.usec
6
+ p r
7
+ r
8
+ end
9
+
10
+ def name
11
+ 'leafy.demo.usec.ruby'
12
+ end
13
+
14
+ def tags
15
+ t = [Date::DAYNAMES[Time.now.wday]]
16
+ p t
17
+ t
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ .ruby-*
2
+ pkg
3
+ *war
@@ -0,0 +1,15 @@
1
+ #-*- mode: ruby -*-
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'leafy-metrics', :path => '../../leafy-metrics'
6
+ gem 'leafy-health', :path => '../../leafy-health'
7
+ gem 'leafy-rack', :path => '../../leafy-rack'
8
+
9
+ gem 'sinatra'
10
+
11
+ group 'development' do
12
+ gem 'ruby-maven'
13
+ gem 'rake', '~> 10.2'
14
+ end
15
+ # vim: syntax=Ruby
@@ -0,0 +1,162 @@
1
+ #-*- mode: ruby -*-
2
+
3
+ gemfile
4
+
5
+ packaging :war
6
+
7
+ jar( 'org.jruby.rack:jruby-rack', '1.1.18',
8
+ :exclusions => [ 'org.jruby:jruby-complete' ] )
9
+
10
+ gem! 'bundler', '1.7.7'
11
+ # bug in getting all the gems in place via :path
12
+ gem! 'jar-dependencies', '0.1.8'
13
+
14
+ pom 'org.jruby:jruby', '${jruby.version}'
15
+
16
+ properties( 'project.build.sourceEncoding' => 'utf-8',
17
+ 'jruby.version' => '1.7.19')
18
+
19
+ resource do
20
+ directory '${basedir}'
21
+ includes [ 'app/**', 'config.ru' ]
22
+ end
23
+
24
+ resource do
25
+ directory '${basedir}'
26
+ includes [ 'config.ru' ]
27
+ target_path 'WEB-INF'
28
+ end
29
+
30
+ build do
31
+ final_name File.basename( File.expand_path( '.' ) )
32
+ directory 'pkg'
33
+ end
34
+
35
+ # read the Jarfile.lock and embed those jars in WEB-INF/classes
36
+ if File.exists?( 'Jarfile.lock' )
37
+ phase 'generate-resources' do
38
+ plugin :dependency do
39
+ items = []
40
+ File.read( 'Jarfile.lock' ).each_line do |l|
41
+ data = l.sub(/-\ /, '').strip.split(':')
42
+ if data.size > 3
43
+ data = Hash[ [:groupId, :artifactId, :type, :version, :classifier].zip( data ) ]
44
+ data[ :outputDirectory ] = File.join( '${project.build.outputDirectory}',
45
+ data[:groupId].gsub(/[.]/, '/'),
46
+ data[:artifactId],
47
+ data[:version] )
48
+ items << data
49
+ end
50
+ end
51
+ execute_goal( :copy,
52
+ :id => 'copy jar dependencies',
53
+ :artifactItems => items )
54
+ end
55
+ end
56
+ end
57
+
58
+ # Gemfile with references to local gems which again reference local gems
59
+ # does not work with this plugin. so we use our own setup
60
+ plugins.remove plugins.detect { |d| d.artifact_id == 'gem-maven-plugin' }
61
+
62
+ jruby_plugin!( :gem,
63
+ :includeRubygemsInResources => true ) do
64
+ execute_goal :initialize
65
+ end
66
+
67
+
68
+ plugin( :war, '2.2',
69
+ :webAppSourceDirectory => "${basedir}",
70
+ :webXml => 'WEB-INF/web.xml',
71
+ :webResources => [ { :directory => '${basedir}',
72
+ :targetPath => 'WEB-INF',
73
+ :includes => [ 'config.ru' ] } ] )
74
+
75
+ # integration tests
76
+ ###################
77
+
78
+ require 'open-uri'
79
+ results = []
80
+ execute 'download', :phase => 'integration-test' do
81
+ results << open( 'http://localhost:8080/hellowarld/app' ).string
82
+ results << open( 'http://localhost:8080/hellowarld/admin' ).string
83
+ results << open( 'http://localhost:8080/hellowarld/admin/ping' ).string
84
+ results << open( 'http://localhost:8080/hellowarld/admin/health' ).string
85
+ results << open( 'http://localhost:8080/hellowarld/admin/metrics' ).string
86
+ results << open( 'http://localhost:8080/hellowarld/admin/threads' ).read
87
+ results << open( 'http://localhost:8080/hellowarld/ping' ).string
88
+ results << open( 'http://localhost:8080/hellowarld/health' ).string
89
+ results << open( 'http://localhost:8080/hellowarld/metrics' ).string
90
+ results << open( 'http://localhost:8080/hellowarld/threads' ).read
91
+ results.each { |r| puts r[0..20] }
92
+ end
93
+
94
+ # verify the downloads
95
+ require 'json'
96
+ execute 'verify downloads', :phase => :verify do
97
+ sleep 1 #let jetty shut down in peace
98
+ expected = 'christian'
99
+ unless results[0].match( /#{expected}/ )
100
+ raise "missed expected string in download: #{expected}"
101
+ end
102
+ expected = 'menu'
103
+ unless results[1].match( /#{expected}/ )
104
+ raise "missed expected string in download: #{expected}"
105
+ end
106
+ expected = 'pong'
107
+ unless results[2].match( /#{expected}/ )
108
+ raise "missed expected string in download: #{expected}"
109
+ end
110
+ json = JSON.parse( results[3] )
111
+ unless json["app.health"]["healthy"]
112
+ raise "healthy expected"
113
+ end
114
+ json = JSON.parse( results[4] )
115
+ unless json["meters"]["webapp.responseCodes.ok"]["count"] == 1
116
+ raise "one OK request expected"
117
+ end
118
+ unless results[5].length > 10000
119
+ puts result[5]
120
+ raise "expected thread dump to be big"
121
+ end
122
+ expected = 'pong'
123
+ unless results[6].match( /#{expected}/ )
124
+ raise "missed expected string in download: #{expected}"
125
+ end
126
+ json = JSON.parse( results[7] )
127
+ unless json["app.health"]["healthy"]
128
+ raise "healthy expected"
129
+ end
130
+ json = JSON.parse( results[8] )
131
+ unless json["meters"]["webapp.responseCodes.ok"]["count"] == 1
132
+ raise "one OK request expected"
133
+ end
134
+ unless results[9].length > 10000
135
+ puts result[9]
136
+ raise "expected thread dump to be big"
137
+ end
138
+ end
139
+
140
+ # jetty runner
141
+ ##############
142
+
143
+ #plugin( 'org.mortbay.jetty:jetty-maven-plugin', '8.1.14.v20131031',
144
+ # :webAppSourceDirectory => "${basedir}" )
145
+ plugin( 'org.eclipse.jetty:jetty-maven-plugin', '9.3.0.M1',
146
+ :webAppSourceDirectory => "${basedir}",
147
+ :webApp => { :contextPath => '/hellowarld' },
148
+ :stopPort => 9999,
149
+ :stopKey => 'foo' ) do
150
+ execute_goal( 'start', :id => 'start jetty', :phase => 'pre-integration-test', :daemon => true )
151
+ execute_goal( 'stop', :id => 'stop jetty', :phase => 'post-integration-test' )
152
+ end
153
+
154
+
155
+ # tomcat runner
156
+ ###############
157
+ plugin( 'org.codehaus.mojo:tomcat-maven-plugin', '1.1',
158
+ :warSourceDirectory => '${basedir}' )
159
+
160
+ # wildfly runner
161
+ ################
162
+ plugin( 'org.wildfly.plugins:wildfly-maven-plugin:1.0.2.Final' )