[Kimchi-devel] [PATCH] [Kimchi 2/6] Update run_server() calls to do not pass model instance

Aline Manera posted 6 patches 7 years, 3 months ago
[Kimchi-devel] [PATCH] [Kimchi 2/6] Update run_server() calls to do not pass model instance
Posted by Aline Manera 7 years, 3 months ago
The model instance will be gotten from cherrypy when needed.

Signed-off-by: Aline Manera <alinefm@linux.vnet.ibm.com>
---
 root.py                           |  3 ++-
 tests/test_authorization.py       | 10 ++++------
 tests/test_host.py                | 15 +++------------
 tests/test_livemigration.py       |  6 +-----
 tests/test_mock_network.py        | 10 ++++------
 tests/test_mock_storagepool.py    | 12 ++++--------
 tests/test_mock_storagevolume.py  | 11 ++++-------
 tests/test_mockmodel.py           |  8 +++-----
 tests/test_model_network.py       | 18 +++++++++++-------
 tests/test_model_storagepool.py   | 18 ++++++++++--------
 tests/test_model_storagevolume.py | 18 +++++++++++-------
 tests/test_rest.py                |  7 +++----
 tests/test_template.py            |  9 ++++-----
 13 files changed, 64 insertions(+), 81 deletions(-)

diff --git a/root.py b/root.py
index 3b39c05..68c4a78 100644
--- a/root.py
+++ b/root.py
@@ -48,9 +48,10 @@ class Kimchi(WokRoot):
         # When running on test mode, specify the objectstore location to
         # remove the file on server shutting down. That way, the system will
         # not suffer any change while running on test mode
-        if wok_options.test:
+        if wok_options.test is True or wok_options.test.lower() == 'true':
             self.objectstore_loc = tempfile.mktemp()
             self.model = mockmodel.MockModel(self.objectstore_loc)
+
             def remove_objectstore():
                 if os.path.exists(self.objectstore_loc):
                     os.unlink(self.objectstore_loc)
diff --git a/tests/test_authorization.py b/tests/test_authorization.py
index 565f446..b67d8d6 100644
--- a/tests/test_authorization.py
+++ b/tests/test_authorization.py
@@ -1,7 +1,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM Corp, 2014-2016
+# Copyright IBM Corp, 2014-2017
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -17,6 +17,7 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 
+import cherrypy
 import json
 import os
 import unittest
@@ -25,8 +26,6 @@ from functools import partial
 from tests.utils import get_fake_user, patch_auth
 from tests.utils import request, run_server, wait_task
 
-from wok.plugins.kimchi import mockmodel
-
 from iso_gen import construct_fake_iso
 
 
@@ -39,8 +38,8 @@ def setUpModule():
     global test_server, model
 
     patch_auth(sudo=False)
-    model = mockmodel.MockModel('/tmp/obj-store-test')
-    test_server = run_server(test_mode=True, model=model)
+    test_server = run_server(test_mode=True)
+    model = cherrypy.tree.apps['/plugins/kimchi'].root.model
 
     # Create fake ISO to do the tests
     construct_fake_iso(fake_iso, True, '12.04', 'ubuntu')
@@ -48,7 +47,6 @@ def setUpModule():
 
 def tearDownModule():
     test_server.stop()
-    os.unlink('/tmp/obj-store-test')
     os.unlink(fake_iso)
 
 
diff --git a/tests/test_host.py b/tests/test_host.py
index 1ee3368..6db6839 100644
--- a/tests/test_host.py
+++ b/tests/test_host.py
@@ -2,7 +2,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM Corp, 2015-2016
+# Copyright IBM Corp, 2015-2017
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -19,33 +19,24 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 
 import json
-import os
-import tempfile
 import unittest
 from functools import partial
 
 from tests.utils import patch_auth, request, run_server
 
-from wok.plugins.kimchi.mockmodel import MockModel
-
 
 test_server = None
-model = None
-tmpfile = None
 
 
 def setUpModule():
-    global test_server, model, tmpfile
+    global test_server
 
     patch_auth()
-    tmpfile = tempfile.mktemp()
-    model = MockModel(tmpfile)
-    test_server = run_server(test_mode=True, model=model)
+    test_server = run_server(test_mode=True)
 
 
 def tearDownModule():
     test_server.stop()
-    os.unlink(tmpfile)
 
 
 class HostTests(unittest.TestCase):
