blob: bde56608985c45a74384e62bec7aa9cbd16c29ed [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import io.netty.buffer.ByteBufAllocator
import org.apache.tinkerpop.gremlin.structure.io.binary.GraphBinaryWriter
import org.apache.tinkerpop.gremlin.driver.ser.NettyBufferFactory
import org.apache.tinkerpop.gremlin.tinkergraph.structure.*
import org.apache.tinkerpop.gremlin.structure.*
import org.apache.tinkerpop.gremlin.structure.io.*
import org.apache.commons.configuration.BaseConfiguration
new File("${projectBuildDir}/test-case-data/io/graphbinary").mkdirs()
conf = new BaseConfiguration()
conf.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_DEFAULT_VERTEX_PROPERTY_CARDINALITY, VertexProperty.Cardinality.list.name())
graph = TinkerGraph.open(conf)
TinkerFactory.generateTheCrew(graph)
g = graph.traversal()
model = Model.instance()
allocator = ByteBufAllocator.DEFAULT
factory = new NettyBufferFactory()
toGraphBinary = { o, type, mapper, suffix = "" ->
def fileToWriteTo = new File("${projectBuildDir}/test-case-data/io/graphbinary/" + type.title.toLowerCase().replace(" ","") + "-" + suffix + ".gbin")
if (fileToWriteTo.exists()) fileToWriteTo.delete()
filestream = new FileOutputStream(fileToWriteTo)
try {
buffer = factory.create(allocator.buffer())
writer.write(o, buffer)
buffer.readerIndex(0)
buffer.readBytes(filestream, buffer.readableBytes())
} catch (Exception ex) {
if (ex.message == "Serializer for type org.apache.tinkerpop.gremlin.driver.message.RequestMessage not found" ||
ex.message == "Serializer for type org.apache.tinkerpop.gremlin.driver.message.ResponseMessage not found" )
fileToWriteTo.delete()
else
throw ex
} finally {
filestream.close()
buffer.release()
}
}
toGraphBinaryV1d0 = { o, type, mapper ->
toGraphBinary(o, type, mapper, "v1")
}
writeSupportedObjects = { mapper, toGraphBinaryFunction ->
model.entries().findAll{it.hasGraphBinaryCompatibility()}.each {
toGraphBinaryFunction(it.getObject(), it, mapper)
}
}
writer = new GraphBinaryWriter()
writeSupportedObjects(writer, toGraphBinaryV1d0)
def ver = "_" + "${projectVersion}".replace(".","_").replace("-SNAPSHOT","")
def target = "${projectBaseDir}/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphbinary/" + ver
def targetDir = new File(target)
if (!targetDir.exists()) targetDir.mkdirs()
new File("${projectBuildDir}/test-case-data/io/graphbinary/").listFiles().each {
def copyTo = new File(target + "/" + it.name)
if (copyTo.exists()) copyTo.delete()
java.nio.file.Files.copy(it.toPath(), new File(target + "/" + it.name).toPath())
}