def test_Loop_customization(): """Integration tests for Loop Instance.""" requests.get("{}/reset".format(Clamp._base_url)) Clamp(cert=('LICENSE', '')) svc = Service(name="service01") loop_template = Clamp.check_loop_template(service=svc) response = requests.post("{}/reset".format(Clamp._base_url)) response.raise_for_status() loop = LoopInstance(template=loop_template, name="instance01", details={}) loop.create() loop.update_microservice_policy() #add op policy FrequencyLimiter that already exists in clamp loop.add_operational_policy( policy_type="onap.policies.controlloop.guard.common.FrequencyLimiter", policy_version="1.0.0") #only frequency configuration is available in mock clamp loop.add_op_policy_config(loop.add_frequency_limiter, limit=1) submit = loop.act_on_loop_policy(loop.submit) assert submit stop = loop.act_on_loop_policy(loop.stop) assert stop restart = loop.act_on_loop_policy(loop.restart) assert restart deploy = loop.deploy_microservice_to_dcae() assert deploy loop.undeploy_microservice_from_dcae() new_details = loop._update_loop_details() assert new_details["components"]["DCAE"]["componentState"][ "stateName"] == "MICROSERVICE_UNINSTALLED_SUCCESSFULLY"
def test_add_frequency_policy_config(mock_send_message, mock_extract): """Test Loop Instance add op policy configuration.""" loop = LoopInstance(template="template", name="test", details=LOOP_DETAILS) mock_send_message.return_value = True loop.add_op_policy_config(loop.add_frequency_limiter) mock_send_message.assert_called_once() method, description, url = mock_send_message.call_args[0] assert method == "POST" assert description == "ADD operational policy config" assert url == (f"{loop.base_url()}/loop/updateOperationalPolicies/{loop.name}")
def test_add_two_policies_config(mock_freq, mock_min, mock_send_message): """Test Loop Instance add op policy configuration.""" loop = LoopInstance(template="template", name="test", details=LOOP_DETAILS) mock_min.return_value = '[{"test1":"test1"}]' mock_freq.return_value = '[{"test2":"test2"}]' loop.add_op_policy_config(loop.add_minmax_config) mock_min.assert_called_once() mock_send_message.assert_called_once() loop.add_op_policy_config(loop.add_frequency_limiter) mock_freq.assert_called_once() assert loop.operational_policies == '[{"test1":"test1"},{"test2":"test2"}]'
def test_add_op_policy_config_error(mock_send_message, mock_freq): """Test Loop Instance add op policy configuration.""" loop = LoopInstance(template="template", name="test", details=LOOP_DETAILS) mock_send_message.return_value = False #if u put a non cong function with pytest.raises(ValueError): loop.add_op_policy_config(loop.add_frequency_limiter) mock_send_message.assert_called_once() method, description, url = mock_send_message.call_args[0] assert method == "POST" assert description == "ADD operational policy config" assert url == (f"{loop.base_url()}/loop/updateOperationalPolicies/{loop.name}")
def configure_policies(self, loop: LoopInstance) -> None: """Configure all policies.""" self._logger.info("******** UPDATE MICROSERVICE POLICY *******") loop._update_loop_details() loop.update_microservice_policy() self._logger.info( "******** UPDATE OPERATIONAL POLICIES CONFIG *******") for policy in self.operational_policies: #loop.add_op_policy_config(loop.LoopInstance.__dict__[policy["config_function"]]) #possible configurations for the moment if policy["name"] == "MinMax": loop.add_op_policy_config(loop.add_minmax_config) if policy["name"] == "Drools": loop.add_op_policy_config(loop.add_drools_conf) if policy["name"] == "FrequencyLimiter": loop.add_op_policy_config(loop.add_frequency_limiter) self._logger.info("Policies are well configured")