I've been away for a few days on vacation, but before I left, I made some
pretty decent progress on the remaining tests and I'm finding less and less
of my time being focused on the test logic and more and more of it on the
translation of the tests themselves. I'm starting to feel comfortable that
most of the remaining pain is in test translation which means I could
probably issue the PR for what I have sooner than later. I'll probably just
make sure that I have at least a "good enough" representation of tests for
each step and then issue the PR. That will allow TINKERPOP-1827 to proceed
more easily and I can work more at more relaxed pace on migrating all the
tests. Please let me know if there are any concerns with that approach.

On Tue, Nov 7, 2017 at 5:02 AM, Jorge Bay Gondra <jorgebaygon...@gmail.com>
wrote:

> I've created TINKERPOP-1827 to track the progress of the test suite runner
> for Gremlin .NET.
>
> I have a working gherkin-based runner that executes the steps (parsing
> gremlin groovy / parameters / results) as defined in the TINKERPOP-1784 WIP
> branch.
>
> https://github.com/jorgebay/tinkerpop/commits/gherkin-cs-runner
>
> I'll wait for TINKERPOP-1784 to be resolved in order the follow the last
> changes and submit a pull request for it.
>
> On Tue, Oct 31, 2017 at 11:09 AM, Jorge Bay Gondra <
> jorgebaygon...@gmail.com
> > wrote:
>
> > Ok.
> > Going back to my initial comment regarding enums: don't mind, I've
> > included the possibility to use enums on the C# parser.
> >
> > On Mon, Oct 30, 2017 at 7:15 PM, Stephen Mallette <spmalle...@gmail.com>
> > wrote:
> >
> >> I guess there wouldn't be a problem with that, though having it the way
> it
> >> works now was a nice check to ensure that the ScriptEngine was
> configured
> >> properly. I guess that shouldn't be the focus on this body of tests
> >> though.
> >> We should be more concerned that the elements of the Gremlin language
> >> actually work.
> >>
> >> On Thu, Oct 26, 2017 at 8:47 AM, Jorge Bay Gondra <
> >> jorgebaygon...@gmail.com>
> >> wrote:
> >>
> >> > I see that for most languages using bytecode to native language
> >> translator
> >> > would be the easiest solution. In the case of the JavaScript GLV, it
> >> would
> >> > be fairly straightforward to implement (and I plan to do so!).
> >> > In the case of C#, being more strict regarding typing than java, it
> >> would
> >> > be an incomplete solution. For example:
> >> >
> >> > Consider the following traversal in Java: g.V().values("age")
> >> > The type parameter for values() method is inferred at runtime and
> things
> >> > "just works" thanks to type erasure.
> >> >
> >> > In the case of C#, it should be written as  g.V().Values<int>("age") ,
> >> with
> >> > the type parameter to specify which type of traverser are you
> expecting
> >> at
> >> > a compile time.
> >> >
> >> > That's why it wont be possible to make a generic translator from
> >> bytecode
> >> > to C# code, without understanding which generic types are expected.
> >> >
> >> > In the case of C#, I was going for a translator on the C# side that
> >> > tokenizes the gremlin traversal. Once the traversal is tokenized, in
> the
> >> > moment of invoking the methods (with reflection), it can be made aware
> >> of
> >> > the modern graph data (with datatypes!), ie: For method Values<>(), if
> >> the
> >> > property key is "age" -> use int as generic type parameter.
> >> >
> >> > On Thu, Oct 26, 2017 at 2:12 PM, Stephen Mallette <
> spmalle...@gmail.com
> >> >
> >> > wrote:
> >> >
> >> > > I can't help thinking that perhaps non-JVM languages need to
> leverage
> >> > > bytecode to make traversal building easier. We already have an
> >> > established
> >> > > pattern for converting bytecode into Traversals and while it is
> >> different
> >> > > for each language, it's generally governed by the Translator
> >> interface.
> >> > > Note that we already do this for Java, Groovy, and Python and the
> code
> >> > > isn't too crazy - just 200 lines or so:
> >> > >
> >> > > https://github.com/apache/tinkerpop/blob/master/gremlin-
> >> > > core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/
> >> > JavaTranslator.java
> >> > > https://github.com/apache/tinkerpop/blob/master/gremlin-
> >> > > groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/
> >> > > GroovyTranslator.java
> >> > > https://github.com/apache/tinkerpop/blob/master/gremlin-
> >> > > python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/
> >> > > PythonTranslator.java
> >> > >
> >> > > I think that non-JVM languages could send the Gremlin string from
> the
> >> > test
> >> > > to Gremlin Server as a script first and return the bytecode as JSON.
> >> Then
> >> > > it could use a "Translator" to then parse it into it's native
> >> language.
> >> > > Shouldn't we just build a CSharpTranslator similar to these? does
> that
> >> > make
> >> > > sense?
> >> > >
> >> > >
> >> > > On Wed, Oct 25, 2017 at 11:11 AM, Jorge Bay Gondra <
> >> > > jorgebaygon...@gmail.com
> >> > > > wrote:
> >> > >
> >> > > > I've been looking over the current test scenarios on the
> >> TINKERPOP-1784
> >> > > > branch, with the C# GLV test suite in mind, and oh man that's an
> >> > > impressive
> >> > > > amount of scenarios!
> >> > > >
> >> > > > So far, I have a suggestion.
> >> > > >
> >> > > > Instead of
> >> > > >
> >> > > >   Scenario: g_V_fold_countXlocalX
> >> > > >     Given the modern graph
> >> > > >     And the traversal of
> >> > > >       """
> >> > > >       g.V().fold().count(Scope.local)
> >> > > >       """
> >> > > >
> >> > > > We could use
> >> > > >
> >> > > >   Scenario: g_V_fold_countXlocalX
> >> > > >     Given the modern graph
> >> > > >     And parameter 1 being an enum
> >> > > >       """
> >> > > >       Scope.local
> >> > > >       """
> >> > > >     And the traversal of
> >> > > >       """
> >> > > >       g.V().fold().count(param1)
> >> > > >       """
> >> > > >
> >> > > > That way we can exclude enums from possible parameter values,
> >> narrowing
> >> > > > down the amount of types of parameters allowed, ie: const numeric,
> >> > const
> >> > > > strings (wrapped in double quotes), traversals (starting with
> `__`)
> >> ,
> >> > > ...,
> >> > > > making parsing the traversal a little easier.
> >> > > >
> >> > > >
> >> > > > On Thu, Oct 12, 2017 at 8:54 PM, Stephen Mallette <
> >> > spmalle...@gmail.com>
> >> > > > wrote:
> >> > > >
> >> > > > > Just a quick update on this item - it continues........
> >> > > > >
> >> > > > > Went down a bad path earlier in the week and ended up shelving a
> >> lot
> >> > of
> >> > > > > work - ended up just coded into a corner. Anyway, I've not
> really
> >> > > changed
> >> > > > > much in the implementation, but I've still not reached a point
> >> where
> >> > > the
> >> > > > > addition of a new .feature files comes without meeting some new
> >> type
> >> > of
> >> > > > > assertion that has to be dealt with. This ends up slowing down
> >> > progress
> >> > > > on
> >> > > > > porting over the tests. Please feel free to peruse the latest
> >> changes
> >> > > on
> >> > > > > the branch and let me know if there's any feedback.
> >> > > > >
> >> > > > >
> >> > > > >
> >> > > > > On Fri, Sep 29, 2017 at 12:05 PM, Stephen Mallette <
> >> > > spmalle...@gmail.com
> >> > > > >
> >> > > > > wrote:
> >> > > > >
> >> > > > > > I did some pretty heavy refactoring to the python test logic
> >> > > (altered a
> >> > > > > > bit by some revision of the gherkin feature file language) and
> >> the
> >> > > > result
> >> > > > > > is a much more simplified test logic file:
> >> > > > > >
> >> > > > > > https://github.com/apache/tinkerpop/blob/TINKERPOP-1784/
> >> > > > > > gremlin-python/src/main/jython/radish/feature_steps.py
> >> > > > > >
> >> > > > > > About 120 lines of code (down from about 170). If you include
> >> the
> >> > > test
> >> > > > > > logic "setup" file:
> >> > > > > >
> >> > > > > > https://github.com/apache/tinkerpop/blob/TINKERPOP-1784/
> >> > > > > > gremlin-python/src/main/jython/radish/terrain.py
> >> > > > > >
> >> > > > > > we end up with about 250 lines of test logic total (take out
> the
> >> > > > > > comment/license and we're probably well under 200 total - not
> >> too
> >> > > > bad). I
> >> > > > > > think I'm closing in on the end to infrastructure building
> here
> >> so
> >> > > the
> >> > > > > > basic framework is getting close to final at this point I
> >> believe.
> >> > > I'll
> >> > > > > > keep scanning the tests looking for other types of assertions
> >> that
> >> > > I've
> >> > > > > not
> >> > > > > > yet covered, but it's getting pretty solid I think. Hopefully,
> >> > there
> >> > > > > won't
> >> > > > > > need to be too many more lines of code needed to express the
> >> test
> >> > > logic
> >> > > > > as
> >> > > > > > I like how things are looking right now.
> >> > > > > >
> >> > > > > >
> >> > > > > >
> >> > > > > >
> >> > > > > > On Thu, Sep 28, 2017 at 8:02 AM, Jorge Bay Gondra <
> >> > > > > > jorgebaygon...@gmail.com> wrote:
> >> > > > > >
> >> > > > > >> Great progress! I like how you avoided using ids, even if it
> >> adds
> >> > > some
> >> > > > > >> complexity to the transformation required.
> >> > > > > >>
> >> > > > > >> The Python step definitions are still quite simple, I think
> it
> >> > would
> >> > > > be
> >> > > > > >> mostly the same on the rest of the languages.
> >> > > > > >>
> >> > > > > >> On Thu, Sep 28, 2017 at 1:45 PM, Stephen Mallette <
> >> > > > spmalle...@gmail.com
> >> > > > > >
> >> > > > > >> wrote:
> >> > > > > >>
> >> > > > > >> > Just another update on progress with the test suite. The
> >> > language
> >> > > of
> >> > > > > the
> >> > > > > >> > .feature files is getting slightly more complex as I try to
> >> > > > translate
> >> > > > > >> more
> >> > > > > >> > and more of our Java process suite tests into the language
> of
> >> > the
> >> > > > > >> gherkin
> >> > > > > >> > files. You can see here where I've added the ability to
> >> include
> >> > > > > >> parameters:
> >> > > > > >> >
> >> > > > > >> > https://github.com/apache/tinkerpop/blob/TINKERPOP-1784/
> >> > > > > >> > gremlin-test/features/filter/Has.feature#L33
> >> > > > > >> >
> >> > > > > >> > I also came up with a method of asserting edges (didn't
> want
> >> to
> >> > > rely
> >> > > > > on
> >> > > > > >> ids
> >> > > > > >> > as it makes the gherkin harder to read, plus i didn't want
> to
> >> > > assume
> >> > > > > >> > TinkerGraph identifiers in case these tests were every used
> >> with
> >> > > > some
> >> > > > > >> other
> >> > > > > >> > graph database that didn't use longs):
> >> > > > > >> >
> >> > > > > >> > https://github.com/apache/tinkerpop/blob/TINKERPOP-1784/
> >> > > > > >> > gremlin-test/features/map/Vertex.feature#L105-L111
> >> > > > > >> >
> >> > > > > >> > for all those additions (and others) the logic required by
> >> the
> >> > GLV
> >> > > > to
> >> > > > > >> > process these tests has stayed surprisingly simple:
> >> > > > > >> >
> >> > > > > >> > https://github.com/apache/tinkerpop/blob/TINKERPOP-1784/
> >> > > > > >> > gremlin-python/src/main/jython/radish/feature_steps.py
> >> > > > > >> >
> >> > > > > >> > There's a fair bit of regex/string manipulation involved
> >> there,
> >> > > but
> >> > > > > it's
> >> > > > > >> > processing strings from the feature file so that's the
> >> nature of
> >> > > it
> >> > > > I
> >> > > > > >> > suppose. I think I'm of the mind that I want to port all of
> >> the
> >> > > > tests
> >> > > > > to
> >> > > > > >> > feature files, so I wrote this unit test to help validate
> >> that
> >> > > none
> >> > > > > were
> >> > > > > >> > missed:
> >> > > > > >> >
> >> > > > > >> > https://github.com/apache/tinkerpop/blob/TINKERPOP-1784/
> >> > > > > >> > gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/
> >> > > > > >> > structure/FeatureCoverageTest.java
> >> > > > > >> >
> >> > > > > >> > I don't know that we have to get to 100% porting right
> away,
> >> > but I
> >> > > > > think
> >> > > > > >> > that once we have these gherkin files written they not only
> >> > become
> >> > > > the
> >> > > > > >> > basis for our current GLV testing work, but we might be
> able
> >> to
> >> > > > simply
> >> > > > > >> use
> >> > > > > >> > them for testing the Java stuff as well - that would rid us
> >> of
> >> > > > having
> >> > > > > >> the
> >> > > > > >> > test code duplication. It also sets us up with a portable
> >> body
> >> > of
> >> > > > > tests
> >> > > > > >> > that can be re-used in TinkerPop 4.x.
> >> > > > > >> >
> >> > > > > >> > I'm open to suggestions if anyone has any.
> >> > > > > >> >
> >> > > > > >> > On Mon, Sep 25, 2017 at 11:23 AM, Jorge Bay Gondra <
> >> > > > > >> > jorgebaygon...@gmail.com
> >> > > > > >> > > wrote:
> >> > > > > >> >
> >> > > > > >> > > I was able to build a proof of concept for a
> Gherkin-based
> >> > test
> >> > > > > >> runner in
> >> > > > > >> > > C#, that takes the proposed count and select features
> >> > > > > >> > > <https://github.com/apache/
> tinkerpop/tree/TINKERPOP-1784/
> >> > > > > >> > > gremlin-test/features/map>
> >> > > > > >> > > and runs them using C# step definitions.
> >> > > > > >> > >
> >> > > > > >> > > It uses the Gherkin parser <
> https://github.com/cucumber/g
> >> > > > > >> herkin-dotnet>
> >> > > > > >> > > from
> >> > > > > >> > > cucumber, there isn't a release of the parser with .NET
> >> Core
> >> > > > support
> >> > > > > >> so
> >> > > > > >> > > I've
> >> > > > > >> > > asked them to release one
> >> > > > > >> > > <https://github.com/cucumber/gherkin-dotnet/issues/11>
> >> (there
> >> > > is
> >> > > > no
> >> > > > > >> > > limitation from their source files). If they are not able
> >> to
> >> > > > release
> >> > > > > >> it
> >> > > > > >> > in
> >> > > > > >> > > the next few days, we can implement our own as it should
> be
> >> > > pretty
> >> > > > > >> > straight
> >> > > > > >> > > forward.
> >> > > > > >> > >
> >> > > > > >> > > On Fri, Sep 22, 2017 at 2:23 PM, Stephen Mallette <
> >> > > > > >> spmalle...@gmail.com>
> >> > > > > >> > > wrote:
> >> > > > > >> > >
> >> > > > > >> > > > Thanks for the update. I'm trying to keep the test
> >> language
> >> > as
> >> > > > > >> simple
> >> > > > > >> > as
> >> > > > > >> > > > possible so that we don't need an overly complicated
> test
> >> > > > > >> > implementation.
> >> > > > > >> > > > Hopefully that will help make the .NET approach as easy
> >> as
> >> > > > > possible.
> >> > > > > >> > > >
> >> > > > > >> > > > On Fri, Sep 22, 2017 at 8:20 AM, Jorge Bay Gondra <
> >> > > > > >> > > > jorgebaygon...@gmail.com>
> >> > > > > >> > > > wrote:
> >> > > > > >> > > >
> >> > > > > >> > > > > I've been looking into Gherkin support for .NET:
> >> SpecFlow,
> >> > > the
> >> > > > > >> > cucumber
> >> > > > > >> > > > > implementation for .NET <https://cucumber.io/docs#
> >> > > > > >> > > > cucumber-implementations
> >> > > > > >> > > > > >,
> >> > > > > >> > > > > does not support .NET Core platform (we use .NET Core
> >> > build
> >> > > > > tools
> >> > > > > >> for
> >> > > > > >> > > the
> >> > > > > >> > > > > .NET GLV) and only supports .NET Framework.
> >> > > > > >> > > > >
> >> > > > > >> > > > > From what I can see <https://github.com/techtalk/S
> >> > > > > >> pecFlow/projects/2
> >> > > > > >> > >,
> >> > > > > >> > > > > .NET
> >> > > > > >> > > > > Core support on SpecFlow is coming at a very slow
> pace
> >> and
> >> > > we
> >> > > > > >> > shouldn't
> >> > > > > >> > > > > expect to land any time soon (there were some design
> >> > > decisions
> >> > > > > in
> >> > > > > >> > > > SpecFlow
> >> > > > > >> > > > > library that makes supporting other platforms
> >> non-trivial,
> >> > > > like
> >> > > > > >> > > requiring
> >> > > > > >> > > > > code gen).
> >> > > > > >> > > > >
> >> > > > > >> > > > > The alternative would be to implement our own harness
> >> to
> >> > > > support
> >> > > > > >> it:
> >> > > > > >> > > > from a
> >> > > > > >> > > > > xunit test, look for certain types and parse the
> >> > > annotations,
> >> > > > > and
> >> > > > > >> > > execute
> >> > > > > >> > > > > them using the Gherkin features.
> >> > > > > >> > > > > There is a .NET cross-platform Gherkin parser:
> >> > > > > >> > > > > https://github.com/cucumber/gherkin-dotnet
> >> > > > > >> > > > > I'll continue looking into this option and try to
> >> > understand
> >> > > > the
> >> > > > > >> > effort
> >> > > > > >> > > > > required...
> >> > > > > >> > > > >
> >> > > > > >> > > > > On Tue, Sep 19, 2017 at 6:21 PM, Jorge Bay Gondra <
> >> > > > > >> > > > > jorgebaygon...@gmail.com>
> >> > > > > >> > > > > wrote:
> >> > > > > >> > > > >
> >> > > > > >> > > > > > Nice! Gherkin will make our lives easier with a
> >> growing
> >> > > > number
> >> > > > > >> of
> >> > > > > >> > > GLVs.
> >> > > > > >> > > > > >
> >> > > > > >> > > > > > We should find a way to define the different
> features
> >> > > > > supported
> >> > > > > >> by
> >> > > > > >> > > each
> >> > > > > >> > > > > > GLV, as it's reasonable to have different maturity
> >> > levels
> >> > > > per
> >> > > > > >> GLV
> >> > > > > >> > > (ie:
> >> > > > > >> > > > > > lambdas support, traversal strategy, ...). I don't
> >> know
> >> > if
> >> > > > it
> >> > > > > >> will
> >> > > > > >> > be
> >> > > > > >> > > > > > beneficial to do it in the Gherkin files or within
> >> each
> >> > > GLV
> >> > > > > >> > > > > implementation.
> >> > > > > >> > > > > > Also, we should consider the process of rolling
> out a
> >> > new
> >> > > > > >> method /
> >> > > > > >> > > > class
> >> > > > > >> > > > > > in the java implementation, how that could affect
> >> each
> >> > > GLV.
> >> > > > > >> > > > > >
> >> > > > > >> > > > > > On Thu, Sep 14, 2017 at 11:12 PM, Stephen Mallette
> <
> >> > > > > >> > > > spmalle...@gmail.com
> >> > > > > >> > > > > >
> >> > > > > >> > > > > > wrote:
> >> > > > > >> > > > > >
> >> > > > > >> > > > > >> that's what i meant by "reflection" or as you
> >> suggest
> >> > > > > eval(). I
> >> > > > > >> > > guess
> >> > > > > >> > > > > the
> >> > > > > >> > > > > >> point is that if the language can support some way
> >> of
> >> > > > taking
> >> > > > > >> the
> >> > > > > >> > > > string
> >> > > > > >> > > > > >> value and turning it automatically into a
> traversal
> >> in
> >> > > that
> >> > > > > >> GLVs
> >> > > > > >> > > style
> >> > > > > >> > > > > >> then
> >> > > > > >> > > > > >> we should do that.
> >> > > > > >> > > > > >>
> >> > > > > >> > > > > >> On Thu, Sep 14, 2017 at 4:45 PM, Daniel Kuppitz
> >> > > > > >> <m...@gremlin.guru>
> >> > > > > >> > > > > wrote:
> >> > > > > >> > > > > >>
> >> > > > > >> > > > > >> > For unparameterized queries it can probably be
> as
> >> > easy
> >> > > > as:
> >> > > > > >> > > > > >> >
> >> > > > > >> > > > > >> > @given("the traversal of")
> >> > > > > >> > > > > >> > def translate_traversal(step):
> >> > > > > >> > > > > >> >     g = step.context.g
> >> > > > > >> > > > > >> >     step.context.traversal = eval(step.text)
> >> > > > > >> > > > > >> >
> >> > > > > >> > > > > >> >
> >> > > > > >> > > > > >> > Cheers,
> >> > > > > >> > > > > >> > Daniel
> >> > > > > >> > > > > >> >
> >> > > > > >> > > > > >> >
> >> > > > > >> > > > > >> > On Thu, Sep 14, 2017 at 1:39 PM, Daniel Kuppitz
> >> > > > > >> <m...@gremlin.guru
> >> > > > > >> > >
> >> > > > > >> > > > > >> wrote:
> >> > > > > >> > > > > >> >
> >> > > > > >> > > > > >> > > That's great stuff. I haven't used Cucumber /
> >> > Gherkin
> >> > > > for
> >> > > > > >> > years,
> >> > > > > >> > > > > but I
> >> > > > > >> > > > > >> > > really like the BDD approach.
> >> > > > > >> > > > > >> > >
> >> > > > > >> > > > > >> > > and then you can look at the GLV Gremlin
> >> > translations
> >> > > > > >> > > specifically
> >> > > > > >> > > > > >> here:
> >> > > > > >> > > > > >> > >> https://github.com/apache/tink
> >> > > > > >> erpop/blob/TINKERPOP-1784/grem
> >> > > > > >> > > > > >> > >> lin-python/src/main/jython/
> >> > > > > radish/count_features_step.py#
> >> > > > > >> > > L34-L46
> >> > > > > >> > > > > >> > >
> >> > > > > >> > > > > >> > >
> >> > > > > >> > > > > >> > > This part is the only thing that looks weird
> to
> >> me.
> >> > > > > You're
> >> > > > > >> > > > basically
> >> > > > > >> > > > > >> > > writing every query twice; is there really no
> >> > easier
> >> > > > way
> >> > > > > >> to do
> >> > > > > >> > > > that?
> >> > > > > >> > > > > >> > >
> >> > > > > >> > > > > >> > > Cheers,
> >> > > > > >> > > > > >> > > Daniel
> >> > > > > >> > > > > >> > >
> >> > > > > >> > > > > >> > >
> >> > > > > >> > > > > >> > > On Thu, Sep 14, 2017 at 1:17 PM, Stephen
> >> Mallette <
> >> > > > > >> > > > > >> spmalle...@gmail.com>
> >> > > > > >> > > > > >> > > wrote:
> >> > > > > >> > > > > >> > >
> >> > > > > >> > > > > >> > >> I've brought this issue up in the past and
> had
> >> > > > suggested
> >> > > > > >> some
> >> > > > > >> > > > > >> options I
> >> > > > > >> > > > > >> > >> had
> >> > > > > >> > > > > >> > >> in mind but now I've finally put the basics
> of
> >> > those
> >> > > > > >> ideas in
> >> > > > > >> > > > place
> >> > > > > >> > > > > >> so I
> >> > > > > >> > > > > >> > >> figured I'd start a fresh thread. Recall that
> >> the
> >> > > > issue
> >> > > > > at
> >> > > > > >> > hand
> >> > > > > >> > > > is
> >> > > > > >> > > > > >> that
> >> > > > > >> > > > > >> > we
> >> > > > > >> > > > > >> > >> don't have a test suite for GLVs as
> >> gremlin-test
> >> > is
> >> > > > > bound
> >> > > > > >> to
> >> > > > > >> > > the
> >> > > > > >> > > > > >> JVM. We
> >> > > > > >> > > > > >> > >> have some tricks that let us test
> >> gremlin-python
> >> > > with
> >> > > > it
> >> > > > > >> but
> >> > > > > >> > > > those
> >> > > > > >> > > > > >> > tricks
> >> > > > > >> > > > > >> > >> won't work for every language and we now have
> >> the
> >> > > > first
> >> > > > > >> > > language
> >> > > > > >> > > > in
> >> > > > > >> > > > > >> > >> gremlin-dotnet and upcoming
> gremlin-javascript
> >> > which
> >> > > > > won't
> >> > > > > >> > > > support
> >> > > > > >> > > > > it
> >> > > > > >> > > > > >> > >> (yes,
> >> > > > > >> > > > > >> > >> i know that gremlin-javascript can run on the
> >> jvm
> >> > > but
> >> > > > > >> there
> >> > > > > >> > are
> >> > > > > >> > > > > >> issues
> >> > > > > >> > > > > >> > >> with
> >> > > > > >> > > > > >> > >> getting it all to work with the test
> framework
> >> > that
> >> > > > make
> >> > > > > >> it
> >> > > > > >> > > > unduly
> >> > > > > >> > > > > >> > >> complicated).
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> On other threads I offered the idea that we
> >> look
> >> > to
> >> > > > use
> >> > > > > >> > Gherkin
> >> > > > > >> > > > to
> >> > > > > >> > > > > >> write
> >> > > > > >> > > > > >> > >> general Gremlin test specifications, which
> then
> >> > > could
> >> > > > be
> >> > > > > >> read
> >> > > > > >> > > and
> >> > > > > >> > > > > >> > >> processed
> >> > > > > >> > > > > >> > >> by the wide variety of test frameworks that
> can
> >> > read
> >> > > > > that
> >> > > > > >> > > format
> >> > > > > >> > > > -
> >> > > > > >> > > > > >> there
> >> > > > > >> > > > > >> > >> tend to be Gherkin processors in just about
> >> every
> >> > > > > >> language -
> >> > > > > >> > > for
> >> > > > > >> > > > > >> > example,
> >> > > > > >> > > > > >> > >> see:
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> https://cucumber.io/
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> I just created this issue:
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> https://issues.apache.org/
> >> > > jira/browse/TINKERPOP-1784
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> and pushed this branch:
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> https://github.com/apache/
> >> > > > tinkerpop/tree/TINKERPOP-1784
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> which demonstrates how this works with
> >> > > gremlin-python.
> >> > > > > The
> >> > > > > >> > > basic
> >> > > > > >> > > > > >> anatomy
> >> > > > > >> > > > > >> > >> of
> >> > > > > >> > > > > >> > >> this setup involves this new directory in
> >> > > > gremlin-test:
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> https://github.com/apache/tink
> >> > > > > >> erpop/tree/TINKERPOP-1784/grem
> >> > > > > >> > > > > >> > >> lin-test/features
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> It contains the Gherkin .features files.
> These
> >> are
> >> > > the
> >> > > > > >> test
> >> > > > > >> > > > > >> > >> specifications.
> >> > > > > >> > > > > >> > >> They are written using gremlin-java as the
> >> "model"
> >> > > > > >> language.
> >> > > > > >> > > GLVs
> >> > > > > >> > > > > >> will
> >> > > > > >> > > > > >> > >> then
> >> > > > > >> > > > > >> > >> need to write some infrastructure to process
> >> these
> >> > > > > Gherkin
> >> > > > > >> > > files.
> >> > > > > >> > > > > The
> >> > > > > >> > > > > >> > key
> >> > > > > >> > > > > >> > >> to making this "easy" to implement will lie
> in
> >> our
> >> > > > > >> abiilty to
> >> > > > > >> > > > keep
> >> > > > > >> > > > > >> the
> >> > > > > >> > > > > >> > >> assertions we want to have relatively simple.
> >> The
> >> > > more
> >> > > > > >> > > simplistic
> >> > > > > >> > > > > the
> >> > > > > >> > > > > >> > >> language in the Gherkin .feature files the
> >> easier
> >> > > the
> >> > > > > job
> >> > > > > >> it
> >> > > > > >> > > will
> >> > > > > >> > > > > be
> >> > > > > >> > > > > >> for
> >> > > > > >> > > > > >> > >> GLVs to build their infrastructure. Of
> course,
> >> > once
> >> > > > that
> >> > > > > >> > > > > >> infrastructure
> >> > > > > >> > > > > >> > is
> >> > > > > >> > > > > >> > >> in place, the GLV developer just has to write
> >> the
> >> > > GLV
> >> > > > > >> version
> >> > > > > >> > > of
> >> > > > > >> > > > > the
> >> > > > > >> > > > > >> > >> Gremlin specified in the .feature file. So
> you
> >> can
> >> > > > look
> >> > > > > at
> >> > > > > >> > all
> >> > > > > >> > > > the
> >> > > > > >> > > > > >> > >> "infrastructure" code here in this pair of
> >> files:
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> https://github.com/apache/tink
> >> > > > > >> erpop/tree/TINKERPOP-1784/grem
> >> > > > > >> > > > > >> > >> lin-python/src/main/jython/radish
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> and then you can look at the GLV Gremlin
> >> > > translations
> >> > > > > >> > > > specifically
> >> > > > > >> > > > > >> here:
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> https://github.com/apache/tink
> >> > > > > >> erpop/blob/TINKERPOP-1784/grem
> >> > > > > >> > > > > >> > >> lin-python/src/main/jython/
> >> > > > > radish/count_features_step.py#
> >> > > > > >> > > L34-L46
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> I think this approach works pretty well and
> >> solves
> >> > > our
> >> > > > > >> > general
> >> > > > > >> > > > > >> problems
> >> > > > > >> > > > > >> > >> for
> >> > > > > >> > > > > >> > >> GLV testing. There is some pain up front in
> >> > > > implementing
> >> > > > > >> the
> >> > > > > >> > > > > >> > >> "infrastructure" but after that new Gremlin
> >> tests
> >> > > > added
> >> > > > > to
> >> > > > > >> > > > .feature
> >> > > > > >> > > > > >> > files
> >> > > > > >> > > > > >> > >> just need to translated in the GLV. I suppose
> >> we
> >> > > could
> >> > > > > >> > > > "automate" a
> >> > > > > >> > > > > >> good
> >> > > > > >> > > > > >> > >> portion of the translation with reflection of
> >> some
> >> > > > sort.
> >> > > > > >> > > Anything
> >> > > > > >> > > > > >> else
> >> > > > > >> > > > > >> > >> could just be handled manually.
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> Not sure if we need to use this new model to
> >> > wholly
> >> > > > > >> replace
> >> > > > > >> > the
> >> > > > > >> > > > old
> >> > > > > >> > > > > >> one.
> >> > > > > >> > > > > >> > >> The process test suite has its place in
> helping
> >> > > graph
> >> > > > > >> > database
> >> > > > > >> > > > > >> providers
> >> > > > > >> > > > > >> > >> test their stuff. I also imagine that
> >> introducing
> >> > > this
> >> > > > > >> > approach
> >> > > > > >> > > > in
> >> > > > > >> > > > > >> that
> >> > > > > >> > > > > >> > >> context would create a breaking change which
> we
> >> > > would
> >> > > > > then
> >> > > > > >> > need
> >> > > > > >> > > > to
> >> > > > > >> > > > > >> push
> >> > > > > >> > > > > >> > >> off
> >> > > > > >> > > > > >> > >> to 3.4.0.  I suppose that gives us time to
> >> think,
> >> > > but
> >> > > > > for
> >> > > > > >> now
> >> > > > > >> > > it
> >> > > > > >> > > > > >> might
> >> > > > > >> > > > > >> > not
> >> > > > > >> > > > > >> > >> be best to conflate the two and just treat
> >> them as
> >> > > > > >> separate
> >> > > > > >> > > > aspects
> >> > > > > >> > > > > >> of
> >> > > > > >> > > > > >> > the
> >> > > > > >> > > > > >> > >> test suite.
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >> Anyway - it's important we settle on an
> >> approach
> >> > to
> >> > > > > >> testing
> >> > > > > >> > as
> >> > > > > >> > > we
> >> > > > > >> > > > > >> really
> >> > > > > >> > > > > >> > >> shouldn't do a GA release of the Gremlin .NET
> >> GLV
> >> > > > > without
> >> > > > > >> > > getting
> >> > > > > >> > > > > the
> >> > > > > >> > > > > >> > test
> >> > > > > >> > > > > >> > >> suite solid. please yell if you have any
> ideas
> >> or
> >> > > > > >> feedback on
> >> > > > > >> > > > this
> >> > > > > >> > > > > >> > >> approach.
> >> > > > > >> > > > > >> > >>
> >> > > > > >> > > > > >> > >
> >> > > > > >> > > > > >> > >
> >> > > > > >> > > > > >> >
> >> > > > > >> > > > > >>
> >> > > > > >> > > > > >
> >> > > > > >> > > > > >
> >> > > > > >> > > > >
> >> > > > > >> > > >
> >> > > > > >> > >
> >> > > > > >> >
> >> > > > > >>
> >> > > > > >
> >> > > > > >
> >> > > > >
> >> > > >
> >> > >
> >> >
> >>
> >
> >
>

Reply via email to