def test_extract_none(): """Test Loop Instance extract operational policy name.""" loop = LoopInstance(template="template", name="test", details={}) loop.details = {"operationalPolicies":[]} with pytest.raises(ValueError): policy_name = loop.extract_operational_policy_name(policy_type="Drools") assert policy_name == None
def test_update_loop_details(mock_send_message_json): """Test Loop instance methode.""" loop = LoopInstance(template="template", name="test", details={}) mock_send_message_json.return_value = LOOP_DETAILS loop.details = loop._update_loop_details() mock_send_message_json.assert_called_once_with( 'GET', 'Get loop details', (f"{loop.base_url()}/loop/LOOP_test")) assert loop.details == LOOP_DETAILS
def test_restart_policy(mock_send_message, mock_refresh): """Test submit policies to policy engine.""" loop = LoopInstance(template="template", name="test", details=LOOP_DETAILS) action = loop.act_on_loop_policy(loop.restart) mock_send_message.assert_called_once_with( 'PUT', 'restart policy', (f"{loop.base_url()}/loop/restart/LOOP_test")) mock_refresh.assert_called_once() loop.details = SUBMITED_POLICY assert loop.details["components"]["POLICY"]["componentState"][ "stateName"] == "SENT_AND_DEPLOYED"
def test_stop_policy(mock_send_message, mock_refresh): """Test submit policies to policy engine.""" loop = LoopInstance(template="template", name="test", details=LOOP_DETAILS) action = loop.act_on_loop_policy(loop.stop) mock_send_message.assert_called_once_with('PUT', 'stop policy', (f"{loop.base_url()}/loop/stop/LOOP_test"), cert=loop.cert, exception=ValueError) mock_refresh.assert_called_once() loop.details = {"components":{"POLICY":{"componentState":{"stateName":"SENT"}}}} assert loop.details["components"]["POLICY"]["componentState"]["stateName"] == "SENT"
def test_not_submited_policy(mock_send_message, mock_refresh): """Test submit policies to policy engine.""" loop = LoopInstance(template="template", name="test", details=LOOP_DETAILS) mock_refresh.return_value = NOT_SUBMITED_POLICY action = loop.act_on_loop_policy(loop.submit) mock_send_message.assert_called_once_with('PUT', 'submit policy', (f"{loop.base_url()}/loop/submit/LOOP_test"), cert=loop.cert, exception=ValueError) mock_refresh.assert_called_once() loop.details = NOT_SUBMITED_POLICY assert loop.details["components"]["POLICY"]["componentState"]["stateName"] == "SENT"
def test_extract_operational_policy_name(): """Test Loop Instance extract operational policy name.""" loop = LoopInstance(template="template", name="test", details={}) loop.details = { "operationalPolicies": [{ "name": "test", "policyModel": { "policyAcronym": "Drools" } }] } policy_name = loop.extract_operational_policy_name(policy_type="Drools") assert policy_name == 'test'
def test_add_operational_policy_key_parameter_error(mock_send_message_json): """Test adding an op policy - key doesn't exist.""" loop = LoopInstance(template="template", name="test", details={}) loop.details = {} with pytest.raises(ParameterError) as exc: mock_send_message_json.return_value = loop.details loop.add_operational_policy(policy_type="FrequencyLimiter", policy_version="not_correct") mock_send_message_json.assert_called_once_with( 'PUT', 'Create Operational Policy', (f"{loop.base_url()}/loop/addOperationaPolicy/{loop.name}/policyModel/FrequencyLimiter/not_correct" )) assert exc.type is ParameterError
def instantiate_loop(self): """Instantiate the control loop.""" loop = LoopInstance(template=self.template, name=self.loop_name, details={}) details = loop.create() if details: self._logger.info("Loop instance %s successfully created !!", self.loop_name) else: self._logger.error( "An error occured while creating the loop instance") self.add_policies(loop=loop) self.configure_policies(loop=loop) self.deploy(loop=loop) loop.details = loop._update_loop_details() return loop
def test_add_operational_policy(mock_send_message_json): """Test adding an op policy.""" loop = LoopInstance(template="template", name="test", details={}) loop.details = { "name" : "LOOP_test", "operationalPolicies" : None, "microServicePolicies" : [ { "name" : "MICROSERVICE_test" } ] } mock_send_message_json.return_value = LOOP_DETAILS loop.add_operational_policy(policy_type="FrequencyLimiter", policy_version="1.0.0") mock_send_message_json.assert_called_once_with('PUT', 'Create Operational Policy', (f"{loop.base_url()}/loop/addOperationaPolicy/{loop.name}/policyModel/FrequencyLimiter/1.0.0"), cert=loop.cert) assert loop.name == "LOOP_test" assert len(loop.details["operationalPolicies"]) > 0
def test_not_add_operational_policy(mock_send_message_json): """Test adding an op policy.""" loop = LoopInstance(template="template", name="test", details={}) loop.details = { "name" : "LOOP_test", "operationalPolicies" : [], "microServicePolicies" : [ { "name" : "MICROSERVICE_test" } ] } with pytest.raises(ValueError): mock_send_message_json.return_value = loop.details #mistaken policy version loop.add_operational_policy(policy_type="FrequencyLimiter", policy_version="not_correct") mock_send_message_json.assert_called_once_with('PUT', 'Create Operational Policy', (f"{loop.base_url()}/loop/addOperationaPolicy/{loop.name}/policyModel/FrequencyLimiter/not_correct"), cert=loop.cert) assert len(loop.details["operationalPolicies"]) == 0
def test_validate_details(): """Test Loop instance details validation.""" loop = LoopInstance(template="template", name="test", details=LOOP_DETAILS) loop.details = {"test":"test"} valid = loop.validate_details() assert not valid