public void configure(@Observes(precedence = -10) ArquillianDescriptor arquillianDescriptor) { Map<String, String> config = arquillianDescriptor.extension(EXTENSION_NAME).getExtensionProperties(); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(config); configurationProducer.set(cubeConfiguration); } }
public void configure(@Observes(precedence = -10) ArquillianDescriptor arquillianDescriptor) { Map<String, String> config = arquillianDescriptor.extension(EXTENSION_NAME).getExtensionProperties(); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(config); configurationProducer.set(cubeConfiguration); } }
@Test public void shouldUsePreRunningContainerInStartOrConnectMode() { Map<String, String> data = new HashMap<String, String>(); data.put("connectionMode", ConnectionMode.STARTORCONNECT.name()); bind(ApplicationScoped.class, CubeConfiguration.class, CubeConfiguration.fromMap(data)); when(cube.isRunningOnRemote()).thenReturn(true); fire(new BeforeStart(deployableContainer)); assertEventFired(PreRunningCube.class, 1); }
@Before public void setup() { when(cube.getId()).thenReturn(CUBE_ID); CubeRegistry registry = new LocalCubeRegistry(); registry.addCube(cube); bind(ApplicationScoped.class, CubeRegistry.class, registry); CubeConfiguration configuration = CubeConfiguration.fromMap(new HashMap<String, String>()); fire(configuration); }
@Test public void shouldParseEmptyAutostart() throws Exception { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("autoStartContainers", ""); parameters.put("dockerContainers", "a:\n image: a\nb:\n image: a\n"); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(parameters, null); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); fire(new BeforeSuite()); assertEventFired(CreateCube.class, 0); assertEventFired(StartCube.class, 0); }
@Test public void shouldParseEmptyValuesAutostart() throws Exception { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("autoStartContainers", " , "); parameters.put("dockerContainers", "a:\n image: a\nb:\n image: a\n"); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(parameters, null); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); fire(new BeforeSuite()); assertEventFired(CreateCube.class, 0); assertEventFired(StartCube.class, 0); }
@Test public void shouldStartAContainerInStartOrConnectLeaveModeAndNotStopIt() { Map<String, String> data = new HashMap<String, String>(); data.put("connectionMode", ConnectionMode.STARTORCONNECTANDLEAVE.name()); bind(ApplicationScoped.class, CubeConfiguration.class, CubeConfiguration.fromMap(data)); when(cube.isRunningOnRemote()).thenReturn(false); fire(new BeforeStart(deployableContainer)); assertEventFired(CreateCube.class, 1); assertEventFired(StartCube.class, 1); assertEventFired(PreRunningCube.class, 1); }
@Test public void shouldStartAContainerInStartOrConnectModeAndStopIt() { Map<String, String> data = new HashMap<String, String>(); data.put("connectionMode", ConnectionMode.STARTORCONNECT.name()); bind(ApplicationScoped.class, CubeConfiguration.class, CubeConfiguration.fromMap(data)); when(cube.isRunningOnRemote()).thenReturn(false); fire(new BeforeStart(deployableContainer)); assertEventFired(CreateCube.class, 1); assertEventFired(StartCube.class, 1); assertEventFired(PreRunningCube.class, 0); }
@Test public void shouldCreateAndStartAutoContainersWhenNoAutoStartIsProvided() { Map<String, String> dockerData = new HashMap<String, String>(); dockerData.put("dockerContainers", "a:\n image: a\n links:\n - b:b\nb:\n image: a\n"); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(dockerData, null); dockerConfiguration.setAutoStartContainers(new AutomaticResolutionLinksAutoStartParser(Arrays.asList("a"), dockerConfiguration.getDockerContainersContent())); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); ContainerRegistry containerRegistry = mock(ContainerRegistry.class); List<org.jboss.arquillian.container.spi.Container> containers = new ArrayList<>(); org.jboss.arquillian.container.spi.Container container = mock(org.jboss.arquillian.container.spi.Container.class); when(container.getName()).thenReturn("a"); containers.add(container); when(containerRegistry.getContainers()).thenReturn(containers); bind(ApplicationScoped.class, ContainerRegistry.class, containerRegistry); fire(new BeforeSuite()); assertEventFired(CreateCube.class, 1); assertEventFired(StartCube.class, 1); }
@Test public void shouldUsePreRunningContainers() { Map<String, String> cubeData = new HashMap<String, String>(); cubeData.put("connectionMode", ConnectionMode.STARTORCONNECT.name()); Map<String, String> dockerData = new HashMap<String, String>(); dockerData.put("autoStartContainers", "a,b"); dockerData.put("dockerContainers", "a:\n image: a\nb:\n image: a\n"); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(cubeData); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(dockerData, null); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); Container container = mock(Container.class); when(container.getNames()).thenReturn(new String[] {"a"}); when(executor.listRunningContainers()).thenReturn(Arrays.asList(container)); bind(ApplicationScoped.class, DockerClientExecutor.class, executor); fire(new BeforeSuite()); assertEventFired(CreateCube.class, 1); assertEventFired(StartCube.class, 1); assertEventFired(PreRunningCube.class, 1); assertEventFiredOnOtherThread(CreateCube.class); assertEventFiredOnOtherThread(StartCube.class); assertEventFiredOnOtherThread(PreRunningCube.class); }
@Test public void shouldStartAContainerInStartOrConnectModeAndStopIt() { Map<String, String> cubeData = new HashMap<String, String>(); cubeData.put("connectionMode", ConnectionMode.STARTORCONNECT.name()); Map<String, String> dockerData = new HashMap<String, String>(); dockerData.put("autoStartContainers", "a,b"); dockerData.put("dockerContainers", "a:\n image: a\nb:\n image: a\n"); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(cubeData); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(dockerData, null); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); Container container = mock(Container.class); when(container.getNames()).thenReturn(new String[] {"alreadyrun"}); when(executor.listRunningContainers()).thenReturn(Arrays.asList(container)); bind(ApplicationScoped.class, DockerClientExecutor.class, executor); fire(new BeforeSuite()); assertEventFired(CreateCube.class, 2); assertEventFired(StartCube.class, 2); assertEventFired(PreRunningCube.class, 0); assertEventFiredOnOtherThread(CreateCube.class); assertEventFiredOnOtherThread(StartCube.class); }
@Test public void shouldParseTrimAutostart() throws Exception { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("autoStartContainers", "a , b "); parameters.put("dockerContainers", "a:\n image: a\nb:\n image: a\n"); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(parameters, null); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); fire(new BeforeSuite()); assertEventFired(CreateCube.class, 2); assertEventFired(StartCube.class, 2); assertEventFiredOnOtherThread(CreateCube.class); assertEventFiredOnOtherThread(StartCube.class); }
@Test public void shouldCreateAndStartAutoContainers() { Map<String, String> dockerData = new HashMap<String, String>(); dockerData.put("autoStartContainers", "a,b"); dockerData.put("dockerContainers", "a:\n image: a\nb:\n image: a\n"); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(dockerData, null); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); fire(new BeforeSuite()); assertEventFired(CreateCube.class, 2); assertEventFired(StartCube.class, 2); assertEventFiredOnOtherThread(CreateCube.class); assertEventFiredOnOtherThread(StartCube.class); }
@Test public void shouldStopAndDestroyAutoContainers() { Map<String, String> dockerData = new HashMap<String, String>(); dockerData.put("autoStartContainers", "a,b"); dockerData.put("dockerContainers", "a:\n image: a\nb:\n image: a\n"); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(dockerData, null); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); fire(new AfterSuite()); assertEventFired(StopCube.class, 2); assertEventFired(DestroyCube.class, 2); assertEventFiredOnOtherThread(StopCube.class); assertEventFiredOnOtherThread(DestroyCube.class); }
@Test public void shouldCreateAndStartAutoContainersDefiningRegularExpressions() { Map<String, String> dockerData = new HashMap<String, String>(); dockerData.put("autoStartContainers", "regexp:a(.*)"); dockerData.put("dockerContainers", "a:\n image: a\nab:\n image: a\nx:\n" + " image: a\n"); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(dockerData, null); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); fire(new BeforeSuite()); assertEventFired(CreateCube.class, 2); assertEventFired(StartCube.class, 2); assertEventFiredOnOtherThread(CreateCube.class); assertEventFiredOnOtherThread(StartCube.class); }
@Test public void shouldStartNetworks() { DockerClientExecutor executor = Mockito.mock(DockerClientExecutor.class); String config = "networks:\n" + " mynetwork:\n " + " driver: bridge\n" + "tomcat6:\n" + " image: tutum/tomcat:6.0\n" + " exposedPorts: [8089/tcp]\n" + " await:\n" + " strategy: static\n" + " ip: localhost\n" + " ports: [8080, 8089]\n" + "tomcat7:\n" + " extends: tomcat6\n" + " image: tutum/tomcat:7.0\n"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", config); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(parameters, null); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); final LocalDockerNetworkRegistry localDockerNetworkRegistry = new LocalDockerNetworkRegistry(); bind(ApplicationScoped.class, NetworkRegistry.class, localDockerNetworkRegistry); bind(ApplicationScoped.class, DockerClientExecutor.class, executor); fire(new BeforeSuite()); Mockito.verify(executor).createNetwork(Matchers.eq("mynetwork"), Matchers.any(Network.class)); }
parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration);
@Test public void shouldStartAContainerInStartOrConnectAndLeaveModeAndNotStopIt() { Map<String, String> cubeData = new HashMap<String, String>(); cubeData.put("connectionMode", ConnectionMode.STARTORCONNECTANDLEAVE.name()); Map<String, String> dockerData = new HashMap<String, String>(); dockerData.put("autoStartContainers", "a,b"); dockerData.put("dockerContainers", "a:\n image: a\nb:\n image: a\n"); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(cubeData); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(dockerData, null); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); Container container = mock(Container.class); when(container.getNames()).thenReturn(new String[] {"alreadyrun"}); when(executor.listRunningContainers()).thenReturn(Arrays.asList(container)); bind(ApplicationScoped.class, DockerClientExecutor.class, executor); fire(new BeforeSuite()); assertEventFired(CreateCube.class, 2); assertEventFired(StartCube.class, 2); assertEventFired(PreRunningCube.class, 2); assertEventFiredOnOtherThread(CreateCube.class); assertEventFiredOnOtherThread(StartCube.class); assertEventFiredOnOtherThread(PreRunningCube.class); } }
@Test public void should_remove_docker_image_if_built_by_cube() { DockerClientExecutor executor = Mockito.mock(DockerClientExecutor.class); String config = "pingpong:\n" + " buildImage:\n" + " dockerfileLocation: src/test/resources/tomcat\n" + " noCache: true\n" + " remove: true\n" + " exposedPorts: [8080/tcp]\n" + " portBindings: [8080->8080/tcp]\n"; Map<String, String> parameters = new HashMap<>(); parameters.put("dockerContainers", config); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration); CubeDockerConfiguration dockerConfiguration = CubeDockerConfiguration.fromMap(parameters, null); when(cube.getId()).thenReturn(CUBE_ID); when(cube.configuration()).thenReturn(dockerConfiguration.getDockerContainersContent().get(CUBE_ID)); bind(ApplicationScoped.class, CubeDockerConfiguration.class, dockerConfiguration); final LocalCubeRegistry localCubeRegistry = new LocalCubeRegistry(); localCubeRegistry.addCube(cube); bind(ApplicationScoped.class, CubeRegistry.class, localCubeRegistry); bind(ApplicationScoped.class, DockerClientExecutor.class, executor); fire(new AfterDestroy(CUBE_ID)); Mockito.verify(executor).removeImage("pingpong:latest", false); }
parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeConfiguration cubeConfiguration = CubeConfiguration.fromMap(new HashMap<String, String>()); bind(ApplicationScoped.class, CubeConfiguration.class, cubeConfiguration);