[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