Passed
Push — master ( 964ae0...fcc2df )
by Dave
58s
created

MinerStatistics.hardware_errors_per_minute()   A

Complexity

Conditions 3

Size

Total Lines 9
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 9
nop 1
dl 0
loc 9
rs 9.95
c 0
b 0
f 0
1
2
#"Pool Stale%": 0,
3
#"Discarded": 86497,
4
#"Diff": "65.5K",
5
#"Rejected": 15,
6
#"Proxy Type": "",
7
#"Getworks": 3311,
8
#"Last Share Time": "0:00:20",
9
#"Pool Rejected%": 0.1838,
10
#"Accepted": 8148,
11
#"Last Share Difficulty": 65536,
12
#"Difficulty Accepted": 533987328,
13
#"Has Stratum": true,
14
#"Priority": 1,
15
#"Stale": 3,
16
#"Long Poll": "N",
17
#"Quota": 1,
18
#"URL": "stratum+tcp://solo.antpool.com:3333",
19
#"Proxy": "",
20
#"Get Failures": 1,
21
#"Diff1 Shares": 0,
22
#"Best Share": 255598083,
23
#"Stratum Active": true,
24
#"POOL": 0,
25
#"Has GBT": false,
26
#"User": "antminer_1",
27
#"Status": "Alive",
28
#"Stratum URL": "solo.antpool.com",
29
#"Remote Failures": 1,
30
#"Difficulty Rejected": 983040,
31
#"Difficulty Stale": 0
32
33
class MinerStatistics(object):
34
    '''Statistics for a miner
35
    temperature and hash
36
    '''
37
    def __init__(self, miner, when=None, minercount=0, currenthash=0,
38
                 controllertemp=0,
39
                 tempboard1=0, tempboard2=0, tempboard3=0,
40
                 elapsed=0,
41
                 fan1='', fan2='', fan3='',
42
                 boardstatus1='', boardstatus2='', boardstatus3='',
43
                 frequency='', hardware_errors=0, hash_avg=0, rawstats=None):
44
        self.miner = miner
45
        self.when = when
46
        self.minercount = minercount
47
        self.currenthash = currenthash
48
        self.controllertemp = controllertemp
49
        self.tempboard1 = tempboard1
50
        self.tempboard2 = tempboard2
51
        self.tempboard3 = tempboard3
52
        #elapsed time in seconds
53
        self.elapsed = elapsed
54
        self.fan1 = fan1
55
        self.fan2 = fan2
56
        self.fan3 = fan3
57
        self.boardstatus1 = boardstatus1
58
        self.boardstatus2 = boardstatus2
59
        self.boardstatus3 = boardstatus3
60
        self.frequency = frequency
61
        self.hardware_errors = hardware_errors
62
        self.hash_avg = hash_avg
63
        self.rawstats = rawstats
64
65
    @property
66
    def hardware_errors_per_second(self):
67
        if self.elapsed == 0:
68
            return None
69
        return self.hardware_errors/self.elapsed
70
71
    @property
72
    def hardware_errors_per_minute(self):
73
        if self.elapsed == 0:
74
            return None
75
        seconds_per_minute = 60
76
        if self.elapsed < seconds_per_minute:
77
            return None
78
        minutes = self.elapsed / seconds_per_minute
79
        return self.hardware_errors/minutes
80
81
    @property
82
    def hardware_errors_per_hour(self):
83
        if self.elapsed == 0:
84
            return None
85
        seconds_per_hour = 60 * 60
86
        if self.elapsed < seconds_per_hour:
87
            return None
88
        hours = self.elapsed / seconds_per_hour
89
        return self.hardware_errors/hours
90
91
    @property
92
    def hardware_errors_per_day(self):
93
        if self.elapsed == 0:
94
            return None
95
        seconds_per_day = 60 * 60 * 24
96
        if self.elapsed < seconds_per_day:
97
            return None
98
        day = self.elapsed / seconds_per_day
99
        return self.hardware_errors/day
100
101
    def tempboardmax(self):
102
        return max(self.tempboard1, self.tempboard2, self.tempboard3)
103
104
    def format_elapsed(self):
105
        seconds = self.elapsed
106
        numdays = seconds // 86400
107
        numhours = (seconds % 86400) // 3600
108
        numminutes = ((seconds % 86400) % 3600) // 60
109
        numseconds = ((seconds % 86400) % 3600) % 60
110
        return '{0}:{1}:{2}:{3}'.format(numdays, numhours, numminutes, numseconds)
111
112
    def stats_summary(self):
113
        return '{0} {1}/{2} {3}'.format(self.currenthash, self.controllertemp, self.tempboardmax(), self.format_elapsed())
114