def test_equality_really_equals(): """Check two vfs are equals if name is the same.""" svc_1 = Service(name="equal") svc_1.identifier = "1234" svc_2 = Service(name="equal") svc_2.identifier = "1235" assert svc_1 == svc_2
def test_equality_not_equals(): """Check two vfs are not equals if name is not the same.""" svc_1 = Service(name="equal") svc_1.identifier = "1234" svc_2 = Service(name="not_equal") svc_2.identifier = "1234" assert svc_1 != svc_2
def test_version_filter(mock_get_all): """Check version filter""" svc_1 = Service(name="test_version_filter") svc_1.identifier = "1111" svc_1.unique_uuid = "2222" svc_1.unique_identifier = "3333" svc_1.status = const.CERTIFIED svc_1.version = "1.0" svc_2 = Service(name="test_version_filter") svc_2.identifier = "1111" svc_2.unique_uuid = "2222" svc_2.unique_identifier = "3333" svc_2.status = const.DRAFT svc_2.version = "1.1" mock_get_all.return_value = [svc_1, svc_2] svc = Service(name='test_version_filter') assert svc.exists() assert svc.version == "1.1" svc = Service(name='test_version_filter', version='1.0') assert svc.exists() assert svc.version == "1.0" svc = Service(name='test_version_filter', version='-111') assert not svc.exists() assert not svc.version
def test_equality_not_equals_not_same_object(): """Check a vf and something different are not equals.""" svc_1 = Service(name="equal") svc_1.identifier = "1234" svc_2 = SdcResource() svc_2.name = "equal" assert svc_1 != svc_2
def test_a_la_carte_vl_instantiation(): requests.get(f"{ServiceInstantiation.base_url}/reset") requests.get(f"{Customer.base_url}/reset") requests.post(f"{ServiceInstantiation.base_url}/set_aai_mock", json={"AAI_MOCK": settings.AAI_URL}) customer = Customer.create(global_customer_id="test_global_customer_id", subscriber_name="test_subscriber_name", subscriber_type="test_subscriber_type") service = Service("test_service") service.unique_uuid = str(uuid4()) service.identifier = str(uuid4()) service.name = str(uuid4()) customer.subscribe_service("service_type") service_subscription = customer.get_service_subscription_by_service_type( "service_type") cloud_region = CloudRegion.create("test_owner", "test_cloud_region", orchestration_disabled=True, in_maint=False) cloud_region.add_tenant(tenant_id="test_tenant_name", tenant_name="test_tenant_name", tenant_context="test_tenant_context") tenant = cloud_region.get_tenant(tenant_id="test_tenant_name") service_subscription.link_to_cloud_region_and_tenant( cloud_region=cloud_region, tenant=tenant) owning_entity = "test_owning_entity" project = "test_project" # Service instantiation service._distributed = True assert len(list(service_subscription.service_instances)) == 0 service_instantiation_request = ServiceInstantiation.instantiate_ala_carte( service, cloud_region, tenant, customer, owning_entity, project, service_subscription) assert service_instantiation_request.status == ServiceInstantiation.StatusEnum.IN_PROGRESS service_instantiation_request.wait_for_finish() assert service_instantiation_request.status == ServiceInstantiation.StatusEnum.COMPLETED assert len(list(service_subscription.service_instances)) == 1 # Network instantiation service_instance = next(service_subscription.service_instances) assert len(list(service_instance.network_instances)) == 0 owning_entity = "test_owning_entity" project = "test_project" network = MagicMock() line_of_business = "test_line_of_business" platform = "test_platform" with pytest.raises(AttributeError): service_instance.network(network, line_of_business, platform) service_instance.orchestration_status = "Active" with patch.object(ServiceInstance, "sdc_service", return_value=service): network_instantiation_request = service_instance.add_network( network, line_of_business, platform) assert network_instantiation_request.status == VnfInstantiation.StatusEnum.IN_PROGRESS network_instantiation_request.wait_for_finish() assert network_instantiation_request.status == VnfInstantiation.StatusEnum.COMPLETED assert len(list(service_instance.network_instances)) == 1
def test_get_tosca_result(requests_mock): if path.exists('/tmp/tosca_files'): shutil.rmtree('/tmp/tosca_files') with open('tests/data/test.csar', mode='rb') as file: file_content = file.read() requests_mock.get( 'https://sdc.api.be.simpledemo.onap.org:30204/sdc/v1/catalog/services/12/toscaModel', content=file_content) svc = Service() svc.identifier = "12" svc.get_tosca()
def test_load_metadata_bad_json(mock_send): mock_send.return_value = {'yolo': 'in the wood'} svc = Service() svc.identifier = "1" svc.load_metadata() assert svc._distribution_id is None mock_send.assert_called_once_with( 'GET', 'Get Metadata for ONAP-test-Service', 'https://sdc.api.fe.simpledemo.onap.org:30207/sdc1/feProxy/rest/v1/catalog/services/1/distribution', headers=headers_sdc_creator(svc.headers))
def test_get_tosca_no_result(mock_send): if path.exists('/tmp/tosca_files'): shutil.rmtree('/tmp/tosca_files') mock_send.return_value = {} svc = Service() svc.identifier = "12" svc.get_tosca() headers = headers_sdc_creator(svc.headers) headers['Accept'] = 'application/octet-stream' mock_send.assert_called_once_with( 'GET', 'Download Tosca Model for ONAP-test-Service', 'https://sdc.api.be.simpledemo.onap.org:30204/sdc/v1/catalog/services/12/toscaModel', headers=headers) assert not path.exists('/tmp/tosca_files')
def test_tosca_model(mock_send): service = Service(name="test") service.identifier = "toto" service.tosca_model mock_send.assert_called_once_with( "GET", "Download Tosca Model for test", "https://sdc.api.be.simpledemo.onap.org:30204/sdc/v1/catalog/services/toto/toscaModel", exception=mock.ANY, headers={ 'Content-Type': 'application/json', 'Accept': 'application/octet-stream', 'USER_ID': 'cs0008', 'Authorization': 'Basic YWFpOktwOGJKNFNYc3pNMFdYbGhhazNlSGxjc2UyZ0F3ODR2YW9HR21KdlV5MlU=', 'X-ECOMP-InstanceID': 'onapsdk' })
def test_load_metadata_OK(mock_send): mock_send.return_value = { 'distributionStatusOfServiceList': [{ 'distributionID': "11" }, { 'distributionID': "12" }] } svc = Service() svc.identifier = "1" svc.load_metadata() assert svc._distribution_id == "11" mock_send.assert_called_once_with( 'GET', 'Get Metadata for ONAP-test-Service', 'https://sdc.api.fe.simpledemo.onap.org:30207/sdc1/feProxy/rest/v1/catalog/services/1/distribution', headers=headers_sdc_creator(svc.headers))
def test_add_resource_bad_result(mock_send, mock_load): svc = Service() svc.unique_identifier = "45" svc.identifier = "93" svc.status = const.DRAFT mock_send.return_value = {} resource = SdcResource() resource.unique_identifier = "12" resource.created = MagicMock(return_value=True) resource.version = "40" resource.name = "test" assert svc.add_resource(resource) is None mock_send.assert_called_once_with( 'POST', 'Add SdcResource to service', 'https://sdc.api.fe.simpledemo.onap.org:30207/sdc1/feProxy/rest/v1/catalog/services/45/resourceInstance', data= '{\n "name": "test",\n "componentVersion": "40",\n "posY": 100,\n "posX": 200,\n "uniqueId": "12",\n "originType": "SDCRESOURCE",\n "componentUid": "12",\n "icon": "defaulticon"\n}' )
def test_distribution_id_load(mock_load): svc = Service() svc.identifier = "1234" assert svc.distribution_id is None mock_load.assert_called_once()
def test_instantiate_macro_multiple_vnf(mock_service_components, mock_service_vnfs): requests.get(f"{ServiceInstantiation.base_url}/reset") requests.get(f"{Customer.base_url}/reset") requests.post(f"{ServiceInstantiation.base_url}/set_aai_mock", json={"AAI_MOCK": settings.AAI_URL}) customer = Customer.create(global_customer_id="test_global_customer_id", subscriber_name="test_subscriber_name", subscriber_type="test_subscriber_type") service = Service("test_service") service._tosca_template = "n/a" mock_service_vnfs.return_value = [ Vnf(name="test_vnf", node_template_type="vf", model_name="test_vnf_model", model_version_id=str(uuid4()), model_invariant_id=str(uuid4()), model_version="1.0", model_customization_id=str(uuid4()), model_instance_name=str(uuid4()), component=MagicMock(), vf_modules=[ VfModule(name="TestVnfModel..base..module-0", group_type="vf-module", model_name="TestVnfModel..base..module-0", model_version_id=str(uuid4()), model_invariant_uuid=str(uuid4()), model_version="1", model_customization_id=str(uuid4()), properties=None) ]) ] service.unique_uuid = str(uuid4()) service.identifier = str(uuid4()) service.name = str(uuid4()) customer.subscribe_service("service_type") service_subscription = customer.get_service_subscription_by_service_type( "service_type") cloud_region = CloudRegion.create("test_owner", "test_cloud_region", orchestration_disabled=True, in_maint=False) cloud_region.add_tenant(tenant_id="test_tenant_name", tenant_name="test_tenant_name", tenant_context="test_tenant_context") tenant = cloud_region.get_tenant(tenant_id="test_tenant_name") service_subscription.link_to_cloud_region_and_tenant( cloud_region=cloud_region, tenant=tenant) owning_entity = "test_owning_entity" project = "test_project" line_of_business = "test_line_of_business" platform = "test_platform" so_service = SoService.load({ "subscription_service_type": "service_type", "vnfs": [{ "model_name": "test_vnf_model", "instance_name": "vnf0", "parameters": { "param1": "value1" }, "vf_modules": [{ "instance_name": "vnf0_vfm0", "model_name": "base", "parameters": { "vfm_param1": "vfm_value1" } }] }, { "model_name": "test_vnf_model", "instance_name": "vnf1", "parameters": { "param2": "value2" }, "vf_modules": [{ "instance_name": "vnf1_vfm0", "model_name": "base", "parameters": { "vfm_param2": "vfm_value2" } }] }] }) # Service instantiation service._distributed = True assert len(list(service_subscription.service_instances)) == 0 service_instantiation_request = ServiceInstantiation.instantiate_macro( sdc_service=service, customer=customer, owning_entity=owning_entity, project=project, line_of_business=line_of_business, platform=platform, cloud_region=cloud_region, tenant=tenant, so_service=so_service) assert service_instantiation_request.status == ServiceInstantiation.StatusEnum.IN_PROGRESS time.sleep( 2) # After 1 second mocked server changed request status to complete assert service_instantiation_request.status == ServiceInstantiation.StatusEnum.COMPLETED assert len(list(service_subscription.service_instances)) == 1 service_instance = next(service_subscription.service_instances) # Cleanup with patch.object(ServiceInstance, "sdc_service", return_value=service) as service_mock: service_deletion_request = service_instance.delete() assert service_deletion_request.status == ServiceDeletionRequest.StatusEnum.IN_PROGRESS time.sleep( 2) # After 1 second mocked server changed request status to complete assert service_deletion_request.status == ServiceDeletionRequest.StatusEnum.COMPLETED assert len(list(service_subscription.service_instances)) == 0
def test_distribution_id_no_load(mock_load): svc = Service() svc.identifier = "1234" svc._distribution_id = "4567" assert svc.distribution_id == "4567" mock_load.assert_not_called()
def test_a_la_carte_instantiation(): requests.get(f"{ServiceInstantiation.base_url}/reset") requests.get(f"{Customer.base_url}/reset") requests.post(f"{ServiceInstantiation.base_url}/set_aai_mock", json={"AAI_MOCK": settings.AAI_URL}) customer = Customer.create(global_customer_id="test_global_customer_id", subscriber_name="test_subscriber_name", subscriber_type="test_subscriber_type") service = Service("test_service") service.unique_uuid = str(uuid4()) service.identifier = str(uuid4()) service.name = str(uuid4()) customer.subscribe_service("service_type") service_subscription = customer.get_service_subscription_by_service_type( "service_type") cloud_region = CloudRegion.create("test_owner", "test_cloud_region", orchestration_disabled=True, in_maint=False) cloud_region.add_tenant(tenant_id="test_tenant_name", tenant_name="test_tenant_name", tenant_context="test_tenant_context") tenant = cloud_region.get_tenant(tenant_id="test_tenant_name") service_subscription.link_to_cloud_region_and_tenant( cloud_region=cloud_region, tenant=tenant) owning_entity = "test_owning_entity" project = "test_project" # Service instantiation service._distributed = True assert len(list(service_subscription.service_instances)) == 0 service_instantiation_request = ServiceInstantiation.instantiate_ala_carte( service, cloud_region, tenant, customer, owning_entity, project, service_subscription) assert service_instantiation_request.status == ServiceInstantiation.StatusEnum.IN_PROGRESS time.sleep( 2) # After 1 second mocked server changed request status to complete assert service_instantiation_request.status == ServiceInstantiation.StatusEnum.COMPLETED assert len(list(service_subscription.service_instances)) == 1 # Vnf instantiation service_instance = next(service_subscription.service_instances) assert len(list(service_instance.vnf_instances)) == 0 owning_entity = "test_owning_entity" project = "test_project" vnf = MagicMock() line_of_business = "test_line_of_business" platform = "test_platform" with pytest.raises(StatusError): service_instance.add_vnf(vnf, line_of_business, platform) service_instance.orchestration_status = "Active" service_instance._sdc_service = service with patch.object(ServiceInstance, "sdc_service", return_value=service): vnf_instantiation_request = service_instance.add_vnf( vnf, line_of_business, platform) assert vnf_instantiation_request.status == VnfInstantiation.StatusEnum.IN_PROGRESS time.sleep( 2) # After 1 second mocked server changed request status to complete assert vnf_instantiation_request.status == VnfInstantiation.StatusEnum.COMPLETED assert len(list(service_instance.vnf_instances)) == 1 # VfModule instantiation vnf_instance = next(service_instance.vnf_instances) assert len(list(vnf_instance.vf_modules)) == 0 vnf.model_version_id = vnf_instance.model_version_id vf_module = MagicMock() with patch.object(ServiceInstance, "sdc_service", return_value=service) as service_mock: service_mock.vnfs = [vnf] vf_module_instantiation_request = vnf_instance.add_vf_module(vf_module) assert vf_module_instantiation_request.status == VfModuleInstantiation.StatusEnum.IN_PROGRESS time.sleep( 2) # After 1 second mocked server changed request status to complete assert vf_module_instantiation_request.status == VfModuleInstantiation.StatusEnum.COMPLETED assert len(list(vnf_instance.vf_modules)) == 1 # Cleanup vf_module_instance = next(vnf_instance.vf_modules) vf_module_deletion_request = vf_module_instance.delete() assert vf_module_deletion_request.status == VfModuleDeletionRequest.StatusEnum.IN_PROGRESS time.sleep( 2) # After 1 second mocked server changed request status to complete assert vf_module_deletion_request.status == VfModuleDeletionRequest.StatusEnum.COMPLETED assert len(list(vnf_instance.vf_modules)) == 0 vnf_deletion_request = vnf_instance.delete() assert vnf_deletion_request.status == VnfDeletionRequest.StatusEnum.IN_PROGRESS time.sleep( 2) # After 1 second mocked server changed request status to complete assert vnf_deletion_request.status == VnfDeletionRequest.StatusEnum.COMPLETED assert len(list(service_instance.vnf_instances)) == 0 with patch.object(ServiceInstance, "sdc_service", return_value=service) as service_mock: service_deletion_request = service_instance.delete() assert service_deletion_request.status == ServiceDeletionRequest.StatusEnum.IN_PROGRESS time.sleep( 2) # After 1 second mocked server changed request status to complete assert service_deletion_request.status == ServiceDeletionRequest.StatusEnum.COMPLETED assert len(list(service_subscription.service_instances)) == 0
def test_distribution_id_setter(): svc = Service() svc.identifier = "1234" svc.distribution_id = "4567" assert svc._distribution_id == "4567"
def test_distributed_load(mock_check_distributed): svc = Service() svc.identifier = "1234" assert not svc.distributed mock_check_distributed.assert_called_once()
def test_distributed_no_load(mock_check_distributed): svc = Service() svc.identifier = "1234" svc._distributed = True assert svc.distributed mock_check_distributed.assert_not_called()