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;
66 * @since December 07, 2016
69 public class TxtInformationArtifactGeneratorImplTest {
71 private static final String NETWORK_DESC = "\"network desc\"";
72 private static final String HYPERVIZOR_NAME = "\"hyper hyper hypervizor\"";
73 private static final String TOOLS ="all tools possible" ;
75 QuestionnaireDataService questionnaireDataServiceMock;
77 TxtInformationArtifactGeneratorImpl informationArtifactGenerator;
79 @BeforeMethod(alwaysRun = true)
80 public void injectDoubles() {
81 MockitoAnnotations.initMocks(this);
83 // InformationArtifactData returnedQuestionnaire = new InformationArtifactData();
84 // Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
85 // (anyString(), anyObject()))
86 // .thenReturn(returnedQuestionnaire);
92 public void testRoundVersion(){
93 Version version = new Version(2,1);
94 String rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
95 Assert.assertEquals("3.0",rounded);
97 version = Version.valueOf("2.0");
98 rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
99 Assert.assertEquals("2.0",rounded);
104 public void testArtifactCreation() throws IOException {
105 InformationArtifactData informationArtifactData = initArtifactData();
106 Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
107 (anyString(), anyObject()))
108 .thenReturn(informationArtifactData);
111 String result = informationArtifactGenerator.generate("vsp", new Version(0, 1));
112 System.out.println("result = \n" + result);
114 Assert.assertTrue(result.contains(HYPERVIZOR_NAME));
115 Assert.assertTrue(result.contains(HEADER));
116 Assert.assertTrue(result.contains(VFC_COMPUTE_CPU_OVER_SUBSCRIPTION));
117 Assert.assertTrue(result.contains(TOOLS));
118 Assert.assertTrue(result.contains(TxtInformationArtifactConstants.LICENSE_AGREEMENT_NAME));
119 Assert.assertTrue(result.contains(TxtInformationArtifactConstants.LIST_OF_FEATURE_GROUPS));
123 private InformationArtifactData initArtifactData() {
124 InformationArtifactData informationArtifactData = new InformationArtifactData();
126 informationArtifactData.setVspDetails(initVspDetails());
128 informationArtifactData.setVspQuestionnaire(initVspQuestionnaire());
129 informationArtifactData.setComponentQuestionnaires(initComponentQuestionnaires());
130 informationArtifactData.setNicQuestionnaires(initNicQuestionnaires());
131 return informationArtifactData;
134 private List<NicQuestionnaire> initNicQuestionnaires() {
135 List<NicQuestionnaire> nicQuestionnaires = new ArrayList<>();
136 NicQuestionnaire nic1 = new NicQuestionnaire();
137 NicQuestionnaire nic2 = new NicQuestionnaire();
138 nic1 = initNicQuestionnaire();
139 nic2 = initNicQuestionnaire();
140 nicQuestionnaires.add(nic1);
141 nicQuestionnaires.add(nic2);
142 return nicQuestionnaires;
146 private NicQuestionnaire initNicQuestionnaire() {
147 NicQuestionnaire nic = new NicQuestionnaire();
148 Network network = new Network();
149 network.setNetworkDescription(NETWORK_DESC);
150 nic.setNetwork(network);
152 IpConfiguration ipconfig = new IpConfiguration();
153 ipconfig.setIpv4Required(true);
154 ipconfig.setIpv6Required(false);
156 nic.setIpConfiguration(ipconfig);
158 Protocols protocols = new Protocols();
159 List<String> protocolsList = new ArrayList<>();
160 protocolsList.add("45");
161 protocolsList.add("55");
162 protocolsList.add("HTTP");
163 protocols.setProtocols(protocolsList);
165 nic.setProtocols(protocols);
170 private List<ComponentQuestionnaire> initComponentQuestionnaires() {
171 List<ComponentQuestionnaire> componentQuestionnaires = new ArrayList<>();
172 ComponentQuestionnaire componentQuestionnaire1 = new ComponentQuestionnaire();
173 ComponentQuestionnaire componentQuestionnaire2 = new ComponentQuestionnaire();
175 componentQuestionnaire1 = initComponent();
176 componentQuestionnaire2 = initComponent();
178 componentQuestionnaires.add(componentQuestionnaire1);
179 componentQuestionnaires.add(componentQuestionnaire2);
181 return componentQuestionnaires;
184 private ComponentQuestionnaire initComponent() {
185 ComponentQuestionnaire componentQuestionnaire = new ComponentQuestionnaire();
186 org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.general.General general =
187 new org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.general.General();
188 Hypervisor hypervisor = new Hypervisor();
189 hypervisor.setDrivers("driving drivers");
190 hypervisor.setHypervisor(HYPERVIZOR_NAME);
191 general.setHypervisor(hypervisor);
192 Recovery recovery = new Recovery();
193 recovery.setPointObjective(22);
194 recovery.setTimeObjective(33);
195 general.setRecovery(recovery);
196 componentQuestionnaire.setGeneral(
198 org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.network.Network net =
199 new org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.network.Network();
200 net.setNetworkCapacity(new NetworkCapacity());
201 componentQuestionnaire.setNetwork(net);
202 Compute compute = new Compute();
203 GuestOS guestOS = new GuestOS();
204 guestOS.setBitSize(32);
205 guestOS.setTools(TOOLS);
206 guestOS.setName("Ubuntu");
207 compute.setGuestOS(guestOS);
208 NumOfVMs numOfVMs = new NumOfVMs();
209 numOfVMs.setMaximum(256);
210 numOfVMs.setMinimum(2);
211 compute.setNumOfVMs(numOfVMs);
212 componentQuestionnaire.setCompute(compute);
214 return componentQuestionnaire;
217 private VspQuestionnaire initVspQuestionnaire() {
218 VspQuestionnaire vspQuestionnaire = new VspQuestionnaire();
219 Availability availability = new Availability();
220 availability.setUseAvailabilityZonesForHighAvailability(true);
221 General general = new General();
222 general.setAvailability(availability);
224 StorageDataReplication storageDataReplication = new StorageDataReplication();
225 storageDataReplication.setStorageReplicationAcrossRegion(true);
226 storageDataReplication.setStorageReplicationDestination("in a galaxy far, far away");
227 storageDataReplication.setStorageReplicationFrequency(6);
228 storageDataReplication.setStorageReplicationSize(128);
229 storageDataReplication.setStorageReplicationSource("here below");
230 general.setStorageDataReplication(storageDataReplication);
231 vspQuestionnaire.setGeneral(general);
232 return vspQuestionnaire;
235 private VspDetails initVspDetails() {
236 VspDetails vspDetails = new VspDetails();
237 vspDetails.setCategory("vspCategory");
238 vspDetails.setDescription("described");
239 vspDetails.setName("vsp named Alice");
240 vspDetails.setVendorName("Fortigate");
241 vspDetails.setVersion(new Version(0, 79));
242 vspDetails.setVlmVersion(new Version(0, 1));
243 vspDetails.setLicenseAgreement("the usual license agreement");
244 List<String> featureGroups = new ArrayList<>();
245 featureGroups.add("first feature group");
246 featureGroups.add("one too many feature group");
247 featureGroups.add("the very last feature group");
248 vspDetails.setFeatureGroups(featureGroups);