Repository: tinkerpop
Updated Branches:
refs/heads/TINKERPOP-1538-tp32 [created] 3bc691119
Merge branch 'TINKERPOP-1538' into TINKERPOP-1538-tp32
Conflicts:
gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerSessionIntegrateTest.java
gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/8818db47
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/8818db47
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/8818db47
Branch: refs/heads/TINKERPOP-1538-tp32
Commit: 8818db4754dc6bbac7dc0f5a7ac4f40ab1386341
Parents: fa9f898 569753e
Author: Stephen Mallette <[email protected]>
Authored: Sun Nov 13 16:54:32 2016 -0500
Committer: Stephen Mallette <[email protected]>
Committed: Sun Nov 13 16:54:32 2016 -0500
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../src/main/java/Service.java | 2 +-
.../src/test/java/ServiceTest.java | 2 +-
.../src/test/resources/gremlin-server.yaml | 2 +-
.../plugin/gremlin-server-integration.yaml | 2 +-
.../gremlin/console/groovy/plugin/remote.yaml | 2 +-
.../AbstractGremlinServerPerformanceTest.java | 2 +-
.../server/GremlinAdditionPerformanceTest.java | 2 +-
.../server/GremlinDriverIntegrateTest.java | 92 ++++++++++----------
.../server/GremlinResultSetIntegrateTest.java | 2 +-
.../server/GremlinServerAuthIntegrateTest.java | 24 ++---
.../GremlinServerAuthOldIntegrateTest.java | 25 +++---
.../server/GremlinServerHttpIntegrateTest.java | 92 ++++++++++----------
.../server/GremlinServerIntegrateTest.java | 66 +++++++-------
.../GremlinServerSessionIntegrateTest.java | 17 ++--
.../server/GremlinTraversalPerformanceTest.java | 2 +-
.../gremlin/server/TestClientFactory.java | 60 +++++++++++++
.../server/gremlin-server-integration.yaml | 2 +-
.../server/gremlin-server-performance.yaml | 2 +-
19 files changed, 234 insertions(+), 165 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/CHANGELOG.asciidoc
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/gremlin-console/src/test/resources/org/apache/tinkerpop/gremlin/console/groovy/plugin/gremlin-server-integration.yaml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/AbstractGremlinServerPerformanceTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinAdditionPerformanceTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
----------------------------------------------------------------------
diff --cc
gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
index d8aff4a,685b7d4..832ae7f
---
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
+++
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
@@@ -175,38 -133,8 +175,38 @@@ public class GremlinDriverIntegrateTes
}
@Test
+ public void shouldKeepAliveForWebSockets() throws Exception {
+ // keep the connection pool size at 1 to remove the possibility of
lots of connections trying to ping which will
+ // complicate the assertion logic
+ final Cluster cluster = Cluster.build().
+ minConnectionPoolSize(1).
+ maxConnectionPoolSize(1).
+ keepAliveInterval(1000).create();
+ final Client client = cluster.connect();
+
+ // fire up lots of requests so as to schedule/deschedule lots of ping
jobs
+ for (int ix = 0; ix < 500; ix++) {
+ assertEquals(2, client.submit("1+1").all().get().get(0).getInt());
+ }
+
+ // don't send any messages for a bit so that the driver pings in the
background
+ Thread.sleep(3000);
+
+ // make sure no bonus messages sorta fire off once we get back to
sending requests
+ for (int ix = 0; ix < 500; ix++) {
+ assertEquals(2, client.submit("1+1").all().get().get(0).getInt());
+ }
+
+ // there really shouldn't be more than 3 of these sent. should
definitely be at least one though
+ final long messages =
recordingAppender.getMessages().stream().filter(m -> m.contains("Received
response from keep-alive request")).count();
+ assertThat(messages, allOf(greaterThan(0L), lessThanOrEqualTo(3L)));
+
+ cluster.close();
+ }
+
+ @Test
public void shouldEventuallySucceedAfterChannelLevelError() throws
Exception {
- final Cluster cluster = Cluster.build().addContactPoint("localhost")
+ final Cluster cluster = TestClientFactory.build()
.reconnectIntialDelay(500)
.reconnectInterval(500)
.maxContentLength(1024).create();
@@@ -678,8 -606,8 +678,8 @@@
}
@Test
- public void shouldWorkWithGraphSONSerialization() throws Exception {
+ public void shouldWorkWithGraphSONV1Serialization() throws Exception {
- final Cluster cluster =
Cluster.build("localhost").serializer(Serializers.GRAPHSON_V1D0).create();
+ final Cluster cluster =
TestClientFactory.build().serializer(Serializers.GRAPHSON_V1D0).create();
final Client client = cluster.connect();
final List<Result> r =
client.submit("TinkerFactory.createModern().traversal().V(1)").all().join();
@@@ -714,43 -642,9 +714,43 @@@
}
@Test
+ public void shouldWorkWithGraphSONV2Serialization() throws Exception {
+ final Cluster cluster =
Cluster.build("localhost").serializer(Serializers.GRAPHSON_V2D0).create();
+ final Client client = cluster.connect();
+
+ final List<Result> r =
client.submit("TinkerFactory.createModern().traversal().V(1)").all().join();
+ assertEquals(1, r.size());
+
+ final Vertex v = r.get(0).get(DetachedVertex.class);
+ assertEquals(1, v.id());
+ assertEquals("person", v.label());
+
+ assertEquals(2, IteratorUtils.count(v.properties()));
+ assertEquals("marko", v.value("name"));
+ assertEquals(29, Integer.parseInt(v.value("age").toString()));
+
+ cluster.close();
+ }
+
+ @Test
+ public void shouldWorkWithGraphSONExtendedV2Serialization() throws
Exception {
+ final Cluster cluster =
Cluster.build("localhost").serializer(Serializers.GRAPHSON_V2D0).create();
+ final Client client = cluster.connect();
+
+ final Instant now = Instant.now();
+ final List<Result> r =
client.submit("java.time.Instant.ofEpochMilli(" + now.toEpochMilli() +
")").all().join();
+ assertEquals(1, r.size());
+
+ final Instant then = r.get(0).get(Instant.class);
+ assertEquals(now, then);
+
+ cluster.close();
+ }
+
+ @Test
@org.junit.Ignore("Can't seem to make this test pass consistently")
public void shouldHandleRequestSentThatNeverReturns() throws Exception {
- final Cluster cluster = Cluster.open();
+ final Cluster cluster = TestClientFactory.open();
final Client client = cluster.connect();
final ResultSet results = client.submit("Thread.sleep(10000);
'should-not-ever-get-back-coz-we-killed-the-server'");
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
----------------------------------------------------------------------
diff --cc
gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
index 3c1efef,b0b1e54..9916f73
---
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
+++
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
@@@ -79,11 -73,11 +79,11 @@@ public class GremlinResultSetIntegrateT
public void beforeTest() {
final MessageSerializer serializer = new GryoMessageSerializerV1d0();
final Map<String,Object> c = new HashMap<>();
- c.put("ioRegistries",
Arrays.asList(TinkerIoRegistry.class.getName()));
- c.put("custom",
Arrays.asList("groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer"));
+ c.put("ioRegistries",
Collections.singletonList(TinkerIoRegistry.class.getName()));
+ c.put("custom",
Collections.singletonList("groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer"));
serializer.configure(c, null);
- cluster = Cluster.build().serializer(serializer).create();
+ cluster = TestClientFactory.build().serializer(serializer).create();
client = cluster.connect();
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --cc
gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index 15db36d,5ff3adf..78c5b2a
---
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@@ -40,10 -38,8 +40,9 @@@ import org.apache.tinkerpop.gremlin.dri
import org.apache.tinkerpop.gremlin.driver.ser.Serializers;
import org.apache.tinkerpop.gremlin.driver.simple.NioClient;
import org.apache.tinkerpop.gremlin.driver.simple.SimpleClient;
- import org.apache.tinkerpop.gremlin.driver.simple.WebSocketClient;
import org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine;
import
org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.CompileStaticCustomizerProvider;
+import
org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.ConfigurationCustomizerProvider;
import
org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.InterpreterModeCustomizerProvider;
import
org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.SimpleSandboxExtension;
import
org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptCustomizerProvider;
@@@ -163,7 -136,23 +162,10 @@@ public class GremlinServerIntegrateTes
settings.ssl.overrideSslContext(createServerSslContext());
break;
case "shouldStartWithDefaultSettings":
- return new Settings();
+ // test with defaults exception for port because we want to
keep testing off of 8182
+ final Settings defaultSettings = new Settings();
+ defaultSettings.port = TestClientFactory.PORT;
+ return settings;
- case "shouldHaveTheSessionTimeout":
- settings.processors.clear();
- final Settings.ProcessorSettings processorSettings = new
Settings.ProcessorSettings();
- processorSettings.className =
SessionOpProcessor.class.getCanonicalName();
- processorSettings.config = new HashMap<>();
-
processorSettings.config.put(SessionOpProcessor.CONFIG_SESSION_TIMEOUT, 3000L);
- settings.processors.add(processorSettings);
- break;
- case
"shouldExecuteInSessionAndSessionlessWithoutOpeningTransactionWithSingleClient":
- case "shouldExecuteInSessionWithTransactionManagement":
- deleteDirectory(new File("/tmp/neo4j"));
- settings.graphs.put("graph", "conf/neo4j-empty.properties");
- break;
case "shouldUseSimpleSandbox":
settings.scriptEngines.get("gremlin-groovy").config =
getScriptEngineConfForSimpleSandbox();
break;
@@@ -221,33 -207,9 +223,33 @@@
return scriptEngineConf;
}
+ private static Map<String, Object> getScriptEngineConfForBaseScript() {
+ final Map<String,Object> scriptEngineConf = new HashMap<>();
+ final Map<String,Object> compilerCustomizerProviderConf = new
HashMap<>();
+ final List<Object> keyValues = new ArrayList<>();
+
+ final Map<String,Object> properties = new HashMap<>();
+ properties.put("ScriptBaseClass",
BaseScriptForTesting.class.getName());
+ keyValues.add(properties);
+
+
compilerCustomizerProviderConf.put(ConfigurationCustomizerProvider.class.getName(),
keyValues);
+ scriptEngineConf.put("compilerCustomizerProviders",
compilerCustomizerProviderConf);
+ return scriptEngineConf;
+ }
+
+ @Test
+ public void shouldUseBaseScript() throws Exception {
+ final Cluster cluster = Cluster.open();
+ final Client client = cluster.connect(name.getMethodName());
+
+ assertEquals("hello, stephen",
client.submit("hello('stephen')").all().get().get(0).getString());
+
+ cluster.close();
+ }
+
@Test
public void shouldUseInterpreterMode() throws Exception {
- final Cluster cluster = Cluster.open();
+ final Cluster cluster = TestClientFactory.open();
final Client client = cluster.connect(name.getMethodName());
client.submit("def subtractAway(x,y){x-y};[]").all().get();
@@@ -449,10 -411,10 +451,10 @@@
if (!latch.await(3000, TimeUnit.MILLISECONDS))
fail("Request should have returned error, but instead timed
out");
- assertTrue(pass.get());
+ assertThat(pass.get(), is(true));
}
- try (SimpleClient client = new WebSocketClient()) {
+ try (SimpleClient client = TestClientFactory.createWebSocketClient())
{
final Map<String, Object> bindings = new HashMap<>();
bindings.put("id", "123");
final RequestMessage request =
RequestMessage.build(Tokens.OPS_EVAL)
@@@ -619,14 -581,10 +621,14 @@@
}
}
+ /**
+ * @deprecated As of release 3.2.1, replaced by tests covering {@link
Settings#scriptEvaluationTimeout}.
+ */
@Test
@SuppressWarnings("unchecked")
+ @Deprecated
public void shouldReceiveFailureTimeOutOnTotalSerialization() throws
Exception {
- try (SimpleClient client = new WebSocketClient()){
+ try (SimpleClient client = TestClientFactory.createWebSocketClient()){
final List<ResponseMessage> responses =
client.submit("(0..<100000)");
// the last message should contain the error
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerSessionIntegrateTest.java
----------------------------------------------------------------------
diff --cc
gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerSessionIntegrateTest.java
index cc0cb68,1c27c51..da6f5d2
---
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerSessionIntegrateTest.java
+++
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerSessionIntegrateTest.java
@@@ -125,10 -113,10 +124,10 @@@ public class GremlinServerSessionIntegr
// basically, we need one to submit the long run job and one to do
the close operation that will cancel the
// long run job. it is probably possible to do this with some
low-level message manipulation but that's
// probably not necessary
- final Cluster cluster1 = Cluster.build().create();
+ final Cluster cluster1 = TestClientFactory.open();
final Client client1 = cluster1.connect(name.getMethodName());
- client1.submit("1+1").all().join();
+ client1.submit("graph.addVertex()").all().join();
- final Cluster cluster2 = Cluster.build().create();
+ final Cluster cluster2 = TestClientFactory.open();
final Client client2 = cluster2.connect(name.getMethodName());
client2.submit("1+1").all().join();
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinTraversalPerformanceTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --cc
gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
index 3d5c154,cee377d..d0f7b32
---
a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
+++
b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
@@@ -16,8 -16,11 +16,8 @@@
# under the License.
host: localhost
- port: 8182
+ port: 45940
-threadPoolWorker: 1
-gremlinPool: 8
scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
graphs: {
graph: conf/tinkergraph-empty.properties}
plugins:
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8818db47/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
----------------------------------------------------------------------
diff --cc
gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
index db36aed,03be730..cda4f19
---
a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
+++
b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
@@@ -16,8 -16,11 +16,8 @@@
# under the License.
host: localhost
- port: 8182
+ port: 45940
-threadPoolWorker: 1
-gremlinPool: 8
scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
graphs: {
graph: conf/tinkergraph-empty.properties}
plugins: