2 * Copyright 2016 ZTE Corporation.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.openo.commontosca.catalog.wrapper;
18 import static org.junit.Assert.assertEquals;
20 import com.google.gson.Gson;
21 import com.google.gson.JsonElement;
22 import com.google.gson.JsonObject;
23 import com.google.gson.JsonPrimitive;
25 import org.junit.After;
26 import org.junit.AfterClass;
27 import org.junit.Assert;
28 import org.junit.Before;
29 import org.junit.BeforeClass;
30 import org.junit.Test;
31 import org.openo.commontosca.catalog.CatalogAppConfiguration;
32 import org.openo.commontosca.catalog.common.Config;
33 import org.openo.commontosca.catalog.common.HttpServerAddrConfig;
34 import org.openo.commontosca.catalog.common.HttpServerPathConfig;
35 import org.openo.commontosca.catalog.common.MsbAddrConfig;
36 import org.openo.commontosca.catalog.common.ToolUtil;
37 import org.openo.commontosca.catalog.db.dao.DaoManager;
38 import org.openo.commontosca.catalog.db.entity.NodeTemplateData;
39 import org.openo.commontosca.catalog.db.entity.PackageData;
40 import org.openo.commontosca.catalog.db.entity.ServiceTemplateData;
41 import org.openo.commontosca.catalog.db.entity.ServiceTemplateMappingData;
42 import org.openo.commontosca.catalog.db.entity.TemplateData;
43 import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
44 import org.openo.commontosca.catalog.db.resource.PackageManager;
45 import org.openo.commontosca.catalog.db.resource.TemplateManager;
46 import org.openo.commontosca.catalog.db.util.H2DbServer;
47 import org.openo.commontosca.catalog.db.util.HibernateSession;
48 import org.openo.commontosca.catalog.entity.EnumOperationalState;
49 import org.openo.commontosca.catalog.model.entity.InputParameter;
50 import org.openo.commontosca.catalog.model.entity.NodeTemplate;
51 import org.openo.commontosca.catalog.model.entity.OutputParameter;
52 import org.openo.commontosca.catalog.model.entity.Parameters;
53 import org.openo.commontosca.catalog.model.entity.QueryRawDataCondition;
54 import org.openo.commontosca.catalog.model.entity.RelationShip;
55 import org.openo.commontosca.catalog.model.entity.ServiceTemplate;
56 import org.openo.commontosca.catalog.model.entity.ServiceTemplateOperation;
57 import org.openo.commontosca.catalog.model.entity.ServiceTemplateRawData;
58 import org.openo.commontosca.catalog.model.entity.SubstitutionMapping;
59 import org.openo.commontosca.catalog.model.wrapper.ServiceTemplateWrapper;
61 import java.util.ArrayList;
62 import java.util.Arrays;
63 import java.util.HashMap;
64 import java.util.Iterator;
65 import java.util.List;
67 import java.util.Map.Entry;
70 public class ServiceTemplateWrapperTest {
71 private static ServiceTemplateWrapper serviceTemplateWrapper;
72 private static TemplateManager templateManager;
73 private static PackageManager packageManager;
76 CatalogAppConfiguration configuration = new CatalogAppConfiguration();
77 Config.setConfigration(configuration);
78 Config.getConfigration().setMsbServerAddr("http://127.0.0.1:80");
80 HttpServerAddrConfig.setHttpServerAddress("http://127.0.0.1:8201");
81 HttpServerPathConfig.setHttpServerPath("../tomcat/webapps/ROOT/");
85 * startup db session before class.
88 public static void setUpBeforeClass() {
90 DaoManager.getInstance().setDaoNull();
91 DaoManager.getInstance().setSessionFactory(HibernateSession.init());
92 serviceTemplateWrapper = ServiceTemplateWrapper.getInstance();
93 templateManager = TemplateManager.getInstance();
94 packageManager = PackageManager.getInstance();
95 CatalogAppConfiguration configuration = new CatalogAppConfiguration();
96 Config.setConfigration(configuration);
97 System.out.println("Set up before class");
104 public void setUp() throws Exception {
105 /*Response packageListResult = packageWrapper.queryPackageListByCond(null,
106 null, null, null, null);
107 @SuppressWarnings("unchecked")
108 ArrayList<PackageMeta> packageList = (ArrayList<PackageMeta>) packageListResult.getEntity();
109 for (PackageMeta packageMeta:packageList) {
110 String csarId = packageMeta.getCsarId();
111 packageWrapper.delPackage(csarId);
113 ArrayList<ServiceTemplateData> servicetemplates = templateManager.queryServiceTemplate(
115 if (null != servicetemplates && servicetemplates.size() > 0) {
116 for (int i = 0; i < servicetemplates.size(); i++) {
117 String serviceTemplateId = servicetemplates.get(i).getServiceTemplateId();
118 templateManager.deleteServiceTemplateById(serviceTemplateId);
122 TemplateData templateData = new TemplateData();
123 templateData = setTemplateData();
124 templateManager.addServiceTemplate(templateData);
126 ServiceTemplateMappingData templateMappingData = new ServiceTemplateMappingData();
127 templateMappingData = setTemplateMappingData();
128 templateManager.addServiceTemplateMapping(templateMappingData);
130 ArrayList<PackageData> packageList = packageManager.queryPackage(null, null, null, null, null);
131 if (packageList != null && packageList.size() > 0) {
132 for (int i = 0; i < packageList.size(); i++) {
133 String packageOid = packageList.get(i).getCsarId();
134 packageManager.deletePackage(packageOid);
137 PackageData packageData = new PackageData();
138 packageData = getPackageData();
139 packageManager.addPackage(packageData);
141 //ArrayList<ServiceTemplateData> serviceTemplates = templateManager
142 //.queryServiceTemplate(null, null, null);
143 //ArrayList<NodeTemplateData> nodeTemplateDatas = templateManager
144 //.queryNodeTemplateBySeriviceTemplateId("serviceTemplateId");
145 System.out.println("Set up before");
151 public void testGetServiceTemplates() throws CatalogResourceException {
152 ServiceTemplate[] expectResult = getExpectServiceTemplates();
153 ServiceTemplate[] result1 = serviceTemplateWrapper.getServiceTemplates(null, false);
154 assertEquals(expectResult, result1);
156 ServiceTemplate[] result2 = serviceTemplateWrapper.getServiceTemplates(EnumOperationalState.Enabled, false);
157 assertEquals(new ServiceTemplate[0], result2);
161 public void testGetNestingServiceTemplate() throws CatalogResourceException {
162 ServiceTemplate[] expectResult = getExpectServiceTemplates();
163 String[] nodeTypeIds = new String[]{"tosca.nodes.nfv.VL"};
164 ServiceTemplate[] result = serviceTemplateWrapper.getNestingServiceTemplate(nodeTypeIds);
165 assertEquals(expectResult, result);
169 public void testGetNodeTemplatesByType() throws CatalogResourceException {
170 NodeTemplate[] expectResult = getExpectNodeTemplates();
171 NodeTemplate[] result1 = serviceTemplateWrapper.getNodeTemplates("serviceTemplateId", null);
172 assertEquals(1, result1.length);
173 result1[0].setId("nodeTemplateId");
174 assertEquals(expectResult, result1);
176 String[] types = {"tosca.nodes.nfv.VL"};
177 NodeTemplate[] result2 = serviceTemplateWrapper.getNodeTemplates("serviceTemplateId", types);
178 assertEquals(1, result2.length);
179 result2[0].setId("nodeTemplateId");
180 assertEquals(expectResult, result2);
184 public void testGetNodeTemplateById() throws CatalogResourceException {
185 NodeTemplate[] nodeTemplates = serviceTemplateWrapper.getNodeTemplates(
186 "serviceTemplateId", null);
187 NodeTemplate result = new NodeTemplate();
188 if (null != nodeTemplates && nodeTemplates.length > 0) {
189 String nodeTemplateId = nodeTemplates[0].getId();
190 result = serviceTemplateWrapper.getNodeTemplateById(
191 "serviceTemplateId", nodeTemplateId);
192 result.setId("nodeTemplateId");
194 NodeTemplate expectResult = getExpectNodeTemplate();
195 assertEquals(expectResult, result);
199 public void testGetServiceTemplateOperations() throws CatalogResourceException {
200 ServiceTemplateOperation[] expectResult = getServiceTemplateOperation();
201 ServiceTemplateOperation[] result = serviceTemplateWrapper
202 .getTemplateOperations("serviceTemplateId");
203 assertEquals(expectResult, result);
207 public void testGetServiceTemplateById() throws CatalogResourceException {
208 ServiceTemplate expectResult = getExpectServiceTemplate();
209 ServiceTemplate result = serviceTemplateWrapper.getServiceTemplateById("serviceTemplateId");
210 assertEquals(expectResult, result);
214 public void testGetServiceTemplateParameters() throws CatalogResourceException {
215 Parameters expectResult = getParameters();
216 Parameters result = serviceTemplateWrapper.getServiceTemplateParameters("serviceTemplateId");
217 assertEquals(expectResult, result);
221 public void testGetParametersByOperationName() throws CatalogResourceException {
222 InputParameter[] expectResult = getServiceTemplateInputs();
223 InputParameter[] result = serviceTemplateWrapper.getParametersByOperationName(
224 "serviceTemplateId", "init");
225 assertEquals(expectResult, result);
229 public void testGetServiceTemplateRawData() throws Exception {
230 ServiceTemplateRawData expectResult = new ServiceTemplateRawData();
231 expectResult.setRawData("rawData");
232 QueryRawDataCondition queryCondition = new QueryRawDataCondition();
233 queryCondition.setCsarId("123456");
234 ServiceTemplateRawData result = serviceTemplateWrapper
235 .getServiceTemplateRawData(queryCondition);
236 assertEquals(expectResult, result);
240 * delete data after test.
243 public void tearDown() throws Exception {
244 packageManager.deletePackage("123456");
245 templateManager.deleteServiceTemplateById("serviceTemplateId");
246 templateManager.deleteServiceTemplateMapping(null, "serviceTemplateId");
247 System.out.println("Tear down");
251 * destory db session after class.
254 public static void tearDownAfterClass() {
256 HibernateSession.destory();
257 DaoManager.getInstance().setDaoNull();
258 H2DbServer.shutDown();
259 } catch (Exception e1) {
260 Assert.fail("Exception" + e1.getMessage());
264 /*private void uploadPackage() {
265 InputStream ins = null;
267 FormDataContentDisposition fileDetail =
268 FormDataContentDisposition.name("fileName").fileName("NanocellGW.csar").build();
271 resourcePath = HibernateSession.class.getResource("/").toURI().getPath();
272 } catch (URISyntaxException e1) {
273 e1.printStackTrace();
275 final String filename = "NanocellGW.csar";
276 File packageFile = new File(resourcePath + filename);
278 ins = new FileInputStream(packageFile);
279 } catch (FileNotFoundException e2) {
280 e2.printStackTrace();
284 PackageWrapper.getInstance().uploadPackage(ins, fileDetail, null);
285 } catch (Exception e3) {
286 e3.printStackTrace();
291 private TemplateData setTemplateData() {
292 ServiceTemplateData serviceTemplate = new ServiceTemplateData();
293 ArrayList<NodeTemplateData> nodeTemplates = new ArrayList<NodeTemplateData>();
294 NodeTemplateData nodeTemplate = new NodeTemplateData();
295 serviceTemplate = setServiceTemplate();
296 nodeTemplate = setNodeTemplate();
297 nodeTemplates.add(nodeTemplate);
298 TemplateData templateData = new TemplateData();
299 templateData.setServiceTemplate(serviceTemplate);
300 templateData.setNodeTemplates(nodeTemplates);
304 private NodeTemplateData setNodeTemplate() {
305 NodeTemplateData nodeTemplate = new NodeTemplateData();
306 nodeTemplate.setName("nodeName");
307 nodeTemplate.setNodeTemplateId("nodeTemplateId");
308 String properties = "{\"cidr\":\"\",\"gateWay\":\"\",\"dhcp\":\"\"}";
309 nodeTemplate.setProperties(properties);
310 String relationShips = "[{\"sourceNodeName\":\"endpoint.vlan2\","
311 + "\"targetNodeName\":\"VLAN\","
312 + "\"sourceNodeId\":\"tosca_nodes_nfv_CP_4\","
313 + "\"targetNodeId\":\"tosca_nodes_nfv_VL_1\","
314 + "\"type\":\"tosca.relationships.nfv.VirtualLinksTo\"}]";
315 nodeTemplate.setRelationShips(relationShips);
316 nodeTemplate.setServiceTemplateId("serviceTemplateId");
317 nodeTemplate.setType("tosca.nodes.nfv.VL");
321 private ServiceTemplateData setServiceTemplate() {
322 ServiceTemplateData serviceTemplate = new ServiceTemplateData();
323 serviceTemplate.setCsarId("123456");
324 serviceTemplate.setDownloadUri("/Definitions/segw.yml");
325 String inputs = "{\"inputs\":[{\"name\": \"SubscribersPerNfc\","
326 + "\"type\": \"STRING\",\"description\": \"\",\"required\": false}],"
328 serviceTemplate.setInputs(inputs);
329 String operations = "[{\"name\":\"init\",\"description\":\"\","
330 + "\"packageName\":\"NanocellGW\",\"processId\":\"\","
331 + "\"inputs\":[{\"name\": \"SubscribersPerNfc\","
332 + "\"type\": \"STRING\",\"description\": \"\","
333 + "\"required\": false}]}]";
334 serviceTemplate.setOperations(operations);
335 serviceTemplate.setRowData("rawData");
336 serviceTemplate.setServiceTemplateId("serviceTemplateId");
337 serviceTemplate.setTemplateName("templateName");
338 serviceTemplate.setType("NS");
339 serviceTemplate.setVendor("ZTE");
340 serviceTemplate.setVersion("0.0.1");
341 return serviceTemplate;
344 private ServiceTemplateMappingData setTemplateMappingData() {
345 ServiceTemplateMappingData mappingData = new ServiceTemplateMappingData();
346 mappingData.setCapabilities("");
347 mappingData.setMappingId("mappingId");
348 mappingData.setNodeType("tosca.nodes.nfv.VL");
349 mappingData.setRequirements("");
350 mappingData.setServiceTemplateId("serviceTemplateId");
354 private ServiceTemplate[] getExpectServiceTemplates() {
355 ServiceTemplate serviceTemplate = new ServiceTemplate();
356 serviceTemplate = getExpectServiceTemplate();
357 ServiceTemplate[] serviceTemplates = new ServiceTemplate[1];
358 serviceTemplates[0] = serviceTemplate;
359 return serviceTemplates;
362 private ServiceTemplate getExpectServiceTemplate() {
363 ServiceTemplate serviceTemplate = new ServiceTemplate();
364 serviceTemplate.setCsarId("123456");
365 serviceTemplate.setDownloadUri(MsbAddrConfig.getMsbAddress()
366 + "/files/catalog-http/NSAR/ZTE/NanocellGW/v1.0/NanocellGW/Definitions/segw.yml");
367 InputParameter[] inputs = getServiceTemplateInputs();
368 serviceTemplate.setInputs(inputs);
369 ServiceTemplateOperation[] operations = getServiceTemplateOperation();
370 serviceTemplate.setOperations(operations);
371 OutputParameter[] outputs = getOutputs();
372 serviceTemplate.setOutputs(outputs);
373 serviceTemplate.setServiceTemplateId("serviceTemplateId");
374 serviceTemplate.setTemplateName("templateName");
375 serviceTemplate.setType("NS");
376 serviceTemplate.setVendor("ZTE");
377 serviceTemplate.setVersion("0.0.1");
378 serviceTemplate.setSubstitution(
379 new SubstitutionMapping("serviceTemplateId", "tosca.nodes.nfv.VL"));
380 return serviceTemplate;
383 private OutputParameter[] getOutputs() {
384 String outputsStr = "[]";
385 OutputParameter[] outputs = ToolUtil.fromJson(outputsStr, OutputParameter[].class);
389 private ServiceTemplateOperation[] getServiceTemplateOperation() {
390 String operationsStr = "[{\"name\":\"init\",\"description\":\"\","
391 + "\"packageName\":\"NanocellGW\",\"processId\":\"\","
392 + "\"inputs\":[{\"name\": \"SubscribersPerNfc\","
393 + "\"type\": \"STRING\",\"description\": \"\","
394 + "\"required\": false}]}]";
395 ServiceTemplateOperation[] operations = ToolUtil.fromJson(operationsStr,
396 ServiceTemplateOperation[].class);
400 private InputParameter[] getServiceTemplateInputs() {
401 String inputsStr = "[{\"name\": \"SubscribersPerNfc\","
402 + "\"type\": \"STRING\",\"description\": \"\",\"required\": false}]";
403 InputParameter[] inputs = ToolUtil.fromJson(inputsStr, InputParameter[].class);
407 private Parameters getParameters() {
408 String parametersStr = "{\"inputs\":[{\"name\": \"SubscribersPerNfc\","
409 + "\"type\": \"STRING\",\"description\": \"\",\"required\": false}],"
411 Parameters parameters = ToolUtil.fromJson(parametersStr, Parameters.class);
415 private NodeTemplate[] getExpectNodeTemplates() {
416 NodeTemplate nodeTemplate = new NodeTemplate();
417 nodeTemplate = getExpectNodeTemplate();
418 NodeTemplate[] nodeTemplates = new NodeTemplate[1];
419 nodeTemplates[0] = nodeTemplate;
420 return nodeTemplates;
423 private NodeTemplate getExpectNodeTemplate() {
424 NodeTemplate nodeTemplate = new NodeTemplate();
425 nodeTemplate.setId("nodeTemplateId");
426 nodeTemplate.setName("nodeName");
427 String propertiesStr = "{\"cidr\":\"\",\"gateWay\":\"\",\"dhcp\":\"\"}";
428 Map<String, Object> properties = convert2Property(propertiesStr);
429 nodeTemplate.setProperties(properties);
430 String relationShipsStr = "[{\"sourceNodeName\":\"endpoint.vlan2\","
431 + "\"targetNodeName\":\"VLAN\","
432 + "\"sourceNodeId\":\"tosca_nodes_nfv_CP_4\","
433 + "\"targetNodeId\":\"tosca_nodes_nfv_VL_1\","
434 + "\"type\":\"tosca.relationships.nfv.VirtualLinksTo\"}]";
435 List<RelationShip> relationShips = convert2RelationShipList(relationShipsStr);
436 nodeTemplate.setRelationShips(relationShips);
437 nodeTemplate.setType("tosca.nodes.nfv.VL");
441 private Map<String, Object> convert2Property(String properties) {
442 JsonObject jsonObject = new Gson().fromJson(properties, JsonObject.class);
443 return parseMapValue(jsonObject);
446 private Map<String, Object> parseMapValue(JsonObject jsonObject) {
447 Map<String, Object> map = new HashMap<>();
449 Iterator<Entry<String, JsonElement>> iterator = jsonObject.entrySet().iterator();
450 while (iterator.hasNext()) {
451 Entry<String, JsonElement> next = iterator.next();
452 if (next.getValue() instanceof JsonPrimitive) {
453 map.put(next.getKey(), next.getValue().getAsString());
457 if (next.getValue() instanceof JsonObject) {
458 map.put(next.getKey(), parseMapValue((JsonObject) next.getValue()));
465 private List<RelationShip> convert2RelationShipList(String srelationShips) {
466 RelationShip[] relationShips = ToolUtil.fromJson(srelationShips, RelationShip[].class);
467 return Arrays.asList(relationShips);
470 private PackageData getPackageData() {
471 PackageData packageData = new PackageData();
472 packageData.setCsarId("123456");
473 packageData.setCreateTime("2016-06-29 03:33:15");
474 packageData.setDeletionPending("false");
475 packageData.setDownloadUri("/NSAR/ZTE/NanocellGW/v1.0/");
476 packageData.setFormat("yml");
477 packageData.setModifyTime("2016-06-29 03:33:15");
478 packageData.setName("NanocellGW");
479 packageData.setOnBoardState("non-onBoarded");
480 packageData.setOperationalState("Disabled");
481 packageData.setProvider("ZTE");
482 packageData.setSize("0.93M");
483 packageData.setType("NSAR");
484 packageData.setUsageState("InUse");
485 packageData.setVersion("V1.0");
486 packageData.setProcessState("normal");