Loading bwauthealth/management/commands/report.py +14 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ from django.conf import settings from django.core.management.base import BaseCommand from bwauthealth.report import ( bw_comparative, missing_relays, missing_relays_header, report, Loading @@ -33,6 +34,12 @@ class Command(BaseCommand): default=os.path.join(settings.MISSING_RELAYS_PATH), help="Path to the csv output file.", ) parser.add_argument( "-b", "--bw-comparative", default=os.path.join(settings.BW_COMPARATIVE_PATH), help="Path to the csv output file.", ) parser.add_argument( "-e", "--end", type=valid_datetime, ) Loading Loading @@ -63,3 +70,10 @@ class Command(BaseCommand): for row in rows: csv_writer.writerow(row) logger.info("Written %s", options["missing_relays_path"]) rows = bw_comparative(options["start"], options["end"]) with open(options["bw_comparative"], "w") as fd: csv_writer = csv.writer(fd) for row in rows: csv_writer.writerow(row) logger.info("Written %s", options["bw_comparative"]) bwauthealth/report.py +28 −0 Original line number Diff line number Diff line Loading @@ -76,3 +76,31 @@ def missing_relays(start=None, end=None): row = [consensus, bwfile, fp, nickname] rows.append(row) return rows def bw_comparative(start=None, end=None): if not start: start = util.previous_consensus(settings.NOW) if not end: end = util.end_dt(start) logger.info("Time period from %s to %s", start, end) rows = [] consensuses = Consensus.objects.filter( valid_after__gte=start, valid_after__lt=end ) for consensus in consensuses: logger.debug("Consensus %s", consensus) bwfiles = consensus.bwfile_set.all() header = ["fingerprint"] + [bwfile for bwfile in bwfiles] rows = [header] for rs in consensus.routerstatuses(): relay = rs.relay row = [relay.fingerprint] for bwfile in bwfiles: try: relaybw = relay.relaybw_set.get(bwfile=bwfile) row.append(relaybw.bw) except: row.append("") rows.append(row) return rows bwauthealthpr/settings/base.py +1 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,7 @@ CACHE_CONSENSUS = os.path.join(CACHE_PATH, "consensuses") CACHE_DESCRIPTOR = os.path.join(CACHE_PATH, "descriptors") REPORT_PATH = os.path.join(BASE_DIR, "..", "report.csv") MISSING_RELAYS_PATH = os.path.join(BASE_DIR, "..", "missing_relays.csv") BW_COMPARATIVE_PATH = os.path.join(BASE_DIR, "..", "bw_comparative.csv") NOW = datetime.datetime.utcnow() Loading Loading
bwauthealth/management/commands/report.py +14 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ from django.conf import settings from django.core.management.base import BaseCommand from bwauthealth.report import ( bw_comparative, missing_relays, missing_relays_header, report, Loading @@ -33,6 +34,12 @@ class Command(BaseCommand): default=os.path.join(settings.MISSING_RELAYS_PATH), help="Path to the csv output file.", ) parser.add_argument( "-b", "--bw-comparative", default=os.path.join(settings.BW_COMPARATIVE_PATH), help="Path to the csv output file.", ) parser.add_argument( "-e", "--end", type=valid_datetime, ) Loading Loading @@ -63,3 +70,10 @@ class Command(BaseCommand): for row in rows: csv_writer.writerow(row) logger.info("Written %s", options["missing_relays_path"]) rows = bw_comparative(options["start"], options["end"]) with open(options["bw_comparative"], "w") as fd: csv_writer = csv.writer(fd) for row in rows: csv_writer.writerow(row) logger.info("Written %s", options["bw_comparative"])
bwauthealth/report.py +28 −0 Original line number Diff line number Diff line Loading @@ -76,3 +76,31 @@ def missing_relays(start=None, end=None): row = [consensus, bwfile, fp, nickname] rows.append(row) return rows def bw_comparative(start=None, end=None): if not start: start = util.previous_consensus(settings.NOW) if not end: end = util.end_dt(start) logger.info("Time period from %s to %s", start, end) rows = [] consensuses = Consensus.objects.filter( valid_after__gte=start, valid_after__lt=end ) for consensus in consensuses: logger.debug("Consensus %s", consensus) bwfiles = consensus.bwfile_set.all() header = ["fingerprint"] + [bwfile for bwfile in bwfiles] rows = [header] for rs in consensus.routerstatuses(): relay = rs.relay row = [relay.fingerprint] for bwfile in bwfiles: try: relaybw = relay.relaybw_set.get(bwfile=bwfile) row.append(relaybw.bw) except: row.append("") rows.append(row) return rows
bwauthealthpr/settings/base.py +1 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,7 @@ CACHE_CONSENSUS = os.path.join(CACHE_PATH, "consensuses") CACHE_DESCRIPTOR = os.path.join(CACHE_PATH, "descriptors") REPORT_PATH = os.path.join(BASE_DIR, "..", "report.csv") MISSING_RELAYS_PATH = os.path.join(BASE_DIR, "..", "missing_relays.csv") BW_COMPARATIVE_PATH = os.path.join(BASE_DIR, "..", "bw_comparative.csv") NOW = datetime.datetime.utcnow() Loading