Commit 5576a43a authored by Matt Traudt's avatar Matt Traudt
Browse files

Generalize a func for writing a result to the datadir, and use it

parent af651869
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -97,6 +97,18 @@ def load_recent_results_in_datadir(fresh_days, datadir, success_only=False,
    return results


def write_result_to_datadir(result, datadir):
    ''' Can be called from any thread '''
    assert isinstance(result, Result)
    assert os.path.isdir(datadir)
    dt = date.fromtimestamp(result.time)
    ext = '.txt'
    result_fname = os.path.join(
        datadir, '{}{}'.format(dt, ext))
    with open(result_fname, 'at') as fd:
        fd.write('{}\n'.format(str(result)))


class _StrEnum(str, Enum):
    pass

@@ -363,16 +375,6 @@ class ResultDump:
            self.data = trim_results(self.fresh_days, self.data,
                                     self.log.debug)

    def write_result(self, result):
        ''' Call from ResultDump thread '''
        assert isinstance(result, Result)
        dt = date.fromtimestamp(result.time)
        ext = '.txt'
        result_fname = os.path.join(
            self.datadir, '{}{}'.format(dt, ext))
        with open(result_fname, 'at') as fd:
            fd.write('{}\n'.format(str(result)))

    def enter(self):
        ''' Main loop for the ResultDump thread '''
        with self.data_lock:
@@ -395,7 +397,7 @@ class ResultDump:
            fp = result.fingerprint
            nick = result.nickname
            self.store_result(result)
            self.write_result(result)
            write_result_to_datadir(result, self.datadir)
            self.log.debug(fp, nick, 'finished measurement')

    def results_for_relay(self, relay):
+11 −19
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ from sbws.util.config import get_config
from sbws.lib.resultdump import ResultError
from sbws.lib.resultdump import ResultSuccess
from sbws.lib.resultdump import Result
from sbws.lib.resultdump import write_result_to_datadir
import sbws.commands.init
import sbws.commands.stats
from datetime import date
@@ -22,12 +23,9 @@ def add_single_stale_result(dname):
        Result.Relay('DEADBEEF1111', 'CowSayWhat', '127.0.0.1'),
        ['DEADBEEF1111', 'BEADDEEF2222'],
        '127.0.1.1', 'SBWSclient', t=19950216)
    os.makedirs(os.path.join(str(dname), 'datadir'))
    dt = date.fromtimestamp(r.time)
    ext = '.txt'
    fname = os.path.join(str(dname), 'datadir', '{}{}'.format(dt, ext))
    with open(fname, 'wt') as fd:
        fd.write('{}\n'.format(str(r)))
    dd = os.path.join(str(dname), 'datadir')
    os.makedirs(dd)
    write_result_to_datadir(r, dd)


def add_single_fresh_result(dname):
@@ -35,12 +33,9 @@ def add_single_fresh_result(dname):
        Result.Relay('DEADBEEF1111', 'CowSayWhat', '127.0.0.1'),
        ['DEADBEEF1111', 'BEADDEEF2222'],
        '127.0.1.1', 'SBWSclient', t=time.time())
    os.makedirs(os.path.join(str(dname), 'datadir'))
    dt = date.fromtimestamp(r.time)
    ext = '.txt'
    fname = os.path.join(str(dname), 'datadir', '{}{}'.format(dt, ext))
    with open(fname, 'wt') as fd:
        fd.write('{}\n'.format(str(r)))
    dd = os.path.join(str(dname), 'datadir')
    os.makedirs(dd)
    write_result_to_datadir(r, dd)


def add_two_fresh_results(dname):
@@ -53,13 +48,10 @@ def add_two_fresh_results(dname):
        Result.Relay('DEADBEEF1111', 'CowSayWhat', '127.0.0.1'),
        ['DEADBEEF1111', 'BEADDEEF2222'],
        '127.0.1.1', 'SBWSclient', t=time.time())
    os.makedirs(os.path.join(str(dname), 'datadir'))
    dt = date.fromtimestamp(r1.time)
    ext = '.txt'
    fname = os.path.join(str(dname), 'datadir', '{}{}'.format(dt, ext))
    with open(fname, 'wt') as fd:
        fd.write('{}\n'.format(str(r1)))
        fd.write('{}\n'.format(str(r2)))
    dd = os.path.join(str(dname), 'datadir')
    os.makedirs(dd)
    write_result_to_datadir(r1, dd)
    write_result_to_datadir(r2, dd)


def test_stats_uninitted(tmpdir, log):
+5 −14
Original line number Diff line number Diff line
from sbws.lib.resultdump import ResultError
from sbws.lib.resultdump import ResultSuccess
from sbws.lib.resultdump import Result
from sbws.lib.resultdump import write_result_to_datadir
from sbws.util.config import get_config
from sbws.util.parser import create_parser
import sbws.commands.init
@@ -8,7 +9,6 @@ from tempfile import TemporaryDirectory
import pytest
import os
import time
from datetime import date


class MockPastlyLogger:
@@ -101,13 +101,8 @@ def dotsbws_error_result(empty_dotsbws_datadir):
    t = time.time()
    relay = Result.Relay(fp1, nick, relay_ip)
    result = ResultError(relay, circ, server_ip, client_nick, t=t, msg=msg)

    dt = date.fromtimestamp(t)
    ext = '.txt'
    fname = os.path.join(empty_dotsbws_datadir.name, 'datadir',
                         '{}{}'.format(dt, ext))
    with open(fname, 'at') as fd:
        fd.write('{}\n'.format(str(result)))
    dd = os.path.join(empty_dotsbws_datadir.name, 'datadir')
    write_result_to_datadir(result, dd)
    return empty_dotsbws_datadir


@@ -129,10 +124,6 @@ def dotsbws_success_result(empty_dotsbws_datadir):
    relay = Result.Relay(fp1, nick, relay_ip)
    result = ResultSuccess(rtts, downloads, relay, circ, server_ip,
                           client_nick, t=t)
    dt = date.fromtimestamp(t)
    ext = '.txt'
    fname = os.path.join(empty_dotsbws_datadir.name, 'datadir',
                         '{}{}'.format(dt, ext))
    with open(fname, 'at') as fd:
        fd.write('{}\n'.format(str(result)))
    dd = os.path.join(empty_dotsbws_datadir.name, 'datadir')
    write_result_to_datadir(result, dd)
    return empty_dotsbws_datadir