Skip to content

Commit

Permalink
Stop events on Docker.close() (#95)
Browse files Browse the repository at this point in the history
* Fix examples/events.py

Starting container with non-empty request body was deprecated since
v1.10 and removed in v1.12

* Automatically stop the events when closing Docker
  • Loading branch information
cecton authored and Christian Barra committed Aug 4, 2017
1 parent 8d92183 commit 9b82be2
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 16 deletions.
1 change: 1 addition & 0 deletions aiodocker/docker.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ def __init__(self,
self.volumes = DockerVolumes(self)

async def close(self):
await self.events.stop()
await self.session.close()

async def auth(self, **credentials):
Expand Down
18 changes: 5 additions & 13 deletions examples/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ async def demo(docker):
}
container = await docker.containers.create_or_replace(
config=config, name='testing')
await container.start(config)
await container.start()
print(f"=> created and started container {container._id[:12]}")

while True:
Expand All @@ -52,18 +52,10 @@ async def demo(docker):

if __name__ == '__main__':
loop = asyncio.get_event_loop()
docker = Docker()
try:
docker = Docker()
# start a monitoring task.
event_task = loop.create_task(docker.events.run())
try:
# do our stuffs.
loop.run_until_complete(demo(docker))
finally:
# explicitly stop monitoring.
event_task.cancel()
loop.run_until_complete(docker.close())
if not event_task.cancelled():
event_task.result() # NOTE: maybe raise an exception
# do our stuffs.
loop.run_until_complete(demo(docker))
finally:
loop.run_until_complete(docker.close())
loop.close()
13 changes: 10 additions & 3 deletions tests/test_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ def test_events_default_task(docker):
loop = asyncio.get_event_loop()
docker.events.subscribe()
assert docker.events.task is not None
loop.run_until_complete(docker.events.stop())
loop.run_until_complete(docker.close())
assert docker.events.task.done()
assert docker.events.json_stream is None

Expand All @@ -17,8 +17,15 @@ def test_events_provided_task(docker):
task = asyncio.ensure_future(docker.events.run())
docker.events.subscribe(create_task=False)
assert docker.events.task is None
loop.run_until_complete(docker.events.stop())
assert docker.events.json_stream is None
task.cancel()
with pytest.raises(asyncio.CancelledError):
loop.run_until_complete(task)
loop.run_until_complete(docker.close())
assert docker.events.json_stream is None


def test_events_no_task(docker):
loop = asyncio.get_event_loop()
assert docker.events.task is None
loop.run_until_complete(docker.close())
assert docker.events.json_stream is None

0 comments on commit 9b82be2

Please sign in to comment.