This is an automated email from the ASF dual-hosted git repository. colegreer pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 08c0fab82834b305ac276d0f4d768d08aeb7c8b8 Merge: 3958d5f9a5 6ade7674b2 Author: Cole-Greer <[email protected]> AuthorDate: Mon Mar 24 17:32:09 2025 -0700 Merge branch '3.8-dev' CHANGELOG.asciidoc | 1 + docs/src/upgrade/release-3.8.x.asciidoc | 5 ++++ .../language/grammar/GenericLiteralVisitor.java | 2 +- .../grammar/GeneralLiteralVisitorTest.java | 30 ++++++++++++++-------- .../grammar/TraversalPredicateVisitorTest.java | 4 +-- .../gremlin/server/GremlinServerIntegrateTest.java | 23 ++++++++++++++--- 6 files changed, 47 insertions(+), 18 deletions(-) diff --cc gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java index 7c9a342340,5424e9faa6..bf2267ffef --- 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 @@@ -18,16 -18,25 +18,17 @@@ */ package org.apache.tinkerpop.gremlin.server; -import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.util.AttributeKey; + import java.math.BigDecimal; import nl.altindag.log.LogCaptor; import org.apache.commons.configuration2.BaseConfiguration; import org.apache.commons.configuration2.Configuration; --import org.apache.commons.lang3.RandomStringUtils; - import org.apache.commons.lang3.StringUtils; import org.apache.tinkerpop.gremlin.driver.RequestOptions; + import org.apache.tinkerpop.gremlin.server.channel.HttpTestChannelizer; + import org.apache.tinkerpop.gremlin.server.channel.TestChannelizer; -import org.apache.tinkerpop.gremlin.server.channel.UnifiedChannelizer; -import org.apache.tinkerpop.gremlin.server.channel.UnifiedTestChannelizer; -import org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer; -import org.apache.tinkerpop.gremlin.server.channel.WebSocketTestChannelizer; -import org.apache.tinkerpop.gremlin.server.channel.WsAndHttpTestChannelizer; import org.apache.tinkerpop.gremlin.structure.VertexProperty; -import org.apache.tinkerpop.gremlin.util.ExceptionHelper; import org.apache.tinkerpop.gremlin.TestHelper; import org.apache.tinkerpop.gremlin.driver.Client; import org.apache.tinkerpop.gremlin.driver.Cluster; @@@ -44,10 -58,13 +45,8 @@@ import org.apache.tinkerpop.gremlin.jsr import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; - import org.apache.tinkerpop.gremlin.server.channel.HttpTestChannelizer; - import org.apache.tinkerpop.gremlin.server.channel.TestChannelizer; -import org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor; -import org.apache.tinkerpop.gremlin.server.op.standard.StandardOpProcessor; -import org.apache.tinkerpop.gremlin.server.handler.WsUserAgentHandler; import org.apache.tinkerpop.gremlin.structure.Graph; +import org.apache.tinkerpop.gremlin.structure.RemoteGraph; import org.apache.tinkerpop.gremlin.structure.T; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.Edge; @@@ -1026,51 -1404,19 +1025,67 @@@ public class GremlinServerIntegrateTes assertFalse(r2_tokens.properties().hasNext()); } + @Test + public void shouldBulkResultsWithClusterOptions() { + final Cluster cluster = TestClientFactory.build().bulkResults(true).create(); + try { + final GraphTraversalSource g = traversal().with(DriverRemoteConnection.using(cluster)); + final List resultBulked = g.with("language", "gremlin-lang").inject(1, 2, 3, 2, 1).toList(); + assertTrue(cluster.isBulkResultsEnabled()); + assertEquals(5, resultBulked.size()); + + // the result itself should not be affected by bulking through the wire + final List result = g.with("language", "gremlin-lang").with("bulkResults", false).inject(1, 2, 3, 2, 1).toList(); + assertEquals(5, result.size()); + + assertTrue(cluster.isBulkResultsEnabled()); + + // the result itself should not be affected by bulking through the wire + final List resultBulked2 = g.with("language", "gremlin-lang").with("bulkResults", true).inject(1, 2, 3, 2, 1).toList(); + assertEquals(5, resultBulked2.size()); + + } finally { + cluster.close(); + } + } + + @Test + public void shouldBulkResultsWithRequestOptions() { + final Cluster cluster = TestClientFactory.build().create(); + try { + final GraphTraversalSource g = traversal().with(DriverRemoteConnection.using(cluster)); + final List result = g.inject(1, 2, 3, 2, 1).toList(); + assertEquals(5, result.size()); + assertFalse(cluster.isBulkResultsEnabled()); + + // the result itself should not be affected by bulking through the wire + final List resultBulked = g.with("language", "gremlin-lang").with("bulkResults", true).inject(1, 2, 3, 2, 1).toList(); + assertEquals(5, resultBulked.size()); + + assertFalse(cluster.isBulkResultsEnabled()); + + // the result itself should not be affected by bulking through the wire + final List result2 = g.with("language", "gremlin-lang").with("bulkResults", false).inject(1, 2, 3, 2, 1).toList(); + assertEquals(5, result2.size()); + + } finally { + cluster.close(); + } + } ++ + @Test + public void shouldParseFloatLiteralWithoutSuffixDependingOnLanguage() { + final Cluster cluster = TestClientFactory.build().create(); + final Client client = cluster.connect(); + + // gremlin-lang defaults to double + final RequestOptions gremlinLang = new RequestOptions.Builder().language("gremlin-lang").create(); + assertEquals(1.0d, (Double) client.submit("g.inject(1.0)", gremlinLang).one().getObject(), 0.0000001); + assertEquals(-123.456d, (Double) client.submit("g.inject(-123.456)", gremlinLang).one().getObject(), 0.0000001); + + // gremlin-groovy defaults to big decimal + RequestOptions gremlinGroovy = new RequestOptions.Builder().language("gremlin-groovy").create(); + assertEquals(new BigDecimal("1.0"), client.submit("g.inject(1.0)", gremlinGroovy).one().getObject()); + assertEquals(new BigDecimal("-123.456"), client.submit("g.inject(-123.456)", gremlinGroovy).one().getObject()); + } }
