Browse Source

mmnode-blocks-info: add average stats

The MMGen Project 4 years ago
parent
commit
6a761f8ac9
1 changed files with 18 additions and 1 deletions
  1. 18 1
      mmgen/node_tools/BlocksInfo.py

+ 18 - 1
mmgen/node_tools/BlocksInfo.py

@@ -94,7 +94,7 @@ class BlocksInfo:
 	]
 	]
 	fs_lsqueeze2 = ['interval']
 	fs_lsqueeze2 = ['interval']
 
 
-	all_stats = ['range','diff']
+	all_stats = ['avg','range','diff']
 	dfl_stats = ['range','diff']
 	dfl_stats = ['range','diff']
 
 
 	fmt_funcs = {
 	fmt_funcs = {
@@ -312,10 +312,12 @@ class BlocksInfo:
 		if not self.block_list:
 		if not self.block_list:
 			await init(0)
 			await init(0)
 
 
+		self.res = []
 		for n in range(len(heights)):
 		for n in range(len(heights)):
 			if self.block_list:
 			if self.block_list:
 				await init(n)
 				await init(n)
 			ret = await self.process_block(heights[n],hashes[n],self.hdrs[n])
 			ret = await self.process_block(heights[n],hashes[n],self.hdrs[n])
+			self.res.append(ret)
 			if not self.opt.stats_only:
 			if not self.opt.stats_only:
 				self.output_block(ret,n)
 				self.output_block(ret,n)
 
 
@@ -481,6 +483,21 @@ class BlocksInfo:
 			('Est. diff adjust: {}%', 'est_diff_adjust_pct', f'{((600 / bdi) - 1) * 100:+.2f}'),
 			('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):
 	def process_stats_pre(self,i):
 		if not (self.opt.stats_only and i == 0):
 		if not (self.opt.stats_only and i == 0):
 			Msg('')
 			Msg('')