diff options
author | Alex Shatov <alexs@att.com> | 2018-08-24 13:15:04 -0400 |
---|---|---|
committer | Alex Shatov <alexs@att.com> | 2018-08-24 13:15:04 -0400 |
commit | 1d693376205c66af93283d04e8e9740c947a7d02 (patch) | |
tree | 9188af307614661c1afbe50cdaa2fa8a2cdc691c /tests/mock_settings.py | |
parent | 1cddbc70e4799970dc606014ef79e025d6a8e722 (diff) |
4.2.0 policy-handler - periodic reconfigure
- reconfigure == periodically retrieve the policy-handler config
from consul-kv and compare to previous config and subconfigs.
If changed, reconfigure the subunits
- selectively change one or any settings for the following
= catch_up timer interval
= reconfigure timer interval
= deployment-handler url and params (thread-safe)
= policy-engine url and params (thread-safe)
= web-socket url to policy-engine (through a callback)
- each subunit has its own Settings that keep track of changes
- try-catch and metrics around discovery - consul API
- hidden the secrets from logs
- froze the web-socket version to 0.49.0 because 0.50.0
and 0.51.0 are broken - looking around for stable alternatives
- fixed-adapted the callbacks passed to the web-socket lib
that changed its API in 0.49.0 and later
- log the stack on the exception occurring in the web-socket lib
- unit test refactoring
Change-Id: Id53bad59660a197f59d9aeb7c05ab761d1060cd0
Signed-off-by: Alex Shatov <alexs@att.com>
Issue-ID: DCAEGEN2-470
Diffstat (limited to 'tests/mock_settings.py')
-rw-r--r-- | tests/mock_settings.py | 79 |
1 files changed, 68 insertions, 11 deletions
diff --git a/tests/mock_settings.py b/tests/mock_settings.py index 017ad7e..7e05ecf 100644 --- a/tests/mock_settings.py +++ b/tests/mock_settings.py @@ -17,43 +17,100 @@ # ECOMP is a trademark and service mark of AT&T Intellectual Property. """settings that are general to all tests""" +import copy import json import logging import sys import uuid from datetime import datetime +from functools import wraps from policyhandler import LogWriter from policyhandler.config import Config +from policyhandler.discovery import DiscoveryClient from policyhandler.onap.audit import Audit +class MonkeyHttpResponse(object): + """Monkey http reposne""" + def __init__(self, headers): + self.headers = headers or {} + + +class MonkeyedResponse(object): + """Monkey response""" + def __init__(self, full_path, res_json, json_body=None, headers=None): + self.full_path = full_path + self.req_json = json_body or {} + self.status_code = 200 + self.request = MonkeyHttpResponse(headers) + self.res = res_json + self.text = json.dumps(self.res) + + def json(self): + """returns json of response""" + return self.res + + def raise_for_status(self): + """ignoring""" + pass + + +def _fix_discover_config(func): + """the decorator""" + if not func: + return None + + def mocked_discover_get_value(*_): + """monkeypatch for get from consul""" + return copy.deepcopy(Settings.mock_config) + + @wraps(func) + def wrapper(*args, **kwargs): + """override the DiscoveryClient.get_value to fake discovering the config""" + + old_get_value = DiscoveryClient.get_value + DiscoveryClient.get_value = mocked_discover_get_value + + func_result = func(*args, **kwargs) + + DiscoveryClient.get_value = old_get_value + + return func_result + return wrapper + class Settings(object): """init all locals""" + _loaded = False logger = None RUN_TS = datetime.utcnow().isoformat()[:-3] + 'Z' - dicovered_config = None + mock_config = None deploy_handler_instance_uuid = str(uuid.uuid4()) @staticmethod + @_fix_discover_config def init(): """init configs""" - Config.load_from_file() - - with open("etc_upload/config.json", 'r') as config_json: - Settings.dicovered_config = json.load(config_json) + if Settings._loaded: + return + Settings._loaded = True - Config.load_from_file("etc_upload/config.json") + Config.init_config() - Config.settings["catch_up"] = {"interval": 10} + with open("tests/mock_config.json", 'r') as config_json: + Settings.mock_config = json.load(config_json) Settings.logger = logging.getLogger("policy_handler.unit_test") sys.stdout = LogWriter(Settings.logger.info) sys.stderr = LogWriter(Settings.logger.error) - print("print ========== run_policy_handler ==========") + print("print is expected to be in the log") Settings.logger.info("========== run_policy_handler ==========") - Audit.init(Config.get_system_name(), Config.LOGGER_CONFIG_FILE_PATH) + Audit.init(Config.system_name, Config.LOGGER_CONFIG_FILE_PATH) + audit = Audit(req_message="start testing policy handler") + + Config.discover(audit) + + Settings.logger.info("testing policy_handler with config: %s", Config.discovered_config) - Settings.logger.info("starting policy_handler with config:") - Settings.logger.info(Audit.log_json_dumps(Config.settings)) + audit.audit_done(" -- started") |