64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
import os
|
|
import sys
|
|
import unittest
|
|
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'payload',
|
|
'user', 'remote_access', 'pager-webui'))
|
|
import server
|
|
|
|
|
|
def setUpModule():
|
|
__import__('importlib').reload(server)
|
|
|
|
|
|
class ReliabilityApiTest(unittest.TestCase):
|
|
def setUp(self):
|
|
self.runs = []
|
|
self.old_device_run = server.device_run
|
|
server._health.update({
|
|
'sigsegv_last': None, 'last_fix': 0.0, 'fixes': 0,
|
|
'last_action': None, 'pineap_up': False, 'monitor_fixes': 0})
|
|
|
|
def fake_run(args, timeout=20, input_data=None):
|
|
self.runs.append((list(args), timeout))
|
|
return (0, '', '')
|
|
|
|
server.device_run = fake_run
|
|
|
|
def tearDown(self):
|
|
server.device_run = self.old_device_run
|
|
|
|
def test_h_health_exposes_reliability_feed(self):
|
|
status, h = server.h_health(None)
|
|
self.assertEqual(status, 200)
|
|
for key in ('reliability', 'events', 'guard'):
|
|
self.assertIn(key, h)
|
|
for counter in ('boots', 'unexpected_boots', 'rollbacks',
|
|
'restarts', 'guard_fixes'):
|
|
self.assertIn(counter, h['reliability'])
|
|
self.assertIsInstance(h['events'], list)
|
|
self.assertIn('in_sync', h['guard'])
|
|
self.assertIn('pool_size', h['guard'])
|
|
|
|
def test_check_boot_marker_uses_module_marker_path(self):
|
|
import tempfile
|
|
marker = tempfile.mktemp()
|
|
old = server.BOOT_MARKER
|
|
server.BOOT_MARKER = marker
|
|
try:
|
|
if os.path.exists(marker):
|
|
os.unlink(marker)
|
|
self.assertFalse(server.check_boot_marker())
|
|
self.assertTrue(os.path.exists(marker),
|
|
'check_boot_marker must use server.BOOT_MARKER')
|
|
open(marker, 'w').write('0')
|
|
self.assertTrue(server.check_boot_marker())
|
|
finally:
|
|
if os.path.exists(marker):
|
|
os.unlink(marker)
|
|
server.BOOT_MARKER = old
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|