public void register(@Observes(precedence = 100) CubeConfiguration configuration, Injector injector) { CubeRegistry registry = new LocalCubeRegistry(); registryProducer.set(registry); } }
@Override public <T extends Cube<?>> T getCube(String id, Class<T> type) { return type.cast(getCube(id)); }
final LocalCubeRegistry localCubeRegistry = new LocalCubeRegistry(); localCubeRegistry.addCube(cube); bind(ApplicationScoped.class, CubeRegistry.class, localCubeRegistry);
public static DockerCube prepareContainer(Container container, DockerClientExecutor dockerClientExecutor, LocalCubeRegistry localCubeRegistry) throws NoSuchFieldException, IllegalAccessException { final Optional<Field> hostIpContextField = Reflections.findFieldByGenericType(Container.class, Instance.class, HostIpContext.class); if (hostIpContextField.isPresent()) { Reflections.injectObject(container, hostIpContextField.get(), (Instance) () -> new HostIpContext(dockerClientExecutor.getDockerServerIp())); } final Optional<Field> dockerClientExecutorField = Reflections.findFieldByGenericType(Container.class, Instance.class, DockerClientExecutor.class); if (dockerClientExecutorField.isPresent()) { Reflections.injectObject(container, dockerClientExecutorField.get(), (Instance) () -> dockerClientExecutor); } DockerCube dockerCube = new DockerCube(container.getContainerName(), container.getCubeContainer(), dockerClientExecutor); localCubeRegistry.addCube(dockerCube); final Optional<Field> cubeRegistryField = Reflections.findFieldByGenericType(Container.class, Instance.class, CubeRegistry.class); if (cubeRegistryField.isPresent()) { Reflections.injectObject(container, cubeRegistryField.get(), (Instance) () -> localCubeRegistry); } final Optional<Field> eventField = Reflections.findFieldByGenericType(DockerCube.class, Event.class, CubeLifecyleEvent.class); if (eventField.isPresent()) { Reflections.injectObject(dockerCube, eventField.get(), (Event) o -> { }); } return dockerCube; }
@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); }
public void register(@Observes(precedence = 100) CubeConfiguration configuration, Injector injector) { CubeRegistry registry = new LocalCubeRegistry(); registryProducer.set(registry); } }
@Override public <T extends Cube<?>> T getCube(String id, Class<T> type) { return type.cast(getCube(id)); }
@Before public void setUp() throws Exception { cubeRegistry = new LocalCubeRegistry(); }
@Before public void init() { cubeRegistry = new LocalCubeRegistry(); networkRegistry = new LocalDockerNetworkRegistry(); cubeController = mock(CubeController.class); dockerClientExecutor = mock(DockerClientExecutor.class); }
private List<DockerCube> before(Object testInstance, List<Field> allStaticContainerDslFields) throws Exception { final List<DockerCube> createdCubes = new ArrayList<>(); final LocalCubeRegistry localCubeRegistry = new LocalCubeRegistry(); for (Field containerDslField : allStaticContainerDslFields) { final ContainerDsl containerDsl = (ContainerDsl) containerDslField.get(testInstance); final Container container = containerDsl.buildContainer(); final DockerCube dockerCube = Injector.prepareContainer(container, dockerClientExecutor, localCubeRegistry); createdCubes.add(dockerCube); dockerCube.create(); dockerCube.start(); systemPropertiesCubeSetter.createCubeSystemProperties(new AfterStart(dockerCube.getId()), localCubeRegistry); } return createdCubes; } }
@Before public void init() { cubeRegistry = new LocalCubeRegistry(); dockerContainerObjectFactory = new DockerContainerObjectFactory(); cubeController = mock(CubeController.class); dockerClientExecutor = mock(DockerClientExecutor.class); injector = mock(Injector.class); serviceLoader = mock(ServiceLoader.class); when(serviceLoader.all(any(Class.class))).thenReturn(Collections.emptyList()); dockerContainerObjectFactory.serviceLoaderInstance = () -> serviceLoader; dockerContainerObjectFactory.dockerClientExecutorInstance = () -> dockerClientExecutor; dockerContainerObjectFactory.cubeRegistryInstance = () -> cubeRegistry; dockerContainerObjectFactory.cubeControllerInstance = () -> cubeController; dockerContainerObjectFactory.injectorInstance = () -> injector; //We asure that there is no previous executions there. deleteTestDirectory(); }
private void configureCube() throws IOException { cubeRegistry = new LocalCubeRegistry(); when(cube.getId()).thenReturn(CUBE_ID); cubeRegistry.addCube(cube); when(statistics.getNetworks()).thenReturn(getNetworks()); when(statistics.getMemoryStats()).thenReturn(getMemory()); when(statistics.getBlkioStats()).thenReturn(getIOStats()); when(dockerClientExecutor.statsContainer(CUBE_ID)).thenReturn(statistics); }
@Before public void setup() { when(cube.getId()).thenReturn(CUBE_ID); cubeRegistry = new LocalCubeRegistry(); cubeRegistry.addCube(cube); bind(ApplicationScoped.class, CubeRegistry.class, cubeRegistry); }
@Before public void setup() { Yaml yaml = new Yaml(); @SuppressWarnings("unchecked") Map<String, Object> content = (Map<String, Object>) yaml.load(CONTENT); when(cube.getId()).thenReturn(CUBE_ID); when(cube.configuration()).thenReturn(content); when(container.getName()).thenReturn(CUBE_ID); when(container.getDeployableContainer()).thenReturn(deployableContainer); when(deployableContainer.getConfigurationClass()).thenReturn(ContainerConfiguration.class); when(container.getContainerConfiguration()).thenReturn(containerDef); when(containerRegistry.getContainers()).thenReturn(Arrays.asList(container)); when(hasPortBindings.getContainerIP()).thenReturn("192.168.0.1"); registry = new LocalCubeRegistry(); registry.addCube(cube); bind(ApplicationScoped.class, CubeRegistry.class, registry); bind(ApplicationScoped.class, ContainerRegistry.class, containerRegistry); }
@Before @SuppressWarnings("unchecked") public void setup() { when(cube.getId()).thenReturn(CUBE_ID); when(container.getName()).thenReturn(CUBE_ID); when(container.getDeployableContainer()).thenReturn(deployableContainer); when(container.getContainerConfiguration()).thenReturn(containerDef); when(containerDef.getContainerProperties()).thenReturn(Collections.EMPTY_MAP); when(containerRegistry.getContainers()).thenReturn(Arrays.asList(container)); registry = new LocalCubeRegistry(); registry.addCube(cube); bind(ApplicationScoped.class, CubeRegistry.class, registry); bind(ApplicationScoped.class, ContainerRegistry.class, containerRegistry); bind(ApplicationScoped.class, CubeConfiguration.class, new CubeConfiguration()); }
@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); }
@Before public void setup() { Yaml yaml = new Yaml(); @SuppressWarnings("unchecked") Map<String, Object> content = (Map<String, Object>) yaml.load(CONTENT); when(cube.getId()).thenReturn(CUBE_ID); when(cube.configuration()).thenReturn(content); when(cube.getMetadata(HasPortBindings.class)).thenReturn( new TestPortBindings(new Binding("localhost").addPortBinding(8089, 8090))); when(container.getName()).thenReturn(CUBE_ID); when(container.getDeployableContainer()).thenReturn(deployableContainer); when(deployableContainer.getConfigurationClass()).thenReturn(ContainerConfiguration.class); when(container.getContainerConfiguration()).thenReturn(containerDef); when(containerRegistry.getContainers()).thenReturn(Arrays.asList(container)); registry = new LocalCubeRegistry(); registry.addCube(cube); bind(ApplicationScoped.class, CubeRegistry.class, registry); bind(ApplicationScoped.class, ContainerRegistry.class, containerRegistry); }
@Override public void evaluate() throws Throwable { List<Throwable> errors = new ArrayList<>(); // Inject Arquillian resources container = containerBuilder.build(); final LocalCubeRegistry localCubeRegistry = new LocalCubeRegistry(); final DockerCube dockerCube = Injector.prepareContainer(container, dockerClientExecutor, localCubeRegistry); try { dockerCube.create(); dockerCube.start(); systemPropertiesCubeSetter.createCubeSystemProperties(new AfterStart(dockerCube.getId()), localCubeRegistry); // Run tests base.evaluate(); } catch (Throwable t) { errors.add(t); } finally { // stop container dockerCube.stop(); dockerCube.destroy(); systemPropertiesCubeSetter.removeCubeSystemProperties(new AfterDestroy(dockerCube.getId())); systemPropertiesCubeSetter.removeDockerHostProperty(new AfterSuite()); } MultipleFailureException.assertEmpty(errors); } };