[lxc-devel] [pylxd/master] Fix integration tests
rockstar on Github
lxc-bot at linuxcontainers.org
Wed Sep 7 20:10:56 UTC 2016
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 413 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20160907/ed2a1f71/attachment.bin>
-------------- next part --------------
From a62bfcb555f47b1deb001ef5144ad03972d06c43 Mon Sep 17 00:00:00 2001
From: Paul Hummer <paul.hummer at canonical.com>
Date: Wed, 7 Sep 2016 13:46:55 -0600
Subject: [PATCH 1/3] Fix start/stop integration test
---
pylxd/models/_model.py | 1 +
pylxd/models/container.py | 2 ++
2 files changed, 3 insertions(+)
diff --git a/pylxd/models/_model.py b/pylxd/models/_model.py
index f95e05b..6165b89 100644
--- a/pylxd/models/_model.py
+++ b/pylxd/models/_model.py
@@ -152,6 +152,7 @@ def sync(self, rollback=False):
for key, val in response.json()['metadata'].items():
if key not in self.__dirty__ or rollback:
setattr(self, key, val)
+ del self.__dirty__[self.__dirty__.index(key)]
if rollback:
del self.__dirty__[:]
fetch = deprecated("fetch is deprecated; please use sync")(sync)
diff --git a/pylxd/models/container.py b/pylxd/models/container.py
index b0f8c8b..6aabb05 100644
--- a/pylxd/models/container.py
+++ b/pylxd/models/container.py
@@ -144,6 +144,8 @@ def _set_state(self, state, timeout=30, force=True, wait=False):
if wait:
Operation.wait_for_operation(
self.client, response.json()['operation'])
+ if 'status' in self.__dirty__:
+ del self.__dirty__[self.__dirty__.index('status')]
self.sync()
def state(self):
From 8b202845b1194b317c8bd9f4bbbca7f449024034 Mon Sep 17 00:00:00 2001
From: Paul Hummer <paul.hummer at canonical.com>
Date: Wed, 7 Sep 2016 14:01:50 -0600
Subject: [PATCH 2/3] Fix other integration tests
---
integration/test_containers.py | 2 +-
integration/test_images.py | 2 +-
integration/test_profiles.py | 3 ++-
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/integration/test_containers.py b/integration/test_containers.py
index 4e1f552..9aae24a 100644
--- a/integration/test_containers.py
+++ b/integration/test_containers.py
@@ -91,7 +91,7 @@ def test_delete(self):
self.container.delete(wait=True)
self.assertRaises(
- exceptions.NotFound,
+ exceptions.LXDAPIException,
self.client.containers.get, self.container.name)
def test_start_stop(self):
diff --git a/integration/test_images.py b/integration/test_images.py
index a6ee5a9..ee6839c 100644
--- a/integration/test_images.py
+++ b/integration/test_images.py
@@ -81,7 +81,7 @@ def test_delete(self):
self.image.delete(wait=True)
self.assertRaises(
- exceptions.NotFound,
+ exceptions.LXDAPIException,
self.client.images.get, self.image.fingerprint)
def test_export(self):
diff --git a/integration/test_profiles.py b/integration/test_profiles.py
index 5055504..fb050ca 100644
--- a/integration/test_profiles.py
+++ b/integration/test_profiles.py
@@ -86,4 +86,5 @@ def test_delete(self):
self.profile.delete()
self.assertRaises(
- exceptions.NotFound, self.client.profiles.get, self.profile.name)
+ exceptions.LXDAPIException,
+ self.client.profiles.get, self.profile.name)
From 3476993b5a666c86630b22bcc335dc36a2e102d6 Mon Sep 17 00:00:00 2001
From: Paul Hummer <paul.hummer at canonical.com>
Date: Wed, 7 Sep 2016 14:09:55 -0600
Subject: [PATCH 3/3] Made Model.__dirty__ a set, not a list
---
pylxd/models/_model.py | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/pylxd/models/_model.py b/pylxd/models/_model.py
index 6165b89..941ab22 100644
--- a/pylxd/models/_model.py
+++ b/pylxd/models/_model.py
@@ -100,7 +100,7 @@ class Model(object):
__slots__ = ['client', '__dirty__']
def __init__(self, client, **kwargs):
- self.__dirty__ = []
+ self.__dirty__ = set()
self.client = client
for key, val in kwargs.items():
@@ -112,7 +112,7 @@ def __init__(self, client, **kwargs):
'on instance of "{}"'.format(
key, self.__class__.__name__
))
- del self.__dirty__[:]
+ self.__dirty__.clear()
def __getattribute__(self, name):
try:
@@ -131,7 +131,7 @@ def __setattr__(self, name, value):
if attribute.validator is not None:
if attribute.validator is not type(value):
value = attribute.validator(value)
- self.__dirty__.append(name)
+ self.__dirty__.add(name)
return super(Model, self).__setattr__(name, value)
@property
@@ -152,9 +152,9 @@ def sync(self, rollback=False):
for key, val in response.json()['metadata'].items():
if key not in self.__dirty__ or rollback:
setattr(self, key, val)
- del self.__dirty__[self.__dirty__.index(key)]
+ self.__dirty__.remove(key)
if rollback:
- del self.__dirty__[:]
+ self.__dirty__.clear()
fetch = deprecated("fetch is deprecated; please use sync")(sync)
def rollback(self):
@@ -174,7 +174,7 @@ def save(self, wait=False):
if response.json()['type'] == 'async' and wait:
Operation.wait_for_operation(
self.client, response.json()['operation'])
- del self.__dirty__[:]
+ self.__dirty__.clear()
update = deprecated('update is deprecated; please use save')(save)
def delete(self, wait=False):
More information about the lxc-devel
mailing list