summaryrefslogtreecommitdiffstats
path: root/verigraph/src/main/java/it/polito/escape/verify/test
diff options
context:
space:
mode:
Diffstat (limited to 'verigraph/src/main/java/it/polito/escape/verify/test')
-rw-r--r--verigraph/src/main/java/it/polito/escape/verify/test/MultiThreadedTestCase.java201
-rw-r--r--verigraph/src/main/java/it/polito/escape/verify/test/Scalability.java409
-rw-r--r--verigraph/src/main/java/it/polito/escape/verify/test/TestCase.java161
-rw-r--r--verigraph/src/main/java/it/polito/escape/verify/test/TestExecutionException.java24
-rw-r--r--verigraph/src/main/java/it/polito/escape/verify/test/Tester.java220
5 files changed, 0 insertions, 1015 deletions
diff --git a/verigraph/src/main/java/it/polito/escape/verify/test/MultiThreadedTestCase.java b/verigraph/src/main/java/it/polito/escape/verify/test/MultiThreadedTestCase.java
deleted file mode 100644
index 7989b37..0000000
--- a/verigraph/src/main/java/it/polito/escape/verify/test/MultiThreadedTestCase.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Politecnico di Torino and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Apache License, Version 2.0
- * which accompanies this distribution, and is available at
- * http://www.apache.org/licenses/LICENSE-2.0
- *******************************************************************************/
-
-package it.polito.escape.verify.test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
-import javax.ws.rs.core.Response;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import it.polito.escape.verify.client.VerifyClient;
-import it.polito.escape.verify.client.VerifyClientException;
-import it.polito.escape.verify.model.Configuration;
-import it.polito.escape.verify.model.Graph;
-import it.polito.escape.verify.model.Node;
-
-public class MultiThreadedTestCase {
-
- private void testUpdateGraphStatus(final int threadCount) throws InterruptedException, ExecutionException, JsonParseException, JsonMappingException, IOException, VerifyClientException {
- final VerifyClient verifyClient = new VerifyClient("http://localhost:8080/verify/api");
-
- Response retrieveGraphResponse = verifyClient.retrieveGraph(1);
- String responseString = retrieveGraphResponse.readEntity(String.class);
- System.out.println(responseString);
-
- Graph graph = new ObjectMapper().readValue(responseString, Graph.class);
-
- UpdateGraph task = new UpdateGraph(verifyClient, 1, graph);
-
- List<MultiThreadedTestCase.UpdateGraph> tasks = Collections.nCopies(threadCount, task);
- ExecutorService executorService = Executors.newFixedThreadPool(threadCount);
-
- List<Future<Response>> futures = executorService.invokeAll(tasks);
- List<Integer> resultList = new ArrayList<Integer>(futures.size());
-
- // Check for exceptions
- for (Future<Response> future : futures) {
- // Throws an exception if an exception was thrown by the task.
- resultList.add(future.get().getStatus());
- }
- // Validate the dimensions
- Assert.assertEquals(threadCount, futures.size());
- List<Integer> expectedList = new ArrayList<Integer>(threadCount);
- for (int i = 1; i <= threadCount; i++) {
- expectedList.add(200);
- }
- // Validate expected results
- Assert.assertEquals(expectedList, resultList);
- }
-
- private void testUpdateGraph(final int threadCount) throws InterruptedException, ExecutionException, JsonParseException, JsonMappingException, IOException, VerifyClientException {
- final VerifyClient verifyClient = new VerifyClient("http://localhost:8080/verify/api");
-
- Response retrieveGraphResponse = verifyClient.retrieveGraph(2L);
- String responseString = retrieveGraphResponse.readEntity(String.class);
- System.out.println(responseString);
-
- Graph graph = new ObjectMapper().readValue(responseString, Graph.class);
-
- Node nodeToEdit = graph.getNodes().get(1L);
- nodeToEdit.setFunctional_type("endpoint");
- nodeToEdit.setConfiguration(new Configuration(nodeToEdit.getName(), "", new ObjectMapper().createArrayNode()));
-
- String graphAsString = new ObjectMapper().writeValueAsString(graph);
- System.out.println(graphAsString);
-
- UpdateGraph task = new UpdateGraph(verifyClient, 2, graph);
-
- List<MultiThreadedTestCase.UpdateGraph> tasks = Collections.nCopies(threadCount, task);
- ExecutorService executorService = Executors.newFixedThreadPool(threadCount);
-
- List<Future<Response>> futures = executorService.invokeAll(tasks);
- List<String> resultList = new ArrayList<String>(futures.size());
-
- // Check for exceptions
- for (Future<Response> future : futures) {
- // Throws an exception if an exception was thrown by the task.
- resultList.add(future.get().readEntity(String.class));
- }
- // Validate dimensions
- Assert.assertEquals(threadCount, futures.size());
-
- List<String> expectedList = new ArrayList<String>(threadCount);
- for (int i = 1; i <= threadCount; i++) {
- expectedList.add(graphAsString);
- }
- // Validate expected results
- Assert.assertEquals(expectedList, resultList);
- }
-
- private void testCreateGraphStatus(final int threadCount, Graph graph) throws InterruptedException, ExecutionException, JsonParseException, JsonMappingException, IOException {
- final VerifyClient verifyClient = new VerifyClient("http://localhost:8080/verify/api");
-
- CreateGraph task = new CreateGraph(verifyClient, graph);
-
- List<MultiThreadedTestCase.CreateGraph> tasks = Collections.nCopies(threadCount, task);
- ExecutorService executorService = Executors.newFixedThreadPool(threadCount);
-
- List<Future<Response>> futures = executorService.invokeAll(tasks);
- List<Integer> resultList = new ArrayList<Integer>(futures.size());
-
- // Check for exceptions
- for (Future<Response> future : futures) {
- // Throws an exception if an exception was thrown by the task.
- resultList.add(future.get().getStatus());
- }
- // Validate the IDs
- Assert.assertEquals(threadCount, futures.size());
-
- List<Integer> expectedList = new ArrayList<Integer>(threadCount);
- for (int i = 1; i <= threadCount; i++) {
- expectedList.add(201);
- }
- // Validate expected results
- Assert.assertEquals(expectedList, resultList);
- }
-
- private int randInt(int min, int max){
- Random rand = new Random();
- int randomNum = rand.nextInt((max - min) + 1) + min;
- return randomNum;
- }
-
- @Test
- public void updateGraphStatusCheck() throws InterruptedException, ExecutionException, JsonParseException, JsonMappingException, IOException, VerifyClientException {
- testUpdateGraphStatus(64);
- }
-
- @Test
- public void updateGraphResponseCheck() throws InterruptedException, ExecutionException, JsonParseException, JsonMappingException, IOException, VerifyClientException {
- testUpdateGraph(16);
- }
-
- @Test
- public void createGraphStatusCheck() throws JsonParseException, JsonMappingException, InterruptedException, ExecutionException, IOException {
- Graph graph = new Graph();
- testCreateGraphStatus(8, graph);
- }
-
- class UpdateGraph implements Callable<Response> {
-
- private VerifyClient verifyClient;
-
- private int graphId;
-
- private Graph graph;
-
- public UpdateGraph(VerifyClient verifyClient, int graphId, Graph graph) {
- this.graphId = graphId;
- this.graph = graph;
- this.verifyClient = verifyClient;
- }
-
- @Override
- public Response call() throws Exception {
- Thread.sleep(randInt(0,2000));
- Response updateGraphResponse = this.verifyClient.updateGraph(this.graphId, this.graph);
- return updateGraphResponse;
- }
- }
-
- class CreateGraph implements Callable<Response> {
-
- private VerifyClient verifyClient;
-
- private Graph graph;
-
- public CreateGraph(VerifyClient verifyClient, Graph graph) {
- this.graph = graph;
- this.verifyClient = verifyClient;
- }
-
- @Override
- public Response call() throws Exception {
- Thread.sleep(randInt(0,2000));
- return this.verifyClient.createGraph(this.graph);
- }
-
- }
-} \ No newline at end of file
diff --git a/verigraph/src/main/java/it/polito/escape/verify/test/Scalability.java b/verigraph/src/main/java/it/polito/escape/verify/test/Scalability.java
deleted file mode 100644
index 3039ca0..0000000
--- a/verigraph/src/main/java/it/polito/escape/verify/test/Scalability.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Politecnico di Torino and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Apache License, Version 2.0
- * which accompanies this distribution, and is available at
- * http://www.apache.org/licenses/LICENSE-2.0
- *******************************************************************************/
-
-package it.polito.escape.verify.test;
-
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-import it.polito.escape.verify.client.VerifyClient;
-import it.polito.escape.verify.client.VerifyClientException;
-import it.polito.escape.verify.model.Configuration;
-import it.polito.escape.verify.model.Graph;
-import it.polito.escape.verify.model.Neighbour;
-import it.polito.escape.verify.model.Node;
-import it.polito.escape.verify.model.Verification;
-
-public class Scalability {
-
- private VerifyClient client = new VerifyClient("http://localhost:8080/verify/api");
-
- public static void main(String[] args) throws VerifyClientException {
- Scalability s = new Scalability();
-
- reachabilityTest(s, 10);
-
- isolationTest(s,1500);
- traversalTest(s,600);
- }
-
- private static void reachabilityTest(Scalability s, int n) throws VerifyClientException {
- System.out.printf("Reachability test with N=" + n + ": ");
- printTimestamp();
- Graph graph = generateNatScenario(n);
- Graph createdGraph = s.client.createGraph(graph).readEntity(Graph.class);
- Verification result = s.client.getReachability(createdGraph.getId(), "client", "server");
- System.out.println("Test returned " + result.getResult());
- System.out.printf("Finished reachability test with N=" + n + ": ");
- printTimestamp();
- System.out.println();
- }
-
- private static void isolationTest(Scalability s, int n) throws VerifyClientException {
- System.out.printf("Isolation test with N=" + n + ": ");
- printTimestamp();
- Graph graph = generateNatScenario(n);
- Graph createdGraph = s.client.createGraph(graph).readEntity(Graph.class);
- Verification result = s.client.getIsolation(createdGraph.getId(), "client", "server", "firewall");
- System.out.println("Test returned " + result.getResult());
- System.out.printf("Finished isolation test with N=" + n + ": ");
- printTimestamp();
- System.out.println();
- }
-
- private static void traversalTest(Scalability s, int n) throws VerifyClientException {
- System.out.printf("Traversal test with N=" + n + ": ");
- printTimestamp();
- Graph graph = generateNatScenario(n);
- Graph createdGraph = s.client.createGraph(graph).readEntity(Graph.class);
- Verification result = s.client.getTraversal(createdGraph.getId(), "client", "server", "firewall");
- System.out.println("Test returned " + result.getResult());
-// System.out.println("Result explanation: " + result.getComment());
- System.out.printf("Finished traversal test with N=" + n + ": ");
- printTimestamp();
- System.out.println();
- }
-
- private static void printTimestamp() {
- java.util.Date date= new java.util.Date();
- System.out.println(new Timestamp(date.getTime()));
- }
-
- private static Graph generateNatScenario(int n) {
- List<Node> nodes = new ArrayList<Node>();
-
- Node client = new Node();
- client.setName("client");
- client.setFunctional_type("endhost");
- ArrayNode clientConfigArray = new ObjectMapper().createArrayNode();
- JsonNode clientConfig = new ObjectMapper().createObjectNode();
- ((ObjectNode)clientConfig).put("url", "www.facebook.com");
- ((ObjectNode)clientConfig).put("body", "word");
- ((ObjectNode)clientConfig).put("destination","server");
- ((ObjectNode)clientConfig).put("protocol", "HTTP_REQUEST");
- clientConfigArray.add(clientConfig);
- client.setConfiguration(new Configuration(client.getName(),"", clientConfigArray));
-
- Map<Long, Neighbour> clientNeighbours = new HashMap<Long, Neighbour>();
- clientNeighbours.put(1L, new Neighbour(1L, "nat1"));
- client.setNeighbours(clientNeighbours );
- //add client to list
- nodes.add(client);
-
- for(int i=0; i< n;i++){
- Node nat = new Node();
- nat.setId(i+1);
- nat.setName("nat" + (i+1));
- nat.setFunctional_type("nat");
- ArrayNode configArray = new ObjectMapper().createArrayNode();
-
- Map<Long, Neighbour> natNeighbours = new HashMap<Long, Neighbour>();
-
- //set left neighbour for each node except the first
- if(nat.getId() != 1){
- natNeighbours.put(1L, new Neighbour(1L, "nat" + i));
- configArray.add("client");
- for (int j=1; j <= i; j++){
- configArray.add("nat" + j);
- }
- }
- //first nat: set only client as neighbour and natted node
- else{
- natNeighbours.put(1L, new Neighbour(1L, "client"));
- configArray.add("client");
- }
- //set right neighbour for each node except the last
- if(nat.getId() != n){
- natNeighbours.put(2L, new Neighbour(1L, "nat" + (i+2)));
- }
- //last nat: set server as neighbour
- else{
- natNeighbours.put(2L, new Neighbour(1L, "server"));
- }
-
- nat.setNeighbours(natNeighbours);
- nat.setConfiguration(new Configuration(nat.getName(),"", configArray));
-
- //add nat to list
- nodes.add(nat);
- }
-
- Node server = new Node();
- server.setName("server");
- server.setFunctional_type("webserver");
- ArrayNode serverConfigArray = new ObjectMapper().createArrayNode();
- server.setConfiguration(new Configuration(server.getName(),"", serverConfigArray));
-
- Map<Long, Neighbour> serverNeighbours = new HashMap<Long, Neighbour>();
- serverNeighbours.put(1L, new Neighbour(1L, "nat" + (n)));
- server.setNeighbours(serverNeighbours );
-
- //add server to list
- nodes.add(server);
-
- //create graph
- Graph g = new Graph();
- Map<Long, Node> graphNodes = new HashMap<Long, Node>();
- long index = 1L;
- for (Node node : nodes){
- graphNodes.put(index, node);
- index++;
- }
- g.setNodes(graphNodes);
-
- return g;
- }
-
- private static Graph generateFirewallScenario(int n) {
- List<Node> nodes = new ArrayList<Node>();
-
- Node client = new Node();
- client.setName("client");
- client.setFunctional_type("endhost");
- ArrayNode clientConfigArray = new ObjectMapper().createArrayNode();
- JsonNode clientConfig = new ObjectMapper().createObjectNode();
- ((ObjectNode)clientConfig).put("url", "www.facebook.com");
- ((ObjectNode)clientConfig).put("body", "word");
- ((ObjectNode)clientConfig).put("destination","server");
- ((ObjectNode)clientConfig).put("protocol", "HTTP_REQUEST");
- clientConfigArray.add(clientConfig);
- client.setConfiguration(new Configuration(client.getName(),"", clientConfigArray));
-
- Map<Long, Neighbour> clientNeighbours = new HashMap<Long, Neighbour>();
- clientNeighbours.put(1L, new Neighbour(1L, "firewall1"));
- client.setNeighbours(clientNeighbours );
- //add client to list
- nodes.add(client);
-
- for(int i=0; i< n;i++){
- Node firewall = new Node();
- firewall.setId(i+1);
- firewall.setName("firewall" + (i+1));
- firewall.setFunctional_type("firewall");
- ArrayNode configArray = new ObjectMapper().createArrayNode();
-
- Map<Long, Neighbour> natNeighbours = new HashMap<Long, Neighbour>();
-
- //set left neighbour for each node except the first
- if(firewall.getId() != 1){
- natNeighbours.put(1L, new Neighbour(1L, "firewall" + i));
- }
- //first firewall: set only client as neighbour and natted node
- else{
- natNeighbours.put(1L, new Neighbour(1L, "client"));
- }
- //set right neighbour for each node except the last
- if(firewall.getId() != n){
- natNeighbours.put(2L, new Neighbour(1L, "firewall" + (i+2)));
- }
- //last firewall: set server as neighbour
- else{
- natNeighbours.put(2L, new Neighbour(1L, "server"));
- }
-
- firewall.setNeighbours(natNeighbours);
- firewall.setConfiguration(new Configuration(firewall.getName(),"", configArray));
-
- //add nat to list
- nodes.add(firewall);
- }
-
- Node server = new Node();
- server.setName("server");
- server.setFunctional_type("webserver");
- ArrayNode serverConfigArray = new ObjectMapper().createArrayNode();
- server.setConfiguration(new Configuration(server.getName(),"", serverConfigArray));
-
- Map<Long, Neighbour> serverNeighbours = new HashMap<Long, Neighbour>();
- serverNeighbours.put(1L, new Neighbour(1L, "firewall" + (n)));
- server.setNeighbours(serverNeighbours );
-
- //add server to list
- nodes.add(server);
-
- //create graph
- Graph g = new Graph();
- Map<Long, Node> graphNodes = new HashMap<Long, Node>();
- long index = 1L;
- for (Node node : nodes){
- graphNodes.put(index, node);
- index++;
- }
- g.setNodes(graphNodes);
-
- return g;
- }
-
- private static Graph generateScenario(int n) {
- List<Node> nodes = new ArrayList<Node>();
-
- Node firewall = new Node();
- firewall.setName("firewall");
- firewall.setFunctional_type("firewall");
- ArrayNode firewallConfigArray = new ObjectMapper().createArrayNode();
- Map<Long, Neighbour> firewallNeighbours = new HashMap<Long, Neighbour>();
-
- for (int i=0; i < n; i++){
- if(i!=0){
- JsonNode firewallEntry = new ObjectMapper().createObjectNode();
- ((ObjectNode) firewallEntry).put("server", "client" + (i+1));
- firewallConfigArray.add(firewallEntry);
- }
- firewallNeighbours.put(new Long(i+1), new Neighbour(new Long(i+1), "client" + (i+1)));
- }
-
- firewallNeighbours.put(new Long(n+1), new Neighbour(new Long(n+1), "server"));
-
- firewall.setConfiguration(new Configuration(firewall.getName(),"", firewallConfigArray));
-
-
- firewall.setNeighbours(firewallNeighbours );
- //add client to list
- nodes.add(firewall);
-
- for(int i=0; i< n;i++){
- Node client = new Node();
- client.setId(i+1);
- client.setName("client" + (i+1));
- client.setFunctional_type("endhost");
- ArrayNode clientConfigArray = new ObjectMapper().createArrayNode();
- JsonNode clientConfig = new ObjectMapper().createObjectNode();
- ((ObjectNode)clientConfig).put("url", "www.facebook.com");
- ((ObjectNode)clientConfig).put("body", "word");
- ((ObjectNode)clientConfig).put("destination","server");
- ((ObjectNode)clientConfig).put("protocol", "HTTP_REQUEST");
- clientConfigArray.add(clientConfig);
-
- Map<Long, Neighbour> clientNeighbours = new HashMap<Long, Neighbour>();
-
- clientNeighbours.put(1L, new Neighbour(1L, "firewall"));
-
- client.setNeighbours(clientNeighbours);
- client.setConfiguration(new Configuration(client.getName(),"", clientConfigArray));
-
- //add client to list
- nodes.add(client);
- }
-
- Node server = new Node();
- server.setName("server");
- server.setFunctional_type("webserver");
- ArrayNode serverConfigArray = new ObjectMapper().createArrayNode();
- server.setConfiguration(new Configuration(server.getName(),"", serverConfigArray));
-
- Map<Long, Neighbour> serverNeighbours = new HashMap<Long, Neighbour>();
- serverNeighbours.put(1L, new Neighbour(1L, "firewall"));
- server.setNeighbours(serverNeighbours );
-
- //add server to list
- nodes.add(server);
-
- //create graph
- Graph g = new Graph();
- Map<Long, Node> graphNodes = new HashMap<Long, Node>();
- long index = 1L;
- for (Node node : nodes){
- graphNodes.put(index, node);
- index++;
- }
- g.setNodes(graphNodes);
-
- return g;
- }
-
- private static Graph generateDpiScenario(int n) {
- List<Node> nodes = new ArrayList<Node>();
-
- Node client = new Node();
- client.setName("client");
- client.setFunctional_type("endhost");
- ArrayNode clientConfigArray = new ObjectMapper().createArrayNode();
- JsonNode clientConfig = new ObjectMapper().createObjectNode();
- ((ObjectNode)clientConfig).put("url", "www.facebook.com");
- ((ObjectNode)clientConfig).put("body", "word");
- ((ObjectNode)clientConfig).put("destination","server");
- ((ObjectNode)clientConfig).put("protocol", "HTTP_REQUEST");
- clientConfigArray.add(clientConfig);
- client.setConfiguration(new Configuration(client.getName(),"", clientConfigArray));
-
- Map<Long, Neighbour> clientNeighbours = new HashMap<Long, Neighbour>();
- clientNeighbours.put(1L, new Neighbour(1L, "dpi1"));
- client.setNeighbours(clientNeighbours );
- //add client to list
- nodes.add(client);
-
- for(int i=0; i< n;i++){
- Node dpi = new Node();
- dpi.setId(i+1);
- dpi.setName("dpi" + (i+1));
- dpi.setFunctional_type("dpi");
- ArrayNode configArray = new ObjectMapper().createArrayNode();
- configArray.add("drug");
-
- Map<Long, Neighbour> natNeighbours = new HashMap<Long, Neighbour>();
-
- //set left neighbour for each node except the first
- if(dpi.getId() != 1){
- natNeighbours.put(1L, new Neighbour(1L, "dpi" + i));
- }
- //first firewall: set only client as neighbour and natted node
- else{
- natNeighbours.put(1L, new Neighbour(1L, "client"));
- }
- //set right neighbour for each node except the last
- if(dpi.getId() != n){
- natNeighbours.put(2L, new Neighbour(1L, "dpi" + (i+2)));
- }
- //last firewall: set server as neighbour
- else{
- natNeighbours.put(2L, new Neighbour(1L, "server"));
- }
-
- dpi.setNeighbours(natNeighbours);
- dpi.setConfiguration(new Configuration(dpi.getName(),"", configArray));
-
- //add nat to list
- nodes.add(dpi);
- }
-
- Node server = new Node();
- server.setName("server");
- server.setFunctional_type("webserver");
- ArrayNode serverConfigArray = new ObjectMapper().createArrayNode();
- server.setConfiguration(new Configuration(server.getName(),"", serverConfigArray));
-
- Map<Long, Neighbour> serverNeighbours = new HashMap<Long, Neighbour>();
- serverNeighbours.put(1L, new Neighbour(1L, "dpi" + (n)));
- server.setNeighbours(serverNeighbours );
-
- //add server to list
- nodes.add(server);
-
- //create graph
- Graph g = new Graph();
- Map<Long, Node> graphNodes = new HashMap<Long, Node>();
- long index = 1L;
- for (Node node : nodes){
- graphNodes.put(index, node);
- index++;
- }
- g.setNodes(graphNodes);
-
- return g;
- }
-
-}
diff --git a/verigraph/src/main/java/it/polito/escape/verify/test/TestCase.java b/verigraph/src/main/java/it/polito/escape/verify/test/TestCase.java
deleted file mode 100644
index a4c85ab..0000000
--- a/verigraph/src/main/java/it/polito/escape/verify/test/TestCase.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Politecnico di Torino and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Apache License, Version 2.0
- * which accompanies this distribution, and is available at
- * http://www.apache.org/licenses/LICENSE-2.0
- *******************************************************************************/
-
-package it.polito.escape.verify.test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.fasterxml.jackson.annotation.JsonAnyGetter;
-import com.fasterxml.jackson.annotation.JsonAnySetter;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-
-import it.polito.escape.verify.model.Graph;
-
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@JsonPropertyOrder({ "id", "name", "description", "policy_url_parameters", "result", "graph" })
-public class TestCase {
-
- @JsonProperty("id")
- private Integer id;
-
- @JsonProperty("name")
- private String name;
-
- @JsonProperty("description")
- private String description;
-
- @JsonProperty("policy_url_parameters")
- private String policyUrlParameters;
-
- @JsonProperty("result")
- private String result;
-
- @JsonProperty("graph")
- private Graph graph;
-
- @JsonIgnore
- private Map<String, Object> additionalProperties = new HashMap<String, Object>();
-
- /**
- * @return The id
- */
- @JsonProperty("id")
- public Integer getId() {
- return id;
- }
-
- /**
- * @param id
- * The id
- */
- @JsonProperty("id")
- public void setId(Integer id) {
- this.id = id;
- }
-
- /**
- * @return The name
- */
- @JsonProperty("name")
- public String getName() {
- return name;
- }
-
- /**
- * @param name
- * The name
- */
- @JsonProperty("name")
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * @return The description
- */
- @JsonProperty("description")
- public String getDescription() {
- return description;
- }
-
- /**
- * @param description
- * The description
- */
- @JsonProperty("description")
- public void setDescription(String description) {
- this.description = description;
- }
-
- /**
- * @return The policyUrlParameters
- */
- @JsonProperty("policy_url_parameters")
- public String getPolicyUrlParameters() {
- return policyUrlParameters;
- }
-
- /**
- * @param policyUrlParameters
- * The policy_url_parameters
- */
- @JsonProperty("policy_url_parameters")
- public void setPolicyUrlParameters(String policyUrlParameters) {
- this.policyUrlParameters = policyUrlParameters;
- }
-
- /**
- * @return The result
- */
- @JsonProperty("result")
- public String getResult() {
- return result;
- }
-
- /**
- * @param result
- * The result
- */
- @JsonProperty("result")
- public void setResult(String result) {
- this.result = result;
- }
-
- /**
- * @return The graph
- */
- @JsonProperty("graph")
- public Graph getGraph() {
- return graph;
- }
-
- /**
- * @param graph
- * The graph
- */
- @JsonProperty("graph")
- public void setGraph(Graph graph) {
- this.graph = graph;
- }
-
- @JsonAnyGetter
- public Map<String, Object> getAdditionalProperties() {
- return this.additionalProperties;
- }
-
- @JsonAnySetter
- public void setAdditionalProperty(String name, Object value) {
- this.additionalProperties.put(name, value);
- }
-
-}
diff --git a/verigraph/src/main/java/it/polito/escape/verify/test/TestExecutionException.java b/verigraph/src/main/java/it/polito/escape/verify/test/TestExecutionException.java
deleted file mode 100644
index 8babe7b..0000000
--- a/verigraph/src/main/java/it/polito/escape/verify/test/TestExecutionException.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Politecnico di Torino and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Apache License, Version 2.0
- * which accompanies this distribution, and is available at
- * http://www.apache.org/licenses/LICENSE-2.0
- *******************************************************************************/
-
-package it.polito.escape.verify.test;
-
-
-public class TestExecutionException extends Exception{
-
- /**
- *
- */
- private static final long serialVersionUID = 4749065055436886197L;
-
- public TestExecutionException(String message){
- super(message);
- }
-
-}
diff --git a/verigraph/src/main/java/it/polito/escape/verify/test/Tester.java b/verigraph/src/main/java/it/polito/escape/verify/test/Tester.java
deleted file mode 100644
index 4b85e1e..0000000
--- a/verigraph/src/main/java/it/polito/escape/verify/test/Tester.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Politecnico di Torino and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Apache License, Version 2.0
- * which accompanies this distribution, and is available at
- * http://www.apache.org/licenses/LICENSE-2.0
- *******************************************************************************/
-
-package it.polito.escape.verify.test;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
-import javax.ws.rs.client.ResponseProcessingException;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.Response;
-
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.fge.jsonschema.core.exceptions.ProcessingException;
-import com.github.fge.jsonschema.main.JsonSchema;
-
-import it.polito.escape.verify.client.VerifyClient;
-import it.polito.escape.verify.client.VerifyClientException;
-import it.polito.escape.verify.model.Graph;
-import it.polito.escape.verify.model.Verification;
-import it.polito.escape.verify.service.ValidationUtils;
-
-public class Tester {
-
- private File schema;
-
- private List<File> testFiles = new ArrayList<File>();
-
- private List<TestCase> testCases = new ArrayList<TestCase>();
-
- private String target;
-
- private VerifyClient verifyClient;
-
- public Tester(String target, File schema, File folder) throws JsonParseException, JsonMappingException, IOException,
- Exception {
- init(target, schema, folder);
- }
-
- private void init(String target, File schema, File folder) throws JsonParseException, JsonMappingException,
- IOException, Exception {
- this.target = target;
- this.verifyClient = new VerifyClient(this.target);
- this.schema = schema;
- this.testFiles = getTests(folder);
- this.testCases = getTestCases(this.testFiles);
- }
-
- public List<File> getTests(File folder) {
- List<File> filesList = new ArrayList<File>();
-
- System.out.println("Test folder set to '" + folder.getAbsolutePath() + "'");
-
- File[] files = folder.listFiles(new FilenameFilter() {
-
- @Override
- public boolean accept(File dir, String name) {
- return name.endsWith(".json");
- }
- });
-
- for (File f : files) {
- filesList.add(f);
- System.out.println("File '" + f.getName() + "' added to test files");
- }
-
- return filesList;
- }
-
- public List<TestCase> getTestCases(List<File> files) throws JsonParseException, JsonMappingException, IOException,
- Exception {
- List<TestCase> testCases = new ArrayList<TestCase>();
-
- for (File file : files) {
- validateTestFile(file);
- try {
- TestCase tc = new ObjectMapper().readValue(file, TestCase.class);
- testCases.add(tc);
- }
- catch (Exception e) {
- throw e;
- }
- }
-
- return testCases;
- }
-
- private void runTestCases() throws VerifyClientException, TestExecutionException {
- int counter = 0;
- for (TestCase tc : this.testCases) {
- String result = runTestCase(tc);
- if (!result.equals(tc.getResult()))
- throw new TestExecutionException("Error running test given in file '" + this.testFiles.get(counter).getName()
- + "'. Test returned '" + result + "' instead of '" + tc.getResult() + "'.");
- else
- System.out.println("Test given in file '" + this.testFiles.get(counter).getName() + "' returned '"
- + result + "' as expected");
- counter++;
- }
- System.out.println("All tests PASSED");
- }
-
- private String runTestCase(TestCase tc) throws VerifyClientException, TestExecutionException{
- Client client = ClientBuilder.newClient();
-
- Graph graph = tc.getGraph();
- Response response = null;
- try{
- response = this.verifyClient.createGraph(graph);
- }
- catch(ResponseProcessingException e){
- throw new TestExecutionException("Response processing has failed: " + e.getResponse().readEntity(String.class));
- }
- catch(javax.ws.rs.ProcessingException e){
- throw new TestExecutionException("HTTP request failed");
- }
- Graph createdGraph = response.readEntity(Graph.class);
- String urlParams = tc.getPolicyUrlParameters();
- WebTarget target = client.target(this.target + "/graphs/" + createdGraph.getId() + "/policy" + urlParams);
-
- response = target.request().get();
- Verification verification = response.readEntity(Verification.class);
- return verification.getResult();
- }
-
- public void validateTestFile(File testFile) throws Exception {
- JsonSchema schemaNode = null;
- try {
- schemaNode = ValidationUtils.getSchemaNode(schema);
- }
- catch (IOException e) {
- throw new Exception("Unable to load '" + schema.getAbsolutePath() + "' schema file");
- }
- catch (ProcessingException e) {
- throw new Exception("Unable to resolve '" + schema.getAbsolutePath() + "' schema file as a schema node");
- }
-
- JsonNode jsonNode;
- try {
- jsonNode = ValidationUtils.getJsonNode(testFile);
- }
- catch (IOException e) {
- throw new Exception("Unable to load '" + testFile.getAbsolutePath() + "' as a json node");
- }
-
- try {
- ValidationUtils.validateJson(schemaNode, jsonNode);
- }
- catch (ProcessingException e) {
- throw new Exception("There were errors in the validation of file '" + testFile.getAbsolutePath()
- + "' against the json schema '" + schema.getAbsolutePath() + "': " + e.getMessage());
-
- }
- }
-
- public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException,
- VerifyClientException, Exception {
- String folderName = System.getProperty("user.dir") + "/tester/testcases";
- File folder = new File(folderName);
- if (!folder.exists()) {
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
- String s;
- do{
- System.out.println("Please enter the testcases folder path: ");
- s = in.readLine();
- if (isValidpath(s)){
- folder = new File(s);
- break;
- }
- }while (s != null && s.length() != 0);
- if(s == null)
- System.exit(0);
- }
- String schemaName = System.getProperty("user.dir") + "/tester/testcase_schema.json";
- File schema = new File(schemaName);
- if (!schema.exists()) {
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
- String s;
- do{
- System.out.println("Please enter the full path of 'testcase_schema.json': ");
- s = in.readLine();
- if (isValidpath(s)){
- folder = new File(s);
- break;
- }
- }while (s != null && s.length() != 0);
- if(s == null)
- System.exit(0);
- }
-
- Tester tester = new Tester("http://localhost:8080/verify/api", schema, folder);
-
- tester.runTestCases();
-
- }
-
- private static boolean isValidpath(String s) {
- if (s==null)
- return false;
- File file = new File(s);
- return file.exists();
- }
-
-}