Completed
Push — master ( cd2467...f0b5bc )
by Dave
51:52 queued 50:48
created

TestMiner.test_miner_key_is_name()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
'''test mining domain'''
2
import unittest
3
import datetime
4
import domain.minerstatistics
5
from domain.mining import Miner, MinerStatus, MinerInfo, MinerApiCall
6
7
class TestMiner(unittest.TestCase):
8
    def test_miner_is_not_disabled(self):
9
        miner = Miner("test", '', '', '', '', '', '', '', '')
10
        self.assertFalse(miner.is_disabled())
11
12
    def test_miner_is_disabled(self):
13
        miner = Miner("#test", '', '', '', '', '', '', '', '')
14
        self.assertTrue(miner.is_disabled())
15
16
    def test_miner_key_is_id(self):
17
        miner = Miner("test", minerid='unittest')
18
        self.assertTrue(miner.key() == 'unittest')
19
20
    def test_miner_key_not_unknown(self):
21
        miner = Miner('test', minerid='unknown', ipaddress='unittest', port='1234')
22
        self.assertTrue(miner.key() == 'unittest:1234')
23
24
    def test_miner_key_is_networkid(self):
25
        miner = Miner("test", networkid={'unittest1', 'unittest2'})
26
        self.assertTrue(miner.key() == str({'unittest1', 'unittest2'}))
27
28
    def test_key_notempty_net(self):
29
        miner = Miner("test", networkid={})
30
        self.assertFalse(miner.key() == str({}))
31
32
    def test_miner_key_is_ip(self):
33
        miner = Miner("test", ipaddress='unittest', port='1234')
34
        self.assertTrue(miner.key() == 'unittest:1234')
35
36
    def test_miner_key_is_name(self):
37
        miner = Miner("test")
38
        self.assertTrue(miner.key() == 'test')
39
40
    def test_miner_formattime_now(self):
41
        miner = Miner('test')
42
        miner.lastmonitor = datetime.datetime.utcnow()
43
        self.assertTrue(miner.formattime(miner.lastmonitor))
44
45
    def test_miner_formattime_string(self):
46
        miner = Miner('test')
47
        miner.lastmonitor = '2018-04-11T01:28:45+00:00'
48
        self.assertTrue(miner.formattime(miner.lastmonitor))
49
50
    def test_miner_uses_custom(self):
51
        miner = Miner('test')
52
        miner.ftpport = '99'
53
        miner.set_ftp_port('22')
54
        self.assertTrue(miner.ftpport == '99')
55
56
    def test_miner_uses_default(self):
57
        miner = Miner('test')
58
        miner.ftpport = ''
59
        miner.set_ftp_port('22')
60
        self.assertTrue(miner.ftpport == '22')
61
62
    def test_miner_status_set_last_update(self):
63
        miner = Miner('test')
64
        self.assertTrue(not miner.laststatuschanged)
65
        miner.status = MinerStatus.Offline
66
        self.assertTrue(miner.laststatuschanged)
67
68
    def test_miner_status_change_keeps_original(self):
69
        miner = Miner('test')
70
        miner.status = MinerStatus.Offline
71
        self.assertTrue(miner.laststatuschanged)
72
        originalstatuschangetime = miner.laststatuschanged
73
        miner.status = MinerStatus.Offline
74
        self.assertTrue(miner.laststatuschanged == originalstatuschangetime)
75
76
    def test_miner_status_no_you_cant(self):
77
        miner = Miner('test')
78
        def set_status_test():
79
            miner.status = 'you can be anyting'
80
        self.assertRaises(ValueError, set_status_test)
81
82
    def test_miner_reset_offline_count(self):
83
        miner = Miner('test')
84
        self.assertTrue(miner.offlinecount == 0)
85
        self.assertTrue(miner.is_send_offline_alert())
86
        miner.offline_now()
87
        miner.offline_now()
88
        miner.offline_now()
89
        miner.offline_now()
90
        self.assertFalse(miner.is_send_offline_alert())
91
        miner.online_now()
92
        self.assertTrue(miner.offlinecount == 0)
93
        self.assertTrue(miner.is_send_offline_alert())
94
95
    def test_miner_setminerinfo(self):
96
        miner = Miner('test')
97
        minerinfo = MinerInfo('testminertype', miner.minerid)
98
        miner.setminerinfo(minerinfo)
99
        self.assertTrue(miner.miner_type == minerinfo.miner_type)
