summaryrefslogtreecommitdiff
path: root/contrib/cirrus/test/test_dot_cirrus_yaml.py
diff options
context:
space:
mode:
authorChris Evich <cevich@redhat.com>2019-01-23 18:01:18 -0500
committerChris Evich <cevich@redhat.com>2019-03-06 12:21:14 -0500
commit4531800f491bb83928025e47e2b1aad6fc5ea14c (patch)
tree8523cdba6c6f95a6465a968595e972e1b317e869 /contrib/cirrus/test/test_dot_cirrus_yaml.py
parent2b5a9628324c4d93769d72d3d8c85667eaac612a (diff)
downloadpodman-4531800f491bb83928025e47e2b1aad6fc5ea14c.tar.gz
podman-4531800f491bb83928025e47e2b1aad6fc5ea14c.tar.bz2
podman-4531800f491bb83928025e47e2b1aad6fc5ea14c.zip
Cirrus: Use imgts container to record metadata
Make use of the built imgts container image to track VM image usage statistics for every automation run. Also update and add small check to the gate test that verifies expected formatting/content of the `.cirrus.yml` file WRT VM Image names. Signed-off-by: Chris Evich <cevich@redhat.com>
Diffstat (limited to 'contrib/cirrus/test/test_dot_cirrus_yaml.py')
-rwxr-xr-xcontrib/cirrus/test/test_dot_cirrus_yaml.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/contrib/cirrus/test/test_dot_cirrus_yaml.py b/contrib/cirrus/test/test_dot_cirrus_yaml.py
new file mode 100755
index 000000000..2894bc45e
--- /dev/null
+++ b/contrib/cirrus/test/test_dot_cirrus_yaml.py
@@ -0,0 +1,78 @@
+#!/bin/env python3
+
+import sys
+import os
+import os.path
+import unittest
+import warnings
+import yaml
+
+class TestCaseBase(unittest.TestCase):
+
+ SCRIPT_PATH = os.path.realpath((os.path.dirname(sys.argv[0])))
+ CIRRUS_WORKING_DIR = os.environ.get('CIRRUS_WORKING_DIR',
+ '{0}/../../../'.format(SCRIPT_PATH))
+
+ def setUp(self):
+ os.chdir(self.CIRRUS_WORKING_DIR)
+
+
+class TestCirrusYAML(TestCaseBase):
+
+ IMAGE_NAME_SUFFIX = '_CACHE_IMAGE_NAME'
+ ACTIVE_IMAGES_NAME = 'ACTIVE_CACHE_IMAGE_NAMES'
+
+ def setUp(self):
+ TestCirrusYAML._cirrus = None
+ super().setUp()
+
+ @property
+ def cirrus(self):
+ if TestCirrusYAML._cirrus is None:
+ with warnings.catch_warnings():
+ warnings.filterwarnings("ignore",category=DeprecationWarning)
+ with open('.cirrus.yml', "r") as dot_cirrus_dot_yaml:
+ TestCirrusYAML._cirrus = yaml.load(dot_cirrus_dot_yaml)
+ return TestCirrusYAML._cirrus
+
+ def _assert_get_cache_image_names(self, env):
+ inames = set([key for key in env.keys()
+ if key.endswith(self.IMAGE_NAME_SUFFIX)])
+ self.assertNotEqual(inames, set())
+
+ ivalues = set([value for key, value in env.items()
+ if key in inames])
+ self.assertNotEqual(ivalues, set())
+ return ivalues
+
+ def _assert_get_subdct(self, key, dct):
+ self.assertIn(key, dct)
+ return dct[key]
+
+ def test_parse_yaml(self):
+ self.assertIsInstance(self.cirrus, dict)
+
+ def test_active_cache_image_names(self):
+ env = self._assert_get_subdct('env', self.cirrus)
+ acin = self._assert_get_subdct(self.ACTIVE_IMAGES_NAME, env)
+
+ for ivalue in self._assert_get_cache_image_names(env):
+ self.assertIn(ivalue, acin,
+ "The '{}' sub-key of 'env' should contain this among"
+ " its space-separated values."
+ "".format(self.ACTIVE_IMAGES_NAME))
+
+
+ def test_cache_image_names_active(self):
+ env = self._assert_get_subdct('env', self.cirrus)
+ ivalues = self._assert_get_cache_image_names(env)
+
+ for avalue in set(self._assert_get_subdct(self.ACTIVE_IMAGES_NAME, env).split()):
+ self.assertIn(avalue, ivalues,
+ "All space-separated values in the '{}' sub-key"
+ " of 'env' must also be used in a key with a '{}' suffix."
+ "".format(self.ACTIVE_IMAGES_NAME, self.IMAGE_NAME_SUFFIX))
+
+
+if __name__ == '__main__':
+ unittest.main(failfast=True, catchbreak=True, verbosity=0)