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_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 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_add_operational_policy_condition_parameter_error( mock_send_message_json): """Test adding an op policy - response cintains more policies.""" key = "operationalPolicies" response_policies = ["one"] # N policies current_policies = ["one", "two"] # N+1 policies details = {key: current_policies} response = {key: response_policies} loop = LoopInstance(template="template", name="test", details=details) assert len(response_policies) < len(current_policies) # raising condition with pytest.raises(ParameterError) as exc: mock_send_message_json.return_value = response loop.add_operational_policy(policy_type="FrequencyLimiter", policy_version="not_correct") assert exc.type is ParameterError
def add_policies(self, loop: LoopInstance) -> None: """add necessary wanted operational policies.""" for policy in self.operational_policies: self._logger.info("******** ADD OPERATIONAL POLICY %s *******", policy["name"]) added = loop.add_operational_policy( policy_type=policy["policy_type"], policy_version=policy["policy_version"]) if not added: self._logger.error( "an error occured while adding an operational policy") self._logger.info("ADD OPERATION SUCCESSFULY DONE")