示例#1
0
def test_timestamp_parsing():
    parser = LogParser()
    parser.read(StringIO(INITIAL_GAME))
    parser.flush()

    assert parser.games[0].packets[0].ts == time(2, 59, 14, 608862)

    # Test with an initial datetime
    parser2 = LogParser()
    parser2._current_date = datetime(2015, 1, 1)
    parser2.read(StringIO(INITIAL_GAME))
    parser2.flush()

    assert parser2.games[0].packets[0].ts == datetime(2015, 1, 1, 2, 59, 14,
                                                      608862)

    # Same test, with timezone
    parser2 = LogParser()
    parser2._current_date = parse_datetime("2015-01-01T02:58:00+0200")
    parser2.read(StringIO(INITIAL_GAME))
    parser2.flush()

    ts = parser2.games[0].packets[0].ts
    assert ts.year == 2015
    assert ts.hour == 2
    assert ts.second == 14
    assert ts.tzinfo
    assert ts.utcoffset() == timedelta(hours=2)
示例#2
0
def parse_log(fp, processor, date):
    parser = LogParser()
    parser._game_state_processor = processor
    parser._current_date = date
    parser.read(fp)

    return parser
示例#3
0
def parse_upload_event(upload_event, meta):
    orig_match_start = dateutil_parse(meta["match_start"])
    match_start = get_valid_match_start(orig_match_start, upload_event.created)
    if match_start != orig_match_start:
        upload_event.tainted = True
        upload_event.save()

    log_bytes = upload_event.log_bytes()
    if not log_bytes:
        raise ValidationError("The uploaded log file is empty.")
    influx_metric("raw_power_log_upload_num_bytes", {"size": len(log_bytes)})
    powerlog = StringIO(log_bytes.decode("utf-8"))
    upload_event.file.close()

    parser = LogParser()
    parser._game_state_processor = "GameState"
    parser._current_date = match_start
    parser.read(powerlog)

    return parser
示例#4
0
def parse_upload_event(upload_event, meta):
    orig_match_start = dateutil_parse(meta["match_start"])
    match_start = get_valid_match_start(orig_match_start, upload_event.created)
    if match_start != orig_match_start:
        upload_event.tainted = True
        upload_event.save()
        difference = (orig_match_start - match_start).seconds
        influx_metric("tainted_replay", {"count": 1, "difference": difference})

    log_bytes = upload_event.log_bytes()
    if not log_bytes:
        raise ValidationError("The uploaded log file is empty.")

    powerlog = StringIO(log_bytes.decode("utf-8"))
    upload_event.file.close()

    parser = LogParser()
    parser._game_state_processor = "GameState"
    parser._current_date = match_start
    parser.read(powerlog)

    return parser