diff --git a/tests/test_livemigration.py b/tests/test_livemigration.py
index 7d49dc1..90fdaa1 100644
--- a/tests/test_livemigration.py
+++ b/tests/test_livemigration.py
@@ -407,12 +407,8 @@ class LiveMigrationTests(unittest.TestCase):
                          'not possible to test a live migration')
     def test_vm_livemigrate_persistent_API(self):
         patch_auth()
-
-        inst = model.Model(libvirt_uri='qemu:///system',
-                           objstore_loc=self.tmp_store)
-
         with RollbackContext() as rollback:
-            test_server = run_server(test_mode=True, model=inst)
+            test_server = run_server()
             rollback.prependDefer(test_server.stop)
 
             self.request = partial(request)
diff --git a/tests/test_mock_network.py b/tests/test_mock_network.py
index 48e5557..c1e875d 100644
--- a/tests/test_mock_network.py
+++ b/tests/test_mock_network.py
@@ -2,7 +2,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM Corp, 2015-2016
+# Copyright IBM Corp, 2015-2017
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -18,14 +18,13 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 
+import cherrypy
 import json
-import os
 import unittest
 from functools import partial
 
 from tests.utils import patch_auth, request, run_server
 
-from wok.plugins.kimchi.mockmodel import MockModel
 from wok.plugins.kimchi.model.featuretests import FeatureTests
 
 from test_model_network import _do_network_test
@@ -39,13 +38,12 @@ def setUpModule():
     global test_server, model
 
     patch_auth()
-    model = MockModel('/tmp/obj-store-test')
-    test_server = run_server(test_mode=True, model=model)
+    test_server = run_server(test_mode=True)
+    model = cherrypy.tree.apps['/plugins/kimchi'].root.model
 
 
 def tearDownModule():
     test_server.stop()
-    os.unlink('/tmp/obj-store-test')
 
 
 class MockNetworkTests(unittest.TestCase):
diff --git a/tests/test_mock_storagepool.py b/tests/test_mock_storagepool.py
index 5c152e4..f584382 100644
--- a/tests/test_mock_storagepool.py
+++ b/tests/test_mock_storagepool.py
@@ -2,7 +2,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM Corp, 2015-2016
+# Copyright IBM Corp, 2015-2017
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -18,16 +18,13 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 
+import cherrypy
 import json
-import os
 import unittest
 from functools import partial
 
 from tests.utils import patch_auth, request, run_server
 
-from wok.plugins.kimchi.mockmodel import MockModel
-
-
 model = None
 test_server = None
 
@@ -36,13 +33,12 @@ def setUpModule():
     global test_server, model
 
     patch_auth()
-    model = MockModel('/tmp/obj-store-test')
-    test_server = run_server(test_mode=True, model=model)
+    test_server = run_server(test_mode=True)
+    model = cherrypy.tree.apps['/plugins/kimchi'].root.model
 
 
 def tearDownModule():
     test_server.stop()
-    os.unlink('/tmp/obj-store-test')
 
 
 class MockStoragepoolTests(unittest.TestCase):
diff --git a/tests/test_mock_storagevolume.py b/tests/test_mock_storagevolume.py
index 3380bd5..4b3306b 100644
--- a/tests/test_mock_storagevolume.py
+++ b/tests/test_mock_storagevolume.py
@@ -2,7 +2,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM Corp, 2015-2016
+# Copyright IBM Corp, 2015-2017
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -18,15 +18,13 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 
+import cherrypy
 import json
-import os
 import unittest
 from functools import partial
 
 from tests.utils import patch_auth, request, run_server
 
-from wok.plugins.kimchi.mockmodel import MockModel
-
 from test_model_storagevolume import _do_volume_test
 
 
@@ -38,13 +36,12 @@ def setUpModule():
     global test_server, model
 
     patch_auth()
-    model = MockModel('/tmp/obj-store-test')
-    test_server = run_server(test_mode=True, model=model)
+    test_server = run_server(test_mode=True)
+    model = cherrypy.tree.apps['/plugins/kimchi'].root.model
 
 
 def tearDownModule():
     test_server.stop()
-    os.unlink('/tmp/obj-store-test')
 
 
 class MockStorageVolumeTests(unittest.TestCase):
