From a5cc1731435da1fdd1de140f3c2cfcf14b44c984 Mon Sep 17 00:00:00 2001 From: nolash Date: Wed, 29 Sep 2021 07:08:31 +0200 Subject: [PATCH] Move init server to initness under util, add test --- .../initness}/config/httpd.ini | 0 .../initness}/config/state.ini | 0 .../initness/initness/runnable}/server.py | 30 ++++++++++++------- .../initness}/requirements.txt | 0 apps/util/initness/setup.py | 7 +++++ apps/util/initness/tests/test_basic.py | 27 +++++++++++++++++ 6 files changed, 53 insertions(+), 11 deletions(-) rename apps/{init_server => util/initness}/config/httpd.ini (100%) rename apps/{init_server => util/initness}/config/state.ini (100%) rename apps/{init_server => util/initness/initness/runnable}/server.py (91%) rename apps/{init_server => util/initness}/requirements.txt (100%) create mode 100644 apps/util/initness/setup.py create mode 100644 apps/util/initness/tests/test_basic.py diff --git a/apps/init_server/config/httpd.ini b/apps/util/initness/config/httpd.ini similarity index 100% rename from apps/init_server/config/httpd.ini rename to apps/util/initness/config/httpd.ini diff --git a/apps/init_server/config/state.ini b/apps/util/initness/config/state.ini similarity index 100% rename from apps/init_server/config/state.ini rename to apps/util/initness/config/state.ini diff --git a/apps/init_server/server.py b/apps/util/initness/initness/runnable/server.py similarity index 91% rename from apps/init_server/server.py rename to apps/util/initness/initness/runnable/server.py index 3c56feb1..4fda2056 100644 --- a/apps/init_server/server.py +++ b/apps/util/initness/initness/runnable/server.py @@ -45,14 +45,11 @@ config.dict_override(args_override, 'cli flag') logg.debug('loaded config: {}\n'.format(config)) -class StateRequestHandler(BaseHTTPRequestHandler): - - state_store_dir = None - - def do_GET(self): - init_path = os.path.join(self.state_store_dir, 'init') +def get_state(state_store_dir): + init_path = os.path.join(state_store_dir, 'init') init_level = 0 registry_address = None + try: f = open(init_path, 'r') init_level = f.read() @@ -61,7 +58,7 @@ class StateRequestHandler(BaseHTTPRequestHandler): except FileNotFoundError: pass - registry_path = os.path.join(self.state_store_dir, 'registry') + registry_path = os.path.join(state_store_dir, 'registry') try: f = open(registry_path, 'r') registry_address = f.read() @@ -70,17 +67,24 @@ class StateRequestHandler(BaseHTTPRequestHandler): except FileNotFoundError: pass - o = { 'init': init_level, 'registry': registry_address, } - logg.debug('headersĀ {}'.format(self.headers)) - logg.debug('iĀ {}'.format(o)) + return o + +class StateRequestHandler(BaseHTTPRequestHandler): + + state_store_dir = None + + def do_GET(self): + + o = get_state(self.state_store_dir) self.send_response(200, 'yarr') self.end_headers() + self.wfile.write(json.dumps(o).encode('utf-8')) @@ -91,10 +95,14 @@ def run(store, host=None, port=None): httpd.serve_forever() -if __name__ == '__main__': +def main(): try: os.stat(config.get('STATE_BASE_DIR')) except FileNotFoundError: os.makedirs(config.get('STATE_BASE_DIR')) store = StateRequestHandler.state_store_dir=config.get('STATE_BASE_DIR') run(store, host=config.get('HTTPD_HOST'), port=config.get('HTTPD_PORT')) + + +if __name__ == '__main__': + main() diff --git a/apps/init_server/requirements.txt b/apps/util/initness/requirements.txt similarity index 100% rename from apps/init_server/requirements.txt rename to apps/util/initness/requirements.txt diff --git a/apps/util/initness/setup.py b/apps/util/initness/setup.py new file mode 100644 index 00000000..d7c357a0 --- /dev/null +++ b/apps/util/initness/setup.py @@ -0,0 +1,7 @@ +from setuptools import setup +setup( + name='initness', + version='0.0.1a1', + packages=['initness'], + include_package_data=True, + ) diff --git a/apps/util/initness/tests/test_basic.py b/apps/util/initness/tests/test_basic.py new file mode 100644 index 00000000..5174f131 --- /dev/null +++ b/apps/util/initness/tests/test_basic.py @@ -0,0 +1,27 @@ +# standard imports +import unittest +import tempfile +import os + +# local imports +from initness.runnable.server import get_state + +class TestInitness(unittest.TestCase): + + def setUp(self): + self.dir = tempfile.mkdtemp() + f = open(os.path.join(self.dir, 'init'), 'w') + f.write('42') + f.close() + f = open(os.path.join(self.dir, 'registry'), 'w') + f.write('0xdeadbeef') + f.close() + + def test_state(self): + o = get_state(self.dir) + self.assertEqual(o['init'], '42') + self.assertEqual(o['registry'], '0xdeadbeef') + + +if __name__ == '__main__': + unittest.main()