Xtesting framework has been developed in OPNFV which deals with dockerization of test suites and can thus be integrated in different CI systems. For more about XTesting and how to start with it please check it out here.

Our goal here is to demonstrate a work flow that deploy the OSC RIC platform and afterwards does a health check, which gives a pretty good idea on how it can be applied to other OSC projects. Then on top of the deployed RIC platform the kpimon-go xApp will be onboarded as a setup for further testing. Hopefully this can be used as a CI/CD pipeline in OSC to serve in the RICPLT/RICAPP areas and can also help automated test and integration.

For this workflow to work one needs to prepare 2 instances (physical server or VM) with fresh Ubuntu 20.04. One is to be used as the XTesting control node, and the other one to be the system under test, on which OSC release F RIC platform is to be deployed (including the initial Kubernetes setup, and all the helm charts deployed). Then a XTesting test case on RIC Platform health check will be run from the control node against the SUT prepared.

  1. On the XTesting control node, some dependencies are to be installed which include:
    1. Openssl-server if it doesn’t come with the instance provisioned
    2. Docker
    3. XTesting dependencies (ansible etc.)
    4. All above are incorporated into a shell script called install-dependencies for your convenience
  2. On the SUT node:
    1. Openssl-server
    2. Install authorized key for remote ssh access (especially for root as it needs to copy over the .kube/config file). Otherwise one may have to configure user/password credentials to be used in the workflow.

It's a 4-step process in the workflow:

  1. Deploy a kubernetes cluster via a customized kubeadm container, that takes all necessary configuration parameters (such as IP, username/password, etc.):

ANSIBLE_HOST_IP=155.98.36.9

ANSIBLE_USERNAME=osc_int

ANSIBLE_PASSWORD=osc_int

PROJECT_ROOT=/kubeadm/config

  1. Build a 2nd richelm container to complete the remaining steps for RIC platform deployment:
  2. Run a health check test case against the SUT that's supposed to have the RIC platform successfully deployed. Below a simple robot script for health check:
    ---
    - name: Shell module example
    hosts: 127.0.0.1
    tasks:

    - name: Check system information
    shell:
    "curl -v http://155.98.36.9:32080/appmgr/ric/v1/health/ready 2>&1"
    register: curl_info

    - debug:
    msg: "{{curl_info.stdout_lines}}”
  3. Onboard/install the kpimon-go xApp from the XTesting host using ansible:

To make things easier I also put together a Shell script that combines the above steps so you can just run it in one shot:

git clone "https://gerrit.o-ran-sc.org/r/it/test"

cd test/XTesting/XTesting-demo && sudo ./demo.sh target-ip private-key-file-path OPTIONAL-working-directory

Happy XTesting and hope your test automation can be as easy as above 1-2-3. 

Finally I would like to thank Sridhar Rao, the Linux Foundation TPM to OSC, who offered huge help and support to this demonstration. He's also an expert to XTesting so feel free to contact James Li and Sridhar Raoif you have any question.