package org.arquillian.cube; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import org.arquillian.cube.docker.impl.requirement.RequiresDockerMachine; import org.arquillian.cube.requirement.ArquillianConditionalRunner; import org.jboss.arquillian.junit.InSequence; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertThat; @RunWith(ArquillianConditionalRunner.class) @RequiresDockerMachine(name = "dev") public class StandaloneTestCase { @HostIp String ip; @DockerUrl(containerName = "pingpong", exposedPort = 8080) @ArquillianResource private URL url; @Test @InSequence(0) public void shouldBeAbleToInjectController() { Assert.assertNotNull(ip); } @Test @InSequence(1) public void shouldBeAbleToCreateAndStart() throws IOException { String pong = ping(); assertThat(pong, containsString("OK")); } @Test @InSequence(2) public void should_be_able_to_inject_url_in_standalone() { assertThat(url, is(notNullValue())); assertThat(url.getProtocol(), is("http")); assertThat(url.getHost(), is(ip)); assertThat(url.getPort(), is(80)); } private String ping() throws IOException { URL url = new URL("http://" + ip + ":80"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); return response.toString(); } }