diff options
Diffstat (limited to 'test-apis-ci/src/main/java/org/openecomp/sdc/internalApis/annotations/AnnotationsTest.java')
-rw-r--r-- | test-apis-ci/src/main/java/org/openecomp/sdc/internalApis/annotations/AnnotationsTest.java | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/test-apis-ci/src/main/java/org/openecomp/sdc/internalApis/annotations/AnnotationsTest.java b/test-apis-ci/src/main/java/org/openecomp/sdc/internalApis/annotations/AnnotationsTest.java deleted file mode 100644 index fdb0e8750b..0000000000 --- a/test-apis-ci/src/main/java/org/openecomp/sdc/internalApis/annotations/AnnotationsTest.java +++ /dev/null @@ -1,221 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2019 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.internalApis.annotations; - -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Maps; -import org.apache.commons.lang3.tuple.Pair; -import org.junit.Rule; -import org.junit.rules.TestName; -import org.openecomp.sdc.be.dao.utils.MapUtil; -import org.openecomp.sdc.be.datatypes.elements.Annotation; -import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum; -import org.openecomp.sdc.be.model.*; -import org.openecomp.sdc.be.model.utils.ComponentUtilities; -import org.openecomp.sdc.ci.tests.api.ComponentBaseTest; -import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails; -import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum; -import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum; -import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum; -import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum; -import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse; -import org.openecomp.sdc.ci.tests.tosca.datatypes.ToscaAnnotationsTypesDefinition; -import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils; -import org.openecomp.sdc.ci.tests.utils.general.ElementFactory; -import org.openecomp.sdc.ci.tests.utils.general.FileHandling; -import org.openecomp.sdc.ci.tests.utils.rest.PropertyRestUtils; -import org.testng.annotations.Test; - -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -import static java.util.stream.Collectors.groupingBy; -import static java.util.stream.Collectors.toMap; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertTrue; -import static org.openecomp.sdc.ci.tests.tosca.datatypes.ToscaAnnotationsTypesDefinition.SOURCE_ANNOTATION; -import static org.openecomp.sdc.ci.tests.utils.ToscaTypesDefinitionUtils.getToscaAnnotationsFromCsar; -import static org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils.*; -import static org.openecomp.sdc.ci.tests.utils.general.ElementFactory.getDefaultUser; -import static org.openecomp.sdc.ci.tests.utils.rest.InputsRestUtils.deleteInputFromComponent; -import static org.openecomp.sdc.ci.tests.utils.validation.BaseValidationUtils.checkSuccess; -import static org.springframework.util.CollectionUtils.isEmpty; - -public class AnnotationsTest extends ComponentBaseTest{ - - private static final String PCM_FLAVOR_NAME = "pcm_flavor_name"; - private static final String AVAILABILITY_ZONE = "availabilityzone_name"; - private static final String NET_NAME = "net_name"; - private static final String NF_NAMING_CODE = "nf_naming_code"; - private static final String [] PROPS_TO_DECLARE = new String [] {PCM_FLAVOR_NAME, AVAILABILITY_ZONE, NET_NAME, NF_NAMING_CODE}; - private static final String CSAR_WITH_ANNOTATIONS_V1 = "SIROV_annotations_VSP.csar"; - private static final String CSAR_WITH_ANNOTATIONS_V2 = "SIROV_annotations_VSP_V2.csar"; - private static final String SRIOV_PATH = FileHandling.getFilePath("SRIOV"); - - @Rule - public static TestName name = new TestName(); - - public AnnotationsTest() { - super(name, AnnotationsTest.class.getName()); - } - - @Test - public void whenExportingToscaOfTopologyTemplate_annotationTypeYamlExist_sourceAnnotationExist() throws Exception { - User sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER); - ResourceReqDetails resourceDetails = ElementFactory.getDefaultResourceByType("exportToscaAnnotationsYml", NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_INFRASTRUCTURE, sdncModifierDetails.getUserId(), ResourceTypeEnum.VF.toString()); - Resource createdVF = AtomicOperationUtils.createResourceByResourceDetails(resourceDetails, UserRoleEnum.DESIGNER, true).left().value(); - ToscaAnnotationsTypesDefinition toscaAnnotations = getToscaAnnotationsFromCsar(createdVF, sdncModifierDetails); - assertTrue(toscaAnnotations.getAnnotation_types().containsKey(SOURCE_ANNOTATION)); - } - - @Test - public void whenDeclaringAnInputFromPropertyWhichOriginatedFromInputWithAnnotation_copyAnnotationsToNewInput() throws Exception { - Resource vfWithAnnotationsV1 = importAnnotationsCsarAndCheckIn(); - Service service = createDefaultService(UserRoleEnum.DESIGNER, true).left().value(); - ComponentInstance createdCmptInstance = addComponentInstanceToComponentContainer(vfWithAnnotationsV1, service).left().value(); - Service fetchedService = getServiceObject(service.getUniqueId()); - List<ComponentInstanceInput> declaredProps = declareProperties(fetchedService, createdCmptInstance, PROPS_TO_DECLARE); - verifyAnnotationsOnDeclaredInputs(vfWithAnnotationsV1, fetchedService, declaredProps); - Service serviceAfterPropertyDeclaration = getServiceObject(service.getUniqueId()); - deleteDeclaredInputsAndVerifySuccess(serviceAfterPropertyDeclaration); - } - - @Test - public void onChangeVersion_copyAnnotationsFromNewVspToServiceInputs() throws Exception { - Resource vfWithAnnotationsV1 = importAnnotationsCsarAndCheckIn(); - Service service = createDefaultService(UserRoleEnum.DESIGNER, true).left().value(); - ComponentInstance createdCmptInstance = addComponentInstanceToComponentContainer(vfWithAnnotationsV1, service).left().value(); - Service fetchedService = getServiceObject(service.getUniqueId()); - declareProperties(fetchedService, createdCmptInstance, PROPS_TO_DECLARE); - - Resource vfWithAnnotationsV2 = updateAnnotationsCsarAndCheckIn(vfWithAnnotationsV1); - Pair<Component, ComponentInstance> changeVersionRes = changeComponentInstanceVersion(service, createdCmptInstance, vfWithAnnotationsV2, UserRoleEnum.DESIGNER, true).left().value(); - Component serviceAfterChangeVersion = changeVersionRes.getKey(); - ComponentInstance newInstance = changeVersionRes.getRight(); - List<ComponentInstanceInput> declaredProps = getInstanceProperties(serviceAfterChangeVersion, newInstance.getUniqueId(), PROPS_TO_DECLARE); - verifyAnnotationsOnDeclaredInputs(vfWithAnnotationsV2, serviceAfterChangeVersion, declaredProps); - - } - - private void verifyAnnotationsOnDeclaredInputs(Resource vfWithAnnotations, Component fetchedService, List<ComponentInstanceInput> declaredProps) throws Exception { - Map<String, InputDefinition> serviceLevelInputsByProperty = getCreatedInputsByProperty(fetchedService, declaredProps); - Map<String, List<Annotation>> annotationsFromVfLevelInputs = getAnnotationsByInputName(vfWithAnnotations); - verifyInputsAnnotation(serviceLevelInputsByProperty, declaredProps, annotationsFromVfLevelInputs); - } - - private Map<String, List<Annotation>> getAnnotationsByInputName(Resource resource) { - return resource.getInputs() - .stream() - .collect(toMap(InputDefinition::getName, input -> ComponentUtilities.getInputAnnotations(resource, input.getName()))); - } - - private void deleteDeclaredInputsAndVerifySuccess(Component service) throws Exception { - for (InputDefinition declaredInput : service.getInputs()) { - RestResponse deleteInputResponse = deleteInputFromComponent(service, declaredInput.getUniqueId()); - checkSuccess(deleteInputResponse); - } - Service fetchedService = getServiceObject(service.getUniqueId()); - assertThat(fetchedService.getInputs()).isNullOrEmpty(); - } - - private void verifyInputsAnnotation(Map<String, InputDefinition> inputsByProperty, List<ComponentInstanceInput> declaredProps, Map<String, List<Annotation>> expectedAnnotationsByInput) { - Map<String, ComponentInstanceInput> propsByName = MapUtil.toMap(declaredProps, ComponentInstanceInput::getName); - - InputDefinition declaredFromPcmFlavourName = findInputDeclaredFromProperty(PCM_FLAVOR_NAME, inputsByProperty, propsByName); - verifyInputAnnotations(declaredFromPcmFlavourName, expectedAnnotationsByInput.get(PCM_FLAVOR_NAME)); - - InputDefinition declaredFromAvailabilityZone = findInputDeclaredFromProperty(AVAILABILITY_ZONE, inputsByProperty, propsByName); - verifyInputAnnotations(declaredFromAvailabilityZone, expectedAnnotationsByInput.get(AVAILABILITY_ZONE)); - - InputDefinition declaredFromNetName = findInputDeclaredFromProperty(NET_NAME, inputsByProperty, propsByName); - verifyInputAnnotations(declaredFromNetName, expectedAnnotationsByInput.get(NET_NAME)); - - InputDefinition declaredFromNFNamingCode = findInputDeclaredFromProperty(NF_NAMING_CODE, inputsByProperty, propsByName); - verifyInputHasNoAnnotations(declaredFromNFNamingCode); - } - - private void verifyInputHasNoAnnotations(InputDefinition inputWithoutAnnotation) { - assertThat(inputWithoutAnnotation.getAnnotations()).isNullOrEmpty(); - } - - private InputDefinition findInputDeclaredFromProperty(String propName, Map<String, InputDefinition> inputsByProperty, Map<String, ComponentInstanceInput> propsByName) { - String propId = propsByName.get(propName).getUniqueId(); - return inputsByProperty.get(propId); - } - - private Map<String, InputDefinition> getCreatedInputsByProperty(Component service, List<ComponentInstanceInput> declaredProps) throws Exception { - Service fetchedService = getServiceObject(service.getUniqueId()); - List<InputDefinition> inputs = fetchedService.getInputs(); - return filterInputsCreatedByDeclaringFromProperties(declaredProps, inputs); - } - - private Map<String, InputDefinition> filterInputsCreatedByDeclaringFromProperties(List<ComponentInstanceInput> declaredProps, List<InputDefinition> inputs) { - List<String> declaredPropsIds = declaredProps.stream().map(ComponentInstanceInput::getUniqueId).collect(Collectors.toList()); - Map<String, InputDefinition> inputsByPropertyId = MapUtil.toMap(inputs, InputDefinition::getPropertyId); - return Maps.filterKeys(inputsByPropertyId, declaredPropsIds::contains); - } - - private Resource importAnnotationsCsarAndCheckIn() throws Exception { - Resource annotationsVF = importResourceFromCsar(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, CSAR_WITH_ANNOTATIONS_V1, SRIOV_PATH); - changeComponentState(annotationsVF, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true); - return annotationsVF; - } - - private Resource updateAnnotationsCsarAndCheckIn(Resource vfToUpdate) throws Exception { - changeComponentState(vfToUpdate, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKOUT, true); - Resource annotationsVfV2 = updateResourceFromCsar(vfToUpdate, UserRoleEnum.DESIGNER, CSAR_WITH_ANNOTATIONS_V2, SRIOV_PATH); - changeComponentState(annotationsVfV2, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true); - return annotationsVfV2; - } - - private List<ComponentInstanceInput> declareProperties(Service service, ComponentInstance instance, String ... propertiesToDeclareNames) throws Exception { - Map<String, List<ComponentInstanceInput>> propertiesToDeclare = getServiceInstancesProps(service, instance.getUniqueId(), propertiesToDeclareNames); - RestResponse restResponse = PropertyRestUtils.declareProporties(service, propertiesToDeclare, getDefaultUser(UserRoleEnum.DESIGNER)); - checkSuccess(restResponse); - return propertiesToDeclare.get(instance.getUniqueId()); - } - - private List<ComponentInstanceInput> getInstanceProperties(Component service, String ofInstance, String ... propsNames) { - return getServiceInstancesProps(service, ofInstance, propsNames).get(ofInstance); - } - - private void verifyInputAnnotations(InputDefinition input, List<Annotation> expectedAnnotations) { - if (isEmpty(expectedAnnotations)) { - assertThat(input.getAnnotations()).isNullOrEmpty(); - return; - } - assertThat(input.getAnnotations()) - .usingElementComparatorOnFields("type", "name", "properties") - .isNotEmpty() - .containsExactlyElementsOf(expectedAnnotations); - } - - private Map<String, List<ComponentInstanceInput>> getServiceInstancesProps(Component fromService, String ofInstance, String ... propsToDeclareNames) { - Set<String> propsToDeclare = ImmutableSet.<String>builder().add(propsToDeclareNames).build(); - List<ComponentInstanceInput> componentInstancesInputs = fromService.getComponentInstancesInputs().get(ofInstance); - return componentInstancesInputs.stream() - .filter(insInput -> propsToDeclare.contains(insInput.getName())) - .collect(groupingBy((i) -> ofInstance)); - } - -} |