welcome and thanks for the questions.

>  Q1. Is this WebSocket based protocol specified somewhere? It includes
questions regarding Gremlin query and response serialization. I would like
to follow the official spec in order to implement the same protocol.

The protocol is documented here:

https://tinkerpop.apache.org/docs/3.4.9/dev/provider/#_graph_driver_provider_requirements

>  Is there an official test suite/kit what could be put in place of the
client side (the one with nodejs app) and it would test whether a new
server side implementation really supports the same communication protocol
and can speak Gremlin (maybe not all operators are expected to work or
there are levels of support, etc).

Most providers use our test suite directly against their graph to validate
that Gremlin behaves properly:

https://tinkerpop.apache.org/docs/3.4.9/dev/provider/#validating-with-gremlin-test

but I suppose that does not work well if you have a go backend. the suite
is largely designed to interoperate with the JVM only. That said, we've
been making progress toward breaking from that dependency with our GLV test
suite which is basically the pure Java test suite ported to cucumber:

https://github.com/apache/tinkerpop/tree/3.4-dev/gremlin-test/features

You would have to write your own test infrastructure to consume them but at
least the Gremlin and the test expectations are all there. I suppose that
is only one part of the issue though as it focuses more on more on Gremlin
processing and less on intricacies of driver interactions at the protocol
level. i've had it in my mind to somehow re-adjust the whole suite around
cucumber and to make it flexible enough to handle the current use cases we
have plus the sort of one you're bringing up but it's not an easy quick
sort of thing to work on.

happy to try to answer other questions you might have as you try to build
your new graph and to discuss possible ways to make the suite better and
more open verify the different ways TinkerPop is implemented.


On Thu, Jan 14, 2021 at 9:30 AM floodway floodway <[email protected]>
wrote:

> Hello,
>
> For example, currently I have the following situation:
>
> [nodejs app with gremlin npm module]  ---<talks Gremlin via WebSocket
> to>--- [official JVM based gremlin server with TinkerGraph]
>
> And what if I would like to create a custom part of the server side, from
> scratch, i.e. no parts of existing TinkerPop project are used at all, e.g.
> a Golang based project. In order to get the following:
>
> [nodejs app with gremlin npm module]  ---<talks Gremlin via WebSocket
> to>--- [another graph db impl]
>
> So, I will be able to simply replace it with another implementation.
>
> It looks to be possible, but I have several organisational questions.
>
> Q1. Is this WebSocket based protocol specified somewhere? It includes
> questions regarding Gremlin query and response serialization. I would like
> to follow the official spec in order to implement the same protocol.
>
> Q2. Is there an official test suite/kit what could be put in place of the
> client side (the one with nodejs app) and it would test whether a new
> server side implementation really supports the same communication protocol
> and can speak Gremlin (maybe not all operators are expected to work or
> there are levels of support, etc).
>
> Thanks in advance for any advice.
>

Reply via email to