@Override public List<Cube<?>> getByMetadata(Class<? extends CubeMetadata> metadata) { List<Cube<?>> cubes = new ArrayList<>(); for (Cube<?> cube : this.cubes.values()) { if (cube.hasMetadata(metadata)) { cubes.add(cube); } } return cubes; }
@Override public List<Cube<?>> getByMetadata(Class<? extends CubeMetadata> metadata) { List<Cube<?>> cubes = new ArrayList<>(); for (Cube<?> cube : this.cubes.values()) { if (cube.hasMetadata(metadata)) { cubes.add(cube); } } return cubes; }
public void apply(Cube cube) { String[] scriptsToExecute = postProcessScript(this.chaosScriptContent); for (String scriptToExecute : scriptsToExecute) { if (cube.hasMetadata(CanExecuteProcessInContainer.class)) { final String[] command = scriptToExecute.split("\\s+"); final CanExecuteProcessInContainer executeProcess = (CanExecuteProcessInContainer) cube.getMetadata(CanExecuteProcessInContainer.class); executeProcess.exec(command); } } }
@Override public void copyLog(String cubeId, boolean follow, boolean stdout, boolean stderr, boolean timestamps, int tail, OutputStream outputStream) { Cube<?> cube = cubeRegistry.get().getCube(cubeId); Validate.notNull(cube, "Cube with id '" + cubeId + "' to get logs command does not exist."); if (cube.hasMetadata(CanCopyFromContainer.class)) { cube.getMetadata(CanCopyFromContainer.class).copyLog(follow, stdout, stderr, timestamps, tail, outputStream); } else { throw new IllegalArgumentException( "Cube " + cubeId + " does not provide the " + CanCopyFromContainer.class.getSimpleName() + " metadata"); } }
@Override public void copyFileDirectoryFromContainer(String cubeId, String from, String to) { Cube<?> cube = cubeRegistry.get().getCube(cubeId); Validate.notNull(cube, "Cube with id '" + cubeId + "' to execute copy file command does not exist."); if (cube.hasMetadata(CanCopyFromContainer.class)) { cube.getMetadata(CanCopyFromContainer.class).copyDirectory(from, to); } else { throw new IllegalArgumentException( "Cube " + cubeId + " does not provide the " + CanCopyFromContainer.class.getSimpleName() + " metadata"); } }
@Override public void copyFileDirectoryFromContainer(String cubeId, String from, String to) { Cube<?> cube = cubeRegistry.get().getCube(cubeId); Validate.notNull(cube, "Cube with id '" + cubeId + "' to execute copy file command does not exist."); if (cube.hasMetadata(CanCopyFromContainer.class)) { cube.getMetadata(CanCopyFromContainer.class).copyDirectory(from, to); } else { throw new IllegalArgumentException( "Cube " + cubeId + " does not provide the " + CanCopyFromContainer.class.getSimpleName() + " metadata"); } }
@Override public void copyLog(String cubeId, boolean follow, boolean stdout, boolean stderr, boolean timestamps, int tail, OutputStream outputStream) { Cube<?> cube = cubeRegistry.get().getCube(cubeId); Validate.notNull(cube, "Cube with id '" + cubeId + "' to get logs command does not exist."); if (cube.hasMetadata(CanCopyFromContainer.class)) { cube.getMetadata(CanCopyFromContainer.class).copyLog(follow, stdout, stderr, timestamps, tail, outputStream); } else { throw new IllegalArgumentException( "Cube " + cubeId + " does not provide the " + CanCopyFromContainer.class.getSimpleName() + " metadata"); } }
@Override public TopContainer top(String cubeId) { Cube<?> cube = cubeRegistry.get().getCube(cubeId); Validate.notNull(cube, "Cube with id '" + cubeId + "' to get top command does not exist."); if (cube.hasMetadata(CanSeeTop.class)) { return cube.getMetadata(CanSeeTop.class).top(); } else { throw new IllegalArgumentException( "Cube " + cubeId + " does not provide the " + CanSeeTop.class.getSimpleName() + " metadata"); } }
@Override public TopContainer top(String cubeId) { Cube<?> cube = cubeRegistry.get().getCube(cubeId); Validate.notNull(cube, "Cube with id '" + cubeId + "' to get top command does not exist."); if (cube.hasMetadata(CanSeeTop.class)) { return cube.getMetadata(CanSeeTop.class).top(); } else { throw new IllegalArgumentException( "Cube " + cubeId + " does not provide the " + CanSeeTop.class.getSimpleName() + " metadata"); } }
@Override public List<ChangeLog> changesOnFilesystem(String cubeId) { Cube<?> cube = cubeRegistry.get().getCube(cubeId); Validate.notNull(cube, "Cube with id '" + cubeId + "' to get changes command does not exist."); if (cube.hasMetadata(CanSeeChangesOnFilesystem.class)) { return cube.getMetadata(CanSeeChangesOnFilesystem.class).changes(); } else { throw new IllegalArgumentException("Cube " + cubeId + " does not provide the " + CanSeeChangesOnFilesystem.class.getSimpleName() + " metadata"); } }
@Override public List<ChangeLog> changesOnFilesystem(String cubeId) { Cube<?> cube = cubeRegistry.get().getCube(cubeId); Validate.notNull(cube, "Cube with id '" + cubeId + "' to get changes command does not exist."); if (cube.hasMetadata(CanSeeChangesOnFilesystem.class)) { return cube.getMetadata(CanSeeChangesOnFilesystem.class).changes(); } else { throw new IllegalArgumentException("Cube " + cubeId + " does not provide the " + CanSeeChangesOnFilesystem.class.getSimpleName() + " metadata"); } }
private String getContainerIp(String containerName, boolean internal) { final Cube cube = getCube(containerName); if (cube == null) { return null; } if (cube.hasMetadata(HasPortBindings.class)) { final HasPortBindings metadata = (HasPortBindings) cube.getMetadata(HasPortBindings.class); if (internal) { return metadata.getInternalIP(); } else { return metadata.getContainerIP(); } } else { return null; } }
private String getContainerIp(String containerName, boolean internal) { final Cube cube = getCube(containerName); if (cube == null) { return null; } if (cube.hasMetadata(HasPortBindings.class)) { final HasPortBindings metadata = (HasPortBindings) cube.getMetadata(HasPortBindings.class); if (internal) { return metadata.getInternalIP(); } else { return metadata.getContainerIP(); } } else { return null; } }
private String getInternalIp(CubeDockerConfiguration cubeDockerConfiguration, String containerName) { final Cube<?> cube = cubeRegistryInstance.get() .getCube(containerName); if (cube == null) { return cubeDockerConfiguration.getDockerServerIp(); } if (cube.hasMetadata(HasPortBindings.class)) { return cube.getMetadata(HasPortBindings.class).getInternalIP(); } return cubeDockerConfiguration.getDockerServerIp(); }
private String getInternalIp(CubeDockerConfiguration cubeDockerConfiguration, String containerName) { final Cube<?> cube = cubeRegistryInstance.get() .getCube(containerName); if (cube == null) { return cubeDockerConfiguration.getDockerServerIp(); } if (cube.hasMetadata(HasPortBindings.class)) { return cube.getMetadata(HasPortBindings.class).getInternalIP(); } return cubeDockerConfiguration.getDockerServerIp(); }
@Test public void shouldStartAContainerObject() { CubeContainerObjectTestEnricher cubeContainerObjectTestEnricher = new CubeContainerObjectTestEnricher(); cubeContainerObjectTestEnricher.containerObjectFactoryInstance = () -> dockerContainerObjectFactory; when(serviceLoader.all(TestEnricher.class)).thenReturn(Arrays.asList(cubeContainerObjectTestEnricher)); InjectableTest injectableTest = new InjectableTest(); cubeContainerObjectTestEnricher.enrich(injectableTest); final org.arquillian.cube.spi.Cube<?> mycontainer = cubeRegistry.getCube("mycontainer"); assertThat(mycontainer, is(notNullValue())); assertThat(mycontainer.hasMetadata(IsContainerObject.class), is(true)); assertThat(mycontainer.getMetadata(IsContainerObject.class).getTestClass().getName(), is(InjectableTest.class.getName())); verify(cubeController, times(1)).start("mycontainer"); verify(cubeController, times(1)).create("mycontainer"); }
@Test public void shouldStartAContainerObjectDefinedAsImage() { CubeContainerObjectTestEnricher cubeContainerObjectTestEnricher = new CubeContainerObjectTestEnricher(); cubeContainerObjectTestEnricher.containerObjectFactoryInstance = () -> dockerContainerObjectFactory; when(serviceLoader.all(TestEnricher.class)).thenReturn(Arrays.asList(cubeContainerObjectTestEnricher)); FourthInjectableTest injectableTest = new FourthInjectableTest(); cubeContainerObjectTestEnricher.enrich(injectableTest); final org.arquillian.cube.spi.Cube<?> image = cubeRegistry.getCube("image"); assertThat(image, is(notNullValue())); assertThat(image.hasMetadata(IsContainerObject.class), is(true)); assertThat(image.getMetadata(IsContainerObject.class).getTestClass().getName(), is(FourthInjectableTest.class.getName())); verify(cubeController, times(1)).start("image"); verify(cubeController, times(1)).create("image"); DockerCube dockerCube = (DockerCube) image; assertThat(dockerCube.configuration().getImage().toImageRef(), is("tomee:8-jre-1.7.2-webprofile")); }
@Override public void proxyStarted(Cube<?> cube) { Proxy proxy = proxyInst.get(); if (!cube.hasMetadata(HasPortBindings.class)) { throw new IllegalStateException("Proxy Cube " + proxy.getName() + " has no PortBinding data."); } HasPortBindings bindings = cube.getMetadata(HasPortBindings.class); PortAddress communicationPort = bindings.getMappedAddress(proxy.getCommunicationPort().getExposed()); scenarioInst.set(new ToxiProxyScenario(ToxiProxyClient.Builder.create(communicationPort.getIP(), communicationPort.getPort()), injectorInstance.get())); }
@Test public void shouldStartAContainerObjectDefinedAsImageAndEnvironmentVariables() { CubeContainerObjectTestEnricher cubeContainerObjectTestEnricher = new CubeContainerObjectTestEnricher(); cubeContainerObjectTestEnricher.containerObjectFactoryInstance = () -> dockerContainerObjectFactory; when(serviceLoader.all(TestEnricher.class)).thenReturn(Arrays.asList(cubeContainerObjectTestEnricher)); FifthInjectableTest injectableTest = new FifthInjectableTest(); cubeContainerObjectTestEnricher.enrich(injectableTest); final org.arquillian.cube.spi.Cube<?> image = cubeRegistry.getCube("image"); assertThat(image, is(notNullValue())); assertThat(image.hasMetadata(IsContainerObject.class), is(true)); assertThat(image.getMetadata(IsContainerObject.class).getTestClass().getName(), is(FifthInjectableTest.class.getName())); verify(cubeController, times(1)).start("image"); verify(cubeController, times(1)).create("image"); DockerCube dockerCube = (DockerCube) image; assertThat(dockerCube.configuration().getImage().toImageRef(), is("tomee:8-jre-1.7.2-webprofile")); assertThat(dockerCube.configuration().getEnv(), hasItems("a=b", "c=d")); }
@Test public void shouldReportCorrectStateOfMetadata() { Cube<?> cube = new TestCube(); cube.addMetadata(TestMetadata.class, new TestMetadataImpl()); Assert.assertTrue(cube.hasMetadata(TestMetadata.class)); }