canonical-ubuntu-qa team mailing list archive
-
canonical-ubuntu-qa team
-
Mailing list archive
-
Message #01351
[Merge] ~andersson123/autopkgtest-cloud:unit_test_duplicate_request into autopkgtest-cloud:master
Tim Andersson has proposed merging ~andersson123/autopkgtest-cloud:unit_test_duplicate_request into autopkgtest-cloud:master.
Requested reviews:
Canonical's Ubuntu QA (canonical-ubuntu-qa)
For more details, see:
https://code.launchpad.net/~andersson123/autopkgtest-cloud/+git/autopkgtest-cloud/+merge/451369
--
Your team Canonical's Ubuntu QA is requested to review the proposed merge of ~andersson123/autopkgtest-cloud:unit_test_duplicate_request into autopkgtest-cloud:master.
diff --git a/charms/focal/autopkgtest-web/webcontrol/request/tests/test_submit.py b/charms/focal/autopkgtest-web/webcontrol/request/tests/test_submit.py
index 8d93d43..faa50d6 100644
--- a/charms/focal/autopkgtest-web/webcontrol/request/tests/test_submit.py
+++ b/charms/focal/autopkgtest-web/webcontrol/request/tests/test_submit.py
@@ -10,7 +10,11 @@ from unittest.mock import MagicMock, patch
import request.submit
from distro_info import UbuntuDistroInfo
-from helpers.exceptions import WebControlException
+from helpers.exceptions import (
+ RequestInQueue,
+ RequestRunning,
+ WebControlException,
+)
class SubmitTestBase(TestCase):
@@ -40,13 +44,13 @@ class SubmitTestBase(TestCase):
mock_sqlite.connect.return_value = test_db
# mock config values
- cfg = {
+ self.cfg = {
"amqp": {"uri": "amqp://user:s3kr1t@1.2.3.4"},
"web": {"database": "/ignored", "database_ro": "/ignored"},
"autopkgtest": {"releases": "testy grumpy"},
}
mock_configparser.return_value = MagicMock()
- mock_configparser.return_value.__getitem__.side_effect = cfg.get
+ mock_configparser.return_value.__getitem__.side_effect = self.cfg.get
self.submit = request.submit.Submit()
self.submit.releases.add("testy")
@@ -438,6 +442,46 @@ class DistroRequestValidationTests(SubmitTestBase):
)
self.assertEqual(mock_urlopen.call_count, 6)
+ @patch("request.submit.Submit.is_test_in_queue")
+ def test_already_queued(self, mock_is_test_in_queue):
+ """Valid distro request is accepted"""
+
+ is_test_in_queue_cm = MagicMock()
+ is_test_in_queue_cm.__enter__.return_value = is_test_in_queue_cm
+ is_test_in_queue_cm.is_request_queued.side_effect = RequestInQueue(
+ "testy", "blue", "C51", "ab/1.2"
+ )
+ mock_is_test_in_queue.return_value = is_test_in_queue_cm
+
+ with self.assertRaises(WebControlException) as cme:
+ self.submit.validate_distro_request(
+ "testy", "C51", "blue", ["ab/1.2"], "joe"
+ )
+ self.assertEqual(
+ "Test already queued:\nrelease: testy\npkg: blue\narch: C51\ntriggers: ab/1.2",
+ str(cme.exception),
+ )
+
+ @patch("request.submit.Submit.is_test_running")
+ def test_already_running(self, mock_is_test_running):
+ """Test request is rejected if already running"""
+
+ is_test_running_cm = MagicMock()
+ is_test_running_cm.__enter__.return_value = is_test_running_cm
+ is_test_running_cm.is_request_queued.side_effect = RequestRunning(
+ "testy", "blue", "C51", "ab/1.2"
+ )
+ mock_is_test_running.return_value = is_test_running_cm
+
+ with self.assertRaises(WebControlException) as cme:
+ self.submit.validate_distro_request(
+ "testy", "C51", "blue", ["ab/1.2"], "joe"
+ )
+ self.assertEqual(
+ "Test already running:\nrelease: testy\npkg: blue\narch: C51\ntriggers: ab/1.2",
+ str(cme.exception),
+ )
+
class GitRequestValidationTests(SubmitTestBase):
"""Test verification of git branch test requests"""