blob: 3b088bc36e7d2e0b635b93ce0462cf05dbb1142f [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.
*/
package org.apache.hugegraph.tinkerpop;
import org.apache.tinkerpop.gremlin.AbstractGremlinSuite;
import org.apache.tinkerpop.gremlin.GraphManager;
import org.apache.tinkerpop.gremlin.GraphProvider;
import org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.ComplexTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.branch.BranchTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.branch.ChooseTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.branch.OptionalTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AndTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CoinTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CyclicPathTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.OrTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SampleTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SimplePathTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CoalesceTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.ConstantTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.FoldTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.IndexTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.LoopsTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.MathTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProfileTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProjectTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.ReadTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.UnfoldTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.ValueMapTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AggregateTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ExplainTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupCountTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.EarlyLimitStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IncidentToAdjacentStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
import org.apache.hugegraph.tinkerpop.tests.HugeGraphWriteTest;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.RunnerBuilder;
import org.junit.runners.model.Statement;
import org.apache.hugegraph.dist.RegisterUtil;
/**
* Standard process test suite for tinkerpop graph
*
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
public class ProcessBasicSuite extends AbstractGremlinSuite {
/**
* This list of tests in the suite that will be executed
* as part of this suite.
*/
private static final Class<?>[] ALL_TESTS = new Class<?>[] {
// branch
BranchTest.Traversals.class,
ChooseTest.Traversals.class,
OptionalTest.Traversals.class,
LocalTest.Traversals.class,
RepeatTest.Traversals.class,
UnionTest.Traversals.class,
// filter
AndTest.Traversals.class,
CoinTest.Traversals.class,
CyclicPathTest.Traversals.class,
DedupTest.Traversals.class,
DropTest.Traversals.class,
FilterTest.Traversals.class,
HasTest.Traversals.class,
IsTest.Traversals.class,
OrTest.Traversals.class,
RangeTest.Traversals.class,
SampleTest.Traversals.class,
SimplePathTest.Traversals.class,
TailTest.Traversals.class,
WhereTest.Traversals.class,
// map
AddEdgeTest.Traversals.class,
AddVertexTest.Traversals.class,
CoalesceTest.Traversals.class,
ConstantTest.Traversals.class,
CountTest.Traversals.class,
FlatMapTest.Traversals.class,
FoldTest.Traversals.class,
GraphTest.Traversals.class,
LoopsTest.Traversals.class,
IndexTest.Traversals.class,
MapTest.Traversals.class,
MatchTest.CountMatchTraversals.class,
MatchTest.GreedyMatchTraversals.class,
MathTest.Traversals.class,
MaxTest.Traversals.class,
MeanTest.Traversals.class,
MinTest.Traversals.class,
SumTest.Traversals.class,
OrderTest.Traversals.class,
PathTest.Traversals.class,
ProfileTest.Traversals.class,
ProjectTest.Traversals.class,
PropertiesTest.Traversals.class,
ReadTest.Traversals.class,
SelectTest.Traversals.class,
VertexTest.Traversals.class,
UnfoldTest.Traversals.class,
ValueMapTest.Traversals.class,
// Override WriteTest.Traversals.class
HugeGraphWriteTest.class,
// sideEffect
AggregateTest.Traversals.class,
ExplainTest.Traversals.class,
GroupTest.Traversals.class,
GroupCountTest.Traversals.class,
InjectTest.Traversals.class,
SackTest.Traversals.class,
SideEffectCapTest.Traversals.class,
SideEffectTest.Traversals.class,
StoreTest.Traversals.class,
SubgraphTest.Traversals.class,
TreeTest.Traversals.class,
// compliance
ComplexTest.Traversals.class,
CoreTraversalTest.class,
TraversalInterruptionTest.class,
// creations
TranslationStrategyProcessTest.class,
// decorations
ElementIdStrategyProcessTest.class,
EventStrategyProcessTest.class,
ReadOnlyStrategyProcessTest.class,
PartitionStrategyProcessTest.class,
SubgraphStrategyProcessTest.class,
// optimizations
IncidentToAdjacentStrategyProcessTest.class,
EarlyLimitStrategyProcessTest.class
};
/**
* A list of the minimum set of base tests that
* Gremlin flavors should implement to be compliant with Gremlin.
*/
private static final Class<?>[] TESTS_TO_ENFORCE = new Class<?>[]{
// branch
BranchTest.class,
ChooseTest.class,
OptionalTest.class,
LocalTest.class,
RepeatTest.class,
UnionTest.class,
// filter
AndTest.class,
CoinTest.class,
CyclicPathTest.class,
DedupTest.class,
DropTest.class,
FilterTest.class,
HasTest.class,
IsTest.class,
OrTest.class,
RangeTest.class,
SampleTest.class,
SimplePathTest.class,
TailTest.class,
WhereTest.class,
// map
AddEdgeTest.class,
AddVertexTest.class,
CoalesceTest.class,
ConstantTest.class,
CountTest.class,
FlatMapTest.class,
FoldTest.class,
LoopsTest.class,
IndexTest.class,
MapTest.class,
MatchTest.class,
MathTest.class,
MaxTest.class,
MeanTest.class,
MinTest.class,
SumTest.class,
OrderTest.class,
PathTest.class,
PropertiesTest.class,
ProfileTest.class,
ProjectTest.class,
SelectTest.class,
VertexTest.class,
UnfoldTest.class,
ValueMapTest.class,
// sideEffect
AggregateTest.class,
GroupTest.class,
GroupCountTest.class,
InjectTest.class,
SackTest.class,
SideEffectCapTest.class,
SideEffectTest.class,
StoreTest.class,
SubgraphTest.class,
TreeTest.class
};
public ProcessBasicSuite(final Class<?> klass,
final RunnerBuilder builder) throws InitializationError {
super(klass, builder, ALL_TESTS, TESTS_TO_ENFORCE, true,
TraversalEngine.Type.STANDARD);
RegisterUtil.registerBackends();
}
public ProcessBasicSuite(final Class<?> klass, final RunnerBuilder builder,
final Class<?>[] testsToExecute) throws InitializationError {
super(klass, builder, testsToExecute, TESTS_TO_ENFORCE, true,
TraversalEngine.Type.STANDARD);
RegisterUtil.registerBackends();
}
@Override
protected Statement withAfterClasses(final Statement statement) {
Statement wrappedStatement = new Statement() {
@Override
public void evaluate() throws Throwable {
statement.evaluate();
GraphProvider gp = GraphManager.setGraphProvider(null);
((TestGraphProvider) gp).clear();
GraphManager.setGraphProvider(gp);
}
};
return super.withAfterClasses(wrappedStatement);
}
}