class GremlinClientTest(unittest.TestCase): def setUp(self): self.loop = asyncio.new_event_loop() asyncio.set_event_loop(None) self.gc = GremlinClient(url="ws://localhost:8182/", loop=self.loop) def tearDown(self): self.loop.run_until_complete(self.gc.close()) self.loop.close() def test_connection(self): @asyncio.coroutine def go(): ws = yield from self.gc._connector.ws_connect(self.gc.url) self.assertFalse(ws.closed) yield from ws.close() self.loop.run_until_complete(go()) def test_execute(self): @asyncio.coroutine def go(): resp = yield from self.gc.execute("x + x", bindings={"x": 4}) return resp results = self.loop.run_until_complete(go()) self.assertEqual(results[0].data[0], 8) def test_sub_waitfor(self): sub1 = self.gc.execute("x + x", bindings={"x": 1}) sub2 = self.gc.execute("x + x", bindings={"x": 2}) sub3 = self.gc.execute("x + x", bindings={"x": 4}) coro = asyncio.gather(*[asyncio.async(sub1, loop=self.loop), asyncio.async(sub2, loop=self.loop), asyncio.async(sub3, loop=self.loop)], loop=self.loop) # Here I am looking for resource warnings. results = self.loop.run_until_complete(coro) self.assertIsNotNone(results) def test_resp_stream(self): @asyncio.coroutine def stream_coro(): results = [] resp = yield from self.gc.submit("x + x", bindings={"x": 4}) while True: f = yield from resp.stream.read() if f is None: break results.append(f) self.assertEqual(results[0].data[0], 8) self.loop.run_until_complete(stream_coro()) def test_execute_error(self): execute = self.gc.execute("x + x g.asdfas", bindings={"x": 4}) try: self.loop.run_until_complete(execute) error = False except: error = True self.assertTrue(error) def test_rebinding(self): execute = self.gc.execute("graph2.addVertex()") try: self.loop.run_until_complete(execute) error = False except: error = True self.assertTrue(error) @asyncio.coroutine def go(): result = yield from self.gc.execute( "graph2.addVertex()", rebindings={"graph2": "graph"}) self.assertEqual(len(result), 1) self.loop.run_until_complete(go())