Support TOSCA in verigraph (gRPC service)
[parser.git] / verigraph / src / it / polito / verigraph / grpc / tosca / test / GrpcToscaTest.java
1 /*******************************************************************************\r
2  * Copyright (c) 2018 Politecnico di Torino and others.\r
3  *\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Apache License, Version 2.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.apache.org/licenses/LICENSE-2.0\r
8  *******************************************************************************/\r
9 package it.polito.verigraph.grpc.tosca.test;\r
10 \r
11 import static org.junit.Assert.assertEquals;\r
12 import static org.junit.Assert.assertNotNull;\r
13 import static org.junit.Assert.fail;\r
14 \r
15 import java.util.ArrayList;\r
16 import java.util.List;\r
17 \r
18 import org.junit.After;\r
19 import org.junit.Before;\r
20 import org.junit.FixMethodOrder;\r
21 import org.junit.Test;\r
22 import org.junit.runner.RunWith;\r
23 import org.junit.runners.JUnit4;\r
24 import org.junit.runners.MethodSorters;\r
25 \r
26 import it.polito.verigraph.grpc.NewTopologyTemplate;\r
27 import it.polito.verigraph.grpc.NodeTemplateGrpc;\r
28 import it.polito.verigraph.grpc.NodeTemplateGrpc.Type;\r
29 import it.polito.verigraph.grpc.RelationshipTemplateGrpc;\r
30 import it.polito.verigraph.grpc.Status;\r
31 import it.polito.verigraph.grpc.TopologyTemplateGrpc;\r
32 import it.polito.verigraph.grpc.ToscaConfigurationGrpc;\r
33 import it.polito.verigraph.grpc.ToscaPolicy;\r
34 import it.polito.verigraph.grpc.ToscaPolicy.PolicyType;\r
35 import it.polito.verigraph.grpc.ToscaVerificationGrpc;\r
36 import it.polito.verigraph.grpc.client.ToscaClient;\r
37 import it.polito.verigraph.grpc.server.Service;\r
38 \r
39 @RunWith(JUnit4.class)\r
40 @FixMethodOrder(MethodSorters.NAME_ASCENDING)\r
41 public class GrpcToscaTest {\r
42     private Service server;\r
43     private ToscaClient client;\r
44     private TopologyTemplateGrpc testTemplate, simpleTestTemplate;\r
45 \r
46     public GrpcToscaTest() {\r
47         this.generateTestTemplate();\r
48     }\r
49 \r
50     @Before\r
51     public void setUpBeforeClass() throws Exception {\r
52         client = new ToscaClient("localhost" , 50051);\r
53         server = new Service(50051);\r
54         server.start();\r
55     }\r
56 \r
57     @After\r
58     public void tearDown() throws Exception {\r
59         server.stop();\r
60         client.shutdown();\r
61     }\r
62 \r
63 \r
64     @Test\r
65     public void test0Creation() {\r
66         System.out.println("\nTest A: Graph Creation.");\r
67 \r
68         NewTopologyTemplate response = client.createTopologyTemplate(testTemplate);\r
69         assertNotNull("Returned a NULL graph", response);\r
70         assertEquals(response.getSuccess(), true);\r
71         assertEquals("Error report: " + response.getErrorMessage(), "", response.getErrorMessage());\r
72 \r
73         Status resp = client.deleteTopologyTemplate(response.getTopologyTemplate().getId());\r
74         assertEquals("Error while deleting testTemplate.", true, resp.getSuccess());\r
75 \r
76         System.out.println("Test A completed\n");\r
77 \r
78         return;\r
79     }\r
80 \r
81 \r
82     @Test\r
83     public void test1Reading() {\r
84         System.out.println("\nTest B: Graph Reading.");\r
85 \r
86         //Creating a test graph on remote repository\r
87         System.out.println("Phase B.1 -- Creating a test graph.");\r
88         NewTopologyTemplate response = client.createTopologyTemplate(simpleTestTemplate);\r
89         assertNotNull("Returned a NULL graph", response);\r
90         assertEquals(true, response.getSuccess());\r
91         assertEquals("Error report: " + response.getErrorMessage(), "", response.getErrorMessage());\r
92 \r
93         //Reading remote graph.\r
94         System.out.println("Phase B.2 -- Reading remote graph.");\r
95         TopologyTemplateGrpc retrieved = client.getTopologyTemplate(response.getTopologyTemplate().getId());\r
96         assertNotNull("Retrieved a NULL graph", retrieved);\r
97         assertEquals(retrieved.getId(), response.getTopologyTemplate().getId());\r
98 \r
99         //Nodes checking\r
100         System.out.println("Phase B.3 -- Checking graph's nodes.");\r
101         assertEquals(retrieved.getNodeTemplateCount(), 3);\r
102         assertEquals("Node1 name error", response.getTopologyTemplate().getNodeTemplateList().get(0).getName(),\r
103                 retrieved.getNodeTemplateList().get(0).getName());\r
104         assertEquals("Node2 name error", response.getTopologyTemplate().getNodeTemplateList().get(1).getName(),\r
105                 retrieved.getNodeTemplateList().get(1).getName());\r
106         assertEquals("Node3 name error", response.getTopologyTemplate().getNodeTemplateList().get(2).getName(),\r
107                 retrieved.getNodeTemplateList().get(2).getName());\r
108 \r
109         //Relationships checking\r
110         System.out.println("Phase B.4 -- Checking graph's relationships.");\r
111         assertEquals(retrieved.getRelationshipTemplateCount(), 4);\r
112         String source1=null, target1=null;\r
113         String source2=null, target2=null;\r
114         String source3=null, target3=null;\r
115         String source4=null, target4=null;\r
116         for (NodeTemplateGrpc node : retrieved.getNodeTemplateList()){\r
117             if(node.getId().equals(retrieved.getRelationshipTemplateList().get(0).getIdSourceNodeTemplate()))\r
118                 source1=node.getName();\r
119             if(node.getId().equals(retrieved.getRelationshipTemplateList().get(0).getIdTargetNodeTemplate()))\r
120                 target1=node.getName();\r
121             if(node.getId().equals(retrieved.getRelationshipTemplateList().get(1).getIdSourceNodeTemplate()))\r
122                 source2=node.getName();\r
123             if(node.getId().equals(retrieved.getRelationshipTemplateList().get(1).getIdTargetNodeTemplate()))\r
124                 target2=node.getName();\r
125             if(node.getId().equals(retrieved.getRelationshipTemplateList().get(2).getIdSourceNodeTemplate()))\r
126                 source3=node.getName();\r
127             if(node.getId().equals(retrieved.getRelationshipTemplateList().get(2).getIdTargetNodeTemplate()))\r
128                 target3=node.getName();\r
129             if(node.getId().equals(retrieved.getRelationshipTemplateList().get(3).getIdSourceNodeTemplate()))\r
130                 source4=node.getName();\r
131             if(node.getId().equals(retrieved.getRelationshipTemplateList().get(3).getIdTargetNodeTemplate()))\r
132                 target4=node.getName();\r
133         }\r
134 \r
135         assertEquals("Relat1 name error", retrieved.getRelationshipTemplateList().get(0).getName(), source1+"to"+target1);\r
136         assertEquals("Relat2 name error", retrieved.getRelationshipTemplateList().get(1).getName(), source2+"to"+target2);\r
137         assertEquals("Relat3 name error", retrieved.getRelationshipTemplateList().get(2).getName(), source3+"to"+target3);\r
138         assertEquals("Relat4 name error", retrieved.getRelationshipTemplateList().get(3).getName(), source4+"to"+target4);\r
139 \r
140         System.out.println("Phase B.5 -- Deleting graph.");\r
141         Status resp = client.deleteTopologyTemplate(response.getTopologyTemplate().getId());\r
142         assertEquals("Error while deleting simpleTestTemplate", true, resp.getSuccess());\r
143 \r
144 \r
145         System.out.println("Test B completed.\n");\r
146         return;\r
147     }\r
148 \r
149     @Test\r
150     public void test2Update() {\r
151         System.out.println("\nTest C: Update.");\r
152 \r
153         //Creating a test graph on remote repository\r
154         System.out.println("Phase C.1 -- Creating a test graph.");\r
155         NewTopologyTemplate response = client.createTopologyTemplate(simpleTestTemplate);\r
156         assertNotNull("Returned a NULL graph", response);\r
157         assertEquals(true, response.getSuccess());\r
158         assertEquals("Error report: " + response.getErrorMessage(), "", response.getErrorMessage());\r
159 \r
160         //Reading remote graph.\r
161         System.out.println("Phase C.2 -- Reading remote graph.");\r
162         TopologyTemplateGrpc retrieved = client.getTopologyTemplate(response.getTopologyTemplate().getId());\r
163         assertNotNull("Retrieved a NULL graph", retrieved);\r
164         assertEquals(retrieved.getId(), response.getTopologyTemplate().getId());\r
165 \r
166         //Updating a TopologyTemplateGrpc\r
167         System.out.println("Phase C.3 -- Updating a test graph.");\r
168         TopologyTemplateGrpc.Builder templ = TopologyTemplateGrpc.newBuilder();\r
169         List<NodeTemplateGrpc> nodes = new ArrayList<NodeTemplateGrpc>();\r
170         List<RelationshipTemplateGrpc> relats = new ArrayList<RelationshipTemplateGrpc>();\r
171 \r
172         ToscaConfigurationGrpc node1conf = ToscaConfigurationGrpc.newBuilder().setDescription("node1configuration")\r
173                 .setId("15").setConfiguration("[]").build();\r
174         NodeTemplateGrpc node1 = NodeTemplateGrpc.newBuilder().setConfiguration(node1conf).setId("999")\r
175                 .setName("webserver1").setType(Type.webserver).build();\r
176         nodes.add(node1);\r
177 \r
178         ToscaConfigurationGrpc node2conf = ToscaConfigurationGrpc.newBuilder().setDescription("node2configuration")\r
179                 .setId("16").setConfiguration("[{\r\n\"protocol\":\"HTTP_REQUEST\",\r\n \"url\":\"www.facebook.com\"\r\n }]").build();\r
180         NodeTemplateGrpc node2 = NodeTemplateGrpc.newBuilder().setConfiguration(node2conf).setId("888")\r
181                 .setName("host2").setType(Type.endhost).build();\r
182         nodes.add(node2);\r
183 \r
184         RelationshipTemplateGrpc rel0 = RelationshipTemplateGrpc.newBuilder().setId("1001")\r
185                 .setIdSourceNodeTemplate("999").setIdTargetNodeTemplate("888").setName("webserver1tohost2").build();\r
186         relats.add(rel0);\r
187 \r
188         RelationshipTemplateGrpc rel1 = RelationshipTemplateGrpc.newBuilder().setId("1002")\r
189                 .setIdSourceNodeTemplate("888").setIdTargetNodeTemplate("999").setName("host2towebserver1").build();\r
190         relats.add(rel1);\r
191 \r
192         TopologyTemplateGrpc newTestTemplate = templ.addAllNodeTemplate(nodes).addAllRelationshipTemplate(relats).setId("9").build();\r
193         NewTopologyTemplate updated = client.updateTopologyTemplate(newTestTemplate, response.getTopologyTemplate().getId());\r
194         assertNotNull("Returned a NULL graph", updated);\r
195         assertEquals(true, updated.getSuccess());\r
196         assertEquals("Error report: " + updated.getErrorMessage(), "", updated.getErrorMessage());\r
197 \r
198         //Reading remote graph.\r
199         System.out.println("Phase C.4 -- Reading remote graph.");\r
200         TopologyTemplateGrpc retrieved2 = client.getTopologyTemplate(response.getTopologyTemplate().getId());\r
201         assertNotNull("Retrieved a NULL graph", retrieved2);\r
202         assertEquals(retrieved2.getId(), response.getTopologyTemplate().getId());\r
203 \r
204         //Nodes checking\r
205         System.out.println("Phase C.5 -- Checking updated graph's nodes.");\r
206         assertEquals(retrieved2.getNodeTemplateCount(), 2);\r
207         assertEquals("Node1 name error", updated.getTopologyTemplate().getNodeTemplateList().get(0).getName(),\r
208                 retrieved2.getNodeTemplateList().get(0).getName());\r
209         assertEquals("Node2 name error", updated.getTopologyTemplate().getNodeTemplateList().get(1).getName(),\r
210                 retrieved2.getNodeTemplateList().get(1).getName());\r
211 \r
212         //Relationships checking\r
213         System.out.println("Phase C.6 -- Checking updated graph's relationships.");\r
214         assertEquals(retrieved2.getRelationshipTemplateCount(), 2);\r
215         String source1=null, target1=null;\r
216         String source2=null, target2=null;\r
217         for (NodeTemplateGrpc node : retrieved2.getNodeTemplateList()){\r
218             if(node.getId().equals(retrieved2.getRelationshipTemplateList().get(0).getIdSourceNodeTemplate()))\r
219                 source1=node.getName();\r
220             if(node.getId().equals(retrieved2.getRelationshipTemplateList().get(0).getIdTargetNodeTemplate()))\r
221                 target1=node.getName();\r
222             if(node.getId().equals(retrieved2.getRelationshipTemplateList().get(1).getIdSourceNodeTemplate()))\r
223                 source2=node.getName();\r
224             if(node.getId().equals(retrieved2.getRelationshipTemplateList().get(1).getIdTargetNodeTemplate()))\r
225                 target2=node.getName();\r
226         }\r
227 \r
228         assertEquals("Relat1 name error", retrieved2.getRelationshipTemplateList().get(0).getName(), source1+"to"+target1);\r
229         assertEquals("Relat2 name error", retrieved2.getRelationshipTemplateList().get(1).getName(), source2+"to"+target2);\r
230 \r
231         System.out.println("Phase C.6 -- Deleting graph.");\r
232         Status resp = client.deleteTopologyTemplate(updated.getTopologyTemplate().getId());\r
233         assertEquals("Error while deleting simpleTestTemplate", true, resp.getSuccess());\r
234 \r
235         System.out.println("Test C completed.\n");\r
236         return;\r
237     }\r
238 \r
239 \r
240     @Test\r
241     public void test3Verification() {\r
242         System.out.println("\nTest D: Verification.");\r
243         NewTopologyTemplate response = client.createTopologyTemplate(testTemplate);\r
244         if(response == null | response.getSuccess() != true) {\r
245             fail("Test failed, unable to load the graph.");\r
246             return;\r
247         }\r
248 \r
249         //The Id of the graph on which we are going to perform tests\r
250         String testTemplateId = response.getTopologyTemplate().getId();\r
251 \r
252         //REACHABILITY test\r
253         System.out.println("Phase 1.1 - Reachability SAT.");\r
254         ToscaPolicy policy = ToscaPolicy.newBuilder().setIdTopologyTemplate(testTemplateId)\r
255                 .setType(PolicyType.reachability).setSource("host2").setDestination("host1").build();\r
256         ToscaVerificationGrpc result = client.verifyPolicy(policy);\r
257         assertNotNull("There was no response", result);\r
258         assertEquals("Unexpected result : " + result.getResult() + " - " + result.getComment(), "SAT", result.getResult());\r
259         assertEquals("Error report: " + result.getErrorMessage(), "", result.getErrorMessage());\r
260 \r
261         result = null;\r
262         System.out.println("Phase 1.2 - Reachability UNSAT.");\r
263         policy = ToscaPolicy.newBuilder().setIdTopologyTemplate(testTemplateId)\r
264                 .setType(PolicyType.reachability).setSource("host1").setDestination("antispamNode1").build();\r
265         result = client.verifyPolicy(policy);\r
266         assertNotNull("There was no response", result);\r
267         assertEquals("Unexpected result : " + result.getResult() + " - " + result.getComment(), "UNSAT", result.getResult());\r
268         assertEquals("Error report: " + result.getErrorMessage(), "", result.getErrorMessage());\r
269 \r
270         //ISOLATION test\r
271         result = null;\r
272         System.out.println("Phase 2.1 - Isolation SAT.");\r
273         policy = ToscaPolicy.newBuilder().setIdTopologyTemplate(testTemplateId)\r
274                 .setType(PolicyType.isolation).setSource("host2").setDestination("host1").setMiddlebox("webserver1").build();\r
275         result = client.verifyPolicy(policy);\r
276         assertNotNull("There was no response", result);\r
277         assertEquals("Unexpected result : " + result.getResult() + " - " + result.getComment(), "SAT", result.getResult());\r
278         assertEquals("Error report: " + result.getErrorMessage(), "", result.getErrorMessage());\r
279 \r
280         System.out.println("Phase 2.2 - Isolation UNSAT.");\r
281         policy = ToscaPolicy.newBuilder().setIdTopologyTemplate(testTemplateId)\r
282                 .setType(PolicyType.isolation).setSource("host2").setDestination("host1").setMiddlebox("fw").build();\r
283         result = client.verifyPolicy(policy);\r
284         assertNotNull("There was no response", result);\r
285         assertEquals("Unexpected result : " + result.getResult() + " - " + result.getComment(), "UNSAT", result.getResult());\r
286         assertEquals("Error report: " + result.getErrorMessage(), "", result.getErrorMessage());\r
287 \r
288         //TRAVERSAL test\r
289         result = null;\r
290         System.out.println("Phase 3.1 - Traversal SAT.");\r
291         policy = ToscaPolicy.newBuilder().setIdTopologyTemplate(testTemplateId)\r
292                 .setType(PolicyType.traversal).setSource("host2").setDestination("host1").setMiddlebox("fw").build();\r
293         result = client.verifyPolicy(policy);\r
294         assertNotNull("There was no response", result);\r
295         assertEquals("Unexpected result : " + result.getResult() + " - " + result.getComment(), "SAT", result.getResult());\r
296         assertEquals("Error report: " + result.getErrorMessage(), "", result.getErrorMessage());\r
297 \r
298         System.out.println("Phase 3.2 - Traversal UNSAT.");\r
299         policy = ToscaPolicy.newBuilder().setIdTopologyTemplate(testTemplateId)\r
300                 .setType(PolicyType.traversal).setSource("host2").setDestination("webserver1").setMiddlebox("fw").build();\r
301         result = client.verifyPolicy(policy);\r
302         assertNotNull("There was no response", result);\r
303         assertEquals("Unexpected result : " + result.getResult() + " - " + result.getComment(), "UNSAT", result.getResult());\r
304         assertEquals("Error report: " + result.getErrorMessage(), "", result.getErrorMessage());\r
305 \r
306         Status resp = client.deleteTopologyTemplate(testTemplateId);\r
307         assertEquals("Error while deleting testTemplate", true, resp.getSuccess());\r
308 \r
309         System.out.println("Test D completed.\n");\r
310         return;\r
311     }\r
312 \r
313 \r
314     @Test\r
315     public void test4Deletion() {\r
316         System.out.println("\nTest E: Deletion");\r
317         NewTopologyTemplate templ = client.createTopologyTemplate(testTemplate);\r
318 \r
319         if(templ.getSuccess() != true) {\r
320             fail("Unable to create the graph.");\r
321             return;\r
322         }else {\r
323             Status resp = client.deleteTopologyTemplate(templ.getTopologyTemplate().getId());\r
324             assertEquals("Error while deleting testTemplate", true, resp.getSuccess());\r
325         }\r
326 \r
327         System.out.println("Test E completed.\n");\r
328         return;\r
329     }\r
330 \r
331 \r
332     //Generates a correct instance of a TopologyTemplateGrpc to be used in tests\r
333     public void generateTestTemplate() {\r
334         TopologyTemplateGrpc.Builder templ = TopologyTemplateGrpc.newBuilder();\r
335         List<NodeTemplateGrpc> nodes = new ArrayList<NodeTemplateGrpc>();\r
336         List<RelationshipTemplateGrpc> relats = new ArrayList<RelationshipTemplateGrpc>();\r
337 \r
338         //Definition of nodes\r
339         ToscaConfigurationGrpc node0conf = ToscaConfigurationGrpc.newBuilder().setDescription("node0configuration")\r
340                 .setId("100").setConfiguration("[{\r\n\"webserver1\":\"host2\"\r\n}]").build();\r
341         NodeTemplateGrpc node0 = NodeTemplateGrpc.newBuilder().setConfiguration(node0conf).setId("100")\r
342                 .setName("fw").setType(Type.firewall).build();\r
343         nodes.add(node0);\r
344 \r
345         ToscaConfigurationGrpc node1conf = ToscaConfigurationGrpc.newBuilder().setDescription("node1configuration")\r
346                 .setId("101").setConfiguration("[]").build();\r
347         NodeTemplateGrpc node1 = NodeTemplateGrpc.newBuilder().setConfiguration(node1conf).setId("101")\r
348                 .setName("webserver1").setType(Type.webserver).build();\r
349         nodes.add(node1);\r
350 \r
351         ToscaConfigurationGrpc node2conf = ToscaConfigurationGrpc.newBuilder().setDescription("node2configuration")\r
352                 .setId("102").setConfiguration("[{\r\n\"protocol\":\"HTTP_REQUEST\",\r\n \"url\":\"www.facebook.com\"\r\n }]").build();\r
353         NodeTemplateGrpc node2 = NodeTemplateGrpc.newBuilder().setConfiguration(node2conf).setId("102")\r
354                 .setName("host2").setType(Type.endhost).build();\r
355         nodes.add(node2);\r
356 \r
357         ToscaConfigurationGrpc node3conf = ToscaConfigurationGrpc.newBuilder().setDescription("node3configuration")\r
358                 .setId("103").setConfiguration("[ {\r\n\"protocol\":\"HTTP_REQUEST\",\r\n\"url\":\"www.google.com\",\r\n\"destination\":\"server1\"\r\n}]").build();\r
359         NodeTemplateGrpc node3 = NodeTemplateGrpc.newBuilder().setConfiguration(node3conf).setId("103")\r
360                 .setName("host1").setType(Type.endhost).build();\r
361         nodes.add(node3);\r
362 \r
363         ToscaConfigurationGrpc node4conf = ToscaConfigurationGrpc.newBuilder().setDescription("node4configuration")\r
364                 .setId("104").setConfiguration("[\"host1\",\"host2\"]").build();\r
365         NodeTemplateGrpc node4 = NodeTemplateGrpc.newBuilder().setConfiguration(node4conf).setId("104")\r
366                 .setName("antispamNode1").setType(Type.antispam).build();\r
367         nodes.add(node4);\r
368 \r
369         //Building relationships\r
370         RelationshipTemplateGrpc rel0 = RelationshipTemplateGrpc.newBuilder().setId("1001")\r
371                 .setIdSourceNodeTemplate("100").setIdTargetNodeTemplate("101").setName("fwToServ1").build();\r
372         relats.add(rel0);\r
373 \r
374         RelationshipTemplateGrpc rel1 = RelationshipTemplateGrpc.newBuilder().setId("1002")\r
375                 .setIdSourceNodeTemplate("101").setIdTargetNodeTemplate("100").setName("serv1ToFw").build();\r
376         relats.add(rel1);\r
377 \r
378         RelationshipTemplateGrpc rel2 = RelationshipTemplateGrpc.newBuilder().setId("1003")\r
379                 .setIdSourceNodeTemplate("100").setIdTargetNodeTemplate("103").setName("fwToHost1").build();\r
380         relats.add(rel2);\r
381 \r
382         RelationshipTemplateGrpc rel3 = RelationshipTemplateGrpc.newBuilder().setId("1004")\r
383                 .setIdSourceNodeTemplate("100").setIdTargetNodeTemplate("102").setName("fwToHost2").build();\r
384         relats.add(rel3);\r
385 \r
386         RelationshipTemplateGrpc rel4 = RelationshipTemplateGrpc.newBuilder().setId("1005")\r
387                 .setIdSourceNodeTemplate("102").setIdTargetNodeTemplate("100").setName("Host2Tofw").build();\r
388         relats.add(rel4);\r
389 \r
390         RelationshipTemplateGrpc rel5 = RelationshipTemplateGrpc.newBuilder().setId("1006")\r
391                 .setIdSourceNodeTemplate("103").setIdTargetNodeTemplate("100").setName("Host1Tofw").build();\r
392         relats.add(rel5);\r
393 \r
394         this.testTemplate = templ.addAllNodeTemplate(nodes).addAllRelationshipTemplate(relats).setId("0").build();\r
395 \r
396         TopologyTemplateGrpc.Builder templ2 = TopologyTemplateGrpc.newBuilder();\r
397         List<NodeTemplateGrpc> nodes2 = new ArrayList<NodeTemplateGrpc>();\r
398         List<RelationshipTemplateGrpc> relats2 = new ArrayList<RelationshipTemplateGrpc>();\r
399         nodes2.add(node0);\r
400         nodes2.add(node1);\r
401         nodes2.add(node2);\r
402         relats2.add(rel0);\r
403         relats2.add(rel1);\r
404         relats2.add(rel3);\r
405         relats2.add(rel4);\r
406 \r
407         this.simpleTestTemplate = templ2.addAllNodeTemplate(nodes2).addAllRelationshipTemplate(relats2).setId("1").build();\r
408 \r
409     }\r
410 \r
411     /*class NodeTemplateGrpcComparator implements Comparator<NodeTemplateGrpc> {\r
412         public int compare(NodeTemplateGrpc n0, NodeTemplateGrpc n1) {\r
413             return n0.getName().compareTo(n1.getName());\r
414         }\r
415     }\r
416 \r
417     class RelationshipTemplateGrpcComparator implements Comparator<RelationshipTemplateGrpc> {\r
418         public int compare(RelationshipTemplateGrpc n0, RelationshipTemplateGrpc n1) {\r
419             int source = n0.getIdSourceNodeTemplate().compareTo(n1.getIdSourceNodeTemplate());\r
420             int target = n0.getIdTargetNodeTemplate().compareTo(n1.getIdTargetNodeTemplate());\r
421             return source + target;\r
422         }\r
423     }*/\r
424 \r
425 }\r