[SDC] Onboarding 1710 rebase.
[sdc.git] / openecomp-be / lib / openecomp-sdc-vendor-software-product-lib / openecomp-sdc-vendor-software-product-core / src / test / java / org / openecomp / sdc / vendorsoftwareproduct / informationArtifact / impl / TxtInformationArtifactGeneratorImplTest.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.vendorsoftwareproduct.informationArtifact.impl;
22
23
24 import org.junit.Assert;
25 import org.mockito.InjectMocks;
26 import org.mockito.Mock;
27 import org.mockito.Mockito;
28 import org.mockito.MockitoAnnotations;
29 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
30 import org.openecomp.sdc.vendorsoftwareproduct.informationArtifact.InformationArtifactData;
31 import org.openecomp.sdc.vendorsoftwareproduct.questionnaire.QuestionnaireDataService;
32 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.ComponentQuestionnaire;
33 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.compute.Compute;
34 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.compute.GuestOS;
35 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.compute.NumOfVMs;
36 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.general.Hypervisor;
37 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.general.Recovery;
38 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.network.NetworkCapacity;
39 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.storage.Backup;
40 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.storage.Storage;
41 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.nic.IpConfiguration;
42 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.nic.Network;
43 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.nic.NicQuestionnaire;
44 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.nic.Protocols;
45 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.vsp.VspQuestionnaire;
46 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.vsp.general.Availability;
47 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.vsp.general.General;
48 import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.vsp.general.StorageDataReplication;
49 import org.openecomp.sdc.versioning.dao.types.Version;
50 import org.testng.annotations.BeforeMethod;
51 import org.testng.annotations.Test;
52
53 import javax.annotation.processing.SupportedAnnotationTypes;
54 import java.io.IOException;
55 import java.util.ArrayList;
56 import java.util.List;
57
58 import static org.mockito.Matchers.anyObject;
59 import static org.mockito.Matchers.anyString;
60 import static org.openecomp.sdc.vendorsoftwareproduct.informationArtifact.impl.TxtInformationArtifactConstants.HEADER;
61 import static org.openecomp.sdc.vendorsoftwareproduct.informationArtifact.impl.TxtInformationArtifactConstants.VFC_COMPUTE_CPU_OVER_SUBSCRIPTION;
62
63 public class TxtInformationArtifactGeneratorImplTest {
64
65   private static final String NETWORK_DESC = "\"network desc\"";
66   private static final String HYPERVIZOR_NAME = "\"hyper hyper hypervizor\"";
67   private static final String TOOLS ="all tools possible" ;
68   @Mock
69   QuestionnaireDataService questionnaireDataServiceMock;
70   @InjectMocks
71   TxtInformationArtifactGeneratorImpl informationArtifactGenerator;
72
73   @BeforeMethod(alwaysRun = true)
74   public void injectDoubles() {
75     MockitoAnnotations.initMocks(this);
76
77 //    InformationArtifactData returnedQuestionnaire = new InformationArtifactData();
78 //    Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
79 //        (anyString(), anyObject()))
80 //        .thenReturn(returnedQuestionnaire);
81 //
82
83   }
84
85   @Test
86   public void testRoundVersion(){
87     Version version = new Version(2,1);
88     String rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
89     Assert.assertEquals("3.0",rounded);
90
91     version = Version.valueOf("2.0");
92      rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
93     Assert.assertEquals("2.0",rounded);
94
95   }
96
97   @Test
98   public void testArtifactCreation() throws IOException {
99     InformationArtifactData informationArtifactData = initArtifactData();
100     Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
101         (anyString(), anyObject()))
102         .thenReturn(informationArtifactData);
103
104
105     String result = informationArtifactGenerator.generate("vsp", new Version(0, 1));
106     System.out.println("result = \n" + result);
107
108     Assert.assertTrue(result.contains(HYPERVIZOR_NAME));
109     Assert.assertTrue(result.contains(HEADER));
110     Assert.assertTrue(result.contains(VFC_COMPUTE_CPU_OVER_SUBSCRIPTION));
111     Assert.assertTrue(result.contains(TOOLS));
112     Assert.assertTrue(result.contains(TxtInformationArtifactConstants.LICENSE_AGREEMENT_NAME));
113     Assert.assertTrue(result.contains(TxtInformationArtifactConstants.LIST_OF_FEATURE_GROUPS));
114
115   }
116
117   private InformationArtifactData initArtifactData() {
118     InformationArtifactData informationArtifactData = new InformationArtifactData();
119
120     informationArtifactData.setVspDetails(initVspDetails());
121
122     informationArtifactData.setVspQuestionnaire(initVspQuestionnaire());
123     informationArtifactData.setComponentQuestionnaires(initComponentQuestionnaires());
124     informationArtifactData.setNicQuestionnaires(initNicQuestionnaires());
125     return informationArtifactData;
126   }
127
128   private List<NicQuestionnaire> initNicQuestionnaires() {
129     List<NicQuestionnaire> nicQuestionnaires = new ArrayList<>();
130     NicQuestionnaire nic1 = new NicQuestionnaire();
131     NicQuestionnaire nic2 = new NicQuestionnaire();
132     nic1 = initNicQuestionnaire();
133     nic2 = initNicQuestionnaire();
134     nicQuestionnaires.add(nic1);
135     nicQuestionnaires.add(nic2);
136     return nicQuestionnaires;
137
138   }
139
140   private NicQuestionnaire initNicQuestionnaire() {
141     NicQuestionnaire nic = new NicQuestionnaire();
142     Network network = new Network();
143     network.setNetworkDescription(NETWORK_DESC);
144     nic.setNetwork(network);
145
146     IpConfiguration ipconfig = new IpConfiguration();
147     ipconfig.setIpv4Required(true);
148     ipconfig.setIpv6Required(false);
149
150     nic.setIpConfiguration(ipconfig);
151
152     Protocols protocols = new Protocols();
153     List<String> protocolsList = new ArrayList<>();
154     protocolsList.add("45");
155     protocolsList.add("55");
156     protocolsList.add("HTTP");
157     protocols.setProtocols(protocolsList);
158
159     nic.setProtocols(protocols);
160
161     return nic;
162   }
163
164   private List<ComponentQuestionnaire> initComponentQuestionnaires() {
165     List<ComponentQuestionnaire> componentQuestionnaires = new ArrayList<>();
166     ComponentQuestionnaire componentQuestionnaire1 = new ComponentQuestionnaire();
167     ComponentQuestionnaire componentQuestionnaire2 = new ComponentQuestionnaire();
168
169     componentQuestionnaire1 = initComponent();
170     componentQuestionnaire2 = initComponent();
171
172     componentQuestionnaires.add(componentQuestionnaire1);
173     componentQuestionnaires.add(componentQuestionnaire2);
174
175     return componentQuestionnaires;
176   }
177
178   private ComponentQuestionnaire initComponent() {
179     ComponentQuestionnaire componentQuestionnaire = new ComponentQuestionnaire();
180     org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.general.General general =
181         new org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.general.General();
182     Hypervisor hypervisor = new Hypervisor();
183     hypervisor.setDrivers("driving drivers");
184     hypervisor.setHypervisor(HYPERVIZOR_NAME);
185     general.setHypervisor(hypervisor);
186     Recovery recovery = new Recovery();
187     recovery.setPointObjective(22);
188     recovery.setTimeObjective(33);
189     general.setRecovery(recovery);
190     componentQuestionnaire.setGeneral(
191         general);
192     org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.network.Network net =
193         new org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.network.Network();
194     net.setNetworkCapacity(new NetworkCapacity());
195     componentQuestionnaire.setNetwork(net);
196     Compute compute = new Compute();
197     GuestOS guestOS = new GuestOS();
198     guestOS.setBitSize(32);
199     guestOS.setTools(TOOLS);
200     guestOS.setName("Ubuntu");
201     compute.setGuestOS(guestOS);
202     NumOfVMs numOfVMs = new NumOfVMs();
203     numOfVMs.setMaximum(256);
204     numOfVMs.setMinimum(2);
205     compute.setNumOfVMs(numOfVMs);
206     componentQuestionnaire.setCompute(compute);
207
208     return componentQuestionnaire;
209   }
210
211   private VspQuestionnaire initVspQuestionnaire() {
212     VspQuestionnaire vspQuestionnaire = new VspQuestionnaire();
213     Availability availability = new Availability();
214     availability.setUseAvailabilityZonesForHighAvailability(true);
215     General general = new General();
216     general.setAvailability(availability);
217
218     StorageDataReplication storageDataReplication = new StorageDataReplication();
219     storageDataReplication.setStorageReplicationAcrossRegion(true);
220     storageDataReplication.setStorageReplicationDestination("in a galaxy far, far away");
221     storageDataReplication.setStorageReplicationFrequency(6);
222     storageDataReplication.setStorageReplicationSize(128);
223     storageDataReplication.setStorageReplicationSource("here below");
224     general.setStorageDataReplication(storageDataReplication);
225     vspQuestionnaire.setGeneral(general);
226     return vspQuestionnaire;
227   }
228
229   private VspDetails initVspDetails() {
230     VspDetails vspDetails = new VspDetails();
231     vspDetails.setCategory("vspCategory");
232     vspDetails.setDescription("described");
233     vspDetails.setName("vsp named Alice");
234     vspDetails.setVendorName("Fortigate");
235     vspDetails.setVersion(new Version(0, 79));
236     vspDetails.setVlmVersion(new Version(0, 1));
237     vspDetails.setLicenseAgreement("the usual license agreement");
238     List<String> featureGroups = new ArrayList<>();
239     featureGroups.add("first feature group");
240     featureGroups.add("one too many feature group");
241     featureGroups.add("the very last feature group");
242     vspDetails.setFeatureGroups(featureGroups);
243     vspDetails.setOnboardingMethod("HEAT");
244     return vspDetails;
245   }
246
247 }