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)
def parse_log(fp, processor, date): parser = LogParser() parser._game_state_processor = processor parser._current_date = date parser.read(fp) return parser
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
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