public abstract class AbstractGraphProvider extends Object implements GraphProvider
GraphProvider.Descriptor, GraphProvider.TestListener
CORE_IMPLEMENTATIONS
Constructor and Description |
---|
AbstractGraphProvider() |
Modifier and Type | Method and Description |
---|---|
protected String |
cleanParameters(String methodName) |
protected static void |
deleteDirectory(File directory)
Helper method for those building
GraphProvider implementations that need to clean directories
between test runs. |
abstract Map<String,Object> |
getBaseConfiguration(String graphName,
Class<?> test,
String testMethodName,
LoadGraphWith.GraphData loadGraphWith)
Provides a basic configuration for a particular
Graph instance and uses the graphName to ensure
that the instance is unique. |
void |
loadGraphData(Graph graph,
LoadGraphWith loadGraphWith,
Class testClass,
String testName)
Tests are annotated with a
LoadGraphWith annotation. |
protected String |
makeTestDirectory(String graphName,
Class<?> test,
String testMethodName)
Utility method to help produce an appropriate unique directory for a test.
|
Configuration |
newGraphConfiguration(String graphName,
Class<?> test,
String testMethodName,
Map<String,Object> configurationOverrides,
LoadGraphWith.GraphData loadGraphWith)
When implementing this method ensure that a test suite can override any settings EXCEPT the
"gremlin.graph" setting which should be defined by the implementer.
|
protected void |
readIntoGraph(Graph graph,
String path)
Used by the default implementation of
loadGraphData(Graph, LoadGraphWith, Class, String)
to read the graph from a Kryo file using the default GryoReader implementation. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
clear, clear, convertId, convertLabel, getGraphComputer, getImplementations, getStaticFeatures, getTestListener, getWorkingDirectory, newGraphConfiguration, openTestGraph, standardGraphConfiguration, standardTestGraph, traversal, traversal
public abstract Map<String,Object> getBaseConfiguration(String graphName, Class<?> test, String testMethodName, LoadGraphWith.GraphData loadGraphWith)
Graph
instance and uses the graphName
to ensure
that the instance is unique. It is up to the Gremlin implementation to determine how best to use the
graphName
to ensure uniqueness. For example, Neo4j, might use the graphName
might be used to
create a different sub-directory where the graph is stored.
The @{code test} and @{code testMethodName} can be used to alter graph configurations for specific tests.
For example, a graph that has support for different transaction isolation levels might only support a feature
in a specific configuration. Using these arguments, the implementation could detect when a test was being
fired that required the database to be configured in a specific isolation level and return a configuration
to support that.
Ultimately, the returned Map
should minimally contain a configuration that can be given to a
GraphFactory
so that it can be instantiated.graphName
- a value that represents a unique configuration for a graphtest
- the test classtestMethodName
- the name of the test methodloadGraphWith
- the data set to load and will be null if no data is to be loadedMap
that should be unique per the graphName
public Configuration newGraphConfiguration(String graphName, Class<?> test, String testMethodName, Map<String,Object> configurationOverrides, LoadGraphWith.GraphData loadGraphWith)
GraphProvider
Configuration
that will generate a graph unique to that graphName
.newGraphConfiguration
in interface GraphProvider
graphName
- a unique test graph nametest
- the test classtestMethodName
- the name of the testconfigurationOverrides
- settings to override defaults with.loadGraphWith
- the data set to load and will be null if no data is to be loadedpublic void loadGraphData(Graph graph, LoadGraphWith loadGraphWith, Class testClass, String testName)
GraphProvider
LoadGraphWith
annotation. These annotations tell the test what kind of data
to preload into the graph instance. It is up to the implementation to load the graph with the data specified
by that annotation. This method also represents the place where indices should be configured according the
the Graph
implementation's API. Implementers can use the testClass
and testName
arguments to implement test specific configurations to their graphs.loadGraphData
in interface GraphProvider
graph
- the Graph
instance to load data into constructed by this GraphProvider
loadGraphWith
- the annotation for the currently running test - this value may be null if no graph
data is to be loaded in front of the test.testClass
- the test class being executedtestName
- the name of the test method being executedprotected static void deleteDirectory(File directory)
GraphProvider
implementations that need to clean directories
between test runs.protected String makeTestDirectory(String graphName, Class<?> test, String testMethodName)
getBaseConfiguration(String, Class, String, LoadGraphWith.GraphData)
for those graph providers that
need a data directory for their Graph
implementations.protected void readIntoGraph(Graph graph, String path) throws IOException
loadGraphData(Graph, LoadGraphWith, Class, String)
to read the graph from a Kryo file using the default GryoReader
implementation. If the default
implementation does not work (perhaps a graph implementation needs to register some special IoRegistry
then this method or its caller should be overridden to suit the implementation.graph
- the graph to load topath
- the path to the file to load into the graphIOException
Copyright © 2013–2020 Apache Software Foundation. All rights reserved.