Completed
Push — master ( a29c3e...00153b )
by Dave
01:10
created

tests.test_rules   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 70
dl 0
loc 94
rs 10
c 0
b 0
f 0
wmc 11

11 Methods

Rating   Name   Duplication   Size   Complexity  
A TestRules.test_int_has_reading() 0 4 1
A TestRules.test_only_one_reboot() 0 5 1
A TestRules.test_string_has_reading() 0 4 1
A TestRules.test_only_one_reset() 0 5 1
A TestRules.test_float_has_reading() 0 4 1
A TestRules.test_board_high_temp() 0 9 1
A TestRules.test_lowhash() 0 8 1
A TestRules.test_reset_leaves_reboot() 0 6 1
A TestRules.test_board_high_temp_reset() 0 10 1
A TestRules.setUp() 0 8 1
A TestRules.test_high_temp_reset_null() 0 9 1
1
'''test rules'''
2
import unittest
3
import datetime
4
from domain.mining import Miner, MinerInfo, MinerStatistics
5
from domain.miningrules import RuleParameters, MinerStatisticsRule, BrokenRule
6
7
class TestRules(unittest.TestCase):
8
    def setUp(self):
9
        '''create test miner'''
10
        self.minerinfo = MinerInfo('Antminer S9', '')
11
        self.miner = Miner('Test', 'Online', 'Antminer S9', '', '', '', '', '', '', '',
12
                           lastmonitor=None, offlinecount=0, defaultpool='', minerinfo=self.minerinfo)
13
14
        self.minerstats = MinerStatistics(self.miner, datetime.datetime.utcnow(), 3, currenthash=9999,
15
                                          controllertemp=0, tempboard1=0, tempboard2=0, tempboard3=0)
16
17
    def test_int_has_reading(self):
18
        params = RuleParameters(self.miner.minerinfo.miner_type, 10000, 40, 55, 60*10)
19
        rules = MinerStatisticsRule(self.miner, self.minerstats, params)
20
        self.assertTrue(rules.hasreading_num(params.controllertemplimit))
21
22
    def test_float_has_reading(self):
23
        params = RuleParameters(self.miner.minerinfo.miner_type, 10000, 49.9, 55, 60*10)
24
        rules = MinerStatisticsRule(self.miner, self.minerstats, params)
25
        self.assertTrue(rules.hasreading_num(params.controllertemplimit))
26
27
    def test_string_has_reading(self):
28
        params = RuleParameters(self.miner.minerinfo.miner_type, 10000, '', 55, 60*10)
29
        rules = MinerStatisticsRule(self.miner, self.minerstats, params)
30
        self.assertFalse(rules.hasreading_num(params.controllertemplimit))
31
32
    def test_lowhash(self):
33
        '''test low hash condition'''
34
        params = RuleParameters(self.miner.minerinfo.miner_type, 10000, 40, 55, 60*10)
35
        rules = MinerStatisticsRule(self.miner, self.minerstats, params)
36
37
        isbroken = rules.isbroken()
38
        self.assertTrue(isbroken)
39
        self.assertTrue(len(rules.brokenrules) > 0)
40
41
    def test_board_high_temp(self):
42
        '''test when controller temp is high on miner'''
43
        self.minerstats.tempboard1 = 101
44
        params = RuleParameters(self.miner.minerinfo.miner_type, 10000, 40, 55, 60*10)
45
        rules = MinerStatisticsRule(self.miner, self.minerstats, params)
46
47
        isbroken = rules.isbroken()
48
        self.assertTrue(isbroken)
49
        self.assertTrue(len(rules.brokenrules) > 0)
50
51
    def test_board_high_temp_reset(self):
52
        '''test when controller temp is high on miner'''
53
        self.minerstats.tempboard1 = 150
54
        self.minerstats.elapsed = (60 * 10) + 1
55
        params = RuleParameters(self.miner.minerinfo.miner_type, 10000, 40, 55, 60*10, maxtempreset=120)
56
        rules = MinerStatisticsRule(self.miner, self.minerstats, params)
57
58
        isbroken = rules.isbroken()
59
        self.assertTrue(isbroken)
60
        self.assertTrue(rules.has_reboot_rule())
61
62
    def test_high_temp_reset_null(self):
63
        '''test when controller temp is high on miner. no reset'''
64
        self.minerstats.controllertemp = 101
65
        params = RuleParameters(self.miner.minerinfo.miner_type, 10000, 40, 55, 60*10, maxtempreset=None)
66
        rules = MinerStatisticsRule(self.miner, self.minerstats, params)
67
68
        isbroken = rules.isbroken()
69
        self.assertTrue(isbroken)
70
        self.assertFalse(rules.has_reboot_rule())
71
72
73
    def test_only_one_reset(self):
74
        rules = MinerStatisticsRule(self.miner, None, None)
75
        rules.addbrokenrule(BrokenRule(self.miner, 'restart', ''))
76
        rules.addbrokenrule(BrokenRule(self.miner, 'restart', ''))
77
        self.assertTrue(len(rules.brokenrules) == 1)
78
79
    def test_only_one_reboot(self):
80
        rules = MinerStatisticsRule(self.miner, None, None)
81
        rules.addbrokenrule(BrokenRule(self.miner, 'restart', 'reboot'))
82
        rules.addbrokenrule(BrokenRule(self.miner, 'restart', 'reboot'))
83
        self.assertTrue(len(rules.brokenrules) == 1)
84
85
    def test_reset_leaves_reboot(self):
86
        rules = MinerStatisticsRule(self.miner, None, None)
87
        rules.addbrokenrule(BrokenRule(self.miner, 'restart', 'reboot'))
88
        rules.addbrokenrule(BrokenRule(self.miner, 'restart', ''))
89
        self.assertTrue(len(rules.brokenrules) == 1)
90
        self.assertTrue(rules.brokenrules[0].parameter == 'reboot')
91
92
if __name__ == '__main__':
93
    unittest.main()
94