blob: 79ad9d08e51d999d6061f790ec9e587a309dc999 [file] [log] [blame]
Adam Israeldcdf82b2017-08-15 15:26:43 -04001import asyncio
Adam Israelc3e6c2e2018-03-01 09:31:50 -05002
3from juju.client import client
4from juju.client.connection import Connection
5
Adam Israeldcdf82b2017-08-15 15:26:43 -04006import pytest
7
Adam Israeldcdf82b2017-08-15 15:26:43 -04008from .. import base
9
10
11@base.bootstrapped
12@pytest.mark.asyncio
Adam Israeldcdf82b2017-08-15 15:26:43 -040013async def test_monitor(event_loop):
14
Adam Israelc3e6c2e2018-03-01 09:31:50 -050015 async with base.CleanModel() as model:
16 conn = model.connection()
Adam Israeldcdf82b2017-08-15 15:26:43 -040017 assert conn.monitor.status == 'connected'
18 await conn.close()
19
20 assert conn.monitor.status == 'disconnected'
21
22
23@base.bootstrapped
24@pytest.mark.asyncio
25async def test_monitor_catches_error(event_loop):
26
Adam Israelc3e6c2e2018-03-01 09:31:50 -050027 async with base.CleanModel() as model:
28 conn = model.connection()
Adam Israeldcdf82b2017-08-15 15:26:43 -040029
30 assert conn.monitor.status == 'connected'
Adam Israelc3e6c2e2018-03-01 09:31:50 -050031 try:
32 async with conn.monitor.reconnecting:
33 await conn.ws.close()
34 await asyncio.sleep(1)
35 assert conn.monitor.status == 'error'
36 finally:
37 await conn.close()
Adam Israeldcdf82b2017-08-15 15:26:43 -040038
39
40@base.bootstrapped
41@pytest.mark.asyncio
42async def test_full_status(event_loop):
43 async with base.CleanModel() as model:
44 await model.deploy(
45 'ubuntu-0',
46 application_name='ubuntu',
47 series='trusty',
48 channel='stable',
49 )
50
Adam Israelc3e6c2e2018-03-01 09:31:50 -050051 c = client.ClientFacade.from_connection(model.connection())
Adam Israeldcdf82b2017-08-15 15:26:43 -040052
53 await c.FullStatus(None)
54
55
56@base.bootstrapped
57@pytest.mark.asyncio
58async def test_reconnect(event_loop):
59 async with base.CleanModel() as model:
Adam Israelc3e6c2e2018-03-01 09:31:50 -050060 kwargs = model.connection().connect_params()
61 conn = await Connection.connect(**kwargs)
Adam Israeldcdf82b2017-08-15 15:26:43 -040062 try:
63 await asyncio.sleep(0.1)
64 assert conn.is_open
65 await conn.ws.close()
66 assert not conn.is_open
67 await model.block_until(lambda: conn.is_open, timeout=3)
68 finally:
69 await conn.close()