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

Proposed by Tim Andersson
Status: Merged
Merged at revision: dfb020f9e6959a456509345599c4e4035f63b4a2
Proposed branch: ~andersson123/autopkgtest-cloud:preserve-all-proposed
Merge into: autopkgtest-cloud:master
Diff against target: 242 lines (+73/-13)
6 files modified
charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker (+16/-2)
charms/focal/autopkgtest-web/webcontrol/browse.cgi (+13/-5)
charms/focal/autopkgtest-web/webcontrol/download-all-results (+18/-1)
charms/focal/autopkgtest-web/webcontrol/download-results (+19/-1)
charms/focal/autopkgtest-web/webcontrol/helpers/utils.py (+1/-0)
charms/focal/autopkgtest-web/webcontrol/templates/browse-results.html (+6/-4)
Reviewer Review Type Date Requested Status
Skia Approve
Review via email: mp+453426@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Tim Andersson (andersson123) wrote :

I need to add another column to the "results" table I believe, then access that column instead of preserving all-proposed in the "triggers" column of the "results" table.

Revision history for this message
Tim Andersson (andersson123) wrote :

Done - ready for review. It's tested but I'm going to rebuild the charms now that I've cleaned up the git history and test again just to be sure.

Revision history for this message
Tim Andersson (andersson123) wrote :

Tested again off the most recent charm - works.

Revision history for this message
Tim Andersson (andersson123) wrote :

I need to amend this to make the column for all-proposed not be JUST for all-proposed, include any environmental variables

Revision history for this message
Tim Andersson (andersson123) wrote :

well, not environmental, but you get it

Revision history for this message
Tim Andersson (andersson123) wrote :
Revision history for this message
Tim Andersson (andersson123) wrote :

This is ready for re-review

Revision history for this message
Skia (hyask) wrote :

I've added a few comments, then this will need testing on staging.

This is very likely to superseed this MP, which is a very good thing!
https://code.launchpad.net/~xnox/autopkgtest-cloud/+git/autopkgtest-cloud/+merge/403628

review: Needs Fixing
Revision history for this message
Tim Andersson (andersson123) wrote :

Amended now, please re-review! Thanks for the review!

Revision history for this message
Skia (hyask) :
review: Needs Fixing
Revision history for this message
Tim Andersson (andersson123) wrote :

Amended, please re-review

Revision history for this message
Skia (hyask) wrote :

Looking good, thanks!

review: Approve
Revision history for this message
Tim Andersson (andersson123) wrote :

CI failure is unrelated transient issue. I'm going to go ahead and merge this.

Revision history for this message
Skia (hyask) wrote :

Some additional thoughts that should be addressed afterwards :-)

