← Back to team overview

canonical-ubuntu-qa team mailing list archive

[Merge] ~andersson123/autopkgtest-cloud:preserve-all-proposed into autopkgtest-cloud:master

 

Tim Andersson has proposed merging ~andersson123/autopkgtest-cloud:preserve-all-proposed into autopkgtest-cloud:master.

Requested reviews:
  Canonical's Ubuntu QA (canonical-ubuntu-qa)
Related bugs:
  Bug #1999163 in Auto Package Testing: "Retry "button" drops all-proposed flag"
  https://bugs.launchpad.net/auto-package-testing/+bug/1999163

For more details, see:
https://code.launchpad.net/~andersson123/autopkgtest-cloud/+git/autopkgtest-cloud/+merge/453426
-- 
Your team Canonical's Ubuntu QA is requested to review the proposed merge of ~andersson123/autopkgtest-cloud:preserve-all-proposed into autopkgtest-cloud:master.
diff --git a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/.coverage b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/.coverage
new file mode 100644
index 0000000..e617275
Binary files /dev/null and b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/.coverage differ
diff --git a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker
index 980d63b..e834b6e 100755
--- a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker
+++ b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker
@@ -313,7 +313,7 @@ def request_matches_per_package(package, arch, release, s):
     )
 
 
-def process_output_dir(dir, pkgname, code, triggers):
+def process_output_dir(dir, pkgname, code, triggers, all_proposed):
     """Post-process output directory"""
 
     files = set(os.listdir(dir))
@@ -343,6 +343,15 @@ def process_output_dir(dir, pkgname, code, triggers):
                 json.dump(d, testinfo, indent=True)
             files.add("testinfo.json")
 
+    # add all-proposed to testinfo.json if test was triggered with all-proposed=1
+    if all_proposed:
+        d = {}
+        with open(os.path.join(dir, "testinfo.json"), "r") as testinfo:
+            d = json.load(testinfo)
+        d["all-proposed"] = 1
+        with open(os.path.join(dir, "testinfo.json"), "w") as testinfo:
+            json.dump(d, testinfo, indent=True)
+
     with open(os.path.join(dir, "testpkg-version"), "r") as tpv:
         testpkg_version = tpv.read().split()[1]
 
@@ -1238,7 +1247,11 @@ def request(msg):
                     f.write("%s\n" % params["readable-by"])
 
         (testpkg_version, duration, requester) = process_output_dir(
-            out_dir, pkgname, code, params.get("triggers", [])
+            out_dir,
+            pkgname,
+            code,
+            params.get("triggers", []),
+            "all-proposed" in params.keys(),
         )
 
         # If two tests for the same package with different triggers finish at the
@@ -1361,6 +1374,7 @@ def request(msg):
             "requester": requester,
             "swift_dir": swift_dir,
             "triggers": triggers,
+            "all-proposed": 1 if "all-proposed" in params else 0,
         }
     )
     complete_amqp.basic_publish(
diff --git a/charms/focal/autopkgtest-web/webcontrol/browse.cgi b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
index d7bc343..3a6d6e6 100755
--- a/charms/focal/autopkgtest-web/webcontrol/browse.cgi
+++ b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
@@ -290,16 +290,20 @@ def package_release_arch(package, release, arch, _=None):
     seen = set()
     results = []
     for row in db_con.execute(
-        "SELECT run_id, version, triggers, duration, exitcode, requester FROM result "
+        "SELECT run_id, version, triggers, duration, exitcode, requester, all_proposed FROM result "
         "WHERE test_id=? "
         "ORDER BY run_id DESC",
         (test_id,),
     ):
         requester = row[5] if row[5] else "-"
         code = human_exitcode(row[4])
+        version = row[1]
+        triggers = row[2]
+        all_proposed = row[6] if row[6] else False
+
         identifier = (
-            row[1],
-            row[2],
+            version,
+            triggers,
         )  # Version + triggers uniquely identifies this result
         show_retry = code != "pass" and identifier not in seen
         seen.add(identifier)
@@ -313,14 +317,16 @@ def package_release_arch(package, release, arch, _=None):
         )
         results.append(
             (
-                row[1],
-                row[2],
+                version,
+                triggers,
+                1 if all_proposed == 1 else 0,
                 human_date(row[0]),
                 human_sec(row[3]),
                 requester,
                 code,
                 url,
                 show_retry,
+                "&all-proposed=1" if all_proposed == 1 else "",
             )
         )
 
