mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 00:52:16 -06:00
fix prometheus metrics; broke in 609c5921
This commit is contained in:
parent
de9069ef1d
commit
678675a9a6
|
@ -88,7 +88,7 @@ class Metrics(object):
|
|||
addg("cpp_total_bans", str(self.hsrv.nban), t)
|
||||
|
||||
if not args.nos_vst:
|
||||
x = self.hsrv.broker.ask("up2k.get_state")
|
||||
x = self.hsrv.broker.ask("up2k.get_state", True, "")
|
||||
vs = json.loads(x.get())
|
||||
|
||||
nvidle = 0
|
||||
|
|
104
tests/test_metrics.py
Normal file
104
tests/test_metrics.py
Normal file
|
@ -0,0 +1,104 @@
|
|||
#!/usr/bin/env python3
|
||||
# coding: utf-8
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
from copyparty.__init__ import PY2
|
||||
from copyparty.authsrv import AuthSrv
|
||||
from copyparty.httpcli import HttpCli
|
||||
from copyparty.metrics import Metrics
|
||||
from tests import util as tu
|
||||
from tests.util import Cfg
|
||||
|
||||
|
||||
def hdr(query):
|
||||
h = "GET /{} HTTP/1.1\r\nCookie: cppwd=o\r\nConnection: close\r\n\r\n"
|
||||
return h.format(query).encode("utf-8")
|
||||
|
||||
|
||||
class TestMetrics(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.td = tu.get_ramdisk()
|
||||
os.chdir(self.td)
|
||||
|
||||
def tearDown(self):
|
||||
os.chdir(tempfile.gettempdir())
|
||||
shutil.rmtree(self.td)
|
||||
|
||||
def cinit(self):
|
||||
if self.conn:
|
||||
self.fstab = self.conn.hsrv.hub.up2k.fstab
|
||||
self.conn.hsrv.hub.up2k.shutdown()
|
||||
self.asrv = AuthSrv(self.args, self.log)
|
||||
self.conn = tu.VHttpConn(self.args, self.asrv, self.log, b"", True)
|
||||
if self.fstab:
|
||||
self.conn.hsrv.hub.up2k.fstab = self.fstab
|
||||
|
||||
if not self.metrics:
|
||||
self.metrics = Metrics(self.conn)
|
||||
self.conn.broker = self.conn.hsrv.broker
|
||||
self.conn.hsrv.metrics = self.metrics
|
||||
for k in "ncli nsus nban".split():
|
||||
setattr(self.conn, k, 9)
|
||||
|
||||
def test(self):
|
||||
zs = "nos_dup nos_hdd nos_unf nos_vol nos_vst"
|
||||
opts = {x: False for x in zs.split()}
|
||||
self.args = Cfg(v=[".::A"], a=[], stats=True, **opts)
|
||||
self.conn = self.fstab = self.metrics = None
|
||||
self.cinit()
|
||||
h, b = self.curl(".cpr/metrics")
|
||||
self.assertIn(".1 200 OK", h)
|
||||
ptns = r"""
|
||||
cpp_uptime_seconds [0-9]\.[0-9]{3}$
|
||||
cpp_boot_unixtime_seconds [0-9]{7,10}\.[0-9]{3}$
|
||||
cpp_http_reqs_created [0-9]{7,10}$
|
||||
cpp_http_reqs_total -1$
|
||||
cpp_http_conns 9$
|
||||
cpp_total_bans 9$
|
||||
cpp_sus_reqs_total 9$
|
||||
cpp_active_bans 0$
|
||||
cpp_idle_vols 0$
|
||||
cpp_busy_vols 0$
|
||||
cpp_offline_vols 0$
|
||||
cpp_db_idle_seconds 86399999\.00$
|
||||
cpp_db_act_seconds 0\.00$
|
||||
cpp_hashing_files 0$
|
||||
cpp_tagq_files 0$
|
||||
cpp_disk_size_bytes\{vol="/"\} [0-9]+$
|
||||
cpp_disk_free_bytes\{vol="/"\} [0-9]+$
|
||||
cpp_vol_bytes\{vol="/"\} 0$
|
||||
cpp_vol_files\{vol="/"\} 0$
|
||||
cpp_vol_bytes\{vol="total"\} 0$
|
||||
cpp_vol_files\{vol="total"\} 0$
|
||||
cpp_dupe_bytes\{vol="total"\} 0$
|
||||
cpp_dupe_files\{vol="total"\} 0$
|
||||
"""
|
||||
if not PY2:
|
||||
ptns += r"""
|
||||
cpp_mtpq_files 0$
|
||||
cpp_unf_bytes\{vol="/"\} 0$
|
||||
cpp_unf_files\{vol="/"\} 0$
|
||||
cpp_unf_bytes\{vol="total"\} 0$
|
||||
cpp_unf_files\{vol="total"\} 0$
|
||||
"""
|
||||
for want in [x for x in ptns.split("\n") if x]:
|
||||
if not re.search("^" + want, b.replace("\r", ""), re.MULTILINE):
|
||||
raise Exception("server response:\n%s\n\nmissing item: %s" % (b, want))
|
||||
|
||||
def curl(self, url, binary=False):
|
||||
conn = self.conn.setbuf(hdr(url))
|
||||
HttpCli(conn).run()
|
||||
if binary:
|
||||
h, b = conn.s._reply.split(b"\r\n\r\n", 1)
|
||||
return [h.decode("utf-8"), b]
|
||||
|
||||
return conn.s._reply.decode("utf-8").split("\r\n\r\n", 1)
|
||||
|
||||
def log(self, src, msg, c=0):
|
||||
print(msg)
|
Loading…
Reference in a new issue