.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.high - - @Test - public void testSetResultMessage() { - ValidationTaskResult testSubject; - String resultMessage = ""; - - // default test - testSubject = createTestSubject(); - testSubject.setResultMessage(resultMessage); - } - - - @Test - public void testIsSuccessful() { - ValidationTaskResult testSubject; - boolean result; - - // default test - testSubject = createTestSubject(); - result = testSubject.isSuccessful(); - } - - - @Test - public void testSetSuccessful() { - ValidationTaskResult testSubject; - boolean successful = false; - - // default test - testSubject = createTestSubject(); - testSubject.setSuccessful(successful); - } -} @@ -1,648 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - * Modifications copyright (c) 2019 Nokia - * ================================================================================ - */ -package org.openecomp.sdc.asdctool.migration.tasks.mig1710; - -import com.google.common.collect.Lists; -import fj.data.Either; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; -import org.openecomp.sdc.asdctool.migration.core.task.MigrationResult; -import org.openecomp.sdc.asdctool.migration.tasks.handlers.XlsOutputHandler; -import org.openecomp.sdc.be.components.impl.ResourceBusinessLogic; -import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic; -import org.openecomp.sdc.be.components.impl.exceptions.ByResponseFormatComponentException; -import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic; -import org.openecomp.sdc.be.components.scheduledtasks.ComponentsCleanBusinessLogic; -import org.openecomp.sdc.be.config.Configuration; -import org.openecomp.sdc.be.config.ConfigurationManager; -import org.openecomp.sdc.be.dao.api.ActionStatus; -import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; -import org.openecomp.sdc.be.dao.jsongraph.GraphVertex; -import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao; -import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum; -import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum; -import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum; -import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields; -import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; -import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum; -import org.openecomp.sdc.be.impl.ComponentsUtils; -import org.openecomp.sdc.be.model.Component; -import org.openecomp.sdc.be.model.ComponentInstance; -import org.openecomp.sdc.be.model.ComponentParametersView; -import org.openecomp.sdc.be.model.LifecycleStateEnum; -import org.openecomp.sdc.be.model.Resource; -import org.openecomp.sdc.be.model.Service; -import org.openecomp.sdc.be.model.User; -import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade; -import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; -import org.openecomp.sdc.be.model.operations.impl.CsarOperation; -import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation; -import org.openecomp.sdc.common.api.ConfigurationSource; -import org.openecomp.sdc.common.http.client.api.HttpRequestHandler; -import org.openecomp.sdc.exception.ResponseFormat; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -@RunWith(MockitoJUnitRunner.class) -public class UpgradeMigration1710Test { - - private static final String USER = "jh0003"; - private static final String CONF_LEVEL = "5.0"; - private static final String COMPONENT_UNIQUE_ID = "12345"; - private static final String OLD_VERSION = "1.0"; - private static final String UPDATED_VERSION = "2.0"; - private static final String CSAR_UUID = "1234578"; - private static HttpRequestHandler originHandler; - - private final User user = new User(); - - @InjectMocks - private UpgradeMigration1710 migration = new UpgradeMigration1710(); - @Mock - private UserAdminOperation userAdminOperation; - @Mock - private ToscaOperationFacade toscaOperationFacade; - @Mock - private LifecycleBusinessLogic lifecycleBusinessLogic; - @Mock - private JanusGraphDao janusGraphDao; - @Mock - private ComponentsUtils componentUtils; - @Mock - private CsarOperation csarOperation; - @Mock - private ConfigurationSource configurationSource; - //don't remove - it is intended to avoid the xls file generating - @Mock - private XlsOutputHandler outputHandler; - @Mock - private ResourceBusinessLogic resourceBusinessLogic; - @Mock - private ServiceBusinessLogic serviceBusinessLogic; - @Mock - private ResponseFormat responseFormat; - @Mock - private ComponentsCleanBusinessLogic componentsCleanBusinessLogic; - - private static ConfigurationManager configurationManager; - private static List<String> resources = Stream.of("org.openecomp.resource.cp.extCP").collect(Collectors.toList()); - private static Map<String, List<String>> resourcesForUpgrade; - private static Configuration.EnvironmentContext environmentContext = new Configuration.EnvironmentContext(); - - private Resource resource; - private Service service; - private List<String> vfList = new ArrayList<>(); - - @BeforeClass - public static void setUpClass() { - resourcesForUpgrade = new HashMap<>(); - resourcesForUpgrade.put(CONF_LEVEL, resources); - originHandler = HttpRequestHandler.get(); - } - - @AfterClass - public static void tearDownClass() { - //put the origin handler back - HttpRequestHandler.setTestInstance(originHandler); - } - - @Before - public void setUp() { - user.setUserId(USER); - configurationManager = new ConfigurationManager(configurationSource); - configurationManager.setConfiguration(new Configuration()); - configurationManager.getConfiguration().setSkipUpgradeVSPs(true); - configurationManager.getConfiguration().setSkipUpgradeFailedVfs(true); - configurationManager.getConfiguration().setAutoHealingOwner(USER); - configurationManager.getConfiguration().setSupportAllottedResourcesAndProxy(true); - configurationManager.getConfiguration().setDeleteLockTimeoutInSeconds(10); - configurationManager.getConfiguration().setMaxDeleteComponents(5); - configurationManager.getConfiguration().setEnableAutoHealing(true); - configurationManager.getConfiguration().setToscaConformanceLevel("5.0"); - environmentContext.setDefaultValue("General_Revenue-Bearing"); - configurationManager.getConfiguration().setEnvironmentContext(environmentContext); - HashMap<String, List<String>> resourcesForUpgrade = new HashMap(); - resourcesForUpgrade.put("5.0", Lists.newArrayList("port")); - configurationManager.getConfiguration().setResourcesForUpgrade(resourcesForUpgrade); - - migration.init(); - migration.setNodeTypesSupportOnly(false); - when(componentsCleanBusinessLogic.lockDeleteOperation()).thenReturn(StorageOperationStatus.OK); - - resource = new Resource(); - resource.setCsarUUID(CSAR_UUID); - resource.setVersion(OLD_VERSION); - resource.setUniqueId(COMPONENT_UNIQUE_ID); - - service = new Service(); - service.setVersion(OLD_VERSION); - service.setUniqueId(COMPONENT_UNIQUE_ID); - - vfList.add(COMPONENT_UNIQUE_ID); - - when(responseFormat.getFormattedMessage()) - .thenReturn(""); - when(componentUtils.convertFromStorageResponse(any(), any())).thenCallRealMethod(); - mockChangeComponentState(); - } - - @Test - public void nodeTypesUpgradeFailed() { - migration.setNodeTypesSupportOnly(true); - resolveUserAndDefineUpgradeLevel(); - when(janusGraphDao.getByCriteria(any(), any(), any(), any())) - .thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)); - assertEquals(MigrationResult.MigrationStatus.FAILED, migration.migrate().getMigrationStatus()); - } - - @Test - public void migrationDisabled() { - configurationManager.getConfiguration().setEnableAutoHealing(false); - migration.init(); - assertEquals(MigrationResult.MigrationStatus.COMPLETED, migration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(0)).commit(); - verify(janusGraphDao, times(0)).rollback(); - } - - @Test - public void migrationFailedIfDeleteNodeLockFailed() { - when(componentsCleanBusinessLogic.lockDeleteOperation()) - .thenReturn(StorageOperationStatus.BAD_REQUEST); - assertEquals(MigrationResult.MigrationStatus.FAILED, migration.migrate().getMigrationStatus()); - } - - @Test - public void migrationFailedIfDeleteNodeLockRetryFailed() { - when(componentsCleanBusinessLogic.lockDeleteOperation()) - .thenReturn(StorageOperationStatus.FAILED_TO_LOCK_ELEMENT) - .thenReturn(StorageOperationStatus.BAD_REQUEST); - assertEquals(MigrationResult.MigrationStatus.FAILED, migration.migrate().getMigrationStatus()); - } - - @Test - public void nodeTypesOnlyUpgradePassed() { - migration.setNodeTypesSupportOnly(true); - upgradeAllScenario(false); - assertEquals(MigrationResult.MigrationStatus.COMPLETED, migration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(2)).commit(); - verify(janusGraphDao, times(0)).rollback(); - } - - @Test - public void nodeTypesUpgradePassedAndVFsUpgradeFailedWhenSkipFailedVFsIsNotSupported() { - final boolean failOnVfUpgrade = true; - final boolean upgradeServices = false; - final boolean exceptionOnVfUpgrade = false; - final boolean upgradeVFC = false; - final boolean isFailed = true; - configurationManager.getConfiguration().setSkipUpgradeFailedVfs(false); - migration.init(); - migration.setNodeTypesSupportOnly(false); - resolveUserAndDefineUpgradeLevel(); - upgradeRules(failOnVfUpgrade, exceptionOnVfUpgrade, upgradeServices, upgradeVFC, isFailed); - assertEquals(MigrationResult.MigrationStatus.FAILED, migration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(1)).commit(); - verify(janusGraphDao, times(2)).rollback(); - } - - - @Test - public void upgradeAllVFsUpgradeFailedOnExceptionWhenSkipFailedVFsIsNotSupported() { - final boolean failOnVfUpgrade = false; - final boolean upgradeServices = false; - final boolean exceptionOnVfUpgrade = true; - final boolean upgradeVFC = false; - final boolean isFailed = true; - configurationManager.getConfiguration().setSkipUpgradeFailedVfs(false); - resolveUserAndDefineUpgradeLevel(); - upgradeRules(failOnVfUpgrade, exceptionOnVfUpgrade, upgradeServices, upgradeVFC, isFailed); - migration.init(); - assertEquals(MigrationResult.MigrationStatus.COMPLETED, migration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(2)).commit(); - verify(janusGraphDao, times(0)).rollback(); - } - - @Test - public void upgradeAllIfVFsUpgradeFailedOnExceptionWhenSkipFailedVFsIsSupported() { - final boolean failOnVfUpgrade = false; - final boolean upgradeServices = true; - final boolean exceptionOnFvUpgrade = true; - final boolean upgradeVFC = false; - final boolean isFailed = false; - configurationManager.getConfiguration().setSkipUpgradeFailedVfs(true); - resolveUserAndDefineUpgradeLevel(); - upgradeRules(failOnVfUpgrade, exceptionOnFvUpgrade, upgradeServices, upgradeVFC, isFailed); - assertEquals(MigrationResult.MigrationStatus.COMPLETED, migration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(3)).commit(); - verify(janusGraphDao, times(1)).rollback(); - } - - - @Test - public void upgradeAll() { - upgradeAllScenario(true); - assertEquals(MigrationResult.MigrationStatus.COMPLETED, migration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(4)).commit(); - verify(janusGraphDao, times(0)).rollback(); - } - - @Test - public void upgradeAllWhenDeleteLockRetrySucceeded() { - when(componentsCleanBusinessLogic.lockDeleteOperation()) - .thenReturn(StorageOperationStatus.FAILED_TO_LOCK_ELEMENT) - .thenReturn(StorageOperationStatus.OK); - upgradeAllScenario(true); - assertEquals(MigrationResult.MigrationStatus.COMPLETED, migration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(4)).commit(); - verify(janusGraphDao, times(0)).rollback(); - } - - @Test - public void upgradeAllWhenVspUpgradeIsRequired() { - final boolean failOnVfUpgrade = false; - final boolean upgradeServices = true; - final boolean exceptionOnFvUpgrade = false; - final boolean upgradeVFC = true; - final boolean isFailed = true; - resolveUserAndDefineUpgradeLevel(); - upgradeRules(failOnVfUpgrade, exceptionOnFvUpgrade, upgradeServices, upgradeVFC, isFailed); - configurationManager.getConfiguration().setSkipUpgradeVSPs(false); - assertEquals(MigrationResult.MigrationStatus.COMPLETED, migration.migrate().getMigrationStatus()); - } - - @Test - public void migrationFailedWhenUserNotResolved() { - when(userAdminOperation.getUserData(anyString(), eq(false))).thenReturn(Either.right(ActionStatus.MISSING_INFORMATION)); - when(janusGraphDao.rollback()).thenReturn(JanusGraphOperationStatus.OK); - assertEquals(MigrationResult.MigrationStatus.FAILED, migration.migrate().getMigrationStatus()); - } - - @Test - public void verifyThatCheckedOutResourcesMarkedAsDeletedIfUpgradeFailed() { - mockCheckoutFlow(); - when(resourceBusinessLogic.validateAndUpdateResourceFromCsar(any(Resource.class), any(), any(), any(), - any())) - .thenThrow(new ByResponseFormatComponentException(responseFormat)); - when(resourceBusinessLogic.deleteResource(anyString(), any())) - .thenReturn(responseFormat); - mockChangeComponentState(); - migration.upgradeVFs(vfList, false); - verify(resourceBusinessLogic).deleteResource(anyString(), any()); - } - - @Test - public void verifyThatCheckedOutAllottedResourcesMarkedAsDeletedIfUpgradeFailed() { - mockCheckoutFlow(); - when(resourceBusinessLogic.validateAndUpdateResourceFromCsar(any(Resource.class), any(), any(), any(), - any())) - .thenThrow(new ByResponseFormatComponentException(responseFormat)); - when(resourceBusinessLogic.deleteResource(anyString(), any())) - .thenReturn(responseFormat); - mockChangeComponentState(); - migration.upgradeVFs(vfList, true); - verify(resourceBusinessLogic).deleteResource(anyString(), any()); - } - - @Test - public void verifyThatCheckedOutResourceIsNotMarkedAsDeletedIfUpgradeSucceeded() { - mockCheckoutFlow(); - resource.setVersion(UPDATED_VERSION); - when(resourceBusinessLogic.validateAndUpdateResourceFromCsar(any(Resource.class), any(), any(), any(), - any())) - .thenReturn(resource); - mockChangeComponentState(); - migration.upgradeVFs(vfList, true); - verify(resourceBusinessLogic, times(0)).deleteResource(anyString(), any()); - } - - @Test - public void verifyThatCheckedOutServicesMarkedAsDeletedIfUpgradeFailed() { - List<String> servicesForUpgrade = new ArrayList<>(); - servicesForUpgrade.add(COMPONENT_UNIQUE_ID); - - Either<Resource, StorageOperationStatus> foundServices = Either.left(resource); - mockCheckoutFlow(); - when(toscaOperationFacade.getToscaElement(any(), any(ComponentParametersView.class))) - .thenReturn(Either.left(service)); - when(toscaOperationFacade.getLatestCertifiedByToscaResourceName(any(), any(), any())) - .thenReturn(foundServices); - migration.upgradeServices(servicesForUpgrade, component -> true, "services"); - verify(serviceBusinessLogic, times(0)).deleteService(anyString(), any()); - } - - @Test - public void verifyThatCheckedOutServicesIsNotMarkedAsDeletedIfUpgradeSucceeded() { - List<String> servicesForUpgrade = new ArrayList<>(); - servicesForUpgrade.add(COMPONENT_UNIQUE_ID); - - mockCheckoutFlow(); - when(toscaOperationFacade.getLatestCertifiedByToscaResourceName(anyString(), any(VertexTypeEnum.class), any(JsonParseFlagEnum.class))) - .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND)); - when(serviceBusinessLogic.deleteService(anyString(), any())) - .thenReturn(responseFormat); - migration.upgradeServices(servicesForUpgrade, component -> true, "services"); - verify(serviceBusinessLogic).deleteService(anyString(), any()); - } - - - @Test - public void unlockDeleteOperationIsPerformedIfItWasLocked() { - migration.isLockDeleteOperationSucceeded(); - migration.unlockDeleteOperation(); - verify(componentsCleanBusinessLogic).unlockDeleteOperation(); - } - - @Test - public void unlockDeleteOperationIsNotPerformedIfItWasNotLocked() { - when(componentsCleanBusinessLogic.lockDeleteOperation()).thenReturn(StorageOperationStatus.GENERAL_ERROR); - migration.isLockDeleteOperationSucceeded(); - migration.unlockDeleteOperation(); - verify(componentsCleanBusinessLogic, times(0)).unlockDeleteOperation(); - } - - @Test - public void deleteLockSucceededAfterRetry() { - when(componentsCleanBusinessLogic.lockDeleteOperation()) - .thenReturn(StorageOperationStatus.FAILED_TO_LOCK_ELEMENT) - .thenReturn(StorageOperationStatus.FAILED_TO_LOCK_ELEMENT) - .thenReturn(StorageOperationStatus.FAILED_TO_LOCK_ELEMENT) - .thenReturn(StorageOperationStatus.OK); - migration.isLockDeleteOperationSucceeded(); - migration.unlockDeleteOperation(); - verify(componentsCleanBusinessLogic).unlockDeleteOperation(); - } - - @Test - public void deleteLockFailedAfterRetry() { - when(componentsCleanBusinessLogic.lockDeleteOperation()) - .thenReturn(StorageOperationStatus.FAILED_TO_LOCK_ELEMENT); - migration.isLockDeleteOperationSucceeded(); - migration.unlockDeleteOperation(); - verify(componentsCleanBusinessLogic, times(0)).unlockDeleteOperation(); - } - - @Test - public void deleteMarkedResourcesWhenLimitIsReached() { - ArrayList<NodeTypeEnum> componentsToClean = new ArrayList<>(); - componentsToClean.add(NodeTypeEnum.Resource); - migration.setUser(user); - migration.setMarkedAsDeletedResourcesCnt(5); - migration.deleteResourcesIfLimitIsReached(); - verify(componentsCleanBusinessLogic).cleanComponents(componentsToClean, true); - } - - @Test - public void deleteMarkedResourcesNotCalledWhenLimitIsNotReached() { - ArrayList<NodeTypeEnum> componentsToClean = new ArrayList<>(); - componentsToClean.add(NodeTypeEnum.Resource); - migration.setUser(user); - migration.setMarkedAsDeletedResourcesCnt(3); - migration.deleteResourcesIfLimitIsReached(); - verify(componentsCleanBusinessLogic, times(0)).cleanComponents(componentsToClean, true); - } - - @Test - public void deleteMarkedServicesWhenLimitIsReached() { - ArrayList<NodeTypeEnum> componentsToClean = new ArrayList<>(); - componentsToClean.add(NodeTypeEnum.Service); - migration.setUser(user); - migration.setMarkedAsDeletedServicesCnt(5); - migration.deleteServicesIfLimitIsReached(); - verify(componentsCleanBusinessLogic).cleanComponents(componentsToClean, true); - } - - @Test - public void deleteMarkedServicesNotCalledWhenLimitIsNotReached() { - ArrayList<NodeTypeEnum> componentsToClean = new ArrayList<>(); - componentsToClean.add(NodeTypeEnum.Service); - migration.setUser(user); - migration.setMarkedAsDeletedServicesCnt(2); - migration.deleteServicesIfLimitIsReached(); - verify(componentsCleanBusinessLogic, times(0)).cleanComponents(componentsToClean, true); - } - - @Test - public void getVfUpgradeStatusWhenUpgradeFailedAndItIsInstance() { - assertEquals(UpgradeMigration1710.UpgradeStatus.NOT_UPGRADED, migration.getVfUpgradeStatus(false, true)); - } - - @Test - public void getVfUpgradeStatusWhenUpgradeFailedAndItIsNotInstance() { - assertEquals(UpgradeMigration1710.UpgradeStatus.NOT_UPGRADED, migration.getVfUpgradeStatus(false, false)); - } - - @Test - public void getVfUpgradeStatusWhenUpgradeSucceededAndItIsInstance() { - assertEquals(UpgradeMigration1710.UpgradeStatus.UPGRADED_AS_INSTANCE, migration.getVfUpgradeStatus(true, true)); - } - - @Test - public void getVfUpgradeStatusWhenUpgradeSucceededAndItIsNotInstance() { - assertEquals(UpgradeMigration1710.UpgradeStatus.UPGRADED, migration.getVfUpgradeStatus(true, false)); - } - - private void resolveUserAndDefineUpgradeLevel() { - when(userAdminOperation.getUserData(anyString(), eq(false))).thenReturn(Either.left(user)); - configurationManager.getConfiguration().setToscaConformanceLevel(CONF_LEVEL); - configurationManager.getConfiguration().setResourcesForUpgrade(resourcesForUpgrade); - } - - private void upgradeAllScenario(boolean upgradeServices) { - final boolean failOnVfUpgrade = false; - final boolean exceptionOnFvUpgrade = false; - final boolean upgradeVFC = false; - final boolean isFailed = false; - final boolean isProxy = true; - - resolveUserAndDefineUpgradeLevel(); - mockCheckoutFlow(); - when(resourceBusinessLogic.validateAndUpdateResourceFromCsar(any(Resource.class), any(), any(), any(), - any())) - .thenReturn(resource); - upgradeRules(failOnVfUpgrade, exceptionOnFvUpgrade, upgradeServices, upgradeVFC, isFailed, isProxy); - } - - private void upgradeRules(boolean failedVfUpgrade, boolean exceptionOnVfUpgrade, boolean upgradeService, - boolean upgradeVFCs, boolean isFailed) { - upgradeRules(failedVfUpgrade, exceptionOnVfUpgrade, upgradeService, upgradeVFCs, isFailed, false); - } - - private void upgradeRules(boolean failedVfUpgrade, boolean exceptionOnVfUpgrade, boolean upgradeService, - boolean upgradeVFCs, boolean isFailed, boolean isProxy) { - - mockNodeTypesUpgrade(); - Either<Component, StorageOperationStatus> foundResource = Either.left(resource); - - if (failedVfUpgrade) { - getToscaElementMockForVfUpgradeFailedScenario(foundResource); - } else { - if (exceptionOnVfUpgrade) { - getToscaElementMockForExceptionOnUpgradeScenario(foundResource, upgradeService); - } else { - when(toscaOperationFacade.getToscaElement(anyString())) - .thenReturn(foundResource); - } - } - //happy flow - if (upgradeService) { - mockForUpgradeServiceScenario(foundResource, upgradeVFCs, isFailed); - } - } - - private void mockNodeTypesUpgrade() { - GraphVertex component = createComponent(); - List<GraphVertex> components = Lists.newArrayList(); - components.add(component); - - when(janusGraphDao.getByCriteria(any(), any(), any(), any())) - .thenReturn(Either.left(components)); - when(janusGraphDao.getParentVertices(any(GraphVertex.class), any(EdgeLabelEnum.class), any(JsonParseFlagEnum.class))) - //1th node to upgrade - .thenReturn(Either.left(components)) - //parent of the 1th node - stop recursion - .thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)); - } - - private GraphVertex createComponent() { - GraphVertex component = new GraphVertex(); - component.setJsonMetadataField(JsonPresentationFields.LIFECYCLE_STATE,LifecycleStateEnum.CERTIFIED.name()); - component.setJsonMetadataField(JsonPresentationFields.UNIQUE_ID,COMPONENT_UNIQUE_ID); - component.setJsonMetadataField(JsonPresentationFields.CI_COMPONENT_VERSION,UPDATED_VERSION); - return component; - } - - private void mockChangeComponentState() { - List<ComponentInstance> instances = Lists.newArrayList(); - instances.add(createComponentInstance()); - - Resource checkedOutResource = new Resource(); - checkedOutResource.setUniqueId("123400"); - checkedOutResource.setComponentInstances(instances); - Either<Resource, ResponseFormat> fromLifeCycle = Either.left(checkedOutResource); - doReturn(fromLifeCycle).when(lifecycleBusinessLogic) - .changeComponentState(any(), any(), any(), any(), any(),eq(true), eq(false)); - } - - private void getToscaElementMockForVfUpgradeFailedScenario(Either<Component, StorageOperationStatus> foundResource) { - when(toscaOperationFacade.getToscaElement(anyString())) - .thenReturn(foundResource) - .thenReturn(foundResource) - .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND)); - } - - private void mockForUpgradeServiceScenario(Either<Component, StorageOperationStatus> foundResource, boolean upgradeVFC, boolean isFailed) { - Either<Resource, StorageOperationStatus> foundService = Either.left(resource); - if (upgradeVFC) { - when(toscaOperationFacade.getToscaElement(anyString())) - .thenReturn(foundResource) - .thenReturn(foundResource) - .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND)); - } - else if (!isFailed) { - when(toscaOperationFacade.getToscaElement(any(), any(ComponentParametersView.class))) - .thenReturn(Either.left(resource)); - when(toscaOperationFacade.getLatestCertifiedByToscaResourceName(any(), any(), any())) - .thenReturn(foundService); - } - } - - private void getToscaElementMockForExceptionOnUpgradeScenario(Either<Component, StorageOperationStatus> foundResource, boolean upgradeService) { - if (upgradeService) { - service.setVersion(UPDATED_VERSION); - Either<Component, StorageOperationStatus> foundService = Either.left(service); - when(toscaOperationFacade.getToscaElement(anyString())) - .thenReturn(foundResource) - .thenReturn(foundResource) - .thenThrow(new RuntimeException()) - .thenReturn(foundService); - } - else { - when(toscaOperationFacade.getToscaElement(anyString())) - .thenReturn(foundResource) - .thenReturn(foundResource) - .thenThrow(new RuntimeException()); - } - } - - private void mockCheckoutFlow() { - GraphVertex component = new GraphVertex(); - component.setJsonMetadataField(JsonPresentationFields.LIFECYCLE_STATE, LifecycleStateEnum.CERTIFIED.name()); - component.setJsonMetadataField(JsonPresentationFields.UNIQUE_ID, COMPONENT_UNIQUE_ID); - List<GraphVertex> components = Lists.newArrayList(); - components.add(component); - - when(toscaOperationFacade.getToscaElement(anyString())).thenReturn(Either.left(resource)); - when(janusGraphDao.getByCriteria(any(), any(), any(), any())) - .thenReturn(Either.left(components)); - when(csarOperation.getCsarLatestVersion(anyString(), any())) - .thenReturn(Either.left("2.0")); - } - - private ComponentInstance createComponentInstance() { - ComponentInstance instance = new ComponentInstance(); - instance.setIcon(""); - instance.setUniqueId(""); - instance.setName(""); - instance.setComponentUid(""); - instance.setCreationTime(1L); - instance.setModificationTime(2L); - instance.setDescription(""); - instance.setPosX(""); - instance.setPosY(""); - instance.setPropertyValueCounter(1); - instance.setNormalizedName(""); - instance.setOriginType(OriginTypeEnum.CVFC); - instance.setCustomizationUUID(""); - instance.setComponentName(""); - instance.setComponentVersion(OLD_VERSION); - instance.setToscaComponentName(""); - instance.setInvariantName(""); - instance.setSourceModelInvariant(""); - instance.setSourceModelName(""); - instance.setSourceModelUuid(""); - instance.setSourceModelUid(""); - instance.setIsProxy(false); - return instance; - } - - -} @@ -1,231 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdc.asdctool.migration.tasks.mig1902; - -import fj.data.Either; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; -import org.openecomp.sdc.asdctool.migration.core.task.MigrationResult; -import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; -import org.openecomp.sdc.be.dao.jsongraph.GraphVertex; -import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao; -import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum; -import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum; -import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum; -import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition; -import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition; -import org.openecomp.sdc.be.model.GroupTypeDefinition; -import org.openecomp.sdc.be.model.PropertyDefinition; -import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; -import org.openecomp.sdc.be.model.operations.impl.GroupTypeOperation; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyMap; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -@RunWith(MockitoJUnitRunner.class) -public class SdcGroupsMigrationTest { - - @Mock - private JanusGraphDao janusGraphDao; - @Mock - private GroupTypeOperation groupTypeOperation; - @Mock - private GraphVertex topologyTemplateVertex; - @Mock - private GraphVertex groupsVertex; - - @InjectMocks - private SdcGroupsMigration groupsMigration; - - @Before - public void setUp() { - groupsMigration = new SdcGroupsMigration(janusGraphDao, groupTypeOperation); - when(janusGraphDao.getVertexById(any())).thenReturn(Either.left(topologyTemplateVertex)); - } - - @Test - public void handleOneContainerWhenErrorHappened() { - when(janusGraphDao.getChildVertex(any(GraphVertex.class), eq(EdgeLabelEnum.GROUPS), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.right(JanusGraphOperationStatus.MATCH_NOT_FOUND)); - StorageOperationStatus status = groupsMigration.handleOneContainer(topologyTemplateVertex); - assertEquals(StorageOperationStatus.MATCH_NOT_FOUND, status); - } - - @Test - public void handleOneContainerWhenNoGroups() { - when(janusGraphDao.getChildVertex(any(GraphVertex.class), eq(EdgeLabelEnum.GROUPS), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)); - StorageOperationStatus status = groupsMigration.handleOneContainer(topologyTemplateVertex); - assertEquals(StorageOperationStatus.OK, status); - } - - @Test - public void handleOneContainerWhenGroupsShouldNotBeUpdated() { - when(janusGraphDao.getChildVertex(any(GraphVertex.class), eq(EdgeLabelEnum.GROUPS), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(groupsVertex)); - - doReturn(buildGroupInstancesMap(new String[] {"org.openecomp.groups.heat.HeatStack", "org.openecomp.groups.VfModule"}, new String[]{})) - .when(groupsVertex).getJson(); - StorageOperationStatus status = groupsMigration.handleOneContainer(topologyTemplateVertex); - assertEquals(StorageOperationStatus.OK, status); - verify(janusGraphDao, times(0)).commit(); - - } - - @Test - public void handleOneContainerWhenGroupsShouldBeUpdated() { - mockLatestGroupMapCreating(); - mockUpgradeHappyFlow(); - StorageOperationStatus status = groupsMigration.handleOneContainer(topologyTemplateVertex); - assertEquals(StorageOperationStatus.OK, status); - verify(janusGraphDao, times(1)).commit(); - verify(janusGraphDao, times(0)).rollback(); - } - - private void mockUpgradeHappyFlow() { - when(janusGraphDao.getChildVertex(any(GraphVertex.class), eq(EdgeLabelEnum.GROUPS), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(groupsVertex)); - when(janusGraphDao.updateVertex(any(GraphVertex.class))).thenReturn(Either.left(groupsVertex)); - when(janusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK); - doReturn(buildGroupInstancesMap(new String[] {"org.openecomp.groups.NetworkCollection", "org.openecomp.groups.VfcInstanceGroup"}, - new String[] {"old1", "old2"})) - .when(groupsVertex).getJson(); - } - - @Test - public void handleOneContainerWhenGroupsAlreadyUpdated() { - mockLatestGroupMapCreating(); - when(janusGraphDao.getChildVertex(any(GraphVertex.class), eq(EdgeLabelEnum.GROUPS), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(groupsVertex)); - doReturn(buildGroupInstancesMap(new String[] {"org.openecomp.groups.NetworkCollection"}, - new String[] {"a", "b", "c", "d"})) - .when(groupsVertex).getJson(); - StorageOperationStatus status = groupsMigration.handleOneContainer(topologyTemplateVertex); - assertEquals(StorageOperationStatus.OK, status); - verify(janusGraphDao, times(0)).commit(); - verify(janusGraphDao, times(1)).rollback(); - } - - @Test - public void handleOneContainerWhenExceptionIsThrown() { - when(janusGraphDao.getChildVertex(any(GraphVertex.class), eq(EdgeLabelEnum.GROUPS), eq(JsonParseFlagEnum.ParseAll))) - .thenThrow(new RuntimeException()); - StorageOperationStatus status = groupsMigration.handleOneContainer(topologyTemplateVertex); - assertEquals(StorageOperationStatus.GENERAL_ERROR, status); - verify(janusGraphDao, times(0)).commit(); - verify(janusGraphDao, times(1)).rollback(); - - } - - // A temp remark for this test - following Commit hash: 08595ad21b0c409c69e3902232f5575963199e3e [ASDC-641] – Migration workaround for deployment artifact timeout. Reviewer: Lior. -// @Test -// public void migrateWhenExceptionIsThrown() { -// List<GraphVertex> vertexList = new ArrayList<>(); -// vertexList.add(topologyTemplateVertex); -// mockLatestGroupMapCreating(); -// when(janusGraphDao.getByCriteria(eq(VertexTypeEnum.TOPOLOGY_TEMPLATE), eq(null), anyMap(), eq(JsonParseFlagEnum.ParseAll))) -// .thenReturn(Either.left(vertexList)); -// when(janusGraphDao.getChildVertex(any(GraphVertex.class), eq(EdgeLabelEnum.GROUPS), eq(JsonParseFlagEnum.ParseAll))) -// .thenThrow(new RuntimeException()); -// assertEquals(MigrationResult.MigrationStatus.FAILED, groupsMigration.migrate().getMigrationStatus()); -// verify(janusGraphDao, times(0)).commit(); -// verify(janusGraphDao, times(1)).rollback(); -// -// } - - @Test - public void migrateWhenGroupsShouldBeUpdated() { - List<GraphVertex> vertexList = new ArrayList<>(); - vertexList.add(topologyTemplateVertex); - mockLatestGroupMapCreating(); - when(janusGraphDao.getByCriteria(eq(VertexTypeEnum.TOPOLOGY_TEMPLATE), eq(null), anyMap(), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(vertexList)); - mockUpgradeHappyFlow(); - - assertEquals(MigrationResult.MigrationStatus.COMPLETED, groupsMigration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(1)).commit(); - verify(janusGraphDao, times(0)).rollback(); - } - - - private Map<String, GroupDataDefinition> buildGroupInstancesMap(String[] groupTypes, String [] propertyNames) { - Map<String, GroupDataDefinition> groupsMap = new HashMap<>(); - for (String type: groupTypes) { - GroupDataDefinition gr = new GroupDataDefinition(); - gr.setType(type); - - gr.setProperties(createInstanceProperties(propertyNames)); - groupsMap.put(gr.getType(), gr); - } - return groupsMap; - } - - private void mockLatestGroupMapCreating() { - doReturn(Either.left(createTypeDefinition(new String[] {"a", "b", "c", "d"}))) - .when(groupTypeOperation).getLatestGroupTypeByType(eq(SdcGroupsMigration.GroupsForUpgrade.NW_COLLECTION_GROUP_NAME.getToscaType()), eq(false)); - doReturn(Either.left(createTypeDefinition(new String[] {"l", "m", "n", "o", "p"}))) - .when(groupTypeOperation).getLatestGroupTypeByType(eq(SdcGroupsMigration.GroupsForUpgrade.VFC_INSTANCE_GROUP_NAME.getToscaType()), eq(false)); - groupsMigration.loadLatestGroupTypeDefinitions(); - - } - - private GroupTypeDefinition createTypeDefinition(String[] propertyNames) { - GroupTypeDefinition typeDefinition = new GroupTypeDefinition(); - typeDefinition.setProperties(createTypeProperties(propertyNames)); - return typeDefinition; - } - - private List<PropertyDefinition> createTypeProperties(String[] propertyNames) { - List<PropertyDefinition> propertyDefinitionList = new ArrayList<>(); - for (String name: propertyNames) { - PropertyDefinition propertyDefinition = new PropertyDefinition(); - propertyDefinition.setName(name); - propertyDefinitionList.add(propertyDefinition); - } - return propertyDefinitionList; - } - - private List<PropertyDataDefinition> createInstanceProperties(String[] propertyNames) { - List<PropertyDataDefinition> propertyDefinitionList = new ArrayList<>(); - for (String name: propertyNames) { - PropertyDefinition propertyDefinition = new PropertyDefinition(); - propertyDefinition.setName(name); - propertyDefinitionList.add(propertyDefinition); - } - return propertyDefinitionList; - } - -} @@ -1,212 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdc.asdctool.migration.tasks.mig1902; - -import fj.data.Either; -import org.assertj.core.util.Lists; -import org.assertj.core.util.Maps; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; -import org.openecomp.sdc.asdctool.migration.core.task.MigrationResult; -import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; -import org.openecomp.sdc.be.dao.jsongraph.GraphVertex; -import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao; -import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum; -import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum; -import org.openecomp.sdc.be.datatypes.elements.ComponentInstanceDataDefinition; -import org.openecomp.sdc.be.datatypes.elements.CompositionDataDefinition; -import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum; -import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum; -import org.openecomp.sdc.be.model.jsonjanusgraph.enums.JsonConstantKeysEnum; - -import java.util.HashMap; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.anyMap; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.any; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -@RunWith(MockitoJUnitRunner.class) -public class SdcResourceIconMigrationTest { - @Mock - private JanusGraphDao janusGraphDao; - - @Mock - private GraphVertex graphVertex; - - @Mock - private GraphVertex topologyTemplateVertex; - - @Mock - private CompositionDataDefinition compositionDataDefinition; - - @Mock - private ComponentInstanceDataDefinition componentInstanceDataDefinition; - - @InjectMocks - private SdcResourceIconMigration iconMigration; - - @Before - public void setUp() { - iconMigration = new SdcResourceIconMigration(janusGraphDao); - when(janusGraphDao.getVertexById(any())).thenReturn(Either.left(topologyTemplateVertex)); - when(janusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK); - } - - - @Test - public void migrationFailedWhenNoNodeTypeDefined() { - when(janusGraphDao.getByCriteria(eq(VertexTypeEnum.NODE_TYPE), anyMap(), anyMap(), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(Lists.emptyList())); - assertEquals(MigrationResult.MigrationStatus.FAILED, iconMigration.migrate().getMigrationStatus()); - } - - @Test - public void resourceIsNotUpdatedIfNotVL() { - //iconMigration.handleOneContainer(graphVertex); - mockInstancesNotFoundFlow(); - - iconMigration.updateNodeTypeIconAndStoreInMap(ResourceTypeEnum.VL); - assertFalse(iconMigration.updateIconInsideInstance(componentInstanceDataDefinition)); - } - - - - @Test - public void resourceIsUpdatedIfCP() { - //iconMigration.handleOneContainer(graphVertex); - mockInstancesFoundFlow(); - when(janusGraphDao.updateVertex(any(GraphVertex.class))).thenReturn(Either.left(graphVertex)); - iconMigration.updateNodeTypeIconAndStoreInMap(ResourceTypeEnum.CP); - assertTrue(iconMigration.updateIconInsideInstance(componentInstanceDataDefinition)); - } - - @Test - public void migrateWhenIconsAreUpdated() { - mockInstancesFoundFlow(); - when(janusGraphDao.getByCriteria(eq(VertexTypeEnum.TOPOLOGY_TEMPLATE), eq(null), anyMap(), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(Lists.newArrayList(topologyTemplateVertex))); - when(compositionDataDefinition.getComponentInstances()).thenReturn(Maps.newHashMap("a", componentInstanceDataDefinition)); - doReturn(Maps.newHashMap(JsonConstantKeysEnum.COMPOSITION.getValue(), compositionDataDefinition)).when(topologyTemplateVertex).getJson(); - when(janusGraphDao.updateVertex(any(GraphVertex.class))).thenReturn(Either.left(graphVertex)); - - assertEquals(MigrationResult.MigrationStatus.COMPLETED, iconMigration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(3)).commit(); - } - - @Test - public void migrateWhenIconsNotUpdated() { - mockInstancesNotFoundFlow(); - when(janusGraphDao.getByCriteria(eq(VertexTypeEnum.TOPOLOGY_TEMPLATE), eq(null), anyMap(), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(Lists.newArrayList(topologyTemplateVertex))); - when(compositionDataDefinition.getComponentInstances()).thenReturn(Maps.newHashMap("a", componentInstanceDataDefinition)); - doReturn(Maps.newHashMap(JsonConstantKeysEnum.COMPOSITION.getValue(), compositionDataDefinition)).when(topologyTemplateVertex).getJson(); - - assertEquals(MigrationResult.MigrationStatus.COMPLETED, iconMigration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(2)).commit(); - } - - @Test - public void migrateWhenNoInstancesFound() { - mockInstancesNotFoundFlow(); - when(janusGraphDao.getByCriteria(eq(VertexTypeEnum.TOPOLOGY_TEMPLATE), eq(null), anyMap(), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(Lists.newArrayList(topologyTemplateVertex))); - - assertEquals(MigrationResult.MigrationStatus.COMPLETED, iconMigration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(2)).commit(); - } - - @Test - public void migrationFailedWhenInstanceVertexUpdateFailed() { - mockInstancesFoundFlow(); - when(janusGraphDao.getByCriteria(eq(VertexTypeEnum.TOPOLOGY_TEMPLATE), eq(null), anyMap(), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(Lists.newArrayList(topologyTemplateVertex))); - when(compositionDataDefinition.getComponentInstances()).thenReturn(Maps.newHashMap("a", componentInstanceDataDefinition)); - doReturn(Maps.newHashMap(JsonConstantKeysEnum.COMPOSITION.getValue(), compositionDataDefinition)).when(topologyTemplateVertex).getJson(); - when(janusGraphDao.updateVertex(any(GraphVertex.class))).thenReturn(Either.left(graphVertex)) - .thenReturn(Either.left(graphVertex)) - .thenReturn(Either.right(JanusGraphOperationStatus.GENERAL_ERROR)); - - assertEquals(MigrationResult.MigrationStatus.COMPLETED, iconMigration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(2)).commit(); - } - - @Test - public void migrationCompletedWhenVertexJsonIsEmpty() { - mockInstancesFoundFlow(); - when(janusGraphDao.getByCriteria(eq(VertexTypeEnum.TOPOLOGY_TEMPLATE), eq(null), anyMap(), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(Lists.newArrayList(topologyTemplateVertex))); - doReturn(new HashMap<>()).when(topologyTemplateVertex).getJson(); - when(janusGraphDao.updateVertex(any(GraphVertex.class))).thenReturn(Either.left(graphVertex)); - - assertEquals(MigrationResult.MigrationStatus.COMPLETED, iconMigration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(2)).commit(); - } - - @Test - public void migrationCompletedWhenVertexJsonIsNull() { - mockInstancesFoundFlow(); - when(janusGraphDao.getByCriteria(eq(VertexTypeEnum.TOPOLOGY_TEMPLATE), eq(null), anyMap(), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(Lists.newArrayList(topologyTemplateVertex))); - doReturn(null).when(topologyTemplateVertex).getJson(); - when(janusGraphDao.updateVertex(any(GraphVertex.class))).thenReturn(Either.left(graphVertex)); - - assertEquals(MigrationResult.MigrationStatus.COMPLETED, iconMigration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(2)).commit(); - } - - @Test - public void migrationFailedWhenTypeUpdateFailed() { - mockInstancesFoundFlow(); - when(janusGraphDao.updateVertex(any(GraphVertex.class))).thenReturn(Either.right(JanusGraphOperationStatus.GENERAL_ERROR)); - assertEquals(MigrationResult.MigrationStatus.FAILED, iconMigration.migrate().getMigrationStatus()); - verify(janusGraphDao, times(0)).commit(); - } - - private void mockInstancesNotFoundFlow() { - List<GraphVertex> nodeTypeVertexList = Lists.newArrayList(graphVertex); - when(graphVertex.getMetadataProperty(GraphPropertyEnum.NAME)).thenReturn("vl1"); - when(componentInstanceDataDefinition.getComponentName()).thenReturn("other"); - when(janusGraphDao.getByCriteria(eq(VertexTypeEnum.NODE_TYPE), anyMap(), anyMap(), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(nodeTypeVertexList)); - when(janusGraphDao.updateVertex(any(GraphVertex.class))).thenReturn(Either.left(graphVertex)); - } - - private void mockInstancesFoundFlow() { - when(graphVertex.getMetadataProperty(GraphPropertyEnum.NAME)).thenReturn(String.valueOf("cp1")); - when(componentInstanceDataDefinition.getComponentName()).thenReturn("cp1"); - when(janusGraphDao.getByCriteria(eq(VertexTypeEnum.NODE_TYPE), anyMap(), anyMap(), eq(JsonParseFlagEnum.ParseAll))) - .thenReturn(Either.left(Lists.newArrayList(graphVertex))); - } - - -} |