2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.vendorsoftwareproduct.informationArtifact.impl;
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;
53 import javax.annotation.processing.SupportedAnnotationTypes;
54 import java.io.IOException;
55 import java.util.ArrayList;
56 import java.util.List;
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;
63 public class TxtInformationArtifactGeneratorImplTest {
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" ;
69 QuestionnaireDataService questionnaireDataServiceMock;
71 TxtInformationArtifactGeneratorImpl informationArtifactGenerator;
75 @BeforeMethod(alwaysRun = true)
76 public void injectDoubles() {
77 MockitoAnnotations.initMocks(this);
79 // InformationArtifactData returnedQuestionnaire = new InformationArtifactData();
80 // Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
81 // (anyString(), anyObject()))
82 // .thenReturn(returnedQuestionnaire);
88 public void testRoundVersion(){
89 Version version = new Version(2,1);
90 String rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
91 Assert.assertEquals("3.0",rounded);
93 version = Version.valueOf("2.0");
94 rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
95 Assert.assertEquals("2.0",rounded);
100 public void testArtifactCreation() throws IOException {
101 InformationArtifactData informationArtifactData = initArtifactData();
102 Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
103 (anyString(), anyObject()))
104 .thenReturn(informationArtifactData);
107 String result = informationArtifactGenerator.generate("vsp", new Version(0, 1));
108 System.out.println("result = \n" + result);
110 Assert.assertTrue(result.contains(HYPERVIZOR_NAME));
111 Assert.assertTrue(result.contains(HEADER));
112 Assert.assertTrue(result.contains(VFC_COMPUTE_CPU_OVER_SUBSCRIPTION));
113 Assert.assertTrue(result.contains(TOOLS));
114 Assert.assertTrue(result.contains(TxtInformationArtifactConstants.LICENSE_AGREEMENT_NAME));
115 Assert.assertTrue(result.contains(TxtInformationArtifactConstants.LIST_OF_FEATURE_GROUPS));
119 private InformationArtifactData initArtifactData() {
120 InformationArtifactData informationArtifactData = new InformationArtifactData();
122 informationArtifactData.setVspDetails(initVspDetails());
124 informationArtifactData.setVspQuestionnaire(initVspQuestionnaire());
125 informationArtifactData.setComponentQuestionnaires(initComponentQuestionnaires());
126 informationArtifactData.setNicQuestionnaires(initNicQuestionnaires());
127 return informationArtifactData;
130 private List<NicQuestionnaire> initNicQuestionnaires() {
131 List<NicQuestionnaire> nicQuestionnaires = new ArrayList<>();
132 NicQuestionnaire nic1 = new NicQuestionnaire();
133 NicQuestionnaire nic2 = new NicQuestionnaire();
134 nic1 = initNicQuestionnaire();
135 nic2 = initNicQuestionnaire();
136 nicQuestionnaires.add(nic1);
137 nicQuestionnaires.add(nic2);
138 return nicQuestionnaires;
142 private NicQuestionnaire initNicQuestionnaire() {
143 NicQuestionnaire nic = new NicQuestionnaire();
144 Network network = new Network();
145 network.setNetworkDescription(NETWORK_DESC);
146 nic.setNetwork(network);
148 IpConfiguration ipconfig = new IpConfiguration();
149 ipconfig.setIpv4Required(true);
150 ipconfig.setIpv6Required(false);
152 nic.setIpConfiguration(ipconfig);
154 Protocols protocols = new Protocols();
155 List<String> protocolsList = new ArrayList<>();
156 protocolsList.add("45");
157 protocolsList.add("55");
158 protocolsList.add("HTTP");
159 protocols.setProtocols(protocolsList);
161 nic.setProtocols(protocols);
166 private List<ComponentQuestionnaire> initComponentQuestionnaires() {
167 List<ComponentQuestionnaire> componentQuestionnaires = new ArrayList<>();
168 ComponentQuestionnaire componentQuestionnaire1 = new ComponentQuestionnaire();
169 ComponentQuestionnaire componentQuestionnaire2 = new ComponentQuestionnaire();
171 componentQuestionnaire1 = initComponent();
172 componentQuestionnaire2 = initComponent();
174 componentQuestionnaires.add(componentQuestionnaire1);
175 componentQuestionnaires.add(componentQuestionnaire2);
177 return componentQuestionnaires;
180 private ComponentQuestionnaire initComponent() {
181 ComponentQuestionnaire componentQuestionnaire = new ComponentQuestionnaire();
182 org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.general.General general =
183 new org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.general.General();
184 Hypervisor hypervisor = new Hypervisor();
185 hypervisor.setDrivers("driving drivers");
186 hypervisor.setHypervisor(HYPERVIZOR_NAME);
187 general.setHypervisor(hypervisor);
188 Recovery recovery = new Recovery();
189 recovery.setPointObjective(22);
190 recovery.setTimeObjective(33);
191 general.setRecovery(recovery);
192 componentQuestionnaire.setGeneral(
194 org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.network.Network net =
195 new org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.network.Network();
196 net.setNetworkCapacity(new NetworkCapacity());
197 componentQuestionnaire.setNetwork(net);
198 Compute compute = new Compute();
199 GuestOS guestOS = new GuestOS();
200 guestOS.setBitSize(32);
201 guestOS.setTools(TOOLS);
202 guestOS.setName("Ubuntu");
203 compute.setGuestOS(guestOS);
204 NumOfVMs numOfVMs = new NumOfVMs();
205 numOfVMs.setMaximum(256);
206 numOfVMs.setMinimum(2);
207 compute.setNumOfVMs(numOfVMs);
208 componentQuestionnaire.setCompute(compute);
210 return componentQuestionnaire;
213 private VspQuestionnaire initVspQuestionnaire() {
214 VspQuestionnaire vspQuestionnaire = new VspQuestionnaire();
215 Availability availability = new Availability();
216 availability.setUseAvailabilityZonesForHighAvailability(true);
217 General general = new General();
218 general.setAvailability(availability);
220 StorageDataReplication storageDataReplication = new StorageDataReplication();
221 storageDataReplication.setStorageReplicationAcrossRegion(true);
222 storageDataReplication.setStorageReplicationDestination("in a galaxy far, far away");
223 storageDataReplication.setStorageReplicationFrequency(6);
224 storageDataReplication.setStorageReplicationSize(128);
225 storageDataReplication.setStorageReplicationSource("here below");
226 general.setStorageDataReplication(storageDataReplication);
227 vspQuestionnaire.setGeneral(general);
228 return vspQuestionnaire;
231 private VspDetails initVspDetails() {
232 VspDetails vspDetails = new VspDetails();
233 vspDetails.setCategory("vspCategory");
234 vspDetails.setDescription("described");
235 vspDetails.setName("vsp named Alice");
236 vspDetails.setVendorName("Fortigate");
237 vspDetails.setVersion(new Version(0, 79));
238 vspDetails.setVlmVersion(new Version(0, 1));
239 vspDetails.setLicenseAgreement("the usual license agreement");
240 List<String> featureGroups = new ArrayList<>();
241 featureGroups.add("first feature group");
242 featureGroups.add("one too many feature group");
243 featureGroups.add("the very last feature group");
244 vspDetails.setFeatureGroups(featureGroups);
245 vspDetails.setOnboardingMethod("HEAT");