Completed
Push — master ( 2ae69e...39840a )
by Vincent
01:14
created

TimingTestCase.setUp()   A

Complexity

Conditions 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 5
rs 9.4285
cc 1
1
# coding: utf8
2
3
# Copyright 2013-2015 Vincent Jacques <[email protected]>
4
5
from __future__ import division, absolute_import, print_function
6
7
import unittest
8
9
from ActionTree import *
10
from . import *
11
12
13
class TimingTestCase(ActionTreeTestCase):
14
    def test_success(self):
15
        a = self._action("a")
16
17
        report = execute(a)
18
19
        self.assertIsInstance(report.get_action_status(a).ready_time, datetime.datetime)
20
        self.assertIsNone(report.get_action_status(a).cancel_time)
21
        self.assertGreater(report.get_action_status(a).start_time, report.get_action_status(a).ready_time)
22
        self.assertGreater(report.get_action_status(a).success_time, report.get_action_status(a).start_time)
23
        self.assertIsNone(report.get_action_status(a).failure_time)
24
25
    def test_failure(self):
26
        a = self._action("a", exception=Exception())
27
28
        report = execute(a, do_raise=False)
29
30
        self.assertIsInstance(report.get_action_status(a).ready_time, datetime.datetime)
31
        self.assertIsNone(report.get_action_status(a).cancel_time)
32
        self.assertGreater(report.get_action_status(a).start_time, report.get_action_status(a).ready_time)
33
        self.assertIsNone(report.get_action_status(a).success_time)
34
        self.assertGreater(report.get_action_status(a).failure_time, report.get_action_status(a).start_time)
35
36
    def test_cancelation_before_ready(self):
37
        a = self._action("a")
38
        b = self._action("b", exception=Exception())
39
        a.add_dependency(b)
40
41
        report = execute(a, do_raise=False)
42
43
        self.assertIsInstance(report.get_action_status(b).ready_time, datetime.datetime)
44
        self.assertIsNone(report.get_action_status(b).cancel_time)
45
        self.assertGreater(report.get_action_status(b).start_time, report.get_action_status(b).ready_time)
46
        self.assertIsNone(report.get_action_status(b).success_time)
47
        self.assertGreater(report.get_action_status(b).failure_time, report.get_action_status(b).start_time)
48
49
        self.assertIsNone(report.get_action_status(a).ready_time)
50
        self.assertGreater(report.get_action_status(a).cancel_time, report.get_action_status(b).failure_time)
51
        self.assertIsNone(report.get_action_status(a).start_time)
52
        self.assertIsNone(report.get_action_status(a).success_time)
53
        self.assertIsNone(report.get_action_status(a).failure_time)
54
55
    def test_cancelation_with_keep_going(self):
56
        for i in range(10):
57
            a0 = self._action("a0")
58
            a = self._action("a")
59
            a0.add_dependency(a)
60
            b = self._action("b", exception=Exception())
61
            a.add_dependency(b)
62
            DEPS = 10
63
            deps = []
64
            for i in range(DEPS):
65
                c = self._action("c")
66
                a.add_dependency(c)
67
                deps.append(c)
68
69
            report = execute(a0, keep_going=True, do_raise=False)
70
71
            # a is not canceled before all its dependencies are done
72
            self.assertGreater(report.get_action_status(a).cancel_time, report.get_action_status(b).failure_time)
73
            for dep in deps:
74
                self.assertGreater(report.get_action_status(a).cancel_time, report.get_action_status(dep).success_time)
75
            # a0 is canceled at the same time as a
76
            self.assertEqual(report.get_action_status(a0).cancel_time, report.get_action_status(a).cancel_time)
77