Merge ~sajoupa/apt-stresstest-charm:logging into apt-stresstest-charm:master

Proposed by Laurent Sesquès
Status: Merged
Approved by: Haw Loeung
Approved revision: b06a8fa8c581b57f304ace2d80362359d182629b
Merged at revision: 1ef78810095364cba108403d2db4772e608be795
Proposed branch: ~sajoupa/apt-stresstest-charm:logging
Merge into: apt-stresstest-charm:master
Diff against target: 78 lines (+18/-0)
1 file modified
files/test_apt_mirrors.py (+18/-0)
Reviewer Review Type Date Requested Status
Haw Loeung +1 Approve
Canonical IS Reviewers Pending
Review via email: mp+391981@code.launchpad.net

Commit message

Add basic logging - no logrotate for now

To post a comment you must log in.
Revision history for this message
Laurent Sesquès (sajoupa) wrote :

This will allow logging but lacks log rotation. Submitting the MP to record that code which I successfully used to troubleshoot an issue, but setting it to WIP because we need log rotation before merging.

Revision history for this message
Benjamin Allot (ballot) wrote :

LGTM so far

Revision history for this message
Haw Loeung (hloeung) wrote :

We can add logrotation later, LGTM.

review: Approve (+1)
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

This merge proposal is being monitored by mergebot. Change the status to Approved to merge.

Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Change successfully merged at revision 1ef78810095364cba108403d2db4772e608be795

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/files/test_apt_mirrors.py b/files/test_apt_mirrors.py
index 75d14fe..0cc583a 100755
--- a/files/test_apt_mirrors.py
+++ b/files/test_apt_mirrors.py
@@ -20,12 +20,22 @@
20import argparse20import argparse
21import datetime21import datetime
22import glob22import glob
23import logging
23import os24import os
24import socket25import socket
25import subprocess26import subprocess
26import sys27import sys
27from yaml import safe_load28from yaml import safe_load
2829
30LOGFILE = '/var/log/apt-stresstest.log'
31
32file_handler = logging.FileHandler(LOGFILE)
33file_handler.setLevel(logging.INFO)
34basic_formatter = logging.Formatter('%(asctime)s - %(message)s')
35file_handler.setFormatter(basic_formatter)
36log = logging.getLogger('apt-stresstest')
37log.setLevel(logging.INFO)
38log.addHandler(file_handler)
2939
30class Timer(object):40class Timer(object):
31 def __init__(self):41 def __init__(self):
@@ -170,17 +180,21 @@ def output_results(result, verbose=False, send_to=None):
170180
171def run_tests(domain, ip, packages, args):181def run_tests(domain, ip, packages, args):
172182
183 log.info("Running apt update 1 and sending to telegraf")
173 output_results(render_influx("update_1", domain, ip,184 output_results(render_influx("update_1", domain, ip,
174 apt_update(ip, timeout=args.update_timeout)),185 apt_update(ip, timeout=args.update_timeout)),
175 verbose=args.verbose, send_to=args.send_to)186 verbose=args.verbose, send_to=args.send_to)
187 log.info("Running apt update 2 and sending to telegraf")
176 output_results(render_influx("update_2", domain, ip,188 output_results(render_influx("update_2", domain, ip,
177 apt_update(ip, timeout=args.update_timeout)),189 apt_update(ip, timeout=args.update_timeout)),
178 verbose=args.verbose, send_to=args.send_to)190 verbose=args.verbose, send_to=args.send_to)
179 for index, package in enumerate(packages):191 for index, package in enumerate(packages):
192 log.info("Performing cached download of {} - {} and sending to telegraf".format(1 + index, package))
180 test_name = "cached_download_{}_{}".format(1 + index, package)193 test_name = "cached_download_{}_{}".format(1 + index, package)
181 output_results(render_influx(test_name, domain, ip,194 output_results(render_influx(test_name, domain, ip,
182 apt_download(package, ip, timeout=args.download_timeout)),195 apt_download(package, ip, timeout=args.download_timeout)),
183 verbose=args.verbose, send_to=args.send_to)196 verbose=args.verbose, send_to=args.send_to)
197 log.info("Performing uncached download of {} - {} and sending to telegraf".format(1 + index, package))
184 test_name = "uncached_download_{}_{}".format(1 + index, package)198 test_name = "uncached_download_{}_{}".format(1 + index, package)
185 output_results(render_influx(test_name, domain, ip,199 output_results(render_influx(test_name, domain, ip,
186 apt_download(package, ip, no_cache=True, timeout=args.download_timeout)),200 apt_download(package, ip, no_cache=True, timeout=args.download_timeout)),
@@ -234,6 +248,7 @@ def write_apt_config(domain, ip, series=None):
234248
235249
236def main():250def main():
251 log.info("Beginning apt-stresstest run...")
237 timer = Timer()252 timer = Timer()
238 timer.start()253 timer.start()
239 args = parse_args()254 args = parse_args()
@@ -245,17 +260,20 @@ def main():
245260
246 for ip in ips:261 for ip in ips:
247 write_apt_config(domain, ip, args.series)262 write_apt_config(domain, ip, args.series)
263 log.info("apt config written for {} - {}. Running tests now.".format(domain, ip))
248 run_tests(264 run_tests(
249 domain=domain,265 domain=domain,
250 ip=ip,266 ip=ip,
251 packages=args.package.split(','),267 packages=args.package.split(','),
252 args=args,268 args=args,
253 )269 )
270 log.info("Tests done, stopping timer.")
254 timer.stop()271 timer.stop()
255 output_results(render_influx("N/A", "N/A", "N/A", timer.time, "apt_transaction_total_duration_seconds"),272 output_results(render_influx("N/A", "N/A", "N/A", timer.time, "apt_transaction_total_duration_seconds"),
256 verbose=args.verbose, send_to=args.send_to)273 verbose=args.verbose, send_to=args.send_to)
257 output_results(render_influx("N/A", "N/A", "N/A", len(ips), "apt_mirror_units_count"),274 output_results(render_influx("N/A", "N/A", "N/A", len(ips), "apt_mirror_units_count"),
258 verbose=args.verbose, send_to=args.send_to)275 verbose=args.verbose, send_to=args.send_to)
276 log.info("Pushed global timer and units count to telegraf.")
259277
260278
261if __name__ == '__main__':279if __name__ == '__main__':

Subscribers

People subscribed via source and target branches