mmnode-blocks-info: add average stats

This commit is contained in:
The MMGen Project 2021-03-20 21:43:11 +00:00
commit 6a761f8ac9
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2

View file

@ -94,7 +94,7 @@ class BlocksInfo:
]
fs_lsqueeze2 = ['interval']
all_stats = ['range','diff']
all_stats = ['avg','range','diff']
dfl_stats = ['range','diff']
fmt_funcs = {
@ -312,10 +312,12 @@ class BlocksInfo:
if not self.block_list:
await init(0)
self.res = []
for n in range(len(heights)):
if self.block_list:
await init(n)
ret = await self.process_block(heights[n],hashes[n],self.hdrs[n])
self.res.append(ret)
if not self.opt.stats_only:
self.output_block(ret,n)
@ -481,6 +483,21 @@ class BlocksInfo:
('Est. diff adjust: {}%', 'est_diff_adjust_pct', f'{((600 / bdi) - 1) * 100:+.2f}'),
))
async def create_avg_stats(self):
skip = ('block', 'hash', 'date', 'version','miner')
fields = self.block_data._fields
nblocks = len(self.res)
def gen():
for field in fields:
if field in skip:
yield ''
else:
ret = sum(getattr(block,field) for block in self.res) // nblocks
vn = self.fields[field].varname
yield self.fmt_funcs[vn](ret) if vn in self.fmt_funcs else ret
fs = ''.join(self.gen_fs(fields,fill=skip)).strip()
return ( 'averages', ( 'Averages:', fs.format(*gen()) ) )
def process_stats_pre(self,i):
if not (self.opt.stats_only and i == 0):
Msg('')