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;
73 @BeforeMethod(alwaysRun = true)
74 public void injectDoubles() {
75 MockitoAnnotations.initMocks(this);
77 // InformationArtifactData returnedQuestionnaire = new InformationArtifactData();
78 // Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
79 // (anyString(), anyObject()))
80 // .thenReturn(returnedQuestionnaire);
86 public void testRoundVersion(){
87 Version version = new Version(2,1);
88 String rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
89 Assert.assertEquals("3.0",rounded);
91 version = Version.valueOf("2.0");
92 rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
93 Assert.assertEquals("2.0",rounded);
98 public void testArtifactCreation() throws IOException {
99 InformationArtifactData informationArtifactData = initArtifactData();
100 Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
101 (anyString(), anyObject()))
102 .thenReturn(informationArtifactData);
105 String result = informationArtifactGenerator.generate("vsp", new Version(0, 1));
106 System.out.println("result = \n" + result);
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));
117 private InformationArtifactData initArtifactData() {
118 InformationArtifactData informationArtifactData = new InformationArtifactData();
120 informationArtifactData.setVspDetails(initVspDetails());
122 informationArtifactData.setVspQuestionnaire(initVspQuestionnaire());
123 informationArtifactData.setComponentQuestionnaires(initComponentQuestionnaires());
124 informationArtifactData.setNicQuestionnaires(initNicQuestionnaires());
125 return informationArtifactData;
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;
140 private NicQuestionnaire initNicQuestionnaire() {
141 NicQuestionnaire nic = new NicQuestionnaire();
142 Network network = new Network();
143 network.setNetworkDescription(NETWORK_DESC);
144 nic.setNetwork(network);
146 IpConfiguration ipconfig = new IpConfiguration();
147 ipconfig.setIpv4Required(true);
148 ipconfig.setIpv6Required(false);
150 nic.setIpConfiguration(ipconfig);
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);
159 nic.setProtocols(protocols);
164 private List<ComponentQuestionnaire> initComponentQuestionnaires() {
165 List<ComponentQuestionnaire> componentQuestionnaires = new ArrayList<>();
166 ComponentQuestionnaire componentQuestionnaire1 = new ComponentQuestionnaire();
167 ComponentQuestionnaire componentQuestionnaire2 = new ComponentQuestionnaire();
169 componentQuestionnaire1 = initComponent();
170 componentQuestionnaire2 = initComponent();
172 componentQuestionnaires.add(componentQuestionnaire1);
173 componentQuestionnaires.add(componentQuestionnaire2);
175 return componentQuestionnaires;
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(
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);
208 return componentQuestionnaire;
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);
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;
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");