From a6e77415532fd4714a75ccdfa4446b3e2038a7f7 Mon Sep 17 00:00:00 2001 From: Valerij Maljulin Date: Aug 14 2019 11:52:39 +0000 Subject: Fix tests failing on 1 sec time differences Signed-off-by: Valerij Maljulin --- diff --git a/tests/__init__.py b/tests/__init__.py index 0164b7c..4eaf56c 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -24,6 +24,7 @@ import functools import os from datetime import datetime, timedelta from mock import patch +from six import string_types import time import hashlib from traceback import extract_stack @@ -633,3 +634,30 @@ def module_build_from_modulemd(yaml): build.time_completed = None build.rebuild_strategy = "changed-and-after" return build + + +def time_assert(*args, **kwargs): + """ + check if delta between times in args not exceeding max_delta (part of kwargs) + :param args: times to be compared + :param kwargs: arguments for comparing: + max_delta - value in seconds which shouldn't be exceeded (default: 2 sec, numeric) + format_str - if values in args are of type str it should be formated as this + (default: '%Y-%m-%dT%H:%M:%SZ', str) + :return: true if all times are within the range + :rtype: bool + """ + times_list = [] + format_str = kwargs.get("format_str", "%Y-%m-%dT%H:%M:%SZ") + max_delta = kwargs.get("max_delta", 2) + for t in args: + if isinstance(t, string_types): + dt = datetime.strptime(t, format_str) + elif isinstance(t, datetime): + dt = t + else: + raise TypeError( + '"{}" is not supported for time_assert function'.format(type(t).__name__) + ) + times_list.append(dt) + return bool(abs((max(times_list) - min(times_list)).total_seconds()) <= max_delta) diff --git a/tests/test_views/test_views.py b/tests/test_views/test_views.py index 4523815..db1cd5e 100644 --- a/tests/test_views/test_views.py +++ b/tests/test_views/test_views.py @@ -37,7 +37,7 @@ import re import sqlalchemy from tests import app, init_data, clean_database, staged_data_filename, make_module_in_db -from tests import read_staged_data +from tests import read_staged_data, time_assert from tests.test_scm import base_dir as scm_base_dir from module_build_service.errors import UnprocessableEntity from module_build_service.models import ModuleBuild, BUILD_STATES, ComponentBuild @@ -1955,10 +1955,10 @@ class TestViews: assert data["module"]["state_name"] == "ready" assert data["module"]["scmurl"] is None assert data["module"]["component_builds"] == [] - assert ( - data["module"]["time_submitted"] - == data["module"]["time_modified"] - == data["module"]["time_completed"] + assert time_assert( + data["module"]["time_submitted"], + data["module"]["time_modified"], + data["module"]["time_completed"] ) assert data["module"]["koji_tag"] == "mariadb-10.2-20180724000000-00000000" assert data["module"]["siblings"] == [] @@ -1996,10 +1996,10 @@ class TestViews: assert data["module"]["state_name"] == "ready" assert data["module"]["scmurl"] is None assert data["module"]["component_builds"] == [] - assert ( - data["module"]["time_submitted"] - == data["module"]["time_modified"] - == data["module"]["time_completed"] + assert time_assert( + data["module"]["time_submitted"], + data["module"]["time_modified"], + data["module"]["time_completed"] ) assert data["module"]["koji_tag"] == "mariadb-10.2-20180724065109-00000000" assert data["module"]["siblings"] == []