@Test public void shouldNotUpdateIfNoImageStreamForTrigger() { givenAConnection(); givenTheDeploymentConfigExistFor("myimagename", "v0", NAMESPACE, ResourceKind.IMAGE_STREAM_TAG); assertFalse( job.updateTriggerIfUpdate(connection, project.getName(), parameters.getResourceName())); }
@Test public void shouldNotUpdateIfImageChangeTriggerNameSpaceIsBlank() { givenAConnection(); givenTheImageStreamExistsTo("myimagename"); givenTheDeploymentConfigExistFor("myimagename", "v0", "", ResourceKind.IMAGE_STREAM_TAG); assertFalse( job.updateTriggerIfUpdate(connection, project.getName(), parameters.getResourceName())); }
@Test public void shouldSkipGeneratingResourcesWhenTheImageIsBeingUpdated() { givenAConnection(); givenTheImageStreamExistsTo("myimagename"); givenTheDeploymentConfigExistFor("myimagename", "v0", NAMESPACE, ResourceKind.IMAGE_STREAM_TAG); doReturn(DOCKER_TAG).when(job).getSourceImage(); assertThat(job.doRun(monitor)).isEqualTo(Status.OK_STATUS); verify(connection, times(0)).createResource(any()); }
@Test public void shouldNotUpdateIfImageChangeTriggerHasWrongKind() { givenAConnection(); givenTheImageStreamExistsTo("myimagename"); givenTheDeploymentConfigExistFor( "myimagename", "v0", NAMESPACE, "any-not-IMAGE_STREAM_TAG-kind"); assertFalse( job.updateTriggerIfUpdate(connection, project.getName(), parameters.getResourceName())); }
@Test public void testStubDeploymentConfig() { IImageStream is = givenAnImageStreamTo(project.getName(), DOCKER_TAG); IResource resource = job.stubDeploymentConfig(factory, RESOURCE_NAME, DOCKER_TAG, is); assertTrue(resource instanceof IDeploymentConfig); IDeploymentConfig dc = (IDeploymentConfig) resource; assertEquals( "Exp. replicas to match incoming params", parameters.getReplicas(), dc.getReplicas()); assertEquals( "Exp. the selector key to be the resourceName", RESOURCE_NAME, dc.getReplicaSelector().get(DeployImageJob.SELECTOR_KEY)); IContainer container = dc.getContainer(RESOURCE_NAME); assertNotNull("Exp. to find a container with the resource name", container); Collection<IDeploymentTrigger> triggers = dc.getTriggers(); assertTrue( "Exp. a config change trigger", triggers .stream() .filter(t -> DeploymentTriggerType.CONFIG_CHANGE.equals(t.getType())) .findFirst() .isPresent()); // assert ict matches container spec Optional<IDeploymentTrigger> icTrigger = triggers .stream() .filter(t -> DeploymentTriggerType.IMAGE_CHANGE.equals(t.getType())) .findFirst(); assertTrue(icTrigger.isPresent()); IDeploymentImageChangeTrigger imageChangeTrigger = (IDeploymentImageChangeTrigger) icTrigger.get(); Collection<String> names = imageChangeTrigger.getContainerNames(); assertEquals(1, names.size()); assertEquals( "Exp. the container and trigger names to match", container.getName(), names.iterator().next()); assertTrue(imageChangeTrigger.isAutomatic()); assertEquals(ResourceKind.IMAGE_STREAM_TAG, imageChangeTrigger.getKind()); assertEquals( "Exp. the trigger to point to the imagestream name", new DockerImageURI(null, null, is.getName(), DOCKER_TAG.getTag()), imageChangeTrigger.getFrom()); assertEquals( "Exp. the trigger to point to the imagestream name", is.getNamespace(), imageChangeTrigger.getNamespace()); }
@Test public void shouldNotUpdateIfNoImageChangeTrigger() { givenAConnection(); givenTheImageStreamExistsTo("myimagename"); IDeploymentConfig dc = createResource(IDeploymentConfig.class); when(dc.getTriggers()).thenReturn(Collections.EMPTY_LIST); when(connection.getResource( ResourceKind.DEPLOYMENT_CONFIG, project.getName(), parameters.getResourceName())) .thenReturn(dc); assertFalse( job.updateTriggerIfUpdate(connection, project.getName(), parameters.getResourceName())); }
@Test public void shouldUpdateImageTagIfItDifferesFromExisting() { givenAConnection(); givenTheImageStreamExistsTo("myimagename"); givenTheDeploymentConfigExistFor("myimagename", "v0", NAMESPACE, ResourceKind.IMAGE_STREAM_TAG); doReturn(DOCKER_NEW_TAG).when(job).getSourceImage(); IResource resource = connection.getResource( ResourceKind.DEPLOYMENT_CONFIG, project.getName(), parameters.getResourceName()); IDeploymentImageChangeTrigger trigger = (IDeploymentImageChangeTrigger) ((IDeploymentConfig) resource).getTriggers().toArray()[0]; assertThat(job.doRun(monitor)).isEqualTo(Status.OK_STATUS); verify(trigger, times(1)).setFrom(new DockerImageURI(null, null, "myimagename", "v1")); }
private IImageStream whenStubbingTheImageStream(DockerImageURI uri) { return (IImageStream) job.stubImageStream(factory, RESOURCE_NAME, project, uri); }