package org.gradoop.flink.io.impl.json; import com.google.common.collect.Lists; import org.apache.flink.api.java.io.LocalCollectionOutputFormat; import org.gradoop.common.model.impl.pojo.Edge; import org.gradoop.common.model.impl.pojo.GraphHead; import org.gradoop.common.model.impl.pojo.Vertex; import org.gradoop.flink.model.GradoopFlinkTestBase; import org.gradoop.flink.model.impl.GraphCollection; import org.gradoop.flink.util.FlinkAsciiGraphLoader; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import java.util.Collection; import static org.gradoop.common.GradoopTestUtils.validateEPGMElementCollections; import static org.gradoop.common.GradoopTestUtils.validateEPGMGraphElementCollections; public class JSONDataSinkTest extends GradoopFlinkTestBase { @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); @Test public void testWrite() throws Exception { String tmpDir = temporaryFolder.getRoot().toString(); final String vertexFile = tmpDir + "/nodes.json"; final String edgeFile = tmpDir + "/edges.json"; final String graphFile = tmpDir + "/graphs.json"; FlinkAsciiGraphLoader loader = getSocialNetworkLoader(); // write to JSON loader.getDatabase().writeTo( new JSONDataSink(graphFile, vertexFile, edgeFile, getConfig())); getExecutionEnvironment().execute(); // read from JSON GraphCollection collection = new JSONDataSource( graphFile, vertexFile, edgeFile, getConfig()).getGraphCollection(); Collection<GraphHead> expectedGraphHeads = loader.getGraphHeads(); Collection<Vertex> expectedVertices = loader.getVertices(); Collection<Edge> expectedEdges = loader.getEdges(); Collection<GraphHead> loadedGraphHeads = Lists.newArrayList(); Collection<Vertex> loadedVertices = Lists.newArrayList(); Collection<Edge> loadedEdges = Lists.newArrayList(); collection.getGraphHeads() .output(new LocalCollectionOutputFormat<>(loadedGraphHeads)); collection.getVertices() .output(new LocalCollectionOutputFormat<>(loadedVertices)); collection.getEdges() .output(new LocalCollectionOutputFormat<>(loadedEdges)); getExecutionEnvironment().execute(); validateEPGMElementCollections(expectedGraphHeads, loadedGraphHeads); validateEPGMElementCollections(expectedVertices, loadedVertices); validateEPGMGraphElementCollections(expectedVertices, loadedVertices); validateEPGMElementCollections(expectedEdges, loadedEdges); validateEPGMGraphElementCollections(expectedEdges, loadedEdges); } }