OpenOP E2E results

PASSED — selected transaction.

Test source: 348a2d7124645431ff8bc546c8eb5339f4f0f6e7. A feature pass covers only its stated scope. Missing tests or failed cleanup prevent qualification. Release approval remains separate.

Each lab creates an isolated k3d cluster, deploys OpenOP through the existing Ansible playbooks, calls public OEG APIs, independently observes Kubernetes/provider state and removes its owned resources. The network variant adds real EURECOM/CoreSim services.

Verified features and limits

FeatureObservedRunScope and limits
Authentication and API authorizationpassedcontainer · ChecksOne operator; issuer, missing/invalid token and App Provider role checks.
Device Traffic Influence uses the deployed application endpointpassednetwork · ChecksOne device and observed application host IPv4; provider subscription lifecycle. No port/protocol filters, actual packet steering or automatic notification claim.
OEG returns the observed application endpointpassedcontainer · ChecksOne observed external HTTP NodePort; no Ingress, LoadBalancer or multi-interface claim.
Invalid and conflicting public requests are rejectedpassedcontainer · ChecksMissing name (400), unsupported QCOW2 package (501), duplicate onboarding (409), unknown app (400) and instance (404); owned catalogue cleanup verified.
federationnot_runcontainer · ChecksFederation requires multiple operator platforms and agreed partners.
OEG and FM HTTP healthpassedcontainer · ChecksPublic OEG/FM HTTP health; other API behavior has separate checks.
HELM application lifecyclepassedhelm · ChecksOne HTTP-served Helm archive, NodePort and termination; no CAMARA compute-to-values mapping or arbitrary chart support claim.
OEG returns the deployed application identitypassedcontainer · ChecksExpected app/zone identity and ready state for the selected instance.
Known-device location and missing-device rejectionpassednetwork · ChecksOne simulated IPv4 device, geographic area/time, missing-device rejection; no real location accuracy or handset compatibility claim.
multi-clusternot_runcontainer · ChecksControl-path isolation needs separate two-cluster execution evidence.
Cloud application catalogue onboardingpassedcontainer · ChecksSupported application manifest read/list/delete; no complete optional-field round trip.
OEG QoD profiles, provider readback, refusals and cleanuppassednetwork · ChecksEURECOM/CoreSim: four configured profiles, exact IPv4 flow and notification URL, SDK/backend refusal and public/provider cleanup. No real QoS enforcement or callback delivery claim.
Returned endpoint reaches the deployed applicationpassedcontainer · ChecksController-to-application HTTP with Pod identity; no WAN or data-plane policy claim.
Requested CPU and memory applied to Deployment and Podpassedcontainer · ChecksContainer CPU and decimal-MB memory requests; no limits, storage or accelerators.
OEG termination removes the owned workloadpassedcontainer · ChecksPublic instance and owned Deployment/Pod/Service removal.
updatesnot_runcontainer · ChecksScaling, updates and recovery require their own lifecycle assertions.
OEG request creates a ready Kubernetes workloadpassedcontainer · ChecksOne application, one zone and one ready Deployment/Pod/NodePort Service.
Configured workload zones exposed by OEGpassedcontainer · ChecksConfigured lab workload zones and public identities; no dynamic backend health claim.

container: setup, checks and cleanup

  1. Validate lab inputs and ownership: passed
  2. Kubernetes cluster ready: passed
  3. Candidate images loaded: passed
  4. OpenOP deployed and ready: passed
  5. Running component images verified: passed
  6. OEG and FM HTTP health: passed
  7. Authentication and API authorization: passed
  8. Cloud application catalogue onboarding: passed
  9. Invalid and conflicting public requests are rejected: passed
  10. Configured workload zones exposed by OEG: passed
  11. OEG request creates a ready Kubernetes workload: passed
  12. Requested CPU and memory applied to Deployment and Pod: passed
  13. OEG returns the deployed application identity: passed
  14. OEG returns the observed application endpoint: passed
  15. Returned endpoint reaches the deployed application: passed
  16. OEG termination removes the owned workload: passed
  17. Remove owned cluster and imported images: passed
