package org.gradoop.flink.io.impl.graph;
import com.google.common.collect.Maps;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.gradoop.common.model.impl.properties.Properties;
import org.gradoop.flink.io.impl.graph.tuples.ImportEdge;
import org.gradoop.flink.io.impl.graph.tuples.ImportVertex;
import org.gradoop.flink.model.GradoopFlinkTestBase;
import org.gradoop.flink.model.impl.LogicalGraph;
import org.junit.Test;
import java.util.Map;
public class GraphDataSourceTest extends GradoopFlinkTestBase {
@Test
public void testReadStructureOnly() throws Exception {
ExecutionEnvironment env = getExecutionEnvironment();
DataSet<ImportVertex<Long>> importVertices = env.fromElements(
new ImportVertex<>(0L),
new ImportVertex<>(1L));
DataSet<ImportEdge<Long>> importEdges = env.fromElements(
new ImportEdge<>(0L, 0L, 1L));
LogicalGraph expected = getLoaderFromString("expected[()-->()]")
.getLogicalGraphByVariable("expected");
GraphDataSource<Long> dataSource = new GraphDataSource<>(
importVertices, importEdges, getConfig());
LogicalGraph output = dataSource.getLogicalGraph();
collectAndAssertTrue(output.equalsByElementData(expected));
}
@Test
public void testReadWithLabel() throws Exception {
ExecutionEnvironment env = getExecutionEnvironment();
DataSet<ImportVertex<Long>> importVertices = env.fromElements(
new ImportVertex<>(0L, "A"),
new ImportVertex<>(1L, "B"));
DataSet<ImportEdge<Long>> importEdges = env.fromElements(
new ImportEdge<>(0L, 0L, 1L, "a"));
LogicalGraph expected = getLoaderFromString("expected[(:A)-[:a]->(:B)]")
.getLogicalGraphByVariable("expected");
GraphDataSource<Long> dataSource = new GraphDataSource<>(
importVertices, importEdges, getConfig());
LogicalGraph output = dataSource.getLogicalGraph();
collectAndAssertTrue(output.equalsByElementData(expected));
}
@Test
public void testReadWithLabelAndProperties() throws Exception {
ExecutionEnvironment env = getExecutionEnvironment();
Map<String, Object> properties = Maps.newHashMap();
properties.put("foo", 42);
DataSet<ImportVertex<Long>> importVertices = env.fromElements(
new ImportVertex<>(0L, "A", Properties.createFromMap(properties)),
new ImportVertex<>(1L, "B", Properties.createFromMap(properties)));
DataSet<ImportEdge<Long>> importEdges = env.fromElements(
new ImportEdge<>(0L, 0L, 1L, "a", Properties.createFromMap(properties)),
new ImportEdge<>(1L, 1L, 0L, "b", Properties.createFromMap(properties)));
LogicalGraph expected =
getLoaderFromString("expected[" +
"(a:A {foo : 42})" +
"(b:B {foo : 42})" +
"(a)-[:a {foo : 42}]->(b)-[:b {foo : 42}]->(a)" +
"]").getLogicalGraphByVariable("expected");
GraphDataSource<Long> dataSource = new GraphDataSource<>(
importVertices, importEdges, getConfig());
LogicalGraph output = dataSource.getLogicalGraph();
collectAndAssertTrue(output.equalsByElementData(expected));
}
@Test
public void testReadWithLineage() throws Exception {
ExecutionEnvironment env = getExecutionEnvironment();
Map<String, Object> properties = Maps.newHashMap();
properties.put("foo", 42);
DataSet<ImportVertex<Long>> importVertices = env.fromElements(
new ImportVertex<>(0L, "A", Properties.createFromMap(properties)),
new ImportVertex<>(1L, "B", Properties.createFromMap(properties)));
DataSet<ImportEdge<Long>> importEdges = env.fromElements(
new ImportEdge<>(0L, 0L, 1L, "a", Properties.createFromMap(properties)),
new ImportEdge<>(1L, 1L, 0L, "b", Properties.createFromMap(properties)));
LogicalGraph expected = getLoaderFromString("expected[" +
"(a:A {foo : 42, __L : 0L})" +
"(b:B {foo : 42, __L : 1L})" +
"(a)-[:a {foo : 42, __L : 0L}]->(b)-[:b {foo : 42, __L : 1L}]->(a)" +
"]").getLogicalGraphByVariable("expected");
GraphDataSource<Long> dataSource = new GraphDataSource<>(
importVertices, importEdges, "__L", getConfig());
LogicalGraph output = dataSource.getLogicalGraph();
collectAndAssertTrue(output.equalsByElementData(expected));
}
}