From 21145f8107b0ddb9da32b6723a6af38c89a8d4f0 Mon Sep 17 00:00:00 2001 From: homholueng Date: Tue, 9 Apr 2019 20:09:34 +0800 Subject: [PATCH] =?UTF-8?q?bugfix:=20=E4=BF=AE=E5=A4=8D=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E6=97=B6=E9=97=B4=E8=B6=85=E8=BF=87=E4=B8=80?= =?UTF-8?q?=E5=A4=A9=E5=90=8E=E8=80=97=E6=97=B6=E8=AE=A1=E7=AE=97=E4=B8=8D?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E7=9A=84=E9=97=AE=E9=A2=98=20(#53)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pipeline/engine/utils.py | 4 +- .../tests/engine/utils/test_utils_func.py | 55 +++++++++++++++++++ 2 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 pipeline/tests/engine/utils/test_utils_func.py diff --git a/pipeline/engine/utils.py b/pipeline/engine/utils.py index d9696d8c8a..63153e6773 100644 --- a/pipeline/engine/utils.py +++ b/pipeline/engine/utils.py @@ -47,9 +47,9 @@ def calculate_elapsed_time(started_time, archived_time): """ if archived_time and started_time: # when status_tree['archived_time'] == status_tree['started_time'], set elapsed_time to 1s - elapsed_time = (archived_time - started_time).seconds or 1 + elapsed_time = (archived_time - started_time).total_seconds() or 1 elif started_time: - elapsed_time = (timezone.now() - started_time).seconds + elapsed_time = (timezone.now() - started_time).total_seconds() else: elapsed_time = 0 return elapsed_time diff --git a/pipeline/tests/engine/utils/test_utils_func.py b/pipeline/tests/engine/utils/test_utils_func.py new file mode 100644 index 0000000000..cfe1c282fa --- /dev/null +++ b/pipeline/tests/engine/utils/test_utils_func.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +""" +Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community +Edition) available. +Copyright (C) 2017-2019 THL A29 Limited, a Tencent company. All rights reserved. +Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. +You may obtain a copy of the License at +http://opensource.org/licenses/MIT +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the +specific language governing permissions and limitations under the License. +""" + +import datetime + +from django.test import TestCase +from django.utils import timezone + +from pipeline.engine.utils import calculate_elapsed_time + + +class EngineUtilsFuncTestCase(TestCase): + + def test_calculate_elapsed_time(self): + self.assertEqual(calculate_elapsed_time(None, None), 0) + + self.assertEqual(calculate_elapsed_time(started_time=None, archived_time=timezone.now()), 0) + + self.assertNotEqual(calculate_elapsed_time(started_time=timezone.now() - datetime.timedelta(seconds=1), + archived_time=None), + 0) + + # seconds + start = timezone.now() + archive = start + datetime.timedelta(seconds=59) + + self.assertEqual(calculate_elapsed_time(started_time=start, archived_time=archive), 59) + + # minutes + start = timezone.now() + archive = start + datetime.timedelta(minutes=3) + + self.assertEqual(calculate_elapsed_time(started_time=start, archived_time=archive), 3 * 60) + + # hours + start = timezone.now() + archive = start + datetime.timedelta(hours=3) + + self.assertEqual(calculate_elapsed_time(started_time=start, archived_time=archive), 3 * 60 * 60) + + # days + start = timezone.now() + archive = start + datetime.timedelta(days=3) + + self.assertEqual(calculate_elapsed_time(started_time=start, archived_time=archive), 3 * 24 * 60 * 60)