Skip to content

Commit

Permalink
Run toxiproxy in Docker during tests
Browse files Browse the repository at this point in the history
  • Loading branch information
trekawek committed Apr 25, 2018
1 parent ec8600b commit f006b2e
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 20 deletions.
17 changes: 15 additions & 2 deletions pom.xml
Expand Up @@ -40,8 +40,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
Expand Down Expand Up @@ -118,12 +118,25 @@
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.arakelian</groupId>
<artifactId>docker-junit-rule</artifactId>
<version>2.1.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
</dependencies>

<distributionManagement>
Expand Down
12 changes: 6 additions & 6 deletions src/test/java/eu/rekawek/toxiproxy/ToxicsTest.java
Expand Up @@ -14,23 +14,23 @@
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;

public class ToxicsTest {

private final ToxiproxyClient tp = new ToxiproxyClient();
@ClassRule
public static ToxiproxyRule toxiproxyRule = new ToxiproxyRule();

private ToxiproxyClient tp;

private Proxy proxy;

private ToxicList toxics;

@BeforeClass
public static void toxiproxyEnabled() {
ToxiproxyClientTest.toxiproxyEnabled();
}

@Before
public void createProxy() throws IOException {
tp = toxiproxyRule.getToxiproxyClient();
proxy = tp.createProxy("test-proxy", "127.0.0.1:26379", "localhost:6379");
toxics = proxy.toxics();
}
Expand Down
20 changes: 8 additions & 12 deletions src/test/java/eu/rekawek/toxiproxy/ToxiproxyClientTest.java
Expand Up @@ -8,34 +8,30 @@
import java.io.IOException;
import java.util.List;

import eu.rekawek.toxiproxy.model.Toxic;
import eu.rekawek.toxiproxy.model.ToxicDirection;
import eu.rekawek.toxiproxy.model.toxic.LimitData;
import org.junit.After;
import org.junit.Assume;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

public class ToxiproxyClientTest {

@ClassRule
public static ToxiproxyRule toxiproxyRule = new ToxiproxyRule();

@Rule
public ExpectedException expectedException = ExpectedException.none();

private final ToxiproxyClient tp = new ToxiproxyClient();
private ToxiproxyClient tp;

@BeforeClass
public static void toxiproxyEnabled() {
try {
new ToxiproxyClient().getProxies();
} catch (IOException e) {
Assume.assumeNoException(e);
}
@Before
public void setup() {
tp = toxiproxyRule.getToxiproxyClient();
}

@Before
@After
public void cleanup() throws IOException {
for (Proxy proxy : tp.getProxies()) {
Expand Down
46 changes: 46 additions & 0 deletions src/test/java/eu/rekawek/toxiproxy/ToxiproxyRule.java
@@ -0,0 +1,46 @@
package eu.rekawek.toxiproxy;

import com.arakelian.docker.junit.DockerRule;
import com.arakelian.docker.junit.model.ImmutableDockerConfig;
import com.spotify.docker.client.DefaultDockerClient;
import org.junit.Assume;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;

public class ToxiproxyRule implements TestRule {

private final DockerRule wrappedRule;

public ToxiproxyRule() {
wrappedRule = new DockerRule(ImmutableDockerConfig.builder()
.image("shopify/toxiproxy:2.1.3")
.name("text-toxiproxy")
.ports("8474")
.addStartedListener(container -> {
container.waitForPort("8474/tcp");
})
.alwaysRemoveContainer(true)
.build());

}

public ToxiproxyClient getToxiproxyClient() {
int mappedPort = wrappedRule.getContainer().getPortBinding("8474/tcp").getPort();
ToxiproxyClient tp = new ToxiproxyClient("localhost", mappedPort);
return tp;
}

@Override
public Statement apply(Statement statement, Description description) {
try {
DefaultDockerClient client = DefaultDockerClient.fromEnv().connectTimeoutMillis(5000L).readTimeoutMillis(20000L).build();
client.ping();
client.close();
} catch (Exception e) {
Assume.assumeNoException(e);
}

return wrappedRule.apply(statement, description);
}
}

0 comments on commit f006b2e

Please sign in to comment.