package com.tinkerpop.blueprints.impls.sparksee;
import com.tinkerpop.blueprints.BaseTest;
import com.tinkerpop.blueprints.CloseableIterable;
import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.blueprints.Edge;
import com.tinkerpop.blueprints.Graph;
import com.tinkerpop.blueprints.TestSuite;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.impls.GraphTest;
import com.tinkerpop.blueprints.util.io.graphml.GraphMLReader;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
public class SparkseeBenchmarkTestSuite extends TestSuite {
private static final int TOTAL_RUNS = 10;
public SparkseeBenchmarkTestSuite() {
}
public SparkseeBenchmarkTestSuite(final GraphTest graphTest) {
super(graphTest);
}
public void testSparkseeGraph() throws Exception {
double totalTime = 0.0d;
Graph graph = graphTest.generateGraph();
GraphMLReader.inputGraph(graph, GraphMLReader.class.getResourceAsStream("graph-example-2.xml"));
graph.shutdown();
for (int i = 0; i < TOTAL_RUNS; i++) {
graph = graphTest.generateGraph();
this.stopWatch();
int counter = 0;
CloseableIterable<Vertex> vv = (CloseableIterable<Vertex>) graph.getVertices();
for (final Vertex vertex : vv) {
counter++;
CloseableIterable<Edge> ee = (CloseableIterable<Edge>) vertex.getEdges(Direction.OUT);
for (final Edge edge : ee) {
counter++;
final Vertex vertex2 = edge.getVertex(Direction.IN);
counter++;
CloseableIterable<Edge> ee2 = (CloseableIterable<Edge>) vertex2.getEdges(Direction.OUT);
for (final Edge edge2 : ee2) {
counter++;
final Vertex vertex3 = edge2.getVertex(Direction.IN);
counter++;
CloseableIterable<Edge> ee3 = (CloseableIterable<Edge>) vertex3.getEdges(Direction.OUT);
for (final Edge edge3 : ee3) {
counter++;
edge3.getVertex(Direction.OUT);
counter++;
}
ee3.close();
}
ee2.close();
}
ee.close();
}
vv.close();
double currentTime = this.stopWatch();
totalTime = totalTime + currentTime;
BaseTest.printPerformance(graph.toString(), counter, "SparkseeGraph elements touched (run=" + i + ")", currentTime);
graph.shutdown();
}
BaseTest.printPerformance("SparkseeGraph", 1, "SparkseeGraph experiment average", totalTime / (double) TOTAL_RUNS);
}
}