diff --git a/hystrix/pom.xml b/hystrix/pom.xml new file mode 100644 index 0000000000..0ec5fa0411 --- /dev/null +++ b/hystrix/pom.xml @@ -0,0 +1,80 @@ + + + 4.0.0 + com.baeldung + hystrix + 1.0 + + hystrix + + + + + 1.8 + + + 1.4.10 + 0.20.7 + + + 1.3 + 4.12 + + + 3.5.1 + 2.6 + 2.19.1 + 2.7 + + + + + + + com.netflix.hystrix + hystrix-core + ${hystrix-core.version} + + + + com.netflix.rxjava + rxjava-core + ${rxjava-core.version} + + + + org.hamcrest + hamcrest-all + ${hamcrest-all.version} + test + + + + junit + junit + ${junit.version} + test + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + + + + + diff --git a/hystrix/src/test/java/com/baeldung/hystrix/HystrixTimeoutTest.java b/hystrix/src/test/java/com/baeldung/hystrix/HystrixTimeoutTest.java new file mode 100644 index 0000000000..a49cc31a02 --- /dev/null +++ b/hystrix/src/test/java/com/baeldung/hystrix/HystrixTimeoutTest.java @@ -0,0 +1,58 @@ +package com.baeldung.hystrix; + +import com.netflix.hystrix.*; +import com.netflix.hystrix.exception.HystrixRuntimeException; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; + +public class HystrixTimeoutTest { + + private static HystrixCommand.Setter config; + private static HystrixCommandProperties.Setter commandProperties = HystrixCommandProperties.Setter(); + + + @Rule + public final ExpectedException exception = ExpectedException.none(); + + @Before + public void setup() { + config = HystrixCommand + .Setter + .withGroupKey(HystrixCommandGroupKey.Factory.asKey("RemoteServiceGroup1")); + } + + @Test + public void givenTimeoutEqualTo100_andDefaultSettings_thenReturnSuccess() throws InterruptedException { + assertThat(new RemoteServiceTestCommand(config, new RemoteServiceTestSimulator(100)).execute(), equalTo("Success")); + } + + @Test + public void givenTimeoutEqualTo10000_andDefaultSettings_thenExpectHystrixRuntimeException() throws InterruptedException { + exception.expect(HystrixRuntimeException.class); + new RemoteServiceTestCommand(config, new RemoteServiceTestSimulator(10_000)).execute(); + + } + + @Test + public void givenTimeoutEqualTo5000_andExecutionTimeoutEqualTo10000_thenReturnSuccess() throws InterruptedException { + commandProperties.withExecutionTimeoutInMilliseconds(10_000); + config.andCommandPropertiesDefaults(commandProperties); + assertThat(new RemoteServiceTestCommand(config, new RemoteServiceTestSimulator(5_000)).execute(), equalTo("Success")); + } + + @Test + public void givenTimeoutEqualTo15000_andExecutionTimeoutEqualTo10000_thenExpectHystrixRuntimeException() throws InterruptedException { + exception.expect(HystrixRuntimeException.class); + commandProperties.withExecutionTimeoutInMilliseconds(10_000); + config.andCommandPropertiesDefaults(commandProperties); + new RemoteServiceTestCommand(config, new RemoteServiceTestSimulator(15_000)).execute(); + } + + +} diff --git a/hystrix/src/test/java/com/baeldung/hystrix/RemoteServiceTestCommand.java b/hystrix/src/test/java/com/baeldung/hystrix/RemoteServiceTestCommand.java new file mode 100644 index 0000000000..49ea951579 --- /dev/null +++ b/hystrix/src/test/java/com/baeldung/hystrix/RemoteServiceTestCommand.java @@ -0,0 +1,20 @@ +package com.baeldung.hystrix; + +import com.netflix.hystrix.HystrixCommand; +import com.netflix.hystrix.HystrixCommandGroupKey; + + +class RemoteServiceTestCommand extends HystrixCommand { + + private final RemoteServiceTestSimulator remoteService; + + RemoteServiceTestCommand(Setter config, RemoteServiceTestSimulator remoteService) { + super(config); + this.remoteService = remoteService; + } + + @Override + protected String run() throws Exception { + return remoteService.execute(); + } +} diff --git a/hystrix/src/test/java/com/baeldung/hystrix/RemoteServiceTestSimulator.java b/hystrix/src/test/java/com/baeldung/hystrix/RemoteServiceTestSimulator.java new file mode 100644 index 0000000000..54c626a67a --- /dev/null +++ b/hystrix/src/test/java/com/baeldung/hystrix/RemoteServiceTestSimulator.java @@ -0,0 +1,16 @@ +package com.baeldung.hystrix; + + +class RemoteServiceTestSimulator { + + private long wait; + + RemoteServiceTestSimulator(long wait) throws InterruptedException { + this.wait = wait; + } + + String execute() throws InterruptedException { + Thread.sleep(wait); + return "Success"; + } +}