100
101
    def test_miner_shouldmonitor(self):
102
        miner = Miner('test')
103
        miner.lastmonitor = ""
104
        self.assertTrue(miner.should_monitor())
105
106
    def test_miner_elapsed_format(self):
107
        miner = Miner('test')
108
        miner.minerstats = domain.minerstatistics.MinerStatistics(miner)
109
        self.assertTrue(miner.minerstats.format_elapsed() == "0:0:0:0")
110
111
    def test_miner_stats_summary(self):
112
        miner = Miner('test')
113
        miner.minerstats = domain.minerstatistics.MinerStatistics(miner)
114
        summary = miner.minerstats.stats_summary()
115
        self.assertTrue(summary == '0 0/0 0:0:0:0')
116
117
    def test_miner_monitored_nothing_none(self):
118
        miner = Miner('test')
119
        miner.monitored(None, None, None, None)
120
        self.assertTrue(miner.lastmonitor is None)
121
122
    def test_miner_monitored_not_nothing_ismonitored(self):
123
        miner = Miner('test')
124
        stats = domain.minerstatistics.MinerStatistics(miner)
125
        miner.monitored(stats, pool=None, info=None, sec=None)
126
        self.assertFalse(miner.lastmonitor is None)
127
128
    def test_miner_monitored_timer(self):
129
        miner = Miner('test')
130
        stats = domain.minerstatistics.MinerStatistics(miner)
131
        apicall = MinerApiCall(miner)
132
        apicall.start()
133
        apicall.stop()
134
        miner.monitored(stats, pool=None, info=None, sec=apicall.elapsed())
135
        self.assertFalse(miner.lastmonitor is None)
136
137
    def test_miner_update(self):
138
        miner = Miner('test')
139
        miner.ipaddress = 'ip1'
140
        miner.location = 'location1'
141
        miner.in_service_date = datetime.datetime.now().replace(second=0, microsecond=0)
142
        minerupdate = Miner('test')
143
        minerupdate.ipaddress = 'ip2'
144
        minerupdate.location = 'location2'
145
        minerupdate.in_service_date = datetime.datetime.now()
146
        miner.updatefrom(minerupdate)
147
        self.assertTrue(miner.ipaddress == minerupdate.ipaddress)
148
        self.assertTrue(miner.location == minerupdate.location)
149
        self.assertTrue(miner.in_service_date == minerupdate.in_service_date)
150
151
    def test_miner_is_unknown(self):
152
        miner = Miner('test')
153
        miner.minerid = "unknown"
154
        self.assertTrue(miner.is_unknown)
155
156
    def test_miner_is_known(self):
157
        miner = Miner('test')
158
        miner.minerid = "123.123.123.123"
159
        self.assertFalse(miner.is_unknown)
160
161
    def test_miner_no_update(self):
162
        miner = Miner('test')
163
        miner.ipaddress = 'ip1'
164
        minerupdate = Miner('test')
165
        minerupdate.ipaddress = None
166
        miner.updatefrom(minerupdate)
167
        self.assertTrue(miner.ipaddress != minerupdate.ipaddress)
168
169
    def test_miner_update_port(self):
170
        miner = Miner('test')
171
        miner.port = 'port1'
172
        minerupdate = Miner('test')
173
        minerupdate.port = 'port2'
174
        miner.updatefrom(minerupdate)
175
        self.assertTrue(miner.port == minerupdate.port)
176
177
    def test_miner_create(self):
178
        values = []
179
        values.append({"name":"UnitTest"})
180
        values.append({"minerid": "1"})
181
        values.append({"ipaddress": "123.123.123.123"})
182
        values.append({"port": "987"})
183
        values.append({"location": "rack"})
184
        values.append({"in_service_date": "2018-01-01T08:00:00.000Z"})
185
        miner = Miner.create(values)
186
        self.assertTrue(miner.name == "UnitTest")
187
        self.assertTrue(miner.minerid == "1")
188
        self.assertTrue(miner.ipaddress == "123.123.123.123")
189
        self.assertTrue(miner.port == "987")
190
        self.assertTrue(miner.location == "rack")
191
        self.assertTrue(miner.in_service_date.date() == datetime.date(2018,1, 1) )
192
193
    def test_miner_key_original(self):
194
        miner = Miner('test')
195
        miner.minerid = "unittest"
196
        self.assertTrue(miner.is_key_updated)
197
198
if __name__ == '__main__':
199
    unittest.main()
200