[tor-commits] [sbws/master] Move back write function to V3BWFile
pastly at torproject.org
pastly at torproject.org
Wed Jul 11 15:05:40 UTC 2018
commit 666b9d7f57f2080146c9ee14aa8ee59e9228849b
Author: juga0 <juga at riseup.net>
Date: Mon Jun 25 15:52:16 2018 +0000
Move back write function to V3BWFile
but not allowing /dev/stdout
---
sbws/core/generate.py | 28 +---------------------------
sbws/lib/v3bwfile.py | 23 ++++++++++++++++++++++-
2 files changed, 23 insertions(+), 28 deletions(-)
diff --git a/sbws/core/generate.py b/sbws/core/generate.py
index 827058e..6492423 100644
--- a/sbws/core/generate.py
+++ b/sbws/core/generate.py
@@ -4,7 +4,6 @@ from sbws.lib.resultdump import load_recent_results_in_datadir
from argparse import ArgumentDefaultsHelpFormatter
import os
import logging
-from sbws.util.filelock import DirectoryLock
from sbws.util.timestamp import now_fname
log = logging.getLogger(__name__)
@@ -33,31 +32,6 @@ def gen_parser(sub):
'out, and we do so proportionally')
-def _write_v3bw_file(v3bwfile, output):
- log.info('Writing v3bw file to %s', output)
- out_dir = os.path.dirname(output)
- out_link = os.path.join(out_dir, 'latest.v3bw')
- if os.path.exists(out_link):
- log.debug('Deleting existing symlink before creating a new one.')
- os.remove(out_link)
- # to keep test_generate.py working
- if output != '/dev/stdout':
- with DirectoryLock(out_dir):
- with open(output, 'wt') as fd:
- fd.write(str(v3bwfile.header))
- for line in v3bwfile.bw_lines:
- fd.write(str(line))
- output_basename = os.path.basename(output)
- log.debug('Creating symlink from {} to {}.'
- .format(output_basename, out_link))
- os.symlink(output_basename, out_link)
- else:
- with open(output, 'wt') as fd:
- fd.write(str(v3bwfile.header))
- for line in v3bwfile.bw_lines:
- fd.write(str(line))
-
-
def main(args, conf):
if not is_initted(args.directory):
fail_hard('Sbws isn\'t initialized. Try sbws init')
@@ -83,5 +57,5 @@ def main(args, conf):
return
bw_file = V3BWFile.from_arg_results(args, conf, results)
output = args.output or conf['paths']['v3bw_fname'].format(now_fname())
- _write_v3bw_file(bw_file, output)
+ V3BWFile.write(output)
log.info('Mean bandwidth per line: %f "KiB"', bw_file.avg_bw)
diff --git a/sbws/lib/v3bwfile.py b/sbws/lib/v3bwfile.py
index 64395ef..fb9e3d3 100644
--- a/sbws/lib/v3bwfile.py
+++ b/sbws/lib/v3bwfile.py
@@ -3,12 +3,13 @@
(v3bw) used by bandwidth authorities."""
import logging
+import os
from statistics import median
from sbws import __version__
from sbws.globals import SPEC_VERSION, BW_LINE_SIZE
from sbws.lib.resultdump import ResultSuccess, _ResultType
-from sbws.util.filelock import FileLock
+from sbws.util.filelock import FileLock, DirectoryLock
from sbws.util.timestamp import now_isodt_str, unixts_to_isodt_str
log = logging.getLogger(__name__)
@@ -405,3 +406,23 @@ class V3BWFile(object):
header = V3BWHeader.from_results(conf, results)
f = cls(header, bw_lines)
return f
+
+ def write(self, output):
+ if output == '/dev/stdout':
+ log.info("Writing to stdout is not supported.")
+ return
+ log.info('Writing v3bw file to %s', output)
+ out_dir = os.path.dirname(output)
+ out_link = os.path.join(out_dir, 'latest.v3bw')
+ if os.path.exists(out_link):
+ log.debug('Deleting existing symlink before creating a new one.')
+ os.remove(out_link)
+ with DirectoryLock(out_dir):
+ with open(output, 'wt') as fd:
+ fd.write(str(self.header))
+ for line in self.bw_lines:
+ fd.write(str(line))
+ output_basename = os.path.basename(output)
+ log.debug('Creating symlink from {} to {}.'
+ .format(output_basename, out_link))
+ os.symlink(output_basename, out_link)
More information about the tor-commits
mailing list