Performance Improvements for Gizmo bulk API
[aai/gizmo.git] / src / test / java / org / onap / crud / dao / champ / ChampBulkPayloadTest.java
1 /**
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
4  * ================================================================================
5  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * Copyright © 2017-2018 Amdocs
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *       http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21 package org.onap.crud.dao.champ;
22
23 import static org.junit.Assert.assertTrue;
24 import static org.junit.Assert.fail;
25
26 import java.io.BufferedReader;
27 import java.io.File;
28 import java.io.FileReader;
29 import java.io.IOException;
30 import java.io.PrintWriter;
31 import java.io.StringWriter;
32
33
34 import org.junit.Before;
35 import org.junit.Test;
36 import org.junit.runner.RunWith;
37 import org.mockito.junit.MockitoJUnitRunner;
38 import org.onap.crud.OXMModelLoaderSetup;
39 import org.onap.crud.service.BulkPayload;
40 import org.onap.crud.service.util.TestHeaders;
41 import org.onap.schema.EdgeRulesLoader;
42
43 @RunWith(MockitoJUnitRunner.Silent.class)
44 public class ChampBulkPayloadTest extends OXMModelLoaderSetup {
45     private ChampDaoTest testDao = new ChampDaoTest();
46     
47     @Before
48     public void init() throws Exception {
49         System.setProperty("CONFIG_HOME", "src/test/resources");
50         EdgeRulesLoader.resetSchemaVersionContext();
51     }
52
53     @Test
54     public void testBulk() {
55         try {
56             File bulkFile = new File("src/test/resources/payloads/bulk2.json");
57             String payloadStr = readFileToString(bulkFile);
58             BulkPayload gizmoPayload = BulkPayload.fromJson(payloadStr);
59             System.out.println("Input Gizmo Payload:\n" + gizmoPayload.toJson());
60
61             ChampBulkPayload champBulk = new ChampBulkPayload();
62             champBulk.fromGizmoPayload(gizmoPayload, "v13", new TestHeaders(), testDao);
63             System.out.println("Output Champ Payload:\n" + champBulk.toJson());
64             
65             assertTrue(champBulk.getEdgeDeleteOps().size() == 1);
66             assertTrue(champBulk.getEdgeDeleteOps().get(0).getId().equalsIgnoreCase("50bdab41-ad1c-4d00-952c-a0aa5d827811"));
67             
68             assertTrue(champBulk.getVertexDeleteOps().size() == 1);
69             assertTrue(champBulk.getVertexDeleteOps().get(0).getId().equalsIgnoreCase("50bdab41-ad1c-4d00-952c-a0aa5d827811"));
70             assertTrue(champBulk.getVertexDeleteOps().get(0).getType().equalsIgnoreCase("pserver"));
71             
72             assertTrue(champBulk.getVertexAddModifyOps().size() == 3);
73             assertTrue(champBulk.getVertexAddModifyOps().get(0).getOperation().equalsIgnoreCase("add"));
74             assertTrue(champBulk.getVertexAddModifyOps().get(0).getType().equalsIgnoreCase("vserver"));
75             assertTrue(champBulk.getVertexAddModifyOps().get(0).getLabel().equalsIgnoreCase("v1"));
76             assertTrue(champBulk.getVertexAddModifyOps().get(0).getProperty("vserver-id").equals("VSER1"));
77             assertTrue(champBulk.getVertexAddModifyOps().get(0).getProperty("aai-node-type").equals("vserver"));
78             
79             assertTrue(champBulk.getVertexAddModifyOps().get(1).getOperation().equalsIgnoreCase("modify"));
80             assertTrue(champBulk.getVertexAddModifyOps().get(1).getId().equalsIgnoreCase("50bdab41-ad1c-4d00-952c-a0aa5d827811"));
81             assertTrue(champBulk.getVertexAddModifyOps().get(1).getType().equalsIgnoreCase("pserver"));
82             assertTrue(champBulk.getVertexAddModifyOps().get(1).getLabel().equalsIgnoreCase("v2"));
83             assertTrue(champBulk.getVertexAddModifyOps().get(1).getProperty("hostname").equals("steve-host2"));
84             assertTrue(champBulk.getVertexAddModifyOps().get(1).getProperty("aai-node-type").equals("pserver"));
85             
86             assertTrue(champBulk.getVertexAddModifyOps().get(2).getOperation().equalsIgnoreCase("modify"));
87             assertTrue(champBulk.getVertexAddModifyOps().get(2).getId().equalsIgnoreCase("50bdab41-ad1c-4d00-952c-a0aa5d827811"));
88             assertTrue(champBulk.getVertexAddModifyOps().get(2).getType().equalsIgnoreCase("pserver"));
89             assertTrue(champBulk.getVertexAddModifyOps().get(2).getLabel().equalsIgnoreCase("v3"));
90             assertTrue(champBulk.getVertexAddModifyOps().get(2).getProperty("purpose").equals("new-purpose"));
91             assertTrue(champBulk.getVertexAddModifyOps().get(2).getProperty("hostname").equals("oldhost"));
92             assertTrue(champBulk.getVertexAddModifyOps().get(2).getProperty("aai-node-type").equals("pserver"));
93             
94             assertTrue(champBulk.getEdgeAddModifyOps().size() == 2);
95             assertTrue(champBulk.getEdgeAddModifyOps().get(0).getOperation().equalsIgnoreCase("add"));
96             assertTrue(champBulk.getEdgeAddModifyOps().get(0).getType().equalsIgnoreCase("tosca.relationships.HostedOn"));
97             assertTrue(champBulk.getEdgeAddModifyOps().get(0).getLabel().equalsIgnoreCase("e1"));
98             assertTrue(champBulk.getEdgeAddModifyOps().get(0).getProperty("contains-other-v").equals("NONE"));
99             assertTrue(champBulk.getEdgeAddModifyOps().get(0).getSource().equalsIgnoreCase("$v1"));
100             assertTrue(champBulk.getEdgeAddModifyOps().get(0).getTarget().equalsIgnoreCase("1d326bc7-b985-492b-9604-0d5d1f06f908"));
101             
102             assertTrue(champBulk.getEdgeAddModifyOps().get(1).getOperation().equalsIgnoreCase("modify"));
103             assertTrue(champBulk.getEdgeAddModifyOps().get(1).getType().equalsIgnoreCase("tosca.relationships.HostedOn"));
104             assertTrue(champBulk.getEdgeAddModifyOps().get(1).getLabel().equalsIgnoreCase("e2"));
105             assertTrue(champBulk.getEdgeAddModifyOps().get(1).getProperty("contains-other-v").equals("NONE"));
106         }
107         catch (Exception ex) {
108             StringWriter writer = new StringWriter();
109             PrintWriter printWriter = new PrintWriter(writer);
110             ex.printStackTrace(printWriter);
111             printWriter.flush();
112             System.out.println(writer.toString());
113             assertTrue(false);
114         }
115     }
116
117     public static String readFileToString(File aFile) throws IOException {
118
119         BufferedReader br = new BufferedReader(new FileReader(aFile));
120         try {
121             StringBuilder sb = new StringBuilder();
122             String line = br.readLine();
123
124             while (line != null) {
125                 sb.append(line);
126                 line = br.readLine();
127             }
128
129             return sb.toString().replaceAll("\\s+", "");
130         } finally {
131             try {
132                 br.close();
133             } catch (IOException e) {
134                 fail("Unexpected IOException: " + e.getMessage());
135             }
136         }
137     }
138
139 }