more stats: count since last reboot

This commit is contained in:
Brian Warner 2016-06-25 12:31:50 -07:00
parent 9e29898207
commit 7b1d4cbcee
2 changed files with 30 additions and 1 deletions

View File

@ -1,5 +1,5 @@
from __future__ import print_function, unicode_literals from __future__ import print_function, unicode_literals
import os, random, base64 import os, random, base64, collections
from collections import namedtuple from collections import namedtuple
from twisted.python import log from twisted.python import log
from twisted.application import service from twisted.application import service
@ -148,6 +148,8 @@ class AppNamespace:
self._log_requests = log_requests self._log_requests = log_requests
self._app_id = app_id self._app_id = app_id
self._mailboxes = {} self._mailboxes = {}
self._nameplate_counts = collections.defaultdict(int)
self._mailbox_counts = collections.defaultdict(int)
def get_nameplate_ids(self): def get_nameplate_ids(self):
db = self._db db = self._db
@ -275,6 +277,7 @@ class AppNamespace:
" VALUES (?, ?,?,?,?)", " VALUES (?, ?,?,?,?)",
(self._app_id, (self._app_id,
u.started, u.total_time, u.waiting_time, u.result)) u.started, u.total_time, u.waiting_time, u.result))
self._nameplate_counts[u.result] += 1
def _summarize_nameplate_usage(self, side_rows, delete_time, pruned): def _summarize_nameplate_usage(self, side_rows, delete_time, pruned):
times = sorted([row["added"] for row in side_rows]) times = sorted([row["added"] for row in side_rows])
@ -351,6 +354,7 @@ class AppNamespace:
" VALUES (?, ?,?,?,?)", " VALUES (?, ?,?,?,?)",
(self._app_id, (self._app_id,
u.started, u.total_time, u.waiting_time, u.result)) u.started, u.total_time, u.waiting_time, u.result))
self._mailbox_counts[u.result] += 1
def _summarize_mailbox(self, side_rows, delete_time, pruned): def _summarize_mailbox(self, side_rows, delete_time, pruned):
times = sorted([row["added"] for row in side_rows]) times = sorted([row["added"] for row in side_rows])
@ -467,6 +471,9 @@ class AppNamespace:
db.commit() db.commit()
log.msg(" prune complete, modified:", modified) log.msg(" prune complete, modified:", modified)
def get_counts(self):
return (self._nameplate_counts, self._mailbox_counts)
def _shutdown(self): def _shutdown(self):
for channel in self._mailboxes.values(): for channel in self._mailboxes.values():
channel._shutdown() channel._shutdown()
@ -537,6 +544,25 @@ class Rendezvous(service.MultiService):
# TODO: mailboxes with three or more sides (unlikely) # TODO: mailboxes with three or more sides (unlikely)
c["total_messages"] = q("SELECT COUNT() FROM `messages`") c["total_messages"] = q("SELECT COUNT() FROM `messages`")
# usage since last reboot
nameplate_counts = collections.defaultdict(int)
mailbox_counts = collections.defaultdict(int)
for app in self._apps.values():
nc, mc = app.get_counts()
for result, count in nc.items():
nameplate_counts[result] += count
for result, count in mc.items():
mailbox_counts[result] += count
urb = stats["usage_since_reboot"] = {}
urb["nameplates"] = {}
for result, count in nameplate_counts.items():
urb["nameplates"][result] = count
urb["total_nameplates"] = sum(nameplate_counts.values())
urb["mailboxes"] = {}
for result, count in mailbox_counts.items():
urb["mailboxes"][result] = count
urb["total_mailboxes"] = sum(mailbox_counts.values())
# historical usage (all-time) # historical usage (all-time)
u = stats["usage"] = {} u = stats["usage"] = {}
un = u["nameplates"] = {} un = u["nameplates"] = {}

View File

@ -427,6 +427,9 @@ class PregeneratedCode(ServerBase, ScriptsBase, unittest.TestCase):
self.failUnlessEqual(modes[i], self.failUnlessEqual(modes[i],
stat.S_IMODE(os.stat(fn).st_mode)) stat.S_IMODE(os.stat(fn).st_mode))
# check server stats
self._rendezvous.get_stats()
def test_text(self): def test_text(self):
return self._do_test() return self._do_test()
def test_text_subprocess(self): def test_text_subprocess(self):