|
1
|
|
|
import pytest |
|
2
|
|
|
from aiogremlin import process |
|
3
|
|
|
from gremlin_python.process.traversal import Binding, T |
|
4
|
|
|
|
|
5
|
|
|
from goblin import driver |
|
6
|
|
|
|
|
7
|
|
|
|
|
8
|
|
|
@pytest.mark.asyncio |
|
9
|
|
|
async def test_generate_traversal(remote_graph, remote_connection): |
|
10
|
|
|
async with remote_connection: |
|
11
|
|
|
g = remote_graph.traversal().withRemote(remote_connection) |
|
12
|
|
|
traversal = g.V().hasLabel(('v1', 'person')) |
|
13
|
|
|
assert isinstance(traversal, |
|
14
|
|
|
process.graph_traversal.AsyncGraphTraversal) |
|
15
|
|
|
assert traversal.bytecode.step_instructions[1][1][1] == 'person' |
|
16
|
|
|
|
|
17
|
|
|
|
|
18
|
|
|
@pytest.mark.asyncio |
|
19
|
|
|
async def test_submit_traversal(remote_graph, remote_connection): |
|
20
|
|
|
g = remote_graph.traversal().withRemote(remote_connection) |
|
21
|
|
|
resp = g.addV('person').property('name', 'leifur').valueMap(True) |
|
22
|
|
|
leif = await resp.next() |
|
23
|
|
|
assert leif['name'][0] == 'leifur' |
|
24
|
|
|
assert leif[T.label] == 'person' |
|
25
|
|
|
resp = g.V(Binding('vid', leif[T.id])).drop() |
|
26
|
|
|
none = await resp.next() |
|
27
|
|
|
assert none is None |
|
28
|
|
|
|
|
29
|
|
|
await remote_connection.close() |
|
30
|
|
|
|
|
31
|
|
|
|
|
32
|
|
|
#@pytest.mark.skipif(pytest.config.getoption('provider') == 'dse', reason="need custom alias") |
|
33
|
|
|
@pytest.mark.asyncio |
|
34
|
|
|
async def test_side_effects(remote_graph, remote_connection): |
|
35
|
|
|
async with remote_connection: |
|
36
|
|
|
remote_connection._message_serializer = \ |
|
37
|
|
|
driver.GraphSONMessageSerializer |
|
38
|
|
|
g = remote_graph.traversal().withRemote(remote_connection) |
|
39
|
|
|
# create some nodes |
|
40
|
|
|
resp = g.addV('person').property('name', 'leifur') |
|
41
|
|
|
leif = await resp.next() |
|
42
|
|
|
resp = g.addV('person').property('name', 'dave') |
|
43
|
|
|
dave = await resp.next() |
|
44
|
|
|
|
|
45
|
|
|
resp = g.addV('person').property('name', 'jon') |
|
46
|
|
|
jonthan = await resp.next() |
|
47
|
|
|
|
|
48
|
|
|
traversal = g.V().aggregate('a').aggregate('b') |
|
49
|
|
|
await traversal.iterate() |
|
50
|
|
|
keys = await traversal.side_effects.keys() |
|
51
|
|
|
assert keys == set(['a', 'b']) |
|
52
|
|
|
side_effects = await traversal.side_effects.get('a') |
|
53
|
|
|
assert side_effects |
|
54
|
|
|
side_effects = await traversal.side_effects.get('b') |
|
55
|
|
|
assert side_effects |
|
56
|
|
|
|