def test_bytecode(self): g = Graph().traversal() bytecode = g.V().out("created").bytecode assert 0 == len(bytecode.bindings.keys()) assert 0 == len(bytecode.source_instructions) assert 2 == len(bytecode.step_instructions) assert "V" == bytecode.step_instructions[0][0] assert "out" == bytecode.step_instructions[1][0] assert "created" == bytecode.step_instructions[1][1] assert 1 == len(bytecode.step_instructions[0]) assert 2 == len(bytecode.step_instructions[1]) ## bytecode = g.withSack(1).E().groupCount().by("weight").bytecode assert 0 == len(bytecode.bindings.keys()) assert 1 == len(bytecode.source_instructions) assert "withSack" == bytecode.source_instructions[0][0] assert 1 == bytecode.source_instructions[0][1] assert 3 == len(bytecode.step_instructions) assert "E" == bytecode.step_instructions[0][0] assert "groupCount" == bytecode.step_instructions[1][0] assert "by" == bytecode.step_instructions[2][0] assert "weight" == bytecode.step_instructions[2][1] assert 1 == len(bytecode.step_instructions[0]) assert 1 == len(bytecode.step_instructions[1]) assert 2 == len(bytecode.step_instructions[2]) ## bytecode = g.V(Bindings.of('a', [1,2,3])) \ .out(Bindings.of('b','created')) \ .where(__.in_(Bindings.of('c','created'), Bindings.of('d','knows')) \ .count().is_(Bindings.of('e',P.gt(2)))).bytecode assert 5 == len(bytecode.bindings.keys()) assert [1,2,3] == bytecode.bindings['a'] assert 'created' == bytecode.bindings['b'] assert 'created' == bytecode.bindings['c'] assert 'knows' == bytecode.bindings['d'] assert P.gt(2) == bytecode.bindings['e'] assert Binding('b','created') == bytecode.step_instructions[1][1] assert 'binding[b=created]' == str(bytecode.step_instructions[1][1]) assert isinstance(hash(bytecode.step_instructions[1][1]),int)
def check_vn_without_ri(g): """virtual-network without any routing-instance """ return g.V().hasLabel('virtual_network').not_( __.in_().hasLabel('routing_instance'))
def check_acl_without_sg(g): """access-control-list without security-group """ return g.V().hasLabel('access_control_list').where( __.in_().hasNot('fq_name'))
def check_vn_with_iip_without_vmi(g): """instance-ip without any virtual-machine-interface """ return g.V().hasLabel("virtual_network").not_(__.in_().hasLabel( 'virtual_machine_interface')).in_().hasLabel("instance_ip")
def check_ri_without_vn(g): """routing-instance that doesn't have any virtual-network """ return g.V().hasLabel('routing_instance').where( __.in_('parent').hasNot('fq_name'))
def check_lbaas_without_vip(g): """LBaaS SI without any virtual-ip """ return g.V().hasLabel("service_instance") \ .where(__.in_().hasLabel("loadbalancer_pool").not_(__.in_().hasLabel("virtual_ip")))
def test_translations(self): g = traversal().withGraph(Graph()) tests = list() # 0 tests.append([g.V(), "g.V()"]) # 1 tests.append([g.V('1', '2', '3', '4'), "g.V('1','2','3','4')"]) # 2 tests.append([g.V('3').valueMap(True), "g.V('3').valueMap(True)"]) # 3 tests.append([g.V().constant(5), "g.V().constant(5)"]) # 4 tests.append([g.V().constant(1.5), "g.V().constant(1.5)"]) # 5 tests.append([g.V().constant('Hello'), "g.V().constant('Hello')"]) # 6 tests.append([ g.V().hasLabel('airport').limit(5), "g.V().hasLabel('airport').limit(5)" ]) # 7 tests.append([ g.V().hasLabel(within('a', 'b', 'c')), "g.V().hasLabel(within(['a','b','c']))" ]) # 8 tests.append([ g.V().hasLabel('airport', 'continent').out().limit(5), "g.V().hasLabel('airport','continent').out().limit(5)" ]) # 9 tests.append([ g.V().hasLabel('airport').out().values('code').limit(5), "g.V().hasLabel('airport').out().values('code').limit(5)" ]) # 10 tests.append([ g.V('3').as_('a').out('route').limit(10).where( eq('a')).by('region'), "g.V('3').as('a').out('route').limit(10).where(eq('a')).by('region')" ]) # 11 tests.append([ g.V('3').repeat( __.out('route').simplePath()).times(2).path().by('code'), "g.V('3').repeat(__.out('route').simplePath()).times(2).path().by('code')" ]) # 12 tests.append([ g.V().hasLabel('airport').out().has( 'region', 'US-TX').values('code').limit(5), "g.V().hasLabel('airport').out().has('region','US-TX').values('code').limit(5)" ]) # 13 tests.append([ g.V().hasLabel('airport').union(__.values('city'), __.values('region')).limit(5), "g.V().hasLabel('airport').union(__.values('city'),__.values('region')).limit(5)" ]) # 14 tests.append([ g.V('3').as_('a').out('route', 'routes'), "g.V('3').as('a').out('route','routes')" ]) # 15 tests.append([ g.V().where(__.values('runways').is_(5)), "g.V().where(__.values('runways').is(5))" ]) # 16 tests.append([ g.V('3').repeat(__.out().simplePath()).until(__.has( 'code', 'AGR')).path().by('code').limit(5), "g.V('3').repeat(__.out().simplePath()).until(__.has('code','AGR')).path().by('code').limit(5)" ]) # 17 tests.append([ g.V().hasLabel('airport').order().by(__.id_()), "g.V().hasLabel('airport').order().by(__.id())" ]) # 18 tests.append([ g.V().hasLabel('airport').order().by(T.id), "g.V().hasLabel('airport').order().by(T.id)" ]) # 19 tests.append([ g.V().hasLabel('airport').order().by(__.id_(), Order.desc), "g.V().hasLabel('airport').order().by(__.id(),Order.desc)" ]) # 20 tests.append([ g.V().hasLabel('airport').order().by('code', Order.desc), "g.V().hasLabel('airport').order().by('code',Order.desc)" ]) # 21 tests.append([ g.V('1', '2', '3').local(__.out().out().dedup().fold()), "g.V('1','2','3').local(__.out().out().dedup().fold())" ]) # 22 tests.append([ g.V('3').out().path().count(Scope.local), "g.V('3').out().path().count(Scope.local)" ]) # 23 tests.append([g.E().count(), "g.E().count()"]) # 24 tests.append([ g.V('5').outE('route').inV().path().limit(10), "g.V('5').outE('route').inV().path().limit(10)" ]) # 25 tests.append([ g.V('5').propertyMap().select(Column.keys), "g.V('5').propertyMap().select(Column.keys)" ]) # 26 tests.append([ g.V('5').propertyMap().select(Column.values), "g.V('5').propertyMap().select(Column.values)" ]) # 27 tests.append([ g.V('3').values('runways').math('_ + 1'), "g.V('3').values('runways').math('_ + 1')" ]) # 28 tests.append([ g.V('3').emit().repeat( __.out().simplePath()).times(3).limit(5).path(), "g.V('3').emit().repeat(__.out().simplePath()).times(3).limit(5).path()" ]) # 29 tests.append([ g.V().match(__.as_('a').has( 'code', 'LHR').as_('b')).select('b').by('code'), "g.V().match(__.as('a').has('code','LHR').as('b')).select('b').by('code')" ]) # 30 tests.append([ g.V().has('test-using-keyword-as-property', 'repeat'), "g.V().has('test-using-keyword-as-property','repeat')" ]) # 31 tests.append([ g.V('1').addE('test').to(__.V('4')), "g.V('1').addE('test').to(__.V('4'))" ]) # 32 tests.append( [g.V().values('runways').max_(), "g.V().values('runways').max()"]) # 33 tests.append( [g.V().values('runways').min_(), "g.V().values('runways').min()"]) # 34 tests.append( [g.V().values('runways').sum_(), "g.V().values('runways').sum()"]) # 35 tests.append( [g.V().values('runways').mean(), "g.V().values('runways').mean()"]) # 36 tests.append([ g.withSack(0).V('3', '5').sack(Operator.sum_).by('runways').sack(), "g.withSack(0).V('3','5').sack(Operator.sum).by('runways').sack()" ]) # 37 tests.append([ g.V('3').values('runways').store('x').V('4').values( 'runways').store('x').by(__.constant(1)).V('6').store('x').by( __.constant(1)).select('x').unfold().sum_(), "g.V('3').values('runways').store('x').V('4').values('runways').store('x').by(__.constant(1)).V('6').store('x').by(__.constant(1)).select('x').unfold().sum()" ]) # 38 tests.append([g.inject(3, 4, 5), "g.inject(3,4,5)"]) # 39 tests.append([g.inject([3, 4, 5]), "g.inject([3, 4, 5])"]) # 40 tests.append([g.inject(3, 4, 5).count(), "g.inject(3,4,5).count()"]) # 41 tests.append([ g.V().has('runways', gt(5)).count(), "g.V().has('runways',gt(5)).count()" ]) # 42 tests.append([ g.V().has('runways', lte(5.3)).count(), "g.V().has('runways',lte(5.3)).count()" ]) # 43 tests.append([ g.V().has('code', within(123, 124)), "g.V().has('code',within([123,124]))" ]) # 44 tests.append([ g.V().has('code', within(123, 'abc')), "g.V().has('code',within([123,'abc']))" ]) # 45 tests.append([ g.V().has('code', within('abc', 123)), "g.V().has('code',within(['abc',123]))" ]) # 46 tests.append([ g.V().has('code', within('abc', 'xyz')), "g.V().has('code',within(['abc','xyz']))" ]) # 47 tests.append([ g.V('1', '2').has('region', P.within('US-TX', 'US-GA')), "g.V('1','2').has('region',within(['US-TX','US-GA']))" ]) # 48 tests.append([ g.V().and_(__.has('runways', P.gt(5)), __.has('region', 'US-TX')), "g.V().and(__.has('runways',gt(5)),__.has('region','US-TX'))" ]) # 49 tests.append([ g.V().union(__.has('runways', gt(5)), __.has('region', 'US-TX')), "g.V().union(__.has('runways',gt(5)),__.has('region','US-TX'))" ]) # 50 tests.append([ g.V('3').choose( __.values('runways').is_(3), __.constant('three'), __.constant('not three')), "g.V('3').choose(__.values('runways').is(3),__.constant('three'),__.constant('not three'))" ]) # 51 tests.append([ g.V('3').choose(__.values('runways')).option( 1, __.constant('three')).option(2, __.constant('not three')), "g.V('3').choose(__.values('runways')).option(1,__.constant('three')).option(2,__.constant('not three'))" ]) # 52 tests.append([ g.V('3').choose(__.values('runways')).option( 1.5, __.constant('one and a half')).option( 2, __.constant('not three')), "g.V('3').choose(__.values('runways')).option(1.5,__.constant('one and a half')).option(2,__.constant('not three'))" ]) # 53 tests.append([ g.V('3').repeat(__.out().simplePath()).until( __.loops().is_(1)).count(), "g.V('3').repeat(__.out().simplePath()).until(__.loops().is(1)).count()" ]) # 54 tests.append([ g.V().hasLabel('airport').limit(20).group().by('region').by( 'code').order(Scope.local).by(Column.keys), "g.V().hasLabel('airport').limit(20).group().by('region').by('code').order(Scope.local).by(Column.keys)" ]) # 55 tests.append([ g.V('1').as_('a').V('2').as_('a').select(Pop.all_, 'a'), "g.V('1').as('a').V('2').as('a').select(Pop.all,'a')" ]) # 56 tests.append([ g.addV('test').property(Cardinality.set_, 'p1', 10), "g.addV('test').property(Cardinality.set,'p1',10)" ]) # 57 tests.append([ g.addV('test').property(Cardinality.list_, 'p1', 10), "g.addV('test').property(Cardinality.list,'p1',10)" ]) # 58 tests.append([ g.addV('test').property(Cardinality.single, 'p1', 10), "g.addV('test').property(Cardinality.single,'p1',10)" ]) # 59 tests.append([ g.V().limit(5).order().by(T.label), "g.V().limit(5).order().by(T.label)" ]) # 60 tests.append([g.V().range_(1, 5), "g.V().range(1,5)"]) # 61 tests.append([ g.addV('test').property('p1', 123), "g.addV('test').property('p1',123)" ]) # 62 tests.append([ g.addV('test').property('date', datetime(2021, 2, 1, 9, 30)), "g.addV('test').property('date',new Date(121,2,1,9,30,0))" ]) # 63 tests.append([ g.addV('test').property('date', datetime(2021, 2, 1)), "g.addV('test').property('date',new Date(121,2,1,0,0,0))" ]) # 64 tests.append([ g.addE('route').from_(__.V('1')).to(__.V('2')), "g.addE('route').from(__.V('1')).to(__.V('2'))" ]) # 65 tests.append([ g.withSideEffect('a', [1, 2]).V('3').select('a'), "g.withSideEffect('a',[1, 2]).V('3').select('a')" ]) # 66 tests.append([ g.withSideEffect('a', 1).V('3').select('a'), "g.withSideEffect('a',1).V('3').select('a')" ]) # 67 tests.append([ g.withSideEffect('a', 'abc').V('3').select('a'), "g.withSideEffect('a','abc').V('3').select('a')" ]) # 68 tests.append([ g.V().has('airport', 'region', 'US-NM').limit(3).values('elev').fold().index(), "g.V().has('airport','region','US-NM').limit(3).values('elev').fold().index()" ]) # 69 tests.append([ g.V('3').repeat(__.timeLimit(1000).out().simplePath()).until( __.has('code', 'AGR')).path(), "g.V('3').repeat(__.timeLimit(1000).out().simplePath()).until(__.has('code','AGR')).path()" ]) # 70 tests.append([ g.V().hasLabel('airport').where(__.values('elev').is_(gt(14000))), "g.V().hasLabel('airport').where(__.values('elev').is(gt(14000)))" ]) # 71 tests.append([ g.V().hasLabel('airport').where(__.out().count().is_( gt(250))).values('code'), "g.V().hasLabel('airport').where(__.out().count().is(gt(250))).values('code')" ]) # 72 tests.append([ g.V().hasLabel('airport').filter_(__.out().count().is_( gt(250))).values('code'), "g.V().hasLabel('airport').filter(__.out().count().is(gt(250))).values('code')" ]) # 73 tests.append([ g.withSack(0).V('3').repeat( __.outE('route').sack(Operator.sum_).by('dist').inV()).until( __.has('code', 'AGR').or_().loops().is_(4)).has( 'code', 'AGR').local( __.union(__.path().by('code').by('dist'), __.sack()).fold()).limit(10), "g.withSack(0).V('3').repeat(__.outE('route').sack(Operator.sum).by('dist').inV()).until(__.has('code','AGR').or().loops().is(4)).has('code','AGR').local(__.union(__.path().by('code').by('dist'),__.sack()).fold()).limit(10)" ]) # 74 tests.append([ g.addV().as_('a').addV().as_('b').addE('knows').from_('a').to('b'), "g.addV().as('a').addV().as('b').addE('knows').from('a').to('b')" ]) # 75 tests.append([ g.addV('Person').as_('a').addV('Person').as_('b').addE( 'knows').from_('a').to('b'), "g.addV('Person').as('a').addV('Person').as('b').addE('knows').from('a').to('b')" ]) # 76 tests.append([ g.V('3').project('Out', 'In').by(__.out().count()).by(__.in_().count()), "g.V('3').project('Out','In').by(__.out().count()).by(__.in().count())" ]) # 77 tests.append([ g.V('44').out().aggregate('a').out().where(within('a')).path(), "g.V('44').out().aggregate('a').out().where(within(['a'])).path()" ]) # 78 tests.append([ g.V().has('date', datetime(2021, 2, 22)), "g.V().has('date',new Date(121,2,22,0,0,0))" ]) # 79 tests.append([ g.V().has('date', within(datetime(2021, 2, 22), datetime(2021, 1, 1))), "g.V().has('date',within([new Date(121,2,22,0,0,0),new Date(121,1,1,0,0,0)]))" ]) # 80 tests.append([ g.V().has('date', between(datetime(2021, 1, 1), datetime(2021, 2, 22))), "g.V().has('date',between(new Date(121,1,1,0,0,0),new Date(121,2,22,0,0,0)))" ]) # 81 tests.append([ g.V().has('date', inside(datetime(2021, 1, 1), datetime(2021, 2, 22))), "g.V().has('date',inside(new Date(121,1,1,0,0,0),new Date(121,2,22,0,0,0)))" ]) # 82 tests.append([ g.V().has('date', P.gt(datetime(2021, 1, 1, 9, 30))), "g.V().has('date',gt(new Date(121,1,1,9,30,0)))" ]) # 83 tests.append([ g.V().has('runways', between(3, 5)), "g.V().has('runways',between(3,5))" ]) # 84 tests.append([ g.V().has('runways', inside(3, 5)), "g.V().has('runways',inside(3,5))" ]) # 85 tests.append( [g.V('44').outE().elementMap(), "g.V('44').outE().elementMap()"]) # 86 tests.append([ g.V('44').valueMap().by(__.unfold()), "g.V('44').valueMap().by(__.unfold())" ]) # 87 tests.append([ g.V('44').valueMap().with_(WithOptions.tokens, WithOptions.labels), "g.V('44').valueMap().with(WithOptions.tokens,WithOptions.labels)" ]) # 88 tests.append([ g.V('44').valueMap().with_(WithOptions.tokens), "g.V('44').valueMap().with(WithOptions.tokens)" ]) # 89 tests.append([ g.withStrategies(ReadOnlyStrategy()).addV('test'), "g.withStrategies(new ReadOnlyStrategy()).addV('test')" ]) # 90 strategy = SubgraphStrategy(vertices=__.has('region', 'US-TX'), edges=__.hasLabel('route')) tests.append([ g.withStrategies(strategy).V().count(), "g.withStrategies(new SubgraphStrategy(vertices:__.has('region','US-TX'),edges:__.hasLabel('route'))).V().count()" ]) # 91 strategy = SubgraphStrategy(vertex_properties=__.hasNot('runways')) tests.append([ g.withStrategies(strategy).V().count(), "g.withStrategies(new SubgraphStrategy(vertexProperties:__.hasNot('runways'))).V().count()" ]) # 92 strategy = SubgraphStrategy(vertices=__.has('region', 'US-TX'), vertex_properties=__.hasNot('runways')) tests.append([ g.withStrategies(strategy).V().count(), "g.withStrategies(new SubgraphStrategy(vertices:__.has('region','US-TX'),vertexProperties:__.hasNot('runways'))).V().count()" ]) # 93 strategy = SubgraphStrategy(vertices=__.has('region', 'US-TX'), edges=__.hasLabel('route')) tests.append([ g.withStrategies(ReadOnlyStrategy(), strategy).V().count(), "g.withStrategies(new ReadOnlyStrategy(),new SubgraphStrategy(vertices:__.has('region','US-TX'),edges:__.hasLabel('route'))).V().count()" ]) # 94 strategy = SubgraphStrategy(vertices=__.has('region', 'US-TX')) tests.append([ g.withStrategies(ReadOnlyStrategy(), strategy).V().count(), "g.withStrategies(new ReadOnlyStrategy(),new SubgraphStrategy(vertices:__.has('region','US-TX'))).V().count()" ]) # 95 tests.append([ g.with_('evaluationTimeout', 500).V().count(), "g.withStrategies(new OptionsStrategy(evaluationTimeout:500)).V().count()" ]) # 96 tests.append([ g.withStrategies(OptionsStrategy({'evaluationTimeout': 500})).V().count(), "g.withStrategies(new OptionsStrategy(evaluationTimeout:500)).V().count()" ]) # 97 tests.append([ g.withStrategies( PartitionStrategy(partition_key="partition", write_partition="a", read_partitions=["a"])).addV('test'), "g.withStrategies(new PartitionStrategy(partitionKey:'partition',writePartition:'a',readPartitions:['a'])).addV('test')" ]) # 98 tests.append([ g.withComputer().V().shortestPath().with_(ShortestPath.target, __.has('name', 'peter')), "g.withStrategies(new VertexProgramStrategy()).V().shortestPath().with('~tinkerpop.shortestPath.target',__.has('name','peter'))" ]) tlr = Translator().of('g') for t in range(len(tests)): a = tlr.translate(tests[t][0].bytecode) assert a == tests[t][1]