typesafehub / sbt-conductr

Typesafe ConductR plugin for sbt
Other
29 stars 22 forks source link

Deploy and run a LagomJava service #232

Closed ignasi35 closed 7 years ago

ignasi35 commented 7 years ago

Fixes #231

Introduces a scripted test that deploys a LagomJava service, awaits until it's reported as started by conduct info and then await's until there's a successful HTTP request via the sandbox service gateway.

ignasi35 commented 7 years ago

ping @huntc, @markusjura, @TimMoore, @jroper (apologies for the ping I don't have permissions to add reviewers to this PR).

ignasi35 commented 7 years ago

The test run failed [info] org.scalatest.exceptions.TestFailedException: Timeout awaiting [lagom-service-impl] to start. because 10sec is a timeout too small for starting that service in a sandbox/Travis env.

ignasi35 commented 7 years ago

While this test deploys and runs a lagom service it's different from lagom-java-service which is focused on asserting the bundle is loaded, listed in conduct info and the install script is generated.

I removed the verifyConductInfo part and now it's clear this and lagom-java-service are different.

ignasi35 commented 7 years ago

Will do lagom-scala-service-execution on a separate PR.

ignasi35 commented 7 years ago

Will do lagom-scala-service-execution on a separate PR.

The moment I add another similar test (implementing it in scala is irrelevant) will introduce opportunities for a refactor. I'm considering a similar approach to https://github.com/lagom/lagom/blob/master/dev/sbt-scripted-tools/src/main/scala/com/lightbend/lagom/sbt/scripted/ScriptedTools.scala that creates a library of tools for all scripted tests in Lagom.

ignasi35 commented 7 years ago

@huntc @markusjura after removing the sleep 5000 the test failed in Travis (not on my local). Apparently, conduct info reported the bundle as started to verifyIsStarted succeeded but the next statement (assertRequest) failed because of an HTTP response 503. Should we investigate that?

Snippet from https://travis-ci.org/typesafehub/sbt-conductr/builds/211309258 :

[info] 
[info] Your system is deployed. Running "conduct info" to observe the cluster.
[info] ID               NAME                #REP  #STR  #RUN
[info] bdfa43d-e5f3504  conductr-haproxy       1     0     1
[info] 3349b6b          eslite                 1     0     1
[info] 1acac1d          cassandra              1     0     0
[info] c5d7847          lagom-service-impl     1     0     0
[info] 
[info] [success] Total time: 70 s, completed Mar 15, 2017 11:39:59 AM <--- indicates completion of `install`
[info] [success] Total time: 21 s, completed Mar 15, 2017 11:40:20 AM <--- indicates completion of `verifyIsStarted lagom-service-impl` meaning conduct info reports "1 0 1".
[info] java.io.IOException: Server returned HTTP response code: 503 for URL: http://192.168.10.1:9000/foo
[info]  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[info]  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[info]  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[info]  at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
[info]  at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1926)
[info]  at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1921)
[info]  at java.security.AccessController.doPrivileged(Native Method)
[info]  at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1920)
[info]  at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1490)
[info]  at sun.net.www.protocol.http.HttpURLConnection.access$200(HttpURLConnection.java:91)
[info]  at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1466)
[info]  at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1464)
[info]  at java.security.AccessController.doPrivileged(Native Method)
[info]  at java.security.AccessController.doPrivilegedWithCombiner(AccessController.java:782)
[info]  at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1463)
[info]  at DevModeBuild$.makeRequest(Build.scala:32)
[info]  at DevModeBuild$$anonfun$waitForRequestToContain$1.apply(Build.scala:18)
[info]  at DevModeBuild$$anonfun$waitForRequestToContain$1.apply(Build.scala:18)
[info]  at DevModeBuild$.waitFor(Build.scala:40)
[info]  at DevModeBuild$.waitForRequestToContain(Build.scala:21)
[info]  at $50f1629bcd31fa50dd34$$anonfun$$sbtdef$1$$anonfun$apply$2$$anonfun$apply$1.apply$mcV$sp(/tmp/sbt_d90f367f/lagom-java-service-execution/build.sbt:52)
[info]  at $50f1629bcd31fa50dd34$$anonfun$$sbtdef$1$$anonfun$apply$2$$anonfun$apply$1.apply(/tmp/sbt_d90f367f/lagom-java-service-execution/build.sbt:46)
[info]  at $50f1629bcd31fa50dd34$$anonfun$$sbtdef$1$$anonfun$apply$2$$anonfun$apply$1.apply(/tmp/sbt_d90f367f/lagom-java-service-execution/build.sbt:46)
[info]  at sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44)
[info]  at sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44)
[info]  at sbt.std.Transform$$anon$4.work(System.scala:63)
[info]  at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
[info]  at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
[info]  at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
[info]  at sbt.Execute.work(Execute.scala:237)
[info]  at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
[info]  at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
[info]  at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
[info]  at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
[info]  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info]  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[info]  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[info]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[info]  at java.lang.Thread.run(Thread.java:745)
[info] Caused by: java.io.IOException: Server returned HTTP response code: 503 for URL: http://192.168.10.1:9000/foo
[info]  at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1876)
[info]  at sun.net.www.protocol.http.HttpURLConnection.access$200(HttpURLConnection.java:91)
[info]  at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1466)
[info]  at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1464)
[info]  at java.security.AccessController.doPrivileged(Native Method)
[info]  at java.security.AccessController.doPrivilegedWithCombiner(AccessController.java:782)
[info]  at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1463)
[info]  at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
[info]  at DevModeBuild$.makeRequest(Build.scala:31)
[info]  at DevModeBuild$$anonfun$waitForRequestToContain$1.apply(Build.scala:18)
[info]  at DevModeBuild$$anonfun$waitForRequestToContain$1.apply(Build.scala:18)
[info]  at DevModeBuild$.waitFor(Build.scala:40)
[info]  at DevModeBuild$.waitForRequestToContain(Build.scala:21)
[info]  at $50f1629bcd31fa50dd34$$anonfun$$sbtdef$1$$anonfun$apply$2$$anonfun$apply$1.apply$mcV$sp(/tmp/sbt_d90f367f/lagom-java-service-execution/build.sbt:52)
[info]  at $50f1629bcd31fa50dd34$$anonfun$$sbtdef$1$$anonfun$apply$2$$anonfun$apply$1.apply(/tmp/sbt_d90f367f/lagom-java-service-execution/build.sbt:46)
[info]  at $50f1629bcd31fa50dd34$$anonfun$$sbtdef$1$$anonfun$apply$2$$anonfun$apply$1.apply(/tmp/sbt_d90f367f/lagom-java-service-execution/build.sbt:46)
[info]  at sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44)
[info]  at sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44)
[info]  at sbt.std.Transform$$anon$4.work(System.scala:63)
[info]  at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
[info]  at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
[info]  at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
[info]  at sbt.Execute.work(Execute.scala:237)
[info]  at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
[info]  at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
[info]  at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
[info]  at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
[info]  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info]  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[info]  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[info]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[info]  at java.lang.Thread.run(Thread.java:745)
[info] [error] (lagom-java-service-execution/*:assertRequest) java.io.IOException: Server returned HTTP response code: 503 for URL: http://192.168.10.1:9000/foo
[info] [error] Total time: 0 s, completed Mar 15, 2017 11:40:20 AM
[error] x lagom-conductr-bundle / lagom-java-service-execution
[error]    {line 12}  Command failed: assertRequest failed
ignasi35 commented 7 years ago

IMHO, this is mergeable.

markusjura commented 7 years ago

@ignasi35 Let's leave the sleep in there. We also wait 1 second in this test: https://github.com/typesafehub/sbt-conductr/blob/master/src/sbt-test/sbt-conductr/conduct-end-to-end/test#L40-L41

So please change the sleep to 1 second as well.