ab36e8e5a134edbeff8560d1b885c1135f1f594d
[sdc.git] /
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   /*
74
75   @BeforeMethod(alwaysRun = true)
76   public void injectDoubles() {
77     MockitoAnnotations.initMocks(this);
78
79 //    InformationArtifactData returnedQuestionnaire = new InformationArtifactData();
80 //    Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
81 //        (anyString(), anyObject()))
82 //        .thenReturn(returnedQuestionnaire);
83 //
84
85   }
86
87   @Test
88   public void testRoundVersion(){
89     Version version = new Version(2,1);
90     String rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
91     Assert.assertEquals("3.0",rounded);
92
93     version = Version.valueOf("2.0");
94      rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
95     Assert.assertEquals("2.0",rounded);
96
97   }
98
99   @Test
100   public void testArtifactCreation() throws IOException {
101     InformationArtifactData informationArtifactData = initArtifactData();
102     Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
103         (anyString(), anyObject()))
104         .thenReturn(informationArtifactData);
105
106
107     String result = informationArtifactGenerator.generate("vsp", new Version(0, 1));
108     System.out.println("result = \n" + result);
109
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));
116
117   }
118
119   private InformationArtifactData initArtifactData() {
120     InformationArtifactData informationArtifactData = new InformationArtifactData();
121
122     informationArtifactData.setVspDetails(initVspDetails());
123
124     informationArtifactData.setVspQuestionnaire(initVspQuestionnaire());
125     informationArtifactData.setComponentQuestionnaires(initComponentQuestionnaires());
126     informationArtifactData.setNicQuestionnaires(initNicQuestionnaires());
127     return informationArtifactData;
128   }
129
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;
139
140   }
141
142   private NicQuestionnaire initNicQuestionnaire() {
143     NicQuestionnaire nic = new NicQuestionnaire();
144     Network network = new Network();
145     network.setNetworkDescription(NETWORK_DESC);
146     nic.setNetwork(network);
147
148     IpConfiguration ipconfig = new IpConfiguration();
149     ipconfig.setIpv4Required(true);
150     ipconfig.setIpv6Required(false);
151
152     nic.setIpConfiguration(ipconfig);
153
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);
160
161     nic.setProtocols(protocols);
162
163     return nic;
164   }
165
166   private List<ComponentQuestionnaire> initComponentQuestionnaires() {
167     List<ComponentQuestionnaire> componentQuestionnaires = new ArrayList<>();
168     ComponentQuestionnaire componentQuestionnaire1 = new ComponentQuestionnaire();
169     ComponentQuestionnaire componentQuestionnaire2 = new ComponentQuestionnaire();
170
171     componentQuestionnaire1 = initComponent();
172     componentQuestionnaire2 = initComponent();
173
174     componentQuestionnaires.add(componentQuestionnaire1);
175     componentQuestionnaires.add(componentQuestionnaire2);
176
177     return componentQuestionnaires;
178   }
179
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(
193         general);
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);
209
210     return componentQuestionnaire;
211   }
212
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);
219
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;
229   }
230
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");
246     return vspDetails;
247   }
248
249   */
250
251 }