diff --git a/tests/test_mockmodel.py b/tests/test_mockmodel.py
index 826af12..19994ab 100644
--- a/tests/test_mockmodel.py
+++ b/tests/test_mockmodel.py
@@ -1,7 +1,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM Corp, 2013-2016
+# Copyright IBM Corp, 2013-2017
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -27,7 +27,6 @@ from tests.utils import patch_auth, request, run_server
 from tests.utils import wait_task
 
 from wok.exception import InvalidOperation
-from wok.plugins.kimchi import mockmodel
 from wok.plugins.kimchi.osinfo import get_template_default
 
 import iso_gen
@@ -40,16 +39,15 @@ fake_iso = None
 def setUpModule():
     global model, test_server, fake_iso
     cherrypy.request.headers = {'Accept': 'application/json'}
-    model = mockmodel.MockModel('/tmp/obj-store-test')
     patch_auth()
-    test_server = run_server(test_mode=True, model=model)
+    test_server = run_server(test_mode=True)
+    model = cherrypy.tree.apps['/plugins/kimchi'].root.model
     fake_iso = '/tmp/fake.iso'
     iso_gen.construct_fake_iso(fake_iso, True, '12.04', 'ubuntu')
 
 
 def tearDown():
     test_server.stop()
-    os.unlink('/tmp/obj-store-test')
     os.unlink(fake_iso)
 
 
diff --git a/tests/test_model_network.py b/tests/test_model_network.py
index 79fda88..e83c515 100644
--- a/tests/test_model_network.py
+++ b/tests/test_model_network.py
@@ -2,7 +2,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM Corp, 2015-2016
+# Copyright IBM Corp, 2015-2017
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -18,8 +18,11 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 
+import cherrypy
 import json
+import mock
 import os
+import tempfile
 import unittest
 from functools import partial
 
@@ -28,25 +31,26 @@ from tests.utils import run_server
 
 from wok.rollbackcontext import RollbackContext
 
-from wok.plugins.kimchi.model.model import Model
 from wok.plugins.kimchi.model.featuretests import FeatureTests
 
-
 model = None
+objectstore_loc = tempfile.mktemp()
 test_server = None
 
 
-def setUpModule():
+@mock.patch('wok.plugins.kimchi.config.get_object_store')
+def setUpModule(func):
+    func.return_value = objectstore_loc
     global test_server, model
 
     patch_auth()
-    model = Model(None, '/tmp/obj-store-test')
-    test_server = run_server(test_mode=True, model=model)
+    test_server = run_server(test_mode=False)
+    model = cherrypy.tree.apps['/plugins/kimchi'].root.model
 
 
 def tearDownModule():
     test_server.stop()
-    os.unlink('/tmp/obj-store-test')
+    os.unlink(objectstore_loc)
 
 
 def _do_network_test(self, model, params):
diff --git a/tests/test_model_storagepool.py b/tests/test_model_storagepool.py
index 2210a37..a1a5d95 100644
--- a/tests/test_model_storagepool.py
+++ b/tests/test_model_storagepool.py
@@ -2,7 +2,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM Corp, 2015-2016
+# Copyright IBM Corp, 2015-2017
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -18,7 +18,9 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 
+import cherrypy
 import json
+import mock
 import os
 import shutil
 import tempfile
@@ -27,27 +29,27 @@ from functools import partial
 
 from wok.rollbackcontext import RollbackContext
 
-from wok.plugins.kimchi.model.model import Model
-
 from tests.utils import patch_auth, request
 from tests.utils import run_server
 
-
 model = None
+objectstore_loc = tempfile.mktemp()
 test_server = None
 
 
-def setUpModule():
+@mock.patch('wok.plugins.kimchi.config.get_object_store')
+def setUpModule(func):
+    func.return_value = objectstore_loc
     global test_server, model
 
     patch_auth()
-    model = Model(None, '/tmp/obj-store-test')
-    test_server = run_server(test_mode=True, model=model)
+    test_server = run_server(test_mode=False)
+    model = cherrypy.tree.apps['/plugins/kimchi'].root.model
 
 
 def tearDownModule():
     test_server.stop()
-    os.unlink('/tmp/obj-store-test')
+    os.unlink(objectstore_loc)
 
 
 class StoragepoolTests(unittest.TestCase):
diff --git a/tests/test_model_storagevolume.py b/tests/test_model_storagevolume.py
index cacfbb5..a1f1db9 100644
--- a/tests/test_model_storagevolume.py
+++ b/tests/test_model_storagevolume.py
@@ -2,7 +2,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM Corp, 2015-2016
+# Copyright IBM Corp, 2015-2017
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -18,9 +18,12 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 
+import cherrypy
 import json
