# # SPDX-License-Identifier: Apache-2.0 # # Copyright (c) 2024 Wind River Systems, Inc. # import unittest from software.release_data import SWReleaseCollection from software.software_functions import ReleaseData metadata = """ 23.09_RR_ALL_NODES 23.09 Debian patch test Reboot required patch Sample instructions Sample warning TST Y Y 1 0db647647b009c5cc02410d461de0870049bdeb66caf1bdc1ccd189ac83b8e92 bae3ff59c5f59c95aa8d3ccf8c1364c4c869cd428f7b5032a00a8b777cc132f7 38453dcb1aeb5bb9394ed02c0e6b8f2f913d00a827c89faf98cb63dff503b8e2 2f742b1b719f19b302c306604659ccf4aa61a1fdb7742ac79b009c79af18c79b """ metadata2 = """ 23.09_NRR_INSVC 23.09 Debian patch test In service patch Sample instructions2 Sample warning2 DEV N N 23.09_NRR_INSVC_example-cgcs-patch-restart 1 0db647647b009c5cc02410d461de0870049bdeb66caf1bdc1ccd189ac83b8e92 bae3ff59c5f59c95aa8d3ccf8c1364c4c869cd428f7b5032a00a8b777cc132f7 0b53576092a189133d56eac49ae858c1218f480a4a859eaca2b47f2604a4e0e7 2f742b1b719f19b302c306604659ccf4aa61a1fdb7742ac79b009c79af18c79b """ expected_values = [ { "release_id": "23.09_NRR_INSVC", "version": "23.09", "state": "deployed", "summary": "Debian patch test", "description": "In service patch", "install_instructions": "Sample instructions2", "warnings": "Sample warning2", "status": "DEV", "unremovable": "N", "restart_script": "23.09_NRR_INSVC_example-cgcs-patch-restart", "commit_id": "0b53576092a189133d56eac49ae858c1218f480a4a859eaca2b47f2604a4e0e7", "checksum": "2f742b1b719f19b302c306604659ccf4aa61a1fdb7742ac79b009c79af18c79b", }, { "release_id": "23.09_RR_ALL_NODES", "version": "23.09", "state": "available", "summary": "Debian patch test", "description": "Reboot required patch", "install_instructions": "Sample instructions", "warnings": "Sample warning", "status": "TST", "unremovable": "Y", "restart_script": None, "commit_id": "38453dcb1aeb5bb9394ed02c0e6b8f2f913d00a827c89faf98cb63dff503b8e2", "checksum": "2f742b1b719f19b302c306604659ccf4aa61a1fdb7742ac79b009c79af18c79b", } ] package_dir = {"23.09": "/var/www/page/feed/rel_23.09"} class TestSoftwareFunction(unittest.TestCase): def setUp(self): pass def tearDown(self): pass @property def release_collection(self): rd = ReleaseData() rd.parse_metadata_string(metadata, "available") rd2 = ReleaseData() rd2.parse_metadata_string(metadata2, "deployed") rd.add_release(rd2) rc = SWReleaseCollection(rd) return rc def test_SWReleaseCollection_iterate_releases(self): idx = 0 for r in self.release_collection.iterate_releases(): val = expected_values[idx] idx += 1 self.assertEqual(val["release_id"], r.id) self.assertEqual(val["version"], r.sw_version) self.assertEqual(val["state"], r.state) self.assertEqual(val["summary"], r.summary) self.assertEqual(val["description"], r.description) self.assertEqual(val["install_instructions"], r.install_instructions) self.assertEqual(val["warnings"], r.warnings) self.assertEqual(val["status"], r.status) self.assertEqual(val["unremovable"], r.unremovable) if val["restart_script"] is None: self.assertIsNone(r.restart_script) else: self.assertEqual(val["restart_script"], r.restart_script) self.assertEqual(val["commit_id"], r.commit_id) self.assertEqual(val["checksum"], r.commit_checksum) def test_SWReleaseCollection_get_release_by_id(self): rd = ReleaseData() rd.parse_metadata_string(metadata, "available") rd2 = ReleaseData() rd2.parse_metadata_string(metadata2, "deployed") rd.add_release(rd2) rc = SWReleaseCollection(rd) idx = 0 rid = expected_values[idx]["release_id"] r = rc.get_release_by_id(rid) val = expected_values[idx] self.assertEqual(val["release_id"], r.id) self.assertEqual(val["version"], r.sw_version) self.assertEqual(val["state"], r.state) self.assertEqual(val["summary"], r.summary) self.assertEqual(val["description"], r.description) self.assertEqual(val["install_instructions"], r.install_instructions) self.assertEqual(val["warnings"], r.warnings) self.assertEqual(val["status"], r.status) self.assertEqual(val["unremovable"], r.unremovable) if val["restart_script"] is None: self.assertIsNone(r.restart_script) else: self.assertEqual(val["restart_script"], r.restart_script) self.assertEqual(val["commit_id"], r.commit_id) self.assertEqual(val["checksum"], r.commit_checksum) def test_SWReleaseCollection_iterate_release_by_state(self): val = expected_values[0] for r in self.release_collection.iterate_releases_by_state('deployed'): self.assertEqual(val["release_id"], r.id) self.assertEqual(val["version"], r.sw_version) self.assertEqual(val["state"], r.state) self.assertEqual(val["summary"], r.summary) self.assertEqual(val["description"], r.description) self.assertEqual(val["install_instructions"], r.install_instructions) self.assertEqual(val["warnings"], r.warnings) self.assertEqual(val["status"], r.status) self.assertEqual(val["unremovable"], r.unremovable) if val["restart_script"] is None: self.assertIsNone(r.restart_script) else: self.assertEqual(val["restart_script"], r.restart_script) self.assertEqual(val["commit_id"], r.commit_id) self.assertEqual(val["checksum"], r.commit_checksum)