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";
+ }
+}