From 1ef740fe9a3d8c804a114f09cc334a3fa039edae Mon Sep 17 00:00:00 2001 From: Lynch Wu Date: Thu, 9 May 2019 10:35:31 +0800 Subject: [PATCH] Fix flaky tests --- setup.py | 1 + tests/large/test_jinja_template.py | 17 ++++++++++++++--- tests/large/test_mode_replay.py | 3 ++- tests/large/test_mode_sample.py | 4 ++-- .../jinja/eventgen.conf.jinja_basic | 1 + 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index f0d50654..eebd1dd5 100644 --- a/setup.py +++ b/setup.py @@ -37,6 +37,7 @@ def readme(): package_data={"splunk_eventgen": ['*.sh', '*.txt', '*.yml'], '': ['*.sh', '*.txt', '*.yml']}, install_requires=[ 'pytest>=3.0.0', # Required to test functional tests in eventgen. + 'pytest-mock>=1.10.4', 'boto3', 'requests>=2.18.4', 'requests[security]', diff --git a/tests/large/test_jinja_template.py b/tests/large/test_jinja_template.py index 43695c67..e1240164 100644 --- a/tests/large/test_jinja_template.py +++ b/tests/large/test_jinja_template.py @@ -45,6 +45,12 @@ def test_jinja_template_dir_conf(eventgen_test_helper): loop += 1 +def _get_ts(base_time, delta): + time_format = '%Y-%m-%dT%H:%M:%S' + t = datetime.datetime.strptime(base_time, time_format) + delta + return t.strftime(time_format) + + def test_jinja_template_advance(eventgen_test_helper): """Test advanced jinja template var feature""" events = eventgen_test_helper('eventgen_jinja_advance.conf').get_events() @@ -53,10 +59,15 @@ def test_jinja_template_advance(eventgen_test_helper): # splunk may index multiline event assert len(events) == 27 # because we use time slice method to mock the time, it should be static values + + tz_delta = datetime.datetime.now() - datetime.datetime.utcnow() + # total seconds is a float number + delta_hours = int(round(tz_delta.total_seconds() / 3600)) + tz_delta = datetime.timedelta(hours=delta_hours) ts_map = { - 1: '1970-01-01T08:24:16', - 2: '1970-01-01T08:27:58', - 3: '1970-01-01T08:31:40', + 1: _get_ts('1970-01-01T00:24:16', tz_delta), + 2: _get_ts('1970-01-01T00:27:58', tz_delta), + 3: _get_ts('1970-01-01T00:31:40', tz_delta), } firstline_pattern = re.compile( diff --git a/tests/large/test_mode_replay.py b/tests/large/test_mode_replay.py index f6c2cba4..9f98e40f 100644 --- a/tests/large/test_mode_replay.py +++ b/tests/large/test_mode_replay.py @@ -50,7 +50,8 @@ def test_mode_replay_timemultiple(eventgen_test_helper): event_datetime = datetime.strptime(result.group(), "%Y-%m-%d %H:%M:%S") delter_seconds = (event_datetime - current_datetime).total_seconds() # assert the event time is after (now - earliest) time - assert delter_seconds < 11 + assert delter_seconds < 12 + def test_mode_replay_csv(eventgen_test_helper): """Test normal replay mode with sampletype = csv which will get _raw row from the sample""" diff --git a/tests/large/test_mode_sample.py b/tests/large/test_mode_sample.py index e7d1575f..2d93804f 100644 --- a/tests/large/test_mode_sample.py +++ b/tests/large/test_mode_sample.py @@ -53,8 +53,8 @@ def test_mode_sample_backfill(eventgen_test_helper): assert result is not None event_datetime = datetime.strptime(result.group(), "%Y-%m-%d %H:%M:%S") delter_seconds = (event_datetime - current_datetime).total_seconds() - # assert the event time is after (now - backfill) time - assert delter_seconds > -15 + # assert the event time is after (now - backfill) + 1 time, plus 1 to make it less flaky + assert delter_seconds > -16 def test_mode_sample_breaker(eventgen_test_helper): diff --git a/tests/sample_eventgen_conf/jinja/eventgen.conf.jinja_basic b/tests/sample_eventgen_conf/jinja/eventgen.conf.jinja_basic index e056790f..3f00012c 100644 --- a/tests/sample_eventgen_conf/jinja/eventgen.conf.jinja_basic +++ b/tests/sample_eventgen_conf/jinja/eventgen.conf.jinja_basic @@ -2,6 +2,7 @@ end = 1 count = 1 generator = jinja +sampleDir = . jinja_template_dir = templates jinja_target_template = test_jinja_basic.template jinja_variables = {"large_number":10}