re base code
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / ci / tests / sanity / CrudE2E.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.ci.tests.sanity;
22
23 import fj.data.Either;
24 import org.apache.commons.lang3.tuple.Pair;
25 import org.junit.Rule;
26 import org.junit.rules.TestName;
27 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
28 import org.openecomp.sdc.be.model.*;
29 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
30 import org.openecomp.sdc.ci.tests.datatypes.enums.*;
31 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
32 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
33 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
36 import org.testng.Assert;
37 import org.testng.annotations.Test;
38
39 import java.util.ArrayList;
40 import java.util.Collection;
41 import java.util.List;
42 import java.util.stream.Collectors;
43
44 public class CrudE2E extends ComponentBaseTest {
45         private static Logger log = LoggerFactory.getLogger(CrudE2E.class.getName());
46
47         public Component resourceDetailsVFCcomp_01;
48         public Component resourceDetailsVFCsoft_01;
49         public Component resourceDetailsCP_01;
50         public Component resourceDetailsVL_01;
51         public Component resourceDetailsVF_01;
52         public Component resourceDetailsVF_02;
53
54         public ComponentInstance resourceDetailsVFC1compIns1;
55         public ComponentInstance resourceDetailsVFC1softIns1;
56         public ComponentInstance resourceDetailsCP1ins_01;
57         public ComponentInstance resourceDetailsVL1ins_01;
58         public ComponentInstance resourceDetailsVF1ins_01;
59         public Component defaultService1;
60         private List<String> variablesAsList = new ArrayList<String>();
61
62         @Rule
63         public static TestName name = new TestName();
64
65         public CrudE2E() {
66                 super(name, CrudE2E.class.getName());
67         }
68
69         @Test
70         public void complexScenario() throws Exception {
71
72                 User designer = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
73
74                 //////// create defaultService1 ///////////////////////
75
76                 Either<Service, RestResponse> createDefaultService1e = AtomicOperationUtils.createDefaultService(UserRoleEnum.DESIGNER, true);
77                 defaultService1 = createDefaultService1e.left().value();
78
79                 //////// create VFC1 (resourceDetailsVFCcomp_01) DerivedFrom COMPUTE
80                 //////// type add all possible informational artifacts and change state
81                 //////// to CERTIFY////////
82                 Either<Resource, RestResponse> resourceDetailsVFCcompE = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.COMPUTE, ResourceCategoryEnum.GENERIC_INFRASTRUCTURE, UserRoleEnum.DESIGNER,
83                                 true);
84                 resourceDetailsVFCcomp_01 = resourceDetailsVFCcompE.left().value();
85                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.CHEF, resourceDetailsVFCcomp_01, UserRoleEnum.DESIGNER, false, true);
86                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.PUPPET, resourceDetailsVFCcomp_01, UserRoleEnum.DESIGNER, false, true);
87                 // AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.SHELL_SCRIPT,
88                 // resourceDetailsVFCcomp_01, UserRoleEnum.DESIGNER, false, true);
89                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.YANG, resourceDetailsVFCcomp_01, UserRoleEnum.DESIGNER, false, true);
90                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.YANG_XML, resourceDetailsVFCcomp_01, UserRoleEnum.DESIGNER, false, true);
91                 // AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT,
92                 // resourceDetailsVFCcomp_01, UserRoleEnum.DESIGNER, false, true);
93                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.DG_XML, resourceDetailsVFCcomp_01, UserRoleEnum.DESIGNER, false, true);
94                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.MURANO_PKG, resourceDetailsVFCcomp_01, UserRoleEnum.DESIGNER, false, true);
95                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.OTHER, resourceDetailsVFCcomp_01, UserRoleEnum.DESIGNER, false, true);
96                 AtomicOperationUtils.changeComponentState(resourceDetailsVFCcomp_01, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true);
97
98                 //////// create VFC2 (resourceDetailsVFCsoft_01) DerivedFrom SOFTWARE
99                 //////// type and change state to CERTIFY////////
100                 Either<Resource, RestResponse> resourceDetailsVFCsoftE = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.SOFTWARE_COMPONENT, ResourceCategoryEnum.GENERIC_DATABASE, UserRoleEnum.DESIGNER,
101                                 true);
102                 resourceDetailsVFCsoft_01 = resourceDetailsVFCsoftE.left().value();
103                 AtomicOperationUtils.changeComponentState(resourceDetailsVFCsoft_01, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true);
104
105                 //////// create CP1 (resourceDetailsVFCsoft_01) DerivedFrom PORT type
106                 //////// and change state to CHECKIN////////
107                 Either<Resource, RestResponse> resourceDetailsCP_01e = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.CP, NormativeTypesEnum.PORT, ResourceCategoryEnum.GENERIC_DATABASE, UserRoleEnum.DESIGNER, true);
108                 resourceDetailsCP_01 = resourceDetailsCP_01e.left().value();
109                 AtomicOperationUtils.changeComponentState(resourceDetailsCP_01, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true);
110
111                 //////// create VL1 (resourceDetailsVFCsoft_01) DerivedFrom NETWORK type
112                 //////// and change state to CERTIFY////////
113                 Either<Resource, RestResponse> resourceDetailsVL_01e = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VL, NormativeTypesEnum.NETWORK, ResourceCategoryEnum.GENERIC_NETWORK_ELEMENTS, UserRoleEnum.DESIGNER,
114                                 true);
115                 resourceDetailsVL_01 = resourceDetailsVL_01e.left().value();
116                 AtomicOperationUtils.changeComponentState(resourceDetailsVL_01, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true);
117
118                 //////// create VF1 (resourceDetailsVFCcomp_01) DerivedFrom COMPUTE type
119                 //////// add all possible deployment and informational artifacts
120                 //////// //////////
121                 Either<Resource, RestResponse> resourceDetailsVF_01e = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_INFRASTRUCTURE, UserRoleEnum.DESIGNER, true);
122                 resourceDetailsVF_01 = resourceDetailsVF_01e.left().value();
123                 ArtifactDefinition heatArtifact = AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT, resourceDetailsVF_01, UserRoleEnum.DESIGNER, true, true).left().value();
124                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT_VOL, resourceDetailsVF_01, UserRoleEnum.DESIGNER, true, true);
125                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT_NET, resourceDetailsVF_01, UserRoleEnum.DESIGNER, true, true);
126                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.OTHER, resourceDetailsVF_01, UserRoleEnum.DESIGNER, true, true);
127
128                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.CHEF, resourceDetailsVF_01, UserRoleEnum.DESIGNER, false, true);
129                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.PUPPET, resourceDetailsVF_01, UserRoleEnum.DESIGNER, false, true);
130                 // AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.SHELL_SCRIPT,
131                 // resourceDetailsVF_01, UserRoleEnum.DESIGNER, false, true);
132                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.YANG, resourceDetailsVF_01, UserRoleEnum.DESIGNER, false, true);
133                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.YANG_XML, resourceDetailsVF_01, UserRoleEnum.DESIGNER, false, true);
134                 // AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT,
135                 // resourceDetailsVF_01, UserRoleEnum.DESIGNER, false, true);
136                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.DG_XML, resourceDetailsVF_01, UserRoleEnum.DESIGNER, false, true);
137                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.MURANO_PKG, resourceDetailsVF_01, UserRoleEnum.DESIGNER, false, true);
138                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.OTHER, resourceDetailsVF_01, UserRoleEnum.DESIGNER, false, true);
139
140                 //////// Add VFC1 VFC2 CP and VL to VF container /////////////
141                 resourceDetailsVFC1compIns1 = AtomicOperationUtils.addComponentInstanceToComponentContainer(resourceDetailsVFCcomp_01, resourceDetailsVF_01, UserRoleEnum.DESIGNER, true).left().value();
142                 resourceDetailsVFC1softIns1 = AtomicOperationUtils.addComponentInstanceToComponentContainer(resourceDetailsVFCsoft_01, resourceDetailsVF_01, UserRoleEnum.DESIGNER, true).left().value();
143                 resourceDetailsCP1ins_01 = AtomicOperationUtils.addComponentInstanceToComponentContainer(resourceDetailsCP_01, resourceDetailsVF_01, UserRoleEnum.DESIGNER, true).left().value();
144                 resourceDetailsVL1ins_01 = AtomicOperationUtils.addComponentInstanceToComponentContainer(resourceDetailsVL_01, resourceDetailsVF_01, UserRoleEnum.DESIGNER, true).left().value();
145
146                 //////// associate cp-vl vl-vfcComp and vfcComp-vfcSoft////////
147                 resourceDetailsVF_01 = AtomicOperationUtils.getResourceObject(resourceDetailsVF_01, UserRoleEnum.DESIGNER);
148                 AtomicOperationUtils.associate2ResourceInstances(resourceDetailsVF_01, resourceDetailsCP1ins_01, resourceDetailsVL1ins_01, AssocType.LINKABLE.getAssocType(), UserRoleEnum.DESIGNER, true);
149                 AtomicOperationUtils.associate2ResourceInstances(resourceDetailsVF_01, resourceDetailsCP1ins_01, resourceDetailsVFC1compIns1, AssocType.BINDABLE.getAssocType(), UserRoleEnum.DESIGNER, true);
150                 AtomicOperationUtils.associate2ResourceInstances(resourceDetailsVF_01, resourceDetailsVFC1compIns1, resourceDetailsVFC1softIns1, AssocType.NODE.getAssocType(), UserRoleEnum.DESIGNER, true);
151
152                 //////// download all VF1 artifacts////////
153
154                 Collection<ArtifactDefinition> artifacts = resourceDetailsVF_01.getDeploymentArtifacts().values();
155                 List<String> collect = artifacts.stream().filter(p -> p.checkEsIdExist() == true).map(p -> p.getUniqueId()).collect(Collectors.toList());
156                 artifacts.stream().filter(p -> p.checkEsIdExist() == true).map(p -> p.getUniqueId()).forEach(item -> log.debug(item));
157
158                 //////// get all VF1 artifacts////////
159
160                 Collection<List<ComponentInstanceProperty>> componentInstancesProperties = resourceDetailsVF_01.getComponentInstancesProperties().values();
161                 List<String> collect2 = componentInstancesProperties.stream().filter(p -> p.isEmpty() == false).flatMap(l -> l.stream()).collect(Collectors.toList()).stream().map(p -> p.getUniqueId()).collect(Collectors.toList());
162                 // PropertyRestUtils.updateProperty(resourceDetailsVF_01.getUniqueId(),
163                 // propertyId, "1", designer);
164                 // .forEach((someOtherString) -> {
165                 // System.out.println("Content With Java: " + someOtherString);
166                 // });
167                 // componentInstancesProperties.stream().filter(p ->
168                 // p.isEmpty()==false).flatMap(l -> l.stream()).map(e ->
169                 // e.getUniqueId());
170                 // resourceDetailsVF_01.getComponentInstancesProperties().
171
172                 // ArtifactDefinition artifactDefinition =
173                 // resourceDetailsVF_01.getDeploymentArtifacts().get(ArtifactTypeEnum.HEAT.getType().toLowerCase()).getEsId();
174                 // ArtifactDefinition artifactDefinition =
175                 // resource.getDeploymentArtifacts().get(depResArtType);
176                 // ArtifactReqDetails artifacJavaObject =
177                 // ResponseParser.convertArtifactDefinitionToArtifactReqDetailsObject(artifactDefinition);
178                 // ArtifactRestUtils.updateDeploymentArtifactToRI(artifactDetails,
179                 // sdncModifierDetails, resourceInstanceId, serviceId)
180
181                 //////// certify VF1 - failed due to uncertified CP instance ////////
182
183                 /*RestResponse changeVfStateFailed = LifecycleRestUtils.changeComponentState(resourceDetailsVF_01, designer, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
184                 Resource resResourceDetailsVF_01 = (Resource) resourceDetailsVF_01;
185                 variablesAsList = Arrays.asList(resResourceDetailsVF_01.getResourceType().toString(), resourceDetailsCP_01.getName());
186                 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.VALIDATED_RESOURCE_NOT_FOUND.name(), variablesAsList, changeVfStateFailed.getResponse());*/
187
188                 //////// certify resources CP1 ////////
189                 resourceDetailsCP_01 = AtomicOperationUtils.changeComponentState(resourceDetailsCP_01, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true).getLeft();
190
191                 //////// replace VF1 instances with new certified instances (CP1
192                 //////// replaced) ////////
193                 Either<Pair<Component, ComponentInstance>, RestResponse> changeComponentInstanceVersion = AtomicOperationUtils.changeComponentInstanceVersion(resourceDetailsVF_01, resourceDetailsCP1ins_01, resourceDetailsCP_01, UserRoleEnum.DESIGNER, true);
194                 resourceDetailsVF_01 = changeComponentInstanceVersion.left().value().getLeft();
195                 resourceDetailsCP1ins_01 = changeComponentInstanceVersion.left().value().getRight();
196
197                 //////// associate cp-vl and cp-vfc1,////////
198                 AtomicOperationUtils.associate2ResourceInstances(resourceDetailsVF_01, resourceDetailsCP1ins_01, resourceDetailsVL1ins_01, AssocType.LINKABLE.getAssocType(), UserRoleEnum.DESIGNER, true);
199                 AtomicOperationUtils.associate2ResourceInstances(resourceDetailsVF_01, resourceDetailsCP1ins_01, resourceDetailsVFC1compIns1, AssocType.BINDABLE.getAssocType(), UserRoleEnum.DESIGNER, true);
200
201                 /////// change VF1 state to CHECK-IN and add it as instance to service1
202                 /////// container
203                 resourceDetailsVF_01 = AtomicOperationUtils.changeComponentState(resourceDetailsVF_01, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true).getLeft();
204                 resourceDetailsVF1ins_01 = AtomicOperationUtils.addComponentInstanceToComponentContainer(resourceDetailsVF_01, defaultService1, UserRoleEnum.DESIGNER, true).left().value();
205
206                 //////// distribute service1 - failed due to incorrect LifeCyclestatus
207                 //////// ////////
208                 RestResponse distributeService = AtomicOperationUtils.distributeService(defaultService1, false);
209                 Assert.assertEquals(distributeService, null, "verification failed");
210
211                 //////// certify service1 - failed due to uncertified instances ////////
212                 designer = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
213                 /*RestResponse changeServicetStateFailed = LifecycleRestUtils.changeComponentState(defaultService1, designer, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
214                 variablesAsList = Arrays.asList(defaultService1.getComponentType().toString().toLowerCase(), resourceDetailsVF_01.getName());
215                 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.VALIDATED_RESOURCE_NOT_FOUND.name(), variablesAsList, changeServicetStateFailed.getResponse());
216 */
217                 ////// change VF1 state to CERTIFIED
218                 resourceDetailsVF_01 = AtomicOperationUtils.changeComponentState(resourceDetailsVF_01, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true).getLeft();
219
220                 //////// replace VF1 instances with new certified instances ////////
221                 changeComponentInstanceVersion = AtomicOperationUtils.changeComponentInstanceVersion(defaultService1, resourceDetailsVF1ins_01, resourceDetailsVF_01, UserRoleEnum.DESIGNER, true);
222                 resourceDetailsVF_01 = changeComponentInstanceVersion.left().value().getLeft();
223                 resourceDetailsVFC1compIns1 = changeComponentInstanceVersion.left().value().getRight();
224
225                 /////// certify service1 ////////
226                 defaultService1 = AtomicOperationUtils.changeComponentState(defaultService1, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true).getLeft();
227
228                 //////// distribute service1 - successfully ////////
229                 AtomicOperationUtils.distributeService(defaultService1, true);
230
231                 /////// create VF2 ////////
232
233                 Either<Resource, RestResponse> resourceDetailsVF_02e = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_INFRASTRUCTURE, UserRoleEnum.DESIGNER, true);
234                 resourceDetailsVF_02 = resourceDetailsVF_02e.left().value();
235
236         }
237
238         // private void updateArtParameterInResource(Resource resource) throws
239         // IOException {
240         //
241         // ArtifactRestUtils.uploadArtifact(artifactDetails, component,
242         // sdncModifierDetails)
243         //
244         // for (String depResArtType : Utils.getListOfDepResArtLabels(true)) {
245         // ArtifactDefinition artifactDefinition =
246         // resource.getDeploymentArtifacts().get(depResArtType);
247         // ArtifactReqDetails artifacJavaObject =
248         // ResponseParser.convertArtifactDefinitionToArtifactReqDetailsObject(artifactDefinition);
249         //
250         // //update parameter
251         // List<HeatParameterDefinition> resourceHeatParameters =
252         // resource.getDeploymentArtifacts().get(depResArtType).getHeatParameters();
253         // for (HeatParameterDefinition heatParameterDefinition :
254         // resourceHeatParameters){
255         // if (heatParameterDefinition.getName().equals("address")){
256         // heatParameterDefinition.setCurrentValue("negev");
257         // break;
258         // }
259         // }
260         // artifacJavaObject.setHeatParameters(resourceHeatParameters);
261         // artifacJavaObject.setPayloadData(null);
262         // RestResponse updateInformationalArtifactToResource =
263         // ArtifactRestUtils.updateDeploymentArtifactToResource(artifacJavaObject,
264         // sdncDesignerDetails, resource.getUniqueId());
265         // assertTrue("response code is not 200, returned: " +
266         // updateInformationalArtifactToResource.getErrorCode(),updateInformationalArtifactToResource.getErrorCode()
267         // == 200);
268         // }
269         // }
270
271 }