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
|
|
|
|