Search in sources :

Example 1 with ComponentConfigProviderService

use of com.sequenceiq.cloudbreak.service.ComponentConfigProviderService in project cloudbreak by hortonworks.

the class StackComponentUpdaterTest method testUpdateImageComponents.

@Test
public void testUpdateImageComponents() throws CloudbreakImageCatalogException, CloudbreakImageNotFoundException {
    Stack stack = TestUtil.stack();
    Cluster cluster = TestUtil.cluster();
    stack.setCluster(cluster);
    StatedImage targetImage = ImageTestUtil.getImageFromCatalog(true, "targetImageUuid", TARGET_STACK_VERSION);
    Image originalImage = ImageTestUtil.getImage(true, "originalImageUuid", STACK_VERSION);
    Component originalImageComponent = new Component(ComponentType.IMAGE, ComponentType.IMAGE.name(), new Json(originalImage), stack);
    when(componentConfigProviderService.getComponentsByStackId(stack.getId())).thenReturn(Set.of(originalImageComponent));
    Set<Component> targetComponents = createComponents(stack, targetImage);
    underTest.updateComponentsByStackId(stack, targetComponents, true);
    ArgumentCaptor<Set<Component>> componentCatcher = ArgumentCaptor.forClass(Set.class);
    verify(componentConfigProviderService, times(1)).store(componentCatcher.capture());
    assertEquals(3, componentCatcher.getValue().size());
    assertTrue(componentCatcher.getValue().stream().anyMatch(component -> {
        Object version = component.getAttributes().getValue("version");
        if (Objects.nonNull(version)) {
            return ((String) version).contains(TARGET_STACK_VERSION);
        } else {
            return false;
        }
    }));
    assertTrue(componentCatcher.getValue().stream().anyMatch(component -> {
        Object userData = component.getAttributes().getValue("userdata");
        if (Objects.nonNull(userData)) {
            return ((Map<String, String>) userData).get(InstanceGroupType.GATEWAY.name()).contains("gw user data");
        } else {
            return false;
        }
    }));
}
Also used : Stack(com.sequenceiq.cloudbreak.domain.stack.Stack) Cluster(com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster) ComponentType(com.sequenceiq.cloudbreak.common.type.ComponentType) Mock(org.mockito.Mock) ImageTestUtil(com.sequenceiq.cloudbreak.service.image.ImageTestUtil) TestUtil(com.sequenceiq.cloudbreak.TestUtil) ComponentConfigProviderService(com.sequenceiq.cloudbreak.service.ComponentConfigProviderService) ImageService(com.sequenceiq.cloudbreak.service.image.ImageService) ArgumentCaptor(org.mockito.ArgumentCaptor) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) StatedImage(com.sequenceiq.cloudbreak.service.image.StatedImage) Map(java.util.Map) CloudbreakImageCatalogException(com.sequenceiq.cloudbreak.core.CloudbreakImageCatalogException) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) Component(com.sequenceiq.cloudbreak.domain.stack.Component) InjectMocks(org.mockito.InjectMocks) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) Set(java.util.Set) Mockito.times(org.mockito.Mockito.times) Mockito.when(org.mockito.Mockito.when) ClouderaManagerRepo(com.sequenceiq.cloudbreak.cloud.model.ClouderaManagerRepo) Image(com.sequenceiq.cloudbreak.cloud.model.catalog.Image) Mockito.verify(org.mockito.Mockito.verify) CloudbreakImageNotFoundException(com.sequenceiq.cloudbreak.core.CloudbreakImageNotFoundException) InstanceGroupType(com.sequenceiq.common.api.type.InstanceGroupType) Objects(java.util.Objects) Test(org.junit.jupiter.api.Test) Json(com.sequenceiq.cloudbreak.common.json.Json) ClusterComponent(com.sequenceiq.cloudbreak.domain.stack.cluster.ClusterComponent) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) Set(java.util.Set) Cluster(com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster) Json(com.sequenceiq.cloudbreak.common.json.Json) StatedImage(com.sequenceiq.cloudbreak.service.image.StatedImage) Image(com.sequenceiq.cloudbreak.cloud.model.catalog.Image) Component(com.sequenceiq.cloudbreak.domain.stack.Component) ClusterComponent(com.sequenceiq.cloudbreak.domain.stack.cluster.ClusterComponent) StatedImage(com.sequenceiq.cloudbreak.service.image.StatedImage) Map(java.util.Map) Stack(com.sequenceiq.cloudbreak.domain.stack.Stack) Test(org.junit.jupiter.api.Test)

Aggregations

TestUtil (com.sequenceiq.cloudbreak.TestUtil)1 ClouderaManagerRepo (com.sequenceiq.cloudbreak.cloud.model.ClouderaManagerRepo)1 Image (com.sequenceiq.cloudbreak.cloud.model.catalog.Image)1 Json (com.sequenceiq.cloudbreak.common.json.Json)1 ComponentType (com.sequenceiq.cloudbreak.common.type.ComponentType)1 CloudbreakImageCatalogException (com.sequenceiq.cloudbreak.core.CloudbreakImageCatalogException)1 CloudbreakImageNotFoundException (com.sequenceiq.cloudbreak.core.CloudbreakImageNotFoundException)1 Component (com.sequenceiq.cloudbreak.domain.stack.Component)1 Stack (com.sequenceiq.cloudbreak.domain.stack.Stack)1 Cluster (com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster)1 ClusterComponent (com.sequenceiq.cloudbreak.domain.stack.cluster.ClusterComponent)1 ComponentConfigProviderService (com.sequenceiq.cloudbreak.service.ComponentConfigProviderService)1 ImageService (com.sequenceiq.cloudbreak.service.image.ImageService)1 ImageTestUtil (com.sequenceiq.cloudbreak.service.image.ImageTestUtil)1 StatedImage (com.sequenceiq.cloudbreak.service.image.StatedImage)1 InstanceGroupType (com.sequenceiq.common.api.type.InstanceGroupType)1 Map (java.util.Map)1 Objects (java.util.Objects)1 Set (java.util.Set)1 Assertions.assertEquals (org.junit.jupiter.api.Assertions.assertEquals)1