First test method in test class consistently fails when run from Bamboo but always succeeds locally

321 views
Skip to first unread message

Conor Griffin

unread,
Dec 15, 2016, 5:10:00 AM12/15/16
to wiremock-user
I have a really weird issue here.

I have a test class with 14 test cases in it, see the snippet below (12 of the test methods removed for clarity).

public class TestServiceCallHystrixCommand {

   
private static final int PORT = 3080;

   
@ClassRule
    public static WireMockClassRule wireMockRule = new WireMockClassRule(PORT);

   
@Rule
    public WireMockClassRule service1 = wireMockRule;

   
@Before
    public void setUp() throws Exception {
       
service1.stubFor(get(urlEqualTo("/unit-test-1")).atPriority(10).willReturn(aResponse().withStatus(200)));
       
service1.stubFor(get(urlEqualTo("/unit-test-2")).atPriority(10).willReturn(aResponse().withStatus(404)));
       
service1.stubFor(get(urlEqualTo("/unit-test-3")).atPriority(10).willReturn(aResponse().withStatus(500)));
       
service1.stubFor(get(urlPathEqualTo("/unit-test-4")).withQueryParam("param1", equalTo("value1")).atPriority(10).willReturn(aResponse().withStatus(200)));


       
service1.stubFor(put(urlEqualTo("/put-test-1")).atPriority(10).willReturn(aResponse().withStatus(200)));
       
service1.stubFor(patch(urlEqualTo("/patch-test-1")).atPriority(10).willReturn(aResponse().withStatus(200)));
       
service1.stubFor(delete(urlEqualTo("/delete-test-1")).atPriority(10).willReturn(aResponse().withStatus(200)));

       
service1.stubFor(post(urlEqualTo("/post-test-1")).atPriority(10).willReturn(aResponse().withStatus(201)));

       
service1.stubFor(get(urlEqualTo("/header-test-1")).withHeader("X-UnitTest-Header", equalTo("12345")).willReturn(aResponse().withStatus(200)));
       
service1.stubFor(get(urlEqualTo("/header-test-2")).willReturn(aResponse().withStatus(200)));
       
service1.stubFor(get(urlEqualTo("/generate-correlation-id")).willReturn(aResponse().withStatus(200)));
       
service1.stubFor(get(urlEqualTo("/propagate-correlation-id")).willReturn(aResponse().withStatus(200)));
       
service1.stubFor(get(urlEqualTo("/override-correlation-id")).willReturn(aResponse().withStatus(200)));


       
service1.stubFor(get(urlEqualTo("/exception-test-1")).willReturn(aResponse().withFault(Fault.RANDOM_DATA_THEN_CLOSE)));
   
}

   
@Test
    public void testWithRequestBodyViaServiceCallHystrixCommand() throws Exception {
       
service1.resetAll();
       
service1.stubFor(post(urlEqualTo("/request-body-test-1")).withRequestBody(matching("<status>OK</status>")).willReturn(aResponse().withStatus(201)));
       
PrismRequest request = PrismRequest.builder()
               
.namespaceUri("com.mycompany.test")
               
.serviceName("UnitTest")
               
.requestMethod(Method.POST)
               
.uri("/request-body-test-1")
               
.entity("<status>OK</status>")
               
.build();

       
ServiceCallHystrixCommand command = new ServiceCallHystrixCommand("http", "localhost", PORT, request);
       
PrismResponse response = command.execute();

       
assertEquals(201, response.getResponseCode());

   
}

    @Test
     public void testPostCallViaServiceCallHystrixCommand() {

        PrismRequest request = PrismRequest.builder()
                .namespaceUri("com.mastercard.test")
                .serviceName("UnitTest")
                .requestMethod(Method.POST)
                .uri("/post-test-1")
                .build();
    
        ServiceCallHystrixCommand command = new ServiceCallHystrixCommand("http", "localhost", PORT, request);
        PrismResponse response = command.execute();
    
        assertEquals(201, response.getResponseCode());

    }


   
// 12 more test methods here...

}

When I run the tests locally in IntelliJ they all pass fine, see the screenshot below


But when the same code is run by Bamboo, the first test listed above 'testPostCallViaServiceCallHystrixCommand' always fails.  It seems to be failing due to a timeout.  See the Bamboo output below:


