6652c271acf2bbf2d93280879c56d24fcb4ddc2a
[sdc.git] / openecomp-be / lib / openecomp-sdc-vendor-software-product-lib / openecomp-sdc-vendor-software-product-core / src / test / java / org / openecomp / sdc / vendorsoftwareproduct / informationArtifact / impl / TxtInformationArtifactGeneratorImplTest.java
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
64 /**
65  * @author KATYR
66  * @since December 07, 2016
67  */
68
69 public class TxtInformationArtifactGeneratorImplTest {
70
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" ;
74   @Mock
75   QuestionnaireDataService questionnaireDataServiceMock;
76   @InjectMocks
77   TxtInformationArtifactGeneratorImpl informationArtifactGenerator;
78
79   @BeforeMethod(alwaysRun = true)
80   public void injectDoubles() {
81     MockitoAnnotations.initMocks(this);
82
83 //    InformationArtifactData returnedQuestionnaire = new InformationArtifactData();
84 //    Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
85 //        (anyString(), anyObject()))
86 //        .thenReturn(returnedQuestionnaire);
87 //
88
89   }
90
91   @Test
92   public void testRoundVersion(){
93     Version version = new Version(2,1);
94     String rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
95     Assert.assertEquals("3.0",rounded);
96
97     version = Version.valueOf("2.0");
98      rounded = TxtInformationArtifactGeneratorImpl.roundVersionAsNeeded(version);
99     Assert.assertEquals("2.0",rounded);
100
101   }
102
103   @Test
104   public void testArtifactCreation() throws IOException {
105     InformationArtifactData informationArtifactData = initArtifactData();
106     Mockito.when(questionnaireDataServiceMock.generateQuestionnaireDataForInformationArtifact
107         (anyString(), anyObject()))
108         .thenReturn(informationArtifactData);
109
110
111     String result = informationArtifactGenerator.generate("vsp", new Version(0, 1));
112     System.out.println("result = \n" + result);
113
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));
120
121   }
122
123   private InformationArtifactData initArtifactData() {
124     InformationArtifactData informationArtifactData = new InformationArtifactData();
125
126     informationArtifactData.setVspDetails(initVspDetails());
127
128     informationArtifactData.setVspQuestionnaire(initVspQuestionnaire());
129     informationArtifactData.setComponentQuestionnaires(initComponentQuestionnaires());
130     informationArtifactData.setNicQuestionnaires(initNicQuestionnaires());
131     return informationArtifactData;
132   }
133
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;
143
144   }
145
146   private NicQuestionnaire initNicQuestionnaire() {
147     NicQuestionnaire nic = new NicQuestionnaire();
148     Network network = new Network();
149     network.setNetworkDescription(NETWORK_DESC);
150     nic.setNetwork(network);
151
152     IpConfiguration ipconfig = new IpConfiguration();
153     ipconfig.setIpv4Required(true);
154     ipconfig.setIpv6Required(false);
155
156     nic.setIpConfiguration(ipconfig);
157
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);
164
165     nic.setProtocols(protocols);
166
167     return nic;
168   }
169
170   private List<ComponentQuestionnaire> initComponentQuestionnaires() {
171     List<ComponentQuestionnaire> componentQuestionnaires = new ArrayList<>();
172     ComponentQuestionnaire componentQuestionnaire1 = new ComponentQuestionnaire();
173     ComponentQuestionnaire componentQuestionnaire2 = new ComponentQuestionnaire();
174
175     componentQuestionnaire1 = initComponent();
176     componentQuestionnaire2 = initComponent();
177
178     componentQuestionnaires.add(componentQuestionnaire1);
179     componentQuestionnaires.add(componentQuestionnaire2);
180
181     return componentQuestionnaires;
182   }
183
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(
197         general);
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);
213
214     return componentQuestionnaire;
215   }
216
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);
223
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;
233   }
234
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);
249     return vspDetails;
250   }
251
252 }