+import mock
 import os
 import requests
+import tempfile
 import unittest
 from functools import partial
 
@@ -32,24 +35,25 @@ from wok.config import paths
 from wok.rollbackcontext import RollbackContext
 
 from wok.plugins.kimchi.config import READONLY_POOL_TYPE
-from wok.plugins.kimchi.model.model import Model
-
 
 model = None
+objectstore_loc = tempfile.mktemp()
 test_server = None
 
 
-def setUpModule():
+@mock.patch('wok.plugins.kimchi.config.get_object_store')
+def setUpModule(func):
+    func.return_value = objectstore_loc
     global test_server, model
 
     patch_auth()
-    model = Model(None, '/tmp/obj-store-test')
-    test_server = run_server(test_mode=True, model=model)
+    test_server = run_server(test_mode=False)
+    model = cherrypy.tree.apps['/plugins/kimchi'].root.model
 
 
 def tearDownModule():
     test_server.stop()
-    os.unlink('/tmp/obj-store-test')
+    os.unlink(objectstore_loc)
 
 
 def _do_volume_test(self, model, pool_name):
diff --git a/tests/test_rest.py b/tests/test_rest.py
index a06cfe5..09fd8a5 100644
--- a/tests/test_rest.py
+++ b/tests/test_rest.py
@@ -18,6 +18,7 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 
+import cherrypy
 import json
 import os
 import re
@@ -32,7 +33,6 @@ from tests.utils import patch_auth, request, run_server, wait_task
 from wok.asynctask import AsyncTask
 from wok.rollbackcontext import RollbackContext
 
-from wok.plugins.kimchi import mockmodel
 from wok.plugins.kimchi.osinfo import get_template_default
 
 import iso_gen
@@ -50,8 +50,8 @@ def setUpModule():
     global test_server, model
 
     patch_auth()
-    model = mockmodel.MockModel('/tmp/obj-store-test')
-    test_server = run_server(test_mode=True, model=model)
+    test_server = run_server(test_mode=True)
+    model = cherrypy.tree.apps['/plugins/kimchi'].root.model
 
     # Create fake ISO to do the tests
     iso_gen.construct_fake_iso(fake_iso, True, '12.04', 'ubuntu')
@@ -61,7 +61,6 @@ def setUpModule():
 
 def tearDownModule():
     test_server.stop()
-    os.unlink('/tmp/obj-store-test')
     os.unlink(fake_iso)
     os.unlink("/var/lib/libvirt/images/fedora.iso")
 
diff --git a/tests/test_template.py b/tests/test_template.py
index 8127a82..bf63acf 100644
--- a/tests/test_template.py
+++ b/tests/test_template.py
@@ -2,7 +2,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM Corp, 2015-2016
+# Copyright IBM Corp, 2015-2017
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -18,6 +18,7 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 
+import cherrypy
 import iso_gen
 import json
 import os
@@ -28,7 +29,6 @@ from functools import partial
 from tests.utils import patch_auth, request, run_server
 
 from wok.plugins.kimchi.config import READONLY_POOL_TYPE
-from wok.plugins.kimchi.mockmodel import MockModel
 from wok.plugins.kimchi.model.featuretests import FeatureTests
 from wok.plugins.kimchi.model.templates import MAX_MEM_LIM
 
@@ -43,14 +43,13 @@ def setUpModule():
     global test_server, model
 
     patch_auth()
-    model = MockModel('/tmp/obj-store-test')
-    test_server = run_server(test_mode=True, model=model)
+    test_server = run_server(test_mode=True)
+    model = cherrypy.tree.apps['/plugins/kimchi'].root.model
     iso_gen.construct_fake_iso(MOCK_ISO, True, '14.04', 'ubuntu')
 
 
 def tearDownModule():
     test_server.stop()
-    os.unlink('/tmp/obj-store-test')
 
 
 class TemplateTests(unittest.TestCase):
-- 
2.9.3