build 14-Dec-2016 14:12:31 INFO : com.mycompany.apie.synapse.nucleus.ssl.SynapseSsl - Minimum set of 'synapse.ssl' properties have not been set. Using default SSLContext.
build 14-Dec-2016 14:12:33 INFO : / - RequestHandlerClass from context returned com.github.tomakehurst.wiremock.http.StubRequestHandler. Normalized mapped under returned 'null'
build 14-Dec-2016 14:13:39 INFO : org.eclipse.jetty.server.ServerConnector - Stopped ServerConnector@3c57f3e9{HTTP/1.1}{0.0.0.0:3080}
build 14-Dec-2016 14:13:39 INFO : org.eclipse.jetty.server.handler.ContextHandler - Stopped o.e.j.s.ServletContextHandler@7c447c76{/,null,UNAVAILABLE}
build 14-Dec-2016 14:13:39 INFO : org.eclipse.jetty.server.handler.ContextHandler - Stopped o.e.j.s.ServletContextHandler@118102ee{/__admin,null,UNAVAILABLE}
build 14-Dec-2016 14:13:39 WARN : org.eclipse.jetty.util.thread.QueuedThreadPool - qtp896852376{STOPPING,8<=8<=30,i=2,q=2} Couldn't stop Thread[qtp896852376-12,5,]
build 14-Dec-2016 14:13:39 WARN : org.eclipse.jetty.util.thread.QueuedThreadPool - qtp896852376{STOPPING,8<=8<=30,i=0,q=1} Couldn't stop Thread[qtp896852376-13,5,]
build 14-Dec-2016 14:13:39 Tests run: 14, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 77.364 sec <<< FAILURE! - in com.mycompany.apie.synapse.prism.hystrix.TestServiceCallHystrixCommand
build 14-Dec-2016 14:13:39 testPostCallViaServiceCallHystrixCommand(com.mycompany.apie.synapse.prism.hystrix.TestServiceCallHystrixCommand)  Time elapsed: 7.069 sec  <<< ERROR!
build 14-Dec-2016 14:13:39 com.netflix.hystrix.exception.HystrixRuntimeException: localhost:3080 timed-out and no fallback available.
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.AbstractCommand$16.call(AbstractCommand.java:806)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.AbstractCommand$16.call(AbstractCommand.java:790)
build 14-Dec-2016 14:13:39 at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:139)
build 14-Dec-2016 14:13:39 at rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:71)
build 14-Dec-2016 14:13:39 at rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:71)
build 14-Dec-2016 14:13:39 at rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:71)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.AbstractCommand$DeprecatedOnFallbackHookApplication$1.onError(AbstractCommand.java:1521)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.AbstractCommand$FallbackHookApplication$1.onError(AbstractCommand.java:1411)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:314)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:306)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:162)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:154)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:162)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:154)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:162)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:154)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:162)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:154)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:162)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:154)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:162)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:154)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:162)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:154)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:162)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:154)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:162)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:154)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:162)
build 14-Dec-2016 14:13:39 at rx.Observable$2.call(Observable.java:154)
build 14-Dec-2016 14:13:39 at rx.Observable.unsafeSubscribe(Observable.java:8314)
build 14-Dec-2016 14:13:39 at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:141)
build 14-Dec-2016 14:13:39 at rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:71)
build 14-Dec-2016 14:13:39 at rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:71)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.AbstractCommand$HystrixObservableTimeoutOperator$1.run(AbstractCommand.java:958)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:41)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:37)
build 14-Dec-2016 14:13:39 at com.github.kristofa.brave.BraveCallable.call(BraveCallable.java:42)
build 14-Dec-2016 14:13:39 at com.mycompany.apie.synapse.prism.hystrix.TraceContextCallable.call(TraceContextCallable.java:39)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable.run(HystrixContextRunnable.java:57)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.AbstractCommand$HystrixObservableTimeoutOperator$2.tick(AbstractCommand.java:978)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.util.HystrixTimer$1.run(HystrixTimer.java:100)
build 14-Dec-2016 14:13:39 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
build 14-Dec-2016 14:13:39 at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
build 14-Dec-2016 14:13:39 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
build 14-Dec-2016 14:13:39 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
build 14-Dec-2016 14:13:39 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
build 14-Dec-2016 14:13:39 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
build 14-Dec-2016 14:13:39 at java.lang.Thread.run(Thread.java:745)
build 14-Dec-2016 14:13:39 Caused by: java.util.concurrent.TimeoutException: null
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.AbstractCommand$9.call(AbstractCommand.java:601)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.AbstractCommand$9.call(AbstractCommand.java:581)
build 14-Dec-2016 14:13:39 at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:139)
build 14-Dec-2016 14:13:39 at rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:71)
build 14-Dec-2016 14:13:39 at rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:71)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.AbstractCommand$HystrixObservableTimeoutOperator$1.run(AbstractCommand.java:958)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:41)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:37)
build 14-Dec-2016 14:13:39 at com.github.kristofa.brave.BraveCallable.call(BraveCallable.java:42)
build 14-Dec-2016 14:13:39 at com.mycompany.apie.synapse.prism.hystrix.TraceContextCallable.call(TraceContextCallable.java:39)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable.run(HystrixContextRunnable.java:57)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.AbstractCommand$HystrixObservableTimeoutOperator$2.tick(AbstractCommand.java:978)
build 14-Dec-2016 14:13:39 at com.netflix.hystrix.util.HystrixTimer$1.run(HystrixTimer.java:100)
build 14-Dec-2016 14:13:39 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
build 14-Dec-2016 14:13:39 at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
build 14-Dec-2016 14:13:39 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
build 14-Dec-2016 14:13:39 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
build 14-Dec-2016 14:13:39 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
build 14-Dec-2016 14:13:39 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
build 14-Dec-2016 14:13:39 at java.lang.Thread.run(Thread.java:745)
build 14-Dec-2016 14:13:39
build 14-Dec-2016 14:13:41 Running com.mycompany.apie.synapse.prism.hystrix.TraceContextCallableTest
build 14-Dec-2016 14:13:41 Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.14 sec - in com.mycompany.apie.synapse.prism.hystrix.TraceContextCallableTest


This only seems to affect the first test run and the rest of the tests execute and pass perfectly fine.  Also, it only happens on Bamboo and I can't reproduce this locally.  Anyone got any ideas?

Reply all
Reply to author
Forward
0 new messages