diff --git a/maven/jruby/src/it/j2ee_jetty_rack/.gitignore b/maven/jruby/src/it/j2ee_jetty_rack/.gitignore new file mode 100644 index 00000000000..5fff1d9c188 --- /dev/null +++ b/maven/jruby/src/it/j2ee_jetty_rack/.gitignore @@ -0,0 +1 @@ +pkg diff --git a/maven/jruby/src/it/j2ee_jetty_rack/.jrubydir b/maven/jruby/src/it/j2ee_jetty_rack/.jrubydir new file mode 100644 index 00000000000..b02dae4d683 --- /dev/null +++ b/maven/jruby/src/it/j2ee_jetty_rack/.jrubydir @@ -0,0 +1,4 @@ +. +config.ru +gems +specifications \ No newline at end of file diff --git a/maven/jruby/src/it/j2ee_jetty_rack/Mavenfile b/maven/jruby/src/it/j2ee_jetty_rack/Mavenfile new file mode 100644 index 00000000000..f4d6832ccf1 --- /dev/null +++ b/maven/jruby/src/it/j2ee_jetty_rack/Mavenfile @@ -0,0 +1,80 @@ +#-*- mode: ruby -*- + +# it is war-file +packaging 'war' + +# get jruby dependencies +properties( 'jruby.version' => '@project.version@', + 'jruby.plugins.version' => '1.0.7', + 'project.build.sourceEncoding' => 'utf-8', + 'public.dir' => '${basedir}/public' ) + +pom( 'org.jruby:jruby', '${jruby.version}' ) + +jar( 'org.jruby.rack:jruby-rack', '1.1.18', + :exclusions => [ 'org.jruby:jruby-complete' ] ) + + +# ruby-maven will dump an equivalent pom.xml +properties[ 'tesla.dump.pom' ] = 'pom.xml' + +# a gem to be used +gem 'flickraw', '0.9.7' + +repository( :url => 'http://rubygems-proxy.torquebox.org/releases', + :id => 'rubygems-releases' ) + +jruby_plugin :gem, :includeRubygemsInResources => true, :includeLibDirectoryInResources => true do + execute_goal :initialize +end + +# not really needed but for completeness: +# pack the war with that ruby-like directory layout +plugin( :war, '2.2', + :warSourceDirectory => '${public.dir}' ) + +resource :directory => '${basedir}', :includes => [ 'config.ru', '.jrubydir' ] + +# start jetty for the tests +plugin( 'org.eclipse.jetty:jetty-maven-plugin', '9.1.3.v20140225', + :path => '/', + :webAppSourceDirectory => '${public.dir}', + :stopPort => 9999, + :stopKey => 'foo' ) do + execute_goal( 'start', :id => 'start jetty', :phase => 'pre-integration-test', :daemon => true ) + execute_goal( 'stop', :id => 'stop jetty', :phase => 'post-integration-test' ) +end + +# download files during the tests +result = nil +execute 'download', :phase => 'integration-test' do + require 'open-uri' + result = open( 'http://localhost:8080' ).string + puts result +end + +# verify the downloads +execute 'check download', :phase => :verify do + expected = 'hello world:' + unless result.match( /^#{expected}/ ) + raise "missed expected string in download: #{expected}" + end + expected = 'self: uri:classloader://config.ru' + unless result.match( /#{expected}/ ) + raise "missed expected string in download: #{expected}" + end + expected = 'PWD: uri:classloader://' + unless result.match( /#{expected}/ ) + raise "missed expected string in download: #{expected}" + end + expected = 'Gem.path: ."uri:classloader://",' + unless result.match( /#{expected}/ ) + raise "missed expected string in download: #{expected}" + end + # TODO get rid off this over normalization + expected = 'uri:classloader:/gems/flickraw-0.9.7' + unless result.match( /#{expected}/ ) + raise "missed expected string in download: #{expected}" + end +end +# vim: syntax=Ruby diff --git a/maven/jruby/src/it/j2ee_jetty_rack/config.ru b/maven/jruby/src/it/j2ee_jetty_rack/config.ru new file mode 100644 index 00000000000..f1732a912f7 --- /dev/null +++ b/maven/jruby/src/it/j2ee_jetty_rack/config.ru @@ -0,0 +1,19 @@ +#-*- mode: ruby -*- + +use Rack::ShowExceptions + +require 'hello_world' + +run lambda { |env| + require 'flickraw' + [ + 200, + { + 'Content-Type' => 'text/html', + 'Cache-Control' => 'public, max-age=86400' + }, + [ "self: #{__FILE__}\n", "PWD: #{Dir.pwd}\n", "Gem.path: #{Gem.path.inspect}\n", Gem.loaded_specs['flickraw'].gem_dir + "\n", HelloWorld.new + "\n" ] + ] +} + +# vim: syntax=Ruby diff --git a/maven/jruby/src/it/j2ee_jetty_rack/lib/hello_world.rb b/maven/jruby/src/it/j2ee_jetty_rack/lib/hello_world.rb new file mode 100644 index 00000000000..f2c430ad256 --- /dev/null +++ b/maven/jruby/src/it/j2ee_jetty_rack/lib/hello_world.rb @@ -0,0 +1,7 @@ +require 'openssl' + +class HelloWorld < String + def initialize + super "hello world: #{OpenSSL::Random.random_bytes( 16 ).inspect}" + end +end diff --git a/maven/jruby/src/it/j2ee_jetty_rack/pom.xml b/maven/jruby/src/it/j2ee_jetty_rack/pom.xml new file mode 100644 index 00000000000..0dcfb9eeac8 --- /dev/null +++ b/maven/jruby/src/it/j2ee_jetty_rack/pom.xml @@ -0,0 +1,151 @@ + + + 4.0.0 + no_group_id_given + j2ee_jetty_rack + 0.0.0 + war + j2ee_jetty_rack + + @project.version@ + 1.0.7 + pom.xml + ${basedir}/public + utf-8 + 0.1.1 + + + + org.jruby + jruby + ${jruby.version} + pom + + + org.jruby.rack + jruby-rack + 1.1.18 + + + jruby-complete + org.jruby + + + + + rubygems + flickraw + 0.9.7 + gem + + + + + rubygems-releases + http://rubygems-proxy.torquebox.org/releases + + + + + + ${basedir} + + config.ru + .jrubydir + + + + + + de.saumya.mojo + gem-maven-plugin + ${jruby.plugins.version} + + + + initialize + + + + + true + true + + + + maven-war-plugin + 2.2 + + ${public.dir} + + + + org.eclipse.jetty + jetty-maven-plugin + 9.1.3.v20140225 + + + start jetty + pre-integration-test + + start + + + true + + + + stop jetty + post-integration-test + + stop + + + + + / + ${public.dir} + 9999 + foo + + + + io.tesla.polyglot + tesla-polyglot-maven-plugin + ${tesla.version} + + + download + integration-test + + execute + + + download + Mavenfile + + + + check download + verify + + execute + + + check download + Mavenfile + + + + + + io.tesla.polyglot + tesla-polyglot-ruby + ${tesla.version} + + + + + + diff --git a/maven/jruby/src/it/j2ee_jetty_rack/public/WEB-INF/.gitignore b/maven/jruby/src/it/j2ee_jetty_rack/public/WEB-INF/.gitignore new file mode 100644 index 00000000000..16d264c7acb --- /dev/null +++ b/maven/jruby/src/it/j2ee_jetty_rack/public/WEB-INF/.gitignore @@ -0,0 +1,2 @@ +classes +config.ru \ No newline at end of file diff --git a/maven/jruby/src/it/j2ee_jetty_rack/public/WEB-INF/web.xml b/maven/jruby/src/it/j2ee_jetty_rack/public/WEB-INF/web.xml new file mode 100644 index 00000000000..b944d4b3eee --- /dev/null +++ b/maven/jruby/src/it/j2ee_jetty_rack/public/WEB-INF/web.xml @@ -0,0 +1,22 @@ + + + + jruby.rack.layout_class + JRuby::Rack::ClassPathLayout + + + + RackFilter + org.jruby.rack.RackFilter + + + RackFilter + /* + + + + org.jruby.rack.RackServletContextListener + +