#1382 Fix tests failing on 1 sec time differences
Merged 4 years ago by jkaluza. Opened 4 years ago by vmaljulin.
vmaljulin/fm-orchestrator time_assert  into  master

file modified
+28
@@ -24,6 +24,7 @@ 

  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 @@ 

      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)

@@ -37,7 +37,7 @@ 

  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 @@ 

          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 @@ 

          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"] == []