aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArif Ali <arif.ali@canonical.com>2024-03-15 11:06:34 +0000
committerJake Hunsaker <jacob.r.hunsaker@gmail.com>2024-04-09 20:01:21 -0400
commit46cd148ec13c7e79a93e3d9f6a5d0bd8a97e0ac3 (patch)
tree5a94d28de796e3f30f8b6811b32e9ad8ed271f8f
parentf109e7df0bf743b6c1d3134959a3b3dd56a8b80d (diff)
downloadsos-46cd148ec13c7e79a93e3d9f6a5d0bd8a97e0ac3.tar.gz
[cirrus] Run tests on latest daily builds for ubuntu
Fix the issues reported by the tests on the new version of ubuntu Resolves: #3587 Closes: #3588 Related: SET-594,SET-595 Co-authored-by: David Negreira <david.negreira@canonical.com> Signed-off-by: Arif Ali <arif.ali@canonical.com> Signed-off-by: David Negreira <david.negreira@canonical.com>
-rw-r--r--.cirrus.yml55
-rw-r--r--sos/policies/runtimes/lxd.py1
-rw-r--r--tests/cleaner_tests/basic_function_tests/report_with_mask.py4
-rw-r--r--tests/collect_tests/help_output_tests.py2
-rw-r--r--tests/report_tests/basic_report_tests.py6
-rw-r--r--tests/report_tests/encryption_tests.py5
-rw-r--r--tests/report_tests/exception_tests.py6
-rw-r--r--tests/report_tests/options_tests/options_tests.py4
-rw-r--r--tests/sos_tests.py2
-rw-r--r--tests/unittests/policy_tests.py6
10 files changed, 71 insertions, 20 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index a4c5d92b..7bd019bd 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -21,6 +21,7 @@ env:
FEDORA_PROJECT: "fedora-cloud"
SOS_PROJECT: "sos-devel-jobs"
UBUNTU_PROJECT: "ubuntu-os-cloud"
+ UBUNTU_DEVEL_PROJECT: "ubuntu-os-cloud-devel"
# Images exist on GCP already
CENTOS_9_IMAGE_NAME: "centos-stream-9-v20230809"
@@ -28,12 +29,14 @@ env:
DEBIAN_IMAGE_NAME: "debian-11-bullseye-v20230809"
FEDORA_IMAGE_NAME: "fedora-cloud-base-gcp-38-1-6-x86-64"
FEDORA_PRIOR_IMAGE_NAME: "fedora-cloud-base-gcp-37-1-7-x86-64"
+
UBUNTU_DEB_IMAGE_NAME: "ubuntu-minimal-2310-mantic-amd64-v20231030"
UBUNTU_LATEST_IMAGE_NAME: "ubuntu-2310-mantic-amd64-v20231031"
UBUNTU_IMAGE_NAME: "ubuntu-2204-jammy-v20231030"
UBUNTU_PRIOR_IMAGE_NAME: "ubuntu-2004-focal-v20231101"
UBUNTU_PRIOR2_IMAGE_NAME: "ubuntu-1804-bionic-v20230605"
UBUNTU_SNAP_IMAGE_NAME: "ubuntu-2204-jammy-v20231030"
+ UBUNTU_DEVEL_FAMILY_NAME: "ubuntu-2404-lts-amd64"
# Curl-command prefix for downloading task artifacts, simply add the
# the url-encoded task name, artifact name, and path as a suffix.
@@ -226,14 +229,40 @@ report_stageone_task:
pip3 install avocado-framework==94.0 ${PIP_EXTRA}
# run the unittests separately as they require a different PYTHONPATH in
# order for the imports to work properly under avocado
- unittest_script: PYTHONPATH=. avocado run tests/unittests/
- main_script: PYTHONPATH=tests/ avocado run -p TESTLOCAL=true --test-runner=runner -t stageone tests/{cleaner,collect,report,vendor}_tests
+ unittest_script: &unit_test |
+ PYTHONPATH=. avocado run tests/unittests/
+ main_script: &stageone_test
+ PYTHONPATH=tests/ avocado run -p TESTLOCAL=true --test-runner=runner -t stageone tests/{cleaner,collect,report,vendor}_tests
on_failure:
fail_script: &faillogs |
ls -d /var/tmp/avocado* /root/avocado* 2> /dev/null | xargs tar cf sos-fail-logs.tar
log_artifacts: &logs
path: "sos-fail-logs.tar"
+report_stageone_daily_task:
+ alias: "stageone_daily_report"
+ name: "Report Stage One - ${UBUNTU_DEVEL_FAMILY_NAME}"
+ allow_failures: true
+ depends_on:
+ - snap_build
+ gce_instance:
+ image_project: ${UBUNTU_DEVEL_PROJECT}
+ image_family: ${UBUNTU_DEVEL_FAMILY_NAME}
+ type: e2-medium
+ environment:
+ PKG: "snap"
+ setup_script: *setup
+ avocado_install_script: &avocado_setup |
+ pip3 uninstall -y avocado-framework --break-system-packages
+ git clone --single-branch -b 92lts https://github.com/avocado-framework/avocado.git
+ cd avocado
+ make install
+ unittest_script: *unit_test
+ main_script: *stageone_test
+ on_failure:
+ fail_script: *faillogs
+ log_artifacts: *logs
+
# IFF the stage one tests all pass, then run stage two for latest distros
report_stagetwo_task:
alias: "stagetwo_report"
@@ -255,7 +284,27 @@ report_stagetwo_task:
if [ $(command -v dnf) ]; then
dnf -y install python3-pexpect
fi
- main_script: PYTHONPATH=tests/ avocado run -p TESTLOCAL=true --test-runner=runner -t stagetwo tests/{cleaner,collect,report,vendor}_tests
+ main_script: &stagetwo_test |
+ PYTHONPATH=tests/ avocado run -p TESTLOCAL=true --test-runner=runner -t stagetwo tests/{cleaner,collect,report,vendor}_tests
+ on_failure:
+ fail_script: *faillogs
+ log_artifacts: *logs
+
+report_stagetwo_daily_task:
+ alias: "stagetwo_daily_report"
+ name: "Report Stage Two - ${UBUNTU_DEVEL_FAMILY_NAME}"
+ allow_failures: true
+ depends_on: stageone_daily_report
+ timeout_in: 45m
+ gce_instance:
+ image_project: ${UBUNTU_DEVEL_PROJECT}
+ image_family: ${UBUNTU_DEVEL_FAMILY_NAME}
+ type: e2-medium
+ environment:
+ PKG: "snap"
+ setup_script: *setup
+ avocado_install_script: *avocado_setup
+ main_script: *stagetwo_test
on_failure:
fail_script: *faillogs
log_artifacts: *logs
diff --git a/sos/policies/runtimes/lxd.py b/sos/policies/runtimes/lxd.py
index 2d0b5b48..a6962782 100644
--- a/sos/policies/runtimes/lxd.py
+++ b/sos/policies/runtimes/lxd.py
@@ -24,6 +24,7 @@ class LxdContainerRuntime(ContainerRuntime):
def check_is_active(self):
# the daemon must be running
if (is_executable('lxc', self.policy.sysroot) and
+ self.policy.package_manager.pkg_by_name('lxd') and
(self.policy.init_system.is_running('lxd') or
self.policy.init_system.is_running('snap.lxd.daemon'))):
self.active = True
diff --git a/tests/cleaner_tests/basic_function_tests/report_with_mask.py b/tests/cleaner_tests/basic_function_tests/report_with_mask.py
index 06bb2122..bb72cdde 100644
--- a/tests/cleaner_tests/basic_function_tests/report_with_mask.py
+++ b/tests/cleaner_tests/basic_function_tests/report_with_mask.py
@@ -119,7 +119,7 @@ class DefaultRemoveBinaryFilesTest(StageTwoReportTest):
self.assertFileNotCollected('var/log/binary_test.tar.xz')
def test_binaries_removed_reported(self):
- self.assertOutputContains('\[removed .* unprocessable files\]')
+ self.assertOutputContains(r'\[removed .* unprocessable files\]')
class KeepBinaryFilesTest(StageTwoReportTest):
@@ -142,4 +142,4 @@ class KeepBinaryFilesTest(StageTwoReportTest):
self.assertFileCollected('var/log/binary_test.tar.xz')
def test_no_binaries_reported_removed(self):
- self.assertOutputNotContains('\[removed .* unprocessable files\]')
+ self.assertOutputNotContains(r'\[removed .* unprocessable files\]')
diff --git a/tests/collect_tests/help_output_tests.py b/tests/collect_tests/help_output_tests.py
index 258bb8d7..584ad498 100644
--- a/tests/collect_tests/help_output_tests.py
+++ b/tests/collect_tests/help_output_tests.py
@@ -65,7 +65,7 @@ class CollectOptionsHelpTest(StageOneOutputTest):
@skipIf(PEXPECT_PRESENT is False, "python3-pexpect not installed locally")
def test_cluster_profiles_shown(self):
- _out = re.search("Use the short name with --cluster-type or cluster options \(-c\)(.*?)The following cluster options are available:",
+ _out = re.search(r"Use the short name with --cluster-type or cluster options \(-c\)(.*?)The following cluster options are available:",
self.cmd_output.stdout, re.S).group(1).splitlines()
_profs = {}
for ln in _out:
diff --git a/tests/report_tests/basic_report_tests.py b/tests/report_tests/basic_report_tests.py
index a6fdf003..58618cbc 100644
--- a/tests/report_tests/basic_report_tests.py
+++ b/tests/report_tests/basic_report_tests.py
@@ -23,7 +23,7 @@ class NormalSoSReport(StageOneReportTest):
def test_debug_not_printed_to_console(self):
self.assertOutputNotContains('added cmd output')
- self.assertOutputNotContains('\[archive:.*\]')
+ self.assertOutputNotContains(r'\[archive:.*\]')
def test_postproc_called(self):
self.assertSosLogContains('substituting scrpath')
@@ -61,11 +61,11 @@ class LogLevelTest(StageOneReportTest):
sos_cmd = '-vvv -o kernel,host,boot,filesys'
def test_archive_logging_enabled(self):
- self.assertSosLogContains('DEBUG: \[archive:.*\]')
+ self.assertSosLogContains(r'DEBUG: \[archive:.*\]')
self.assertSosLogContains('Making leading paths for')
def test_debug_printed_to_console(self):
- self.assertOutputContains('\[plugin:.*\]')
+ self.assertOutputContains(r'\[plugin:.*\]')
class RestrictedSoSReport(StageOneReportTest):
diff --git a/tests/report_tests/encryption_tests.py b/tests/report_tests/encryption_tests.py
index 9ce401ec..d60d9d78 100644
--- a/tests/report_tests/encryption_tests.py
+++ b/tests/report_tests/encryption_tests.py
@@ -22,10 +22,11 @@ class EncryptedReportTest(StageOneReportTest):
sos_cmd = "-o kernel --encrypt-pass %s" % encrypt_pass
def test_archive_gpg_encrypted(self):
- self.assertOutputContains('/.*sosreport-.*tar.*\.gpg')
+ self.assertOutputContains(r'/.*sosreport-.*tar.*\.gpg')
_cmd = "file %s" % self.encrypted_path
res = process.run(_cmd)
- self.assertTrue("GPG symmetrically encrypted data" in res.stdout.decode())
+ self.assertTrue(("GPG symmetrically encrypted data" in res.stdout.decode())
+ or ("PGP symmetric key encrypted data" in res.stdout.decode()))
def test_tarball_named_secure(self):
self.assertTrue('secured-' in self.encrypted_path)
diff --git a/tests/report_tests/exception_tests.py b/tests/report_tests/exception_tests.py
index 769954a0..678c06d6 100644
--- a/tests/report_tests/exception_tests.py
+++ b/tests/report_tests/exception_tests.py
@@ -17,7 +17,7 @@ class InvalidPluginEnabledTest(StageOneReportExceptionTest):
sos_cmd = '-o foobar'
def test_caught_invalid_plugin(self):
- self.assertOutputContains('a non-existing plugin \(foobar\)')
+ self.assertOutputContains(r'a non-existing plugin \(foobar\)')
class InvalidPluginOptionTest(StageOneReportExceptionTest):
@@ -28,7 +28,7 @@ class InvalidPluginOptionTest(StageOneReportExceptionTest):
sos_cmd = '-o kernel -k kernel.colonel=on'
def test_caught_invalid_plugin_option(self):
- self.assertOutputContains('no such option "colonel" for plugin \(kernel\)')
+ self.assertOutputContains(r'no such option "colonel" for plugin \(kernel\)')
class InvalidReportOptionTest(StageOneReportExceptionTest):
@@ -39,7 +39,7 @@ class InvalidReportOptionTest(StageOneReportExceptionTest):
sos_cmd = '--magic'
def test_caught_invalid_option(self):
- self.assertOutputContains('unrecognized arguments\: --magic')
+ self.assertOutputContains(r'unrecognized arguments\: --magic')
class InvalidPluginDisableTest(StageOneReportTest):
diff --git a/tests/report_tests/options_tests/options_tests.py b/tests/report_tests/options_tests/options_tests.py
index 997042ba..e912da8d 100644
--- a/tests/report_tests/options_tests/options_tests.py
+++ b/tests/report_tests/options_tests/options_tests.py
@@ -27,10 +27,10 @@ class OptionsFromConfigTest(StageTwoReportTest):
def test_plugopts_logged_from_config(self):
self.assertSosLogContains(
- "Set kernel plugin option to \(name=with-timer, desc='gather /proc/timer\* statistics', value=True, default=False\)"
+ r"Set kernel plugin option to \(name=with-timer, desc='gather /proc/timer\* statistics', value=True, default=False\)"
)
self.assertSosLogContains(
- "Set kernel plugin option to \(name=trace, desc='gather /sys/kernel/debug/tracing/trace file', value=True, default=False\)"
+ r"Set kernel plugin option to \(name=trace, desc='gather /sys/kernel/debug/tracing/trace file', value=True, default=False\)"
)
def test_disabled_plugopts_not_loaded(self):
diff --git a/tests/sos_tests.py b/tests/sos_tests.py
index d15395f0..1fb31875 100644
--- a/tests/sos_tests.py
+++ b/tests/sos_tests.py
@@ -424,7 +424,7 @@ class BaseSoSReportTest(BaseSoSTest):
override
"""
try:
- return re.findall('/.*sosreport-.*tar.*\.gpg', self.cmd_output.stdout)[-1]
+ return re.findall(r'/.*sosreport-.*tar.*\.gpg', self.cmd_output.stdout)[-1]
except:
return None
diff --git a/tests/unittests/policy_tests.py b/tests/unittests/policy_tests.py
index 1cefaab7..a64275b8 100644
--- a/tests/unittests/policy_tests.py
+++ b/tests/unittests/policy_tests.py
@@ -108,7 +108,7 @@ class RpmPackageManagerTests(unittest.TestCase):
self.pm = RpmPackageManager()
def test_load_all_packages(self):
- self.assertNotEquals(self.pm.packages, {})
+ self.assertNotEqual(self.pm.packages, {})
def test_pkg_is_formatted(self):
kpkg = self.pm.pkg_by_name('coreutils')
@@ -125,7 +125,7 @@ class DpkgPackageManagerTests(unittest.TestCase):
self.pm = DpkgPackageManager()
def test_load_all_packages(self):
- self.assertNotEquals(self.pm.packages, {})
+ self.assertNotEqual(self.pm.packages, {})
def test_pkg_is_formatted(self):
kpkg = self.pm.pkg_by_name('coreutils')
@@ -141,7 +141,7 @@ class MultiPackageManagerTests(unittest.TestCase):
fallbacks=[DpkgPackageManager])
def test_load_all_packages(self):
- self.assertNotEquals(self.pm.packages, {})
+ self.assertNotEqual(self.pm.packages, {})
def test_pkg_is_formatted(self):
kpkg = self.pm.pkg_by_name('coreutils')