21 actual acceptance cases
  1. PASSED test_oeg_and_fm_answer

    Call public OEG and FM health endpoints and require HTTP 200 from both deployed services.
    Explanation and flow diagram

  2. PASSED test_keycloak_issuer_is_the_public_url[oop]

    Discover the configured realm through its public URL and verify the advertised issuer matches it.
    Explanation and flow diagram

  3. PASSED test_keycloak_issuer_is_the_public_url[federation]

    Discover the configured realm through its public URL and verify the advertised issuer matches it.
    Explanation and flow diagram

  4. PASSED test_oeg_refuses_calls_without_a_valid_token

    Require HTTP 401 for missing or invalid bearer tokens on application and federation routes.
    Explanation and flow diagram

  5. PASSED test_oeg_keeps_app_apis_to_app_providers

    Reject the operator role on application routes and let an App Provider reach the application lookup.
    Explanation and flow diagram

  6. PASSED test_oeg_keeps_federation_to_operators

    Require HTTP 403 when an App Provider calls an operator-only federation route.
    Explanation and flow diagram

  7. PASSED test_fm_internal_api_is_not_public

    FM serves /internal/* only on its cluster-internal port, never on the EWBI one.
    Explanation and flow diagram

  8. PASSED test_app_provider_registers_reads_and_deletes_an_app

    Onboard an application through OEG, read its stored manifest and list entry, then verify catalogue removal.
    Explanation and flow diagram

  9. PASSED test_app_provider_lists_its_apps

    Verify the application registered by this test client appears in its catalogue list.
    Explanation and flow diagram

  10. PASSED test_invalid_application_is_not_registered[missing-name]

    Reject a missing application name or unsupported package and prove no catalogue record was created.
    Explanation and flow diagram

  11. PASSED test_invalid_application_is_not_registered[unsupported-package]

    Reject a missing application name or unsupported package and prove no catalogue record was created.
    Explanation and flow diagram

  12. PASSED test_duplicate_onboarding_preserves_the_registered_application

    Require HTTP 409 for duplicate onboarding and prove the original application was preserved.
    Explanation and flow diagram

  13. PASSED test_unknown_application_cannot_be_instantiated

    Reject instantiation of an unknown application and prove no instance was created.
    Explanation and flow diagram

  14. PASSED test_unknown_instance_cannot_be_terminated

    Require HTTP 404 for deletion of a nonexistent application instance.
    Explanation and flow diagram

  15. PASSED test_cloud_zones_match_configured_workload_targets

    Compare public zone names and unique identities with the workload zones configured in this lab.
    Explanation and flow diagram

  16. PASSED test_progressive_oeg_request_creates_a_ready_workload

    Instantiate through OEG and independently require the owned Kubernetes Deployment, ready Pod and NodePort Service.
    Explanation and flow diagram

  17. PASSED test_progressive_workload_applies_requested_resources

    Compare requested CPU and decimal-MB memory with the actual Kubernetes Deployment and Pod resource requests.
    Explanation and flow diagram

  18. PASSED test_progressive_oeg_returns_the_application_instance

    Poll the public instance until ready and verify its application and zone identities.
    Explanation and flow diagram

  19. PASSED test_progressive_oeg_returns_the_observed_endpoint

    Compare the public application endpoint with the actual owned Kubernetes Service and cluster node.
    Explanation and flow diagram

  20. PASSED test_progressive_endpoint_reaches_the_deployed_application

    Call the returned HTTP endpoint and verify the response identifies the deployed application Pod.
    Explanation and flow diagram

  21. PASSED test_progressive_oeg_termination_removes_the_workload

    Terminate through OEG and verify the public instance and owned Deployment, Pod and Service disappear.
    Explanation and flow diagram

helm: setup, checks and cleanup

  1. Validate lab inputs and ownership: passed
  2. Kubernetes cluster ready: passed
  3. Candidate images loaded: passed
  4. OpenOP deployed and ready: passed
  5. Running component images verified: passed
  6. OEG and FM HTTP health: passed
  7. Authentication and API authorization: passed
  8. Cloud application catalogue onboarding: passed
  9. Invalid and conflicting public requests are rejected: passed
  10. Configured workload zones exposed by OEG: passed
  11. OEG request creates a ready Kubernetes workload: passed
  12. OEG returns the deployed application identity: passed
  13. OEG returns the observed application endpoint: passed
  14. Returned endpoint reaches the deployed application: passed
  15. OEG termination removes the owned workload: passed
  16. Remove owned cluster and imported images: passed
20 actual acceptance cases
  1. PASSED test_oeg_and_fm_answer

    Call public OEG and FM health endpoints and require HTTP 200 from both deployed services.
    Explanation and flow diagram

  2. PASSED test_keycloak_issuer_is_the_public_url[oop]

    Discover the configured realm through its public URL and verify the advertised issuer matches it.
    Explanation and flow diagram

  3. PASSED test_keycloak_issuer_is_the_public_url[federation]

    Discover the configured realm through its public URL and verify the advertised issuer matches it.
    Explanation and flow diagram

  4. PASSED test_oeg_refuses_calls_without_a_valid_token

    Require HTTP 401 for missing or invalid bearer tokens on application and federation routes.
    Explanation and flow diagram

  5. PASSED test_oeg_keeps_app_apis_to_app_providers

    Reject the operator role on application routes and let an App Provider reach the application lookup.
    Explanation and flow diagram

  6. PASSED test_oeg_keeps_federation_to_operators

    Require HTTP 403 when an App Provider calls an operator-only federation route.
    Explanation and flow diagram

  7. PASSED test_fm_internal_api_is_not_public

    FM serves /internal/* only on its cluster-internal port, never on the EWBI one.
    Explanation and flow diagram

  8. PASSED test_app_provider_registers_reads_and_deletes_an_app

    Onboard an application through OEG, read its stored manifest and list entry, then verify catalogue removal.
    Explanation and flow diagram

  9. PASSED test_app_provider_lists_its_apps

    Verify the application registered by this test client appears in its catalogue list.
    Explanation and flow diagram

  10. PASSED test_invalid_application_is_not_registered[missing-name]

    Reject a missing application name or unsupported package and prove no catalogue record was created.
    Explanation and flow diagram

  11. PASSED test_invalid_application_is_not_registered[unsupported-package]

    Reject a missing application name or unsupported package and prove no catalogue record was created.
    Explanation and flow diagram

  12. PASSED test_duplicate_onboarding_preserves_the_registered_application

    Require HTTP 409 for duplicate onboarding and prove the original application was preserved.
    Explanation and flow diagram

  13. PASSED test_unknown_application_cannot_be_instantiated

    Reject instantiation of an unknown application and prove no instance was created.
    Explanation and flow diagram

  14. PASSED test_unknown_instance_cannot_be_terminated

    Require HTTP 404 for deletion of a nonexistent application instance.
    Explanation and flow diagram

  15. PASSED test_cloud_zones_match_configured_workload_targets

    Compare public zone names and unique identities with the workload zones configured in this lab.
    Explanation and flow diagram

  16. PASSED test_progressive_oeg_request_creates_a_ready_workload

    Instantiate through OEG and independently require the owned Kubernetes Deployment, ready Pod and NodePort Service.
    Explanation and flow diagram

  17. PASSED test_progressive_oeg_returns_the_application_instance

    Poll the public instance until ready and verify its application and zone identities.
    Explanation and flow diagram

  18. PASSED test_progressive_oeg_returns_the_observed_endpoint

    Compare the public application endpoint with the actual owned Kubernetes Service and cluster node.
    Explanation and flow diagram

  19. PASSED test_progressive_endpoint_reaches_the_deployed_application

    Call the returned HTTP endpoint and verify the response identifies the deployed application Pod.
    Explanation and flow diagram

  20. PASSED test_progressive_oeg_termination_removes_the_workload

    Terminate through OEG and verify the public instance and owned Deployment, Pod and Service disappear.
    Explanation and flow diagram

network: setup, checks and cleanup

  1. Validate lab inputs and ownership: passed
  2. Kubernetes cluster ready: passed
  3. Candidate images loaded: passed
  4. Start EURECOM NEF/CoreSim and prepare the simulated device: passed
  5. OpenOP deployed and ready: passed
  6. Running component images verified: passed
  7. OEG and FM HTTP health: passed
  8. Authentication and API authorization: passed
  9. Cloud application catalogue onboarding: passed
  10. Invalid and conflicting public requests are rejected: passed
  11. Configured workload zones exposed by OEG: passed
  12. OEG request creates a ready Kubernetes workload: passed
  13. Requested CPU and memory applied to Deployment and Pod: passed
  14. OEG returns the deployed application identity: passed
  15. OEG returns the observed application endpoint: passed
  16. Returned endpoint reaches the deployed application: passed
  17. OEG QoD profiles, provider readback, refusals and cleanup: passed
  18. Known-device location and missing-device rejection: passed
  19. Device Traffic Influence uses the deployed application endpoint: passed
  20. OEG termination removes the owned workload: passed
  21. Remove owned cluster and imported images: passed
30 actual acceptance cases
  1. PASSED test_oeg_and_fm_answer

    Call public OEG and FM health endpoints and require HTTP 200 from both deployed services.
    Explanation and flow diagram

  2. PASSED test_keycloak_issuer_is_the_public_url[oop]

    Discover the configured realm through its public URL and verify the advertised issuer matches it.
    Explanation and flow diagram

  3. PASSED test_keycloak_issuer_is_the_public_url[federation]

    Discover the configured realm through its public URL and verify the advertised issuer matches it.
    Explanation and flow diagram

  4. PASSED test_oeg_refuses_calls_without_a_valid_token

    Require HTTP 401 for missing or invalid bearer tokens on application and federation routes.
    Explanation and flow diagram

  5. PASSED test_oeg_keeps_app_apis_to_app_providers

    Reject the operator role on application routes and let an App Provider reach the application lookup.
    Explanation and flow diagram

  6. PASSED test_oeg_keeps_federation_to_operators

    Require HTTP 403 when an App Provider calls an operator-only federation route.
    Explanation and flow diagram

  7. PASSED test_fm_internal_api_is_not_public

    FM serves /internal/* only on its cluster-internal port, never on the EWBI one.
    Explanation and flow diagram

  8. PASSED test_app_provider_registers_reads_and_deletes_an_app

    Onboard an application through OEG, read its stored manifest and list entry, then verify catalogue removal.
    Explanation and flow diagram

  9. PASSED test_app_provider_lists_its_apps

    Verify the application registered by this test client appears in its catalogue list.
    Explanation and flow diagram

  10. PASSED test_invalid_application_is_not_registered[missing-name]

    Reject a missing application name or unsupported package and prove no catalogue record was created.
    Explanation and flow diagram

  11. PASSED test_invalid_application_is_not_registered[unsupported-package]

    Reject a missing application name or unsupported package and prove no catalogue record was created.
    Explanation and flow diagram

  12. PASSED test_duplicate_onboarding_preserves_the_registered_application

    Require HTTP 409 for duplicate onboarding and prove the original application was preserved.
    Explanation and flow diagram

  13. PASSED test_unknown_application_cannot_be_instantiated

    Reject instantiation of an unknown application and prove no instance was created.
    Explanation and flow diagram

  14. PASSED test_unknown_instance_cannot_be_terminated

    Require HTTP 404 for deletion of a nonexistent application instance.
    Explanation and flow diagram

  15. PASSED test_cloud_zones_match_configured_workload_targets

    Compare public zone names and unique identities with the workload zones configured in this lab.
    Explanation and flow diagram

  16. PASSED test_progressive_oeg_request_creates_a_ready_workload

    Instantiate through OEG and independently require the owned Kubernetes Deployment, ready Pod and NodePort Service.
    Explanation and flow diagram

  17. PASSED test_progressive_workload_applies_requested_resources

    Compare requested CPU and decimal-MB memory with the actual Kubernetes Deployment and Pod resource requests.
    Explanation and flow diagram

  18. PASSED test_progressive_oeg_returns_the_application_instance

    Poll the public instance until ready and verify its application and zone identities.
    Explanation and flow diagram

  19. PASSED test_progressive_oeg_returns_the_observed_endpoint

    Compare the public application endpoint with the actual owned Kubernetes Service and cluster node.
    Explanation and flow diagram

  20. PASSED test_progressive_endpoint_reaches_the_deployed_application

    Call the returned HTTP endpoint and verify the response identifies the deployed application Pod.
    Explanation and flow diagram

  21. PASSED test_qod_profile_lifecycle[qos-e]

    Create and read QoD through OEG, inspect the real NEF resource and flow, then verify public and provider deletion.
    Explanation and flow diagram

  22. PASSED test_qod_profile_lifecycle[qos2]

    Create and read QoD through OEG, inspect the real NEF resource and flow, then verify public and provider deletion.
    Explanation and flow diagram

  23. PASSED test_qod_profile_lifecycle[qos3]

    Create and read QoD through OEG, inspect the real NEF resource and flow, then verify public and provider deletion.
    Explanation and flow diagram

  24. PASSED test_qod_profile_lifecycle[qos4]

    Create and read QoD through OEG, inspect the real NEF resource and flow, then verify public and provider deletion.
    Explanation and flow diagram

  25. PASSED test_qod_unsupported_profile_is_rejected

    Request a disallowed QoD profile, wait for UNAVAILABLE and verify no provider subscription was created.
    Explanation and flow diagram

  26. PASSED test_qod_backend_refusal_retains_diagnostics

    Request a profile refused by the NEF, wait for UNAVAILABLE and check safe HTTP 400 diagnostics and cleanup.
    Explanation and flow diagram

  27. PASSED test_known_device_returns_geographic_location

    Retrieve the simulated device location through OEG and verify geographic coordinates and freshness.
    Explanation and flow diagram

  28. PASSED test_location_without_device_is_rejected

    Require the public missing-identifier error when location retrieval has no device.
    Explanation and flow diagram

  29. PASSED test_device_ti_uses_the_deployed_application_endpoint

    Activate device TI through OEG, verify real device/application IPs and notification URL in the NEF, then verify deletion.
    Explanation and flow diagram

  30. PASSED test_progressive_oeg_termination_removes_the_workload

    Terminate through OEG and verify the public instance and owned Deployment, Pod and Service disappear.
    Explanation and flow diagram

Qualification limitations

Unselected features remain unverified. Provider API compatibility does not prove radio QoS, traffic steering or notification delivery.