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.model.entity.InputParameter;
49 import org.openo.commontosca.catalog.model.entity.NodeTemplate;
50 import org.openo.commontosca.catalog.model.entity.OutputParameter;
51 import org.openo.commontosca.catalog.model.entity.Parameters;
52 import org.openo.commontosca.catalog.model.entity.QueryRawDataCondition;
53 import org.openo.commontosca.catalog.model.entity.RelationShip;
54 import org.openo.commontosca.catalog.model.entity.ServiceTemplate;
55 import org.openo.commontosca.catalog.model.entity.ServiceTemplateOperation;
56 import org.openo.commontosca.catalog.model.entity.ServiceTemplateRawData;
57 import org.openo.commontosca.catalog.model.wrapper.ServiceTemplateWrapper;
59 import java.util.ArrayList;
60 import java.util.Arrays;
61 import java.util.HashMap;
62 import java.util.Iterator;
63 import java.util.List;
65 import java.util.Map.Entry;
68 public class ServiceTemplateWrapperTest {
69 private static ServiceTemplateWrapper serviceTemplateWrapper;
70 private static TemplateManager templateManager;
71 private static PackageManager packageManager;
74 CatalogAppConfiguration configuration = new CatalogAppConfiguration();
75 Config.setConfigration(configuration);
76 Config.getConfigration().setMsbServerAddr("http://127.0.0.1:80");
78 HttpServerAddrConfig.setHttpServerAddress("http://127.0.0.1:8201");
79 HttpServerPathConfig.setHttpServerPath("../tomcat/webapps/ROOT/");
83 * startup db session before class.
86 public static void setUpBeforeClass() {
88 DaoManager.getInstance().setDaoNull();
89 DaoManager.getInstance().setSessionFactory(HibernateSession.init());
90 serviceTemplateWrapper = ServiceTemplateWrapper.getInstance();
91 templateManager = TemplateManager.getInstance();
92 packageManager = PackageManager.getInstance();
93 CatalogAppConfiguration configuration = new CatalogAppConfiguration();
94 Config.setConfigration(configuration);
95 System.out.println("Set up before class");
102 public void setUp() throws Exception {
103 /*Response packageListResult = packageWrapper.queryPackageListByCond(null,
104 null, null, null, null);
105 @SuppressWarnings("unchecked")
106 ArrayList<PackageMeta> packageList = (ArrayList<PackageMeta>) packageListResult.getEntity();
107 for (PackageMeta packageMeta:packageList) {
108 String csarId = packageMeta.getCsarId();
109 packageWrapper.delPackage(csarId);
111 ArrayList<ServiceTemplateData> servicetemplates = templateManager.queryServiceTemplate(
113 if (null != servicetemplates && servicetemplates.size() > 0) {
114 for (int i = 0; i < servicetemplates.size(); i++) {
115 String serviceTemplateId = servicetemplates.get(i).getServiceTemplateId();
116 templateManager.deleteServiceTemplateById(serviceTemplateId);
120 TemplateData templateData = new TemplateData();
121 templateData = setTemplateData();
122 templateManager.addServiceTemplate(templateData);
124 ServiceTemplateMappingData templateMappingData = new ServiceTemplateMappingData();
125 templateMappingData = setTemplateMappingData();
126 templateManager.addServiceTemplateMapping(templateMappingData);
128 ArrayList<PackageData> packageList = packageManager.queryPackage(null, null, null, null, null);
129 if (packageList != null && packageList.size() > 0) {
130 for (int i = 0; i < packageList.size(); i++) {
131 String packageOid = packageList.get(i).getCsarId();
132 packageManager.deletePackage(packageOid);
135 PackageData packageData = new PackageData();
136 packageData = getPackageData();
137 packageManager.addPackage(packageData);
139 //ArrayList<ServiceTemplateData> serviceTemplates = templateManager
140 //.queryServiceTemplate(null, null, null);
141 //ArrayList<NodeTemplateData> nodeTemplateDatas = templateManager
142 //.queryNodeTemplateBySeriviceTemplateId("serviceTemplateId");
143 System.out.println("Set up before");
149 public void testGetServiceTemplates() throws CatalogResourceException {
150 ServiceTemplate[] expectResult = getExpectServiceTemplates();
151 ServiceTemplate[] result1 = serviceTemplateWrapper.getServiceTemplates(null, false);
152 assertEquals(expectResult, result1);
154 ServiceTemplate[] result2 = serviceTemplateWrapper.getServiceTemplates("InUse", false);
155 assertEquals(expectResult, result2);
159 public void testGetNestingServiceTemplate() throws CatalogResourceException {
160 ServiceTemplate[] expectResult = getExpectServiceTemplates();
161 String[] nodeTypeIds = new String[]{"tosca.nodes.nfv.VL"};
162 ServiceTemplate[] result = serviceTemplateWrapper.getNestingServiceTemplate(nodeTypeIds);
163 assertEquals(expectResult, result);
167 public void testGetNodeTemplatesByType() throws CatalogResourceException {
168 NodeTemplate[] expectResult = getExpectNodeTemplates();
169 NodeTemplate[] result1 = serviceTemplateWrapper.getNodeTemplates("serviceTemplateId", null);
170 assertEquals(1, result1.length);
171 result1[0].setId("nodeTemplateId");
172 assertEquals(expectResult, result1);
174 String[] types = {"tosca.nodes.nfv.VL"};
175 NodeTemplate[] result2 = serviceTemplateWrapper.getNodeTemplates("serviceTemplateId", types);
176 assertEquals(1, result2.length);
177 result2[0].setId("nodeTemplateId");
178 assertEquals(expectResult, result2);
182 public void testGetNodeTemplateById() throws CatalogResourceException {
183 NodeTemplate[] nodeTemplates = serviceTemplateWrapper.getNodeTemplates(
184 "serviceTemplateId", null);
185 NodeTemplate result = new NodeTemplate();
186 if (null != nodeTemplates && nodeTemplates.length > 0) {
187 String nodeTemplateId = nodeTemplates[0].getId();
188 result = serviceTemplateWrapper.getNodeTemplateById(
189 "serviceTemplateId", nodeTemplateId);
190 result.setId("nodeTemplateId");
192 NodeTemplate expectResult = getExpectNodeTemplate();
193 assertEquals(expectResult, result);
197 public void testGetServiceTemplateOperations() throws CatalogResourceException {
198 ServiceTemplateOperation[] expectResult = getServiceTemplateOperation();
199 ServiceTemplateOperation[] result = serviceTemplateWrapper
200 .getTemplateOperations("serviceTemplateId");
201 assertEquals(expectResult, result);
205 public void testGetServiceTemplateById() throws CatalogResourceException {
206 ServiceTemplate expectResult = getExpectServiceTemplate();
207 ServiceTemplate result = serviceTemplateWrapper.getServiceTemplateById("serviceTemplateId");
208 assertEquals(expectResult, result);
212 public void testGetServiceTemplateParameters() throws CatalogResourceException {
213 Parameters expectResult = getParameters();
214 Parameters result = serviceTemplateWrapper.getServiceTemplateParameters("serviceTemplateId");
215 assertEquals(expectResult, result);
219 public void testGetParametersByOperationName() throws CatalogResourceException {
220 InputParameter[] expectResult = getServiceTemplateInputs();
221 InputParameter[] result = serviceTemplateWrapper.getParametersByOperationName(
222 "serviceTemplateId", "init");
223 assertEquals(expectResult, result);
227 public void testGetServiceTemplateRawData() throws Exception {
228 ServiceTemplateRawData expectResult = new ServiceTemplateRawData();
229 expectResult.setRawData("rawData");
230 QueryRawDataCondition queryCondition = new QueryRawDataCondition();
231 queryCondition.setCsarId("123456");
232 ServiceTemplateRawData result = serviceTemplateWrapper
233 .getServiceTemplateRawData(queryCondition);
234 assertEquals(expectResult, result);
238 * delete data after test.
241 public void tearDown() throws Exception {
242 packageManager.deletePackage("123456");
243 templateManager.deleteServiceTemplateById("serviceTemplateId");
244 templateManager.deleteServiceTemplateMapping(null, "serviceTemplateId");
245 System.out.println("Tear down");
249 * destory db session after class.
252 public static void tearDownAfterClass() {
254 HibernateSession.destory();
255 DaoManager.getInstance().setDaoNull();
256 H2DbServer.shutDown();
257 } catch (Exception e1) {
258 Assert.fail("Exception" + e1.getMessage());
262 /*private void uploadPackage() {
263 InputStream ins = null;
265 FormDataContentDisposition fileDetail =
266 FormDataContentDisposition.name("fileName").fileName("NanocellGW.csar").build();
269 resourcePath = HibernateSession.class.getResource("/").toURI().getPath();
270 } catch (URISyntaxException e1) {
271 e1.printStackTrace();
273 final String filename = "NanocellGW.csar";
274 File packageFile = new File(resourcePath + filename);
276 ins = new FileInputStream(packageFile);
277 } catch (FileNotFoundException e2) {
278 e2.printStackTrace();
282 PackageWrapper.getInstance().uploadPackage(ins, fileDetail, null);
283 } catch (Exception e3) {
284 e3.printStackTrace();
289 private TemplateData setTemplateData() {
290 ServiceTemplateData serviceTemplate = new ServiceTemplateData();
291 ArrayList<NodeTemplateData> nodeTemplates = new ArrayList<NodeTemplateData>();
292 NodeTemplateData nodeTemplate = new NodeTemplateData();
293 serviceTemplate = setServiceTemplate();
294 nodeTemplate = setNodeTemplate();
295 nodeTemplates.add(nodeTemplate);
296 TemplateData templateData = new TemplateData();
297 templateData.setServiceTemplate(serviceTemplate);
298 templateData.setNodeTemplates(nodeTemplates);
302 private NodeTemplateData setNodeTemplate() {
303 NodeTemplateData nodeTemplate = new NodeTemplateData();
304 nodeTemplate.setName("nodeName");
305 nodeTemplate.setNodeTemplateId("nodeTemplateId");
306 String properties = "{\"cidr\":\"\",\"gateWay\":\"\",\"dhcp\":\"\"}";
307 nodeTemplate.setProperties(properties);
308 String relationShips = "[{\"sourceNodeName\":\"endpoint.vlan2\","
309 + "\"targetNodeName\":\"VLAN\","
310 + "\"sourceNodeId\":\"tosca_nodes_nfv_CP_4\","
311 + "\"targetNodeId\":\"tosca_nodes_nfv_VL_1\","
312 + "\"type\":\"tosca.relationships.nfv.VirtualLinksTo\"}]";
313 nodeTemplate.setRelationShips(relationShips);
314 nodeTemplate.setServiceTemplateId("serviceTemplateId");
315 nodeTemplate.setType("tosca.nodes.nfv.VL");
319 private ServiceTemplateData setServiceTemplate() {
320 ServiceTemplateData serviceTemplate = new ServiceTemplateData();
321 serviceTemplate.setCsarId("123456");
322 serviceTemplate.setDownloadUri(MsbAddrConfig.getMsbAddress()
323 + "/files/catalog/NSAR/ZTE/NanocellGW/v1.0/Definitions/segw.yml");
324 String inputs = "{\"inputs\":[{\"name\": \"SubscribersPerNfc\","
325 + "\"type\": \"STRING\",\"description\": \"\",\"required\": false}],"
327 serviceTemplate.setInputs(inputs);
328 String operations = "[{\"name\":\"init\",\"description\":\"\","
329 + "\"packageName\":\"NanocellGW\",\"processId\":\"\","
330 + "\"inputs\":[{\"name\": \"SubscribersPerNfc\","
331 + "\"type\": \"STRING\",\"description\": \"\","
332 + "\"required\": false}]}]";
333 serviceTemplate.setOperations(operations);
334 serviceTemplate.setRowData("rawData");
335 serviceTemplate.setServiceTemplateId("serviceTemplateId");
336 serviceTemplate.setTemplateName("templateName");
337 serviceTemplate.setType("NS");
338 serviceTemplate.setVendor("ZTE");
339 serviceTemplate.setVersion("0.0.1");
340 return serviceTemplate;
343 private ServiceTemplateMappingData setTemplateMappingData() {
344 ServiceTemplateMappingData mappingData = new ServiceTemplateMappingData();
345 mappingData.setCapabilities("");
346 mappingData.setMappingId("mappingId");
347 mappingData.setNodeType("tosca.nodes.nfv.VL");
348 mappingData.setRequirements("");
349 mappingData.setServiceTemplateId("serviceTemplateId");
353 private ServiceTemplate[] getExpectServiceTemplates() {
354 ServiceTemplate serviceTemplate = new ServiceTemplate();
355 serviceTemplate = getExpectServiceTemplate();
356 ServiceTemplate[] serviceTemplates = new ServiceTemplate[1];
357 serviceTemplates[0] = serviceTemplate;
358 return serviceTemplates;
361 private ServiceTemplate getExpectServiceTemplate() {
362 ServiceTemplate serviceTemplate = new ServiceTemplate();
363 serviceTemplate.setCsarid("123456");
364 serviceTemplate.setDownloadUri(MsbAddrConfig.getMsbAddress()
365 + "/files/catalog/NSAR/ZTE/NanocellGW/v1.0/Definitions/segw.yml");
366 InputParameter[] inputs = getServiceTemplateInputs();
367 serviceTemplate.setInputs(inputs);
368 ServiceTemplateOperation[] operations = getServiceTemplateOperation();
369 serviceTemplate.setOperations(operations);
370 OutputParameter[] outputs = getOutputs();
371 serviceTemplate.setOutputs(outputs);
372 serviceTemplate.setServiceTemplateId("serviceTemplateId");
373 serviceTemplate.setTemplateName("templateName");
374 serviceTemplate.setType("NS");
375 serviceTemplate.setVendor("ZTE");
376 serviceTemplate.setVersion("0.0.1");
377 return serviceTemplate;
380 private OutputParameter[] getOutputs() {
381 String outputsStr = "[]";
382 OutputParameter[] outputs = ToolUtil.fromJson(outputsStr, OutputParameter[].class);
386 private ServiceTemplateOperation[] getServiceTemplateOperation() {
387 String operationsStr = "[{\"name\":\"init\",\"description\":\"\","
388 + "\"packageName\":\"NanocellGW\",\"processId\":\"\","
389 + "\"inputs\":[{\"name\": \"SubscribersPerNfc\","
390 + "\"type\": \"STRING\",\"description\": \"\","
391 + "\"required\": false}]}]";
392 ServiceTemplateOperation[] operations = ToolUtil.fromJson(operationsStr,
393 ServiceTemplateOperation[].class);
397 private InputParameter[] getServiceTemplateInputs() {
398 String inputsStr = "[{\"name\": \"SubscribersPerNfc\","
399 + "\"type\": \"STRING\",\"description\": \"\",\"required\": false}]";
400 InputParameter[] inputs = ToolUtil.fromJson(inputsStr, InputParameter[].class);
404 private Parameters getParameters() {
405 String parametersStr = "{\"inputs\":[{\"name\": \"SubscribersPerNfc\","
406 + "\"type\": \"STRING\",\"description\": \"\",\"required\": false}],"
408 Parameters parameters = ToolUtil.fromJson(parametersStr, Parameters.class);
412 private NodeTemplate[] getExpectNodeTemplates() {
413 NodeTemplate nodeTemplate = new NodeTemplate();
414 nodeTemplate = getExpectNodeTemplate();
415 NodeTemplate[] nodeTemplates = new NodeTemplate[1];
416 nodeTemplates[0] = nodeTemplate;
417 return nodeTemplates;
420 private NodeTemplate getExpectNodeTemplate() {
421 NodeTemplate nodeTemplate = new NodeTemplate();
422 nodeTemplate.setId("nodeTemplateId");
423 nodeTemplate.setName("nodeName");
424 String propertiesStr = "{\"cidr\":\"\",\"gateWay\":\"\",\"dhcp\":\"\"}";
425 Map<String, Object> properties = convert2Property(propertiesStr);
426 nodeTemplate.setProperties(properties);
427 String relationShipsStr = "[{\"sourceNodeName\":\"endpoint.vlan2\","
428 + "\"targetNodeName\":\"VLAN\","
429 + "\"sourceNodeId\":\"tosca_nodes_nfv_CP_4\","
430 + "\"targetNodeId\":\"tosca_nodes_nfv_VL_1\","
431 + "\"type\":\"tosca.relationships.nfv.VirtualLinksTo\"}]";
432 List<RelationShip> relationShips = convert2RelationShipList(relationShipsStr);
433 nodeTemplate.setRelationShips(relationShips);
434 nodeTemplate.setType("tosca.nodes.nfv.VL");
438 private Map<String, Object> convert2Property(String properties) {
439 JsonObject jsonObject = new Gson().fromJson(properties, JsonObject.class);
440 return parseMapValue(jsonObject);
443 private Map<String, Object> parseMapValue(JsonObject jsonObject) {
444 Map<String, Object> map = new HashMap<>();
446 Iterator<Entry<String, JsonElement>> iterator = jsonObject.entrySet().iterator();
447 while (iterator.hasNext()) {
448 Entry<String, JsonElement> next = iterator.next();
449 if (next.getValue() instanceof JsonPrimitive) {
450 map.put(next.getKey(), next.getValue().getAsString());
454 if (next.getValue() instanceof JsonObject) {
455 map.put(next.getKey(), parseMapValue((JsonObject) next.getValue()));
462 private List<RelationShip> convert2RelationShipList(String srelationShips) {
463 RelationShip[] relationShips = ToolUtil.fromJson(srelationShips, RelationShip[].class);
464 return Arrays.asList(relationShips);
467 private PackageData getPackageData() {
468 PackageData packageData = new PackageData();
469 packageData.setCsarId("123456");
470 packageData.setCreateTime("2016-06-29 03:33:15");
471 packageData.setDeletionPending("false");
472 packageData.setDownloadUri("/NSAR/ZTE/NanocellGW/v1.0/");
473 packageData.setFormat("yml");
474 packageData.setModifyTime("2016-06-29 03:33:15");
475 packageData.setName("NanocellGW");
476 packageData.setOnBoardState("non-onBoarded");
477 packageData.setOperationalState("Disabled");
478 packageData.setProvider("ZTE");
479 packageData.setSize("0.93M");
480 packageData.setType("NSAR");
481 packageData.setUsageState("InUse");
482 packageData.setVersion("V1.0");
483 packageData.setProcessState("normal");