_______________________________________________
Kimchi-devel mailing list
Kimchi-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
Re: [Kimchi-devel] [PATCH] [Kimchi 2/6] Update run_server() calls to do not pass model instance
Posted by Lucio Correia 7 years, 3 months ago
On 07/02/2017 16:35, Aline Manera wrote:
> The model instance will be gotten from cherrypy when needed.
>
> Signed-off-by: Aline Manera <alinefm@linux.vnet.ibm.com>
> ---
>  root.py                           |  3 ++-
>  tests/test_authorization.py       | 10 ++++------
>  tests/test_host.py                | 15 +++------------
>  tests/test_livemigration.py       |  6 +-----
>  tests/test_mock_network.py        | 10 ++++------
>  tests/test_mock_storagepool.py    | 12 ++++--------
>  tests/test_mock_storagevolume.py  | 11 ++++-------
>  tests/test_mockmodel.py           |  8 +++-----
>  tests/test_model_network.py       | 18 +++++++++++-------
>  tests/test_model_storagepool.py   | 18 ++++++++++--------
>  tests/test_model_storagevolume.py | 18 +++++++++++-------
>  tests/test_rest.py                |  7 +++----
>  tests/test_template.py            |  9 ++++-----
>  13 files changed, 64 insertions(+), 81 deletions(-)
>
> diff --git a/root.py b/root.py
> index 3b39c05..68c4a78 100644
> --- a/root.py
> +++ b/root.py
> @@ -48,9 +48,10 @@ class Kimchi(WokRoot):
>          # When running on test mode, specify the objectstore location to
>          # remove the file on server shutting down. That way, the system will
>          # not suffer any change while running on test mode
> -        if wok_options.test:
> +        if wok_options.test is True or wok_options.test.lower() == 'true':

Further testitng it, when running from source, plugin loading is failing 
here:

Failed to import plugin plugins.kimchi.Kimchi, error: 'NoneType' object 
has no attribute 'lower'



>              self.objectstore_loc = tempfile.mktemp()
>              self.model = mockmodel.MockModel(self.objectstore_loc)
> +
>              def remove_objectstore():
>                  if os.path.exists(self.objectstore_loc):
>                      os.unlink(self.objectstore_loc)



-- 
Lucio Correia

_______________________________________________
Kimchi-devel mailing list
Kimchi-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
Re: [Kimchi-devel] [PATCH] [Kimchi 2/6] Update run_server() calls to do not pass model instance
Posted by Aline Manera 7 years, 3 months ago

On 02/08/2017 04:03 PM, Lucio Correia wrote:
> On 07/02/2017 16:35, Aline Manera wrote:
>> The model instance will be gotten from cherrypy when needed.
>>
>> Signed-off-by: Aline Manera <alinefm@linux.vnet.ibm.com>
>> ---
>>  root.py                           |  3 ++-
>>  tests/test_authorization.py       | 10 ++++------
>>  tests/test_host.py                | 15 +++------------
>>  tests/test_livemigration.py       |  6 +-----
>>  tests/test_mock_network.py        | 10 ++++------
>>  tests/test_mock_storagepool.py    | 12 ++++--------
>>  tests/test_mock_storagevolume.py  | 11 ++++-------
>>  tests/test_mockmodel.py           |  8 +++-----
>>  tests/test_model_network.py       | 18 +++++++++++-------
>>  tests/test_model_storagepool.py   | 18 ++++++++++--------
>>  tests/test_model_storagevolume.py | 18 +++++++++++-------
>>  tests/test_rest.py                |  7 +++----
>>  tests/test_template.py            |  9 ++++-----
>>  13 files changed, 64 insertions(+), 81 deletions(-)
>>
>> diff --git a/root.py b/root.py
>> index 3b39c05..68c4a78 100644
>> --- a/root.py
>> +++ b/root.py
>> @@ -48,9 +48,10 @@ class Kimchi(WokRoot):
>>          # When running on test mode, specify the objectstore 
>> location to
>>          # remove the file on server shutting down. That way, the 
>> system will
>>          # not suffer any change while running on test mode
>> -        if wok_options.test:
>> +        if wok_options.test is True or wok_options.test.lower() == 
>> 'true':
>
> Further testitng it, when running from source, plugin loading is 
> failing here:
>
> Failed to import plugin plugins.kimchi.Kimchi, error: 'NoneType' 
> object has no attribute 'lower'
>
>

I will fix it and send a V2.

>
>>              self.objectstore_loc = tempfile.mktemp()
>>              self.model = mockmodel.MockModel(self.objectstore_loc)
>> +
>>              def remove_objectstore():
>>                  if os.path.exists(self.objectstore_loc):
>>                      os.unlink(self.objectstore_loc)
>
>
>

_______________________________________________
Kimchi-devel mailing list
Kimchi-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel