Merge ~andersson123/autopkgtest-cloud:preserve-all-proposed into autopkgtest-cloud:master
- Git
- lp:~andersson123/autopkgtest-cloud
- preserve-all-proposed
- Merge into master
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) |
||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Skia | Approve | ||
Review via email: mp+453426@code.launchpad.net |
Commit message
Description of the change
Tim Andersson (andersson123) wrote : | # |
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.
Tim Andersson (andersson123) wrote : | # |
Tested again off the most recent charm - works.
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
Tim Andersson (andersson123) wrote : | # |
well, not environmental, but you get it
Tim Andersson (andersson123) wrote : | # |
Tim Andersson (andersson123) wrote : | # |
This is ready for re-review
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:/
Tim Andersson (andersson123) wrote : | # |
Amended now, please re-review! Thanks for the review!
Skia (hyask) : | # |
Tim Andersson (andersson123) wrote : | # |
Amended, please re-review
Tim Andersson (andersson123) wrote : | # |
CI failure is unrelated transient issue. I'm going to go ahead and merge this.
Skia (hyask) wrote : | # |
Some additional thoughts that should be addressed afterwards :-)
Tim Andersson (andersson123) : | # |
Preview Diff
1 | diff --git a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/.coverage b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/.coverage |
2 | new file mode 100644 |
3 | index 0000000..e617275 |
4 | Binary files /dev/null and b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/.coverage differ |
5 | diff --git a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker |
6 | index 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( |
55 | diff --git a/charms/focal/autopkgtest-web/webcontrol/browse.cgi b/charms/focal/autopkgtest-web/webcontrol/browse.cgi |
56 | index 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 | |
104 | diff --git a/charms/focal/autopkgtest-web/webcontrol/download-all-results b/charms/focal/autopkgtest-web/webcontrol/download-all-results |
105 | index 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( |
152 | diff --git a/charms/focal/autopkgtest-web/webcontrol/download-results b/charms/focal/autopkgtest-web/webcontrol/download-results |
153 | index 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) |
202 | diff --git a/charms/focal/autopkgtest-web/webcontrol/helpers/utils.py b/charms/focal/autopkgtest-web/webcontrol/helpers/utils.py |
203 | index 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 | ) |
214 | diff --git a/charms/focal/autopkgtest-web/webcontrol/templates/browse-results.html b/charms/focal/autopkgtest-web/webcontrol/templates/browse-results.html |
215 | index 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>   |
231 | - <a href="{{row[6]}}/artifacts.tar.gz">artifacts</a>   |
232 | - {% if row[7] %} |
233 | + <a href="{{row[7]}}/log.gz">log</a>   |
234 | + <a href="{{row[7]}}/artifacts.tar.gz">artifacts</a>   |
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}}">♻</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}}">♻</a> |
240 | {% endif %} |
241 | </td> |
242 | </tr> |
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.