diff --git a/charms/focal/autopkgtest-web/webcontrol/download-all-results b/charms/focal/autopkgtest-web/webcontrol/download-all-results
index 53a3983..c33785d 100755
--- a/charms/focal/autopkgtest-web/webcontrol/download-all-results
+++ b/charms/focal/autopkgtest-web/webcontrol/download-all-results
@@ -176,7 +176,7 @@ def fetch_one_result(url):
     try:
         c = db_con.cursor()
         c.execute(
-            "INSERT INTO result VALUES (?, ?, ?, ?, ?, ?, ?)",
+            "INSERT INTO result VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
             (
                 test_id,
                 run_id,
@@ -185,6 +185,7 @@ def fetch_one_result(url):
                 duration,
                 exitcode,
                 requester,
+                1 if "all-proposed" in testinfo.keys() else 0,
             ),
         )
         db_con.commit()
diff --git a/charms/focal/autopkgtest-web/webcontrol/download-results b/charms/focal/autopkgtest-web/webcontrol/download-results
index d97b98a..0dc4612 100755
--- a/charms/focal/autopkgtest-web/webcontrol/download-results
+++ b/charms/focal/autopkgtest-web/webcontrol/download-results
@@ -84,7 +84,7 @@ def process_message(msg, db_con):
     try:
         c = db_con.cursor()
         c.execute(
-            "INSERT INTO result VALUES (?, ?, ?, ?, ?, ?, ?)",
+            "INSERT INTO result VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
             (
                 test_id,
                 run_id,
@@ -93,6 +93,7 @@ def process_message(msg, db_con):
                 duration,
                 exitcode,
                 requester,
+                1 if info["all-proposed"] == 1 else 0,
             ),
         )
         db_con.commit()
diff --git a/charms/focal/autopkgtest-web/webcontrol/templates/browse-results.html b/charms/focal/autopkgtest-web/webcontrol/templates/browse-results.html
index 7fc194a..901c3a9 100644
--- a/charms/focal/autopkgtest-web/webcontrol/templates/browse-results.html
+++ b/charms/focal/autopkgtest-web/webcontrol/templates/browse-results.html
@@ -6,6 +6,7 @@
     <tr>
       <td><b>Version</b></td>
       <td><b>Triggers</b></td>
+      <td><b>All Proposed</b></td>
       <td><b>Date</b></td>
       <td><b>Duration</b></td>
       <td><b>Requester</b></td>
@@ -20,13 +21,15 @@
       <td>{{row[2]}}</td>
       <td>{{row[3]}}</td>
       <td>{{row[4]}}</td>
-      <td class="{{row[5]}}">{{row[5]}}</td>
+      <td>{{row[5]}}</td>
+      <td class="{{row[6]}}">{{row[6]}}</td>
       <td class="nowrap">
-        <a href="{{row[6]}}/log.gz">log</a> &emsp;
-        <a href="{{row[6]}}/artifacts.tar.gz">artifacts</a> &emsp;
-        {% if row[7] %}
+        <a href="{{row[7]}}/log.gz">log</a> &emsp;
+        <a href="{{row[7]}}/artifacts.tar.gz">artifacts</a> &emsp;
+        {% if row[8] %}
           {% set ts = row[1].split()|map('urlencode')|join("&trigger=")|safe %}
-          <a href="{{base_url}}request.cgi?release={{release}}&arch={{arch}}&package={{package|urlencode}}&trigger={{ts}}">&#9851;</a>
+          {% set ap = row[9] %}
+          <a href="{{base_url}}request.cgi?release={{release}}&arch={{arch}}&package={{package|urlencode}}&trigger={{ts}}{{ap}}">&#9851;</a>
         {% endif %}
       </td>
     </tr>

Follow ups