summaryrefslogtreecommitdiff
path: root/tests/pa
diff options
context:
space:
mode:
authorƁukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com>2017-05-18 19:58:02 +0200
committerusd-importer <ubuntu-server@lists.ubuntu.com>2017-05-31 09:53:12 +0000
commit4fb0b5a09b26135ade285844da5d7dfe582a8d4c (patch)
tree09b1e5867d6e7501118cdd0af0012b51fc216530 /tests/pa
parent473ad6fbfe0b9c3b362b530492928303f2b4c7f3 (diff)
downloadvyos-walinuxagent-4fb0b5a09b26135ade285844da5d7dfe582a8d4c.tar.gz
vyos-walinuxagent-4fb0b5a09b26135ade285844da5d7dfe582a8d4c.zip
Import patches-unapplied version 2.2.12-0ubuntu1 to ubuntu/artful-proposed
Imported using git-ubuntu import. Changelog parent: 473ad6fbfe0b9c3b362b530492928303f2b4c7f3 New changelog entries: * New upstream release (LP: #1690854). - Refreshed debian/patches/disable_import_test.patch.
Diffstat (limited to 'tests/pa')
-rw-r--r--tests/pa/test_deprovision.py108
-rw-r--r--tests/pa/test_provision.py48
2 files changed, 153 insertions, 3 deletions
diff --git a/tests/pa/test_deprovision.py b/tests/pa/test_deprovision.py
index be34915..c4cd9b4 100644
--- a/tests/pa/test_deprovision.py
+++ b/tests/pa/test_deprovision.py
@@ -15,11 +15,117 @@
# Requires Python 2.4+ and Openssl 1.0+
#
-from tests.tools import *
+import tempfile
+
+import azurelinuxagent.common.utils.fileutil as fileutil
+
from azurelinuxagent.pa.deprovision import get_deprovision_handler
+from azurelinuxagent.pa.deprovision.default import DeprovisionHandler
+from tests.tools import *
class TestDeprovision(AgentTestCase):
+ @patch("azurelinuxagent.pa.deprovision.default.DeprovisionHandler.cloud_init_dirs")
+ @patch("azurelinuxagent.pa.deprovision.default.DeprovisionHandler.cloud_init_files")
+ def test_del_cloud_init_without_once(self,
+ mock_files,
+ mock_dirs):
+ deprovision_handler = get_deprovision_handler("","","")
+ deprovision_handler.del_cloud_init([], [], include_once=False)
+
+ mock_dirs.assert_called_with(include_once=False)
+ mock_files.assert_called_with(include_once=False)
+
+ @patch("signal.signal")
+ @patch("azurelinuxagent.common.protocol.get_protocol_util")
+ @patch("azurelinuxagent.common.osutil.get_osutil")
+ @patch("azurelinuxagent.pa.deprovision.default.DeprovisionHandler.cloud_init_dirs")
+ @patch("azurelinuxagent.pa.deprovision.default.DeprovisionHandler.cloud_init_files")
+ def test_del_cloud_init(self,
+ mock_files,
+ mock_dirs,
+ mock_osutil,
+ mock_util,
+ mock_signal):
+ try:
+ with tempfile.NamedTemporaryFile() as f:
+ warnings = []
+ actions = []
+
+ dirs = [tempfile.mkdtemp()]
+ mock_dirs.return_value = dirs
+
+ files = [f.name]
+ mock_files.return_value = files
+
+ deprovision_handler = get_deprovision_handler("","","")
+ deprovision_handler.del_cloud_init(warnings, actions)
+
+ mock_dirs.assert_called_with(include_once=True)
+ mock_files.assert_called_with(include_once=True)
+
+ self.assertEqual(len(warnings), 0)
+ self.assertEqual(len(actions), 2)
+ for da in actions:
+ if da.func == fileutil.rm_dirs:
+ self.assertEqual(da.args, dirs)
+ elif da.func == fileutil.rm_files:
+ self.assertEqual(da.args, files)
+ else:
+ self.assertTrue(False)
+
+ try:
+ for da in actions:
+ da.invoke()
+ self.assertEqual(len([d for d in dirs if os.path.isdir(d)]), 0)
+ self.assertEqual(len([f for f in files if os.path.isfile(f)]), 0)
+ except Exception as e:
+ self.assertTrue(False, "Exception {0}".format(e))
+ except OSError:
+ # Ignore the error caused by removing the file within the "with"
+ pass
+
+ @distros("ubuntu")
+ @patch('azurelinuxagent.common.conf.get_lib_dir')
+ def test_del_lib_dir_files(self,
+ distro_name,
+ distro_version,
+ distro_full_name,
+ mock_conf):
+ files = [
+ 'HostingEnvironmentConfig.xml',
+ 'Incarnation',
+ 'Protocol',
+ 'SharedConfig.xml',
+ 'WireServerEndpoint',
+ 'Extensions.1.xml',
+ 'ExtensionsConfig.1.xml',
+ 'GoalState.1.xml',
+ 'Extensions.2.xml',
+ 'ExtensionsConfig.2.xml',
+ 'GoalState.2.xml'
+ ]
+
+ tmp = tempfile.mkdtemp()
+ mock_conf.return_value = tmp
+ for f in files:
+ fileutil.write_file(os.path.join(tmp, f), "Value")
+
+ deprovision_handler = get_deprovision_handler(distro_name,
+ distro_version,
+ distro_full_name)
+ warnings = []
+ actions = []
+ deprovision_handler.del_lib_dir_files(warnings, actions)
+
+ self.assertTrue(len(warnings) == 0)
+ self.assertTrue(len(actions) == 1)
+ self.assertEqual(fileutil.rm_files, actions[0].func)
+ self.assertTrue(len(actions[0].args) > 0)
+ for f in actions[0].args:
+ self.assertTrue(os.path.basename(f) in files)
+
+
@distros("redhat")
def test_deprovision(self,
distro_name,
diff --git a/tests/pa/test_provision.py b/tests/pa/test_provision.py
index a98eacd..0446442 100644
--- a/tests/pa/test_provision.py
+++ b/tests/pa/test_provision.py
@@ -16,17 +16,22 @@
#
import azurelinuxagent.common.utils.fileutil as fileutil
+
+from azurelinuxagent.common.exception import ProtocolError
from azurelinuxagent.common.osutil.default import DefaultOSUtil
from azurelinuxagent.common.protocol import OVF_FILE_NAME
from azurelinuxagent.pa.provision import get_provision_handler
+from azurelinuxagent.pa.provision.default import ProvisionHandler
from tests.tools import *
class TestProvision(AgentTestCase):
@distros("redhat")
- def test_provision(self, distro_name, distro_version, distro_full_name):
- provision_handler = get_provision_handler(distro_name, distro_version,
+ @patch('azurelinuxagent.common.osutil.default.DefaultOSUtil.get_instance_id',
+ return_value='B9F3C233-9913-9F42-8EB3-BA656DF32502')
+ def test_provision(self, mock_util, distro_name, distro_version, distro_full_name):
+ provision_handler = get_provision_handler(distro_name, distro_version,
distro_full_name)
mock_osutil = MagicMock()
mock_osutil.decode_customdata = Mock(return_value="")
@@ -48,6 +53,45 @@ class TestProvision(AgentTestCase):
data = DefaultOSUtil().decode_customdata(base64data)
fileutil.write_file(tempfile.mktemp(), data)
+ @patch('os.path.isfile', return_value=False)
+ def test_is_provisioned_not_provisioned(self, mock_isfile):
+ ph = ProvisionHandler()
+ self.assertFalse(ph.is_provisioned())
+
+ @patch('os.path.isfile', return_value=True)
+ @patch('azurelinuxagent.common.utils.fileutil.read_file',
+ return_value="B9F3C233-9913-9F42-8EB3-BA656DF32502")
+ @patch('azurelinuxagent.pa.deprovision.get_deprovision_handler')
+ def test_is_provisioned_is_provisioned(self,
+ mock_deprovision, mock_read, mock_isfile):
+ ph = ProvisionHandler()
+ ph.osutil = Mock()
+ ph.osutil.get_instance_id = \
+ Mock(return_value="B9F3C233-9913-9F42-8EB3-BA656DF32502")
+ ph.write_provisioned = Mock()
+
+ deprovision_handler = Mock()
+ mock_deprovision.return_value = deprovision_handler
+
+ self.assertTrue(ph.is_provisioned())
+ deprovision_handler.run_changed_unique_id.assert_not_called()
+
+ @patch('os.path.isfile', return_value=True)
+ @patch('azurelinuxagent.common.utils.fileutil.read_file',
+ side_effect=["Value"])
+ @patch('azurelinuxagent.pa.deprovision.get_deprovision_handler')
+ def test_is_provisioned_not_deprovisioned(self,
+ mock_deprovision, mock_read, mock_isfile):
+
+ ph = ProvisionHandler()
+ ph.osutil = Mock()
+ ph.write_provisioned = Mock()
+
+ deprovision_handler = Mock()
+ mock_deprovision.return_value = deprovision_handler
+
+ self.assertTrue(ph.is_provisioned())
+ deprovision_handler.run_changed_unique_id.assert_called_once()
if __name__ == '__main__':
unittest.main()