From 854ac7d73b49dc10eb0b59a8f624cb4e1be018cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20de=20Saint=20Martin?= <cedric.dsm@tiolive.com> Date: Thu, 6 Jun 2013 18:04:44 +0200 Subject: [PATCH] Simplify, factor slapobject test mixin - Clearly define the imports - Refactor specific mockup --- slapos/tests/slapobject.py | 53 +++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/slapos/tests/slapobject.py b/slapos/tests/slapobject.py index f1396207f7..2d282f9c5d 100644 --- a/slapos/tests/slapobject.py +++ b/slapos/tests/slapobject.py @@ -29,14 +29,21 @@ import logging import os import unittest -from slapos.grid import SlapObject +from slapos.slap import ComputerPartition as SlapComputerPartition + +from slapos.grid.SlapObject import Partition, Software from slapos.grid import utils from slapos.grid import networkcache # XXX: BasicMixin should be in a separated module, not in slapgrid test module. from slapos.tests.slapgrid import BasicMixin -class FakeCallAndRead: +# XXX: change name and behavior to be more generic and factor with other tests +class FakeNetworkCacheCallAndRead(object): + """ + Short-circuit normal calls to slapos buildout helpers, get and store + 'additional_buildout_parameter_list' for future analysis. + """ def __init__(self): self.external_command_list = [] @@ -45,15 +52,13 @@ class FakeCallAndRead: kwargs.get('additional_buildout_parameter_list') self.external_command_list.extend(additional_buildout_parameter_list) -FakeCallAndRead = FakeCallAndRead() - # Backup modules -original_install_from_buildout = SlapObject.Software._install_from_buildout +original_install_from_buildout = Software._install_from_buildout original_upload_network_cached = networkcache.upload_network_cached originalBootstrapBuildout = utils.bootstrapBuildout originalLaunchBuildout = utils.launchBuildout -originalUploadSoftwareRelease = SlapObject.Software.uploadSoftwareRelease - +originalUploadSoftwareRelease = Software.uploadSoftwareRelease +originalPartitionGenerateSupervisorConfigurationFile = Partition.generateSupervisorConfigurationFile class MasterMixin(BasicMixin, unittest.TestCase): """ @@ -62,16 +67,12 @@ class MasterMixin(BasicMixin, unittest.TestCase): def setUp(self): BasicMixin.setUp(self) os.mkdir(self.software_root) - # Monkey patch utils module - utils.bootstrapBuildout = FakeCallAndRead - utils.launchBuildout = FakeCallAndRead - # Reset external command list in case it is dirty from previous test - FakeCallAndRead.external_command_list = [] + os.mkdir(self.instance_root) def tearDown(self): BasicMixin.tearDown(self) - # Un-monkey patch utils module + # Un-monkey patch possible modules global originalBootstrapBuildout global originalLaunchBuildout utils.bootstrapBuildout = originalBootstrapBuildout @@ -84,6 +85,10 @@ class TestSoftwareNetworkCacheSlapObject(MasterMixin, unittest.TestCase): """ def setUp(self): MasterMixin.setUp(self) + self.fakeCallAndRead = FakeNetworkCacheCallAndRead() + utils.bootstrapBuildout = self.fakeCallAndRead + utils.launchBuildout = self.fakeCallAndRead + self.signature_private_key_file = '/signature/private/key_file' self.upload_cache_url = 'http://example.com/uploadcache' self.upload_dir_url = 'http://example.com/uploaddir' @@ -95,16 +100,16 @@ class TestSoftwareNetworkCacheSlapObject(MasterMixin, unittest.TestCase): def tearDown(self): MasterMixin.tearDown(self) - SlapObject.Software._install_from_buildout = original_install_from_buildout + Software._install_from_buildout = original_install_from_buildout networkcache.upload_network_cached = original_upload_network_cached - SlapObject.Software.uploadSoftwareRelease = originalUploadSoftwareRelease + Software.uploadSoftwareRelease = originalUploadSoftwareRelease # Test methods def test_software_install_with_networkcache(self): """ Check if the networkcache parameters are propagated. """ - software = SlapObject.Software( + software = Software( url='http://example.com/software.cfg', software_root=self.software_root, buildout=self.buildout, @@ -119,7 +124,7 @@ class TestSoftwareNetworkCacheSlapObject(MasterMixin, unittest.TestCase): software.install() - command_list = FakeCallAndRead.external_command_list + command_list = self.fakeCallAndRead.external_command_list self.assertIn('buildout:networkcache-section=networkcache', command_list) self.assertIn('networkcache:signature-private-key-file=%s' % self.signature_private_key_file, command_list) self.assertIn('networkcache:upload-cache-url=%s' % self.upload_cache_url, command_list) @@ -134,13 +139,13 @@ class TestSoftwareNetworkCacheSlapObject(MasterMixin, unittest.TestCase): Check if the networkcache parameters are not propagated if they are not available. """ - software = SlapObject.Software(url='http://example.com/software.cfg', + software = Software(url='http://example.com/software.cfg', software_root=self.software_root, buildout=self.buildout, logger=logging.getLogger()) software.install() - command_list = FakeCallAndRead.external_command_list + command_list = self.fakeCallAndRead.external_command_list self.assertNotIn('buildout:networkcache-section=networkcache', command_list) self.assertNotIn('networkcache:signature-private-key-file=%s' % self.signature_private_key_file, @@ -158,7 +163,7 @@ class TestSoftwareNetworkCacheSlapObject(MasterMixin, unittest.TestCase): def fakeBuildout(*args, **kw): pass - SlapObject.Software._install_from_buildout = fakeBuildout + Software._install_from_buildout = fakeBuildout def fake_upload_network_cached(*args, **kw): self.assertFalse(True) @@ -167,7 +172,7 @@ class TestSoftwareNetworkCacheSlapObject(MasterMixin, unittest.TestCase): upload_to_binary_cache_url_blacklist = ["http://example.com"] - software = SlapObject.Software( + software = Software( url='http://example.com/software.cfg', software_root=self.software_root, buildout=self.buildout, @@ -191,16 +196,16 @@ class TestSoftwareNetworkCacheSlapObject(MasterMixin, unittest.TestCase): """ def fakeBuildout(*args, **kw): pass - SlapObject.Software._install_from_buildout = fakeBuildout + Software._install_from_buildout = fakeBuildout def fakeUploadSoftwareRelease(*args, **kw): self.uploaded = True - SlapObject.Software.uploadSoftwareRelease = fakeUploadSoftwareRelease + Software.uploadSoftwareRelease = fakeUploadSoftwareRelease upload_to_binary_cache_url_blacklist = ["http://anotherexample.com"] - software = SlapObject.Software( + software = Software( url='http://example.com/software.cfg', software_root=self.software_root, buildout=self.buildout, -- 2.30.9