Revision history for this message
Tim Andersson (andersson123) :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/.coverage b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/.coverage
2new file mode 100644
3index 0000000..e617275
4Binary files /dev/null and b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/.coverage differ
5diff --git a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker
6index 419e5f6..ea31096 100755
7--- a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker
8+++ b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker
9@@ -319,7 +319,7 @@ def request_matches_per_package(package, arch, release, s):
10 )
11
12
13-def process_output_dir(dir, pkgname, code, triggers):
14+def process_output_dir(dir, pkgname, code, triggers, all_proposed):
15 """Post-process output directory"""
16
17 files = set(os.listdir(dir))
18@@ -349,6 +349,15 @@ def process_output_dir(dir, pkgname, code, triggers):
19 json.dump(d, testinfo, indent=True)
20 files.add("testinfo.json")
21
22+ # add all-proposed to testinfo.json if test was triggered with all-proposed=1
23+ if all_proposed:
24+ d = {}
25+ with open(os.path.join(dir, "testinfo.json"), "r") as testinfo:
26+ d = json.load(testinfo)
27+ d["all-proposed"] = 1
28+ with open(os.path.join(dir, "testinfo.json"), "w") as testinfo:
29+ json.dump(d, testinfo, indent=True)
30+
31 with open(os.path.join(dir, "testpkg-version"), "r") as tpv:
32 testpkg_version = tpv.read().split()[1]
33
34@@ -1235,7 +1244,11 @@ def request(msg):
35 f.write("%s\n" % params["readable-by"])
36
37 (testpkg_version, duration, requester) = process_output_dir(
38- out_dir, pkgname, code, params.get("triggers", [])
39+ out_dir,
40+ pkgname,
41+ code,
42+ params.get("triggers", []),
43+ True if params.get("all-proposed", 0) == 1 else False,
44 )
45
46 # If two tests for the same package with different triggers finish at the
47@@ -1358,6 +1371,7 @@ def request(msg):
48 "requester": requester,
49 "swift_dir": swift_dir,
50 "triggers": triggers,
51+ "all-proposed": 1 if "all-proposed" in params else 0,
52 }
53 )
54 complete_amqp.basic_publish(
55diff --git a/charms/focal/autopkgtest-web/webcontrol/browse.cgi b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
56index 7355d6b..9a86a66 100755
57--- a/charms/focal/autopkgtest-web/webcontrol/browse.cgi
58+++ b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
59@@ -296,16 +296,22 @@ def package_release_arch(package, release, arch, _=None):
60 seen = set()
61 results = []
62 for row in db_con.execute(
63- "SELECT run_id, version, triggers, duration, exitcode, requester FROM result "
64+ "SELECT run_id, version, triggers, duration, exitcode, requester, env FROM result "
65 "WHERE test_id=? "
66 "ORDER BY run_id DESC",
67 (test_id,),
68 ):
69 requester = row[5] if row[5] else "-"
70 code = human_exitcode(row[4])
71+ version = row[1]
72+ triggers = row[2]
73+ env = row[
74+ 6
75+ ] # string of comma separated env variables e.g. all-proposed=1,test-name=mytest
76+
77 identifier = (
78- row[1],
79- row[2],
80+ version,
81+ triggers,
82 ) # Version + triggers uniquely identifies this result
83 show_retry = code != "pass" and identifier not in seen
84 seen.add(identifier)
85@@ -319,14 +325,16 @@ def package_release_arch(package, release, arch, _=None):
86 )
87 results.append(
88 (
89- row[1],
90- row[2],
91+ version,
92+ triggers,
93+ env,
94 human_date(row[0]),
95 human_sec(row[3]),
96 requester,
97 code,
98 url,
99 show_retry,
100+ "&all-proposed=1" if "all-proposed=1" in env else "",
101 )
102 )
103
104diff --git a/charms/focal/autopkgtest-web/webcontrol/download-all-results b/charms/focal/autopkgtest-web/webcontrol/download-all-results
105index 412771a..436c806 100755
106--- a/charms/focal/autopkgtest-web/webcontrol/download-all-results
107+++ b/charms/focal/autopkgtest-web/webcontrol/download-all-results
108@@ -172,11 +172,18 @@ def fetch_one_result(url):
109 test_triggers,
110 exitcode,
111 )
112+ env_vars = []
113+ env_spec = {
114+ "all-proposed": "all-proposed=1",
115+ }
116+ for env, spec in env_spec.items():
117+ if env in testinfo.keys():
118+ env_vars.append(spec)
119
120 try:
121 c = db_con.cursor()
122 c.execute(
123- "INSERT INTO result VALUES (?, ?, ?, ?, ?, ?, ?)",
124+ "INSERT INTO result VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
125 (
126 test_id,
127 run_id,
128@@ -185,6 +192,7 @@ def fetch_one_result(url):
129 duration,
130 exitcode,
131 requester,
132+ ",".join(env_vars),
133 ),
134 )
135 db_con.commit()
136@@ -236,6 +244,15 @@ if __name__ == "__main__":
137 try:
138 for release in releases:
139 db_con = init_db(config["web"]["database"])
140+ # check if env column exists
141+ # if not, create it
142+ try:
143+ c = db_con.cursor()
144+ c.execute("SELECT env FROM result")
145+ except sqlite3.OperationalError as e:
146+ if "no such column" in str(e):
147+ c = db_con.cursor()
148+ c.execute("ALTER TABLE result ADD COLUMN env TEXT")
149 fetch_container(
150 release,
151 os.path.join(
152diff --git a/charms/focal/autopkgtest-web/webcontrol/download-results b/charms/focal/autopkgtest-web/webcontrol/download-results
153index d97b98a..ca0de53 100755
154--- a/charms/focal/autopkgtest-web/webcontrol/download-results
155+++ b/charms/focal/autopkgtest-web/webcontrol/download-results
156@@ -79,12 +79,20 @@ def process_message(msg, db_con):
157 msg.channel.basic_ack(msg.delivery_tag)
158 return
159
160+ env_vars = []
161+ env_spec = {
162+ "all-proposed": "all-proposed=1",
163+ }
164+ for env, spec in env_spec.items():
165+ if env in info:
166+ env_vars.append(spec)
167+
168 test_id = get_test_id(db_con, release, arch, package)
169
170 try:
171 c = db_con.cursor()
172 c.execute(
173- "INSERT INTO result VALUES (?, ?, ?, ?, ?, ?, ?)",
174+ "INSERT INTO result VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
175 (
176 test_id,
177 run_id,
178@@ -93,6 +101,7 @@ def process_message(msg, db_con):
179 duration,
180 exitcode,
181 requester,
182+ ",".join(env_vars),
183 ),
184 )
185 db_con.commit()
186@@ -108,6 +117,15 @@ if __name__ == "__main__":
187 )
188
189 db_con = db_connect()
190+
191+ try:
192+ c = db_con.cursor()
193+ c.execute("SELECT env FROM result")
194+ except sqlite3.OperationalError as e:
195+ if "no such column" in str(e):
196+ c = db_con.cursor()
197+ c.execute("ALTER TABLE result ADD COLUMN env TEXT")
198+
199 amqp_con = amqp_connect()
200 status_ch = amqp_con.channel()
201 status_ch.access_request("/complete", active=True, read=True, write=False)
202diff --git a/charms/focal/autopkgtest-web/webcontrol/helpers/utils.py b/charms/focal/autopkgtest-web/webcontrol/helpers/utils.py
203index 6fbb09c..8ad9eeb 100644
204--- a/charms/focal/autopkgtest-web/webcontrol/helpers/utils.py
205+++ b/charms/focal/autopkgtest-web/webcontrol/helpers/utils.py
206@@ -43,6 +43,7 @@ def init_db(path):
207 " duration INTEGER, "
208 " exitcode INTEGER, "
209 " requester TEXT, "
210+ " env TEXT, "
211 " PRIMARY KEY(test_id, run_id), "
212 " FOREIGN KEY(test_id) REFERENCES test(id))"
213 )
214diff --git a/charms/focal/autopkgtest-web/webcontrol/templates/browse-results.html b/charms/focal/autopkgtest-web/webcontrol/templates/browse-results.html
215index ecf47e2..6ae5ab8 100644
216--- a/charms/focal/autopkgtest-web/webcontrol/templates/browse-results.html
217+++ b/charms/focal/autopkgtest-web/webcontrol/templates/browse-results.html
218@@ -6,6 +6,7 @@
219 <tr>
220 <td><b>Version</b></td>
221 <td><b>Triggers</b></td>
222+ <td><b>Env</b></td>
223 <td><b>Date</b></td>
224 <td><b>Duration</b></td>
225 <td><b>Requester</b></td>
226@@ -28,11 +29,12 @@
227 </td>
228 <td class="{{row[5]}}">{{row[5]}}</td>
229 <td class="nowrap">
230- <a href="{{row[6]}}/log.gz">log</a> &emsp;
231- <a href="{{row[6]}}/artifacts.tar.gz">artifacts</a> &emsp;
232- {% if row[7] %}
233+ <a href="{{row[7]}}/log.gz">log</a> &emsp;
234+ <a href="{{row[7]}}/artifacts.tar.gz">artifacts</a> &emsp;
235+ {% if row[8] %}
236 {% set ts = row[1].split()|map('urlencode')|join("&trigger=")|safe %}
237- <a href="{{base_url}}request.cgi?release={{release}}&arch={{arch}}&package={{package|urlencode}}&trigger={{ts}}">&#9851;</a>
238+ {% set all_proposed = row[9] %}
239+ <a href="{{base_url}}request.cgi?release={{release}}&arch={{arch}}&package={{package|urlencode}}&trigger={{ts}}{{all_proposed}}">&#9851;</a>
240 {% endif %}
241 </td>
242 </tr>

Subscribers

People subscribed via source and target branches