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