Development Integration test

Overview

For testing SDN-R with its basic use cases an automated test setup should be used. 

Beside "SDN-R Development integratoin test" there is the "SDN-R Solution integration test"

Related issue: SDNC-891: Integration of SDN-R, DMaaP, VES, AAFClosed

Requirements

  • Simple, run on single ubuntu server 

  • Use Simulators instead of devices

  • Use as far as possible real ONAP server components, if not possible test tools, like VES-test-collector

  • Is compatible with ONAP integration tests setup

Test setup

Name/IP/Port to access from jenkins/robotframework

Host Server Port

Component

Name (docker,dns)

Host Server Port

Component

Name (docker,dns)

8181, 8101

SDN-R Web

itsdnr

9200

Elasticsearch 6.8.5 ←Wrong version

itsdnrdb

8300

NTSim ORAN Management

NTS_Manager

50000 .. 50009

10 NTSim ORAN devices

generated names

8323

Sim 12600 is "2230"

netconfserversimulator

8080



vescollector

2181



zookeeper

9092



kafka

3904-3905



onap-dmaap

Environment

Location

Infrastructure Basic information

  • Server "Test VM": sdnr-frankfurt-int 10.20.5.5 provides docker based test environment

  • Static environment for otto

    • oran NTS_Manager 8300 baseport 50000 dir 3gppsim

    • gran NTS_Manager_3GPP 9300 baseport 60000 dir oransim

  • Static environment for frankfurt development build robot

    • oran Robot_NTS_Manager 8200 baseport 55000 dir robot-nts-manager 

  • Integration test environment

    • Jenkins entry: INT_SDNC_Frankfurt

    • Port ranges 8310 .. 8499, 40000 .. 49999

    • ntssim oran 8310, 40000 .. 40019

  • Docker internal static IP assignment in "integration" network (172.40.0.0/16) with names for /etc/hosts of docker host.

    • 172.40.0.20 sdnrinit

    • 172.40.0.21 sdnr

    • 172.40.0.22-24 sdnr-0, sdnr-1, sdnr-2

    • 172.40.0.30 sdnrdb

    • 172.40.0.40 Netconfserversimulator

    • 172.40.0.60 Zookeeper

    • 172.40.0.70 Kafka

    • 172.40.0.80 DMaaP

    • 172.40.0.90 VESCollector

  • NTSim/ORan is using its own network. Communication takes place over the host IP and the mapped ports.

    • 172.17.02 container with 10 ORan devices

  • Access to services from outsite are running over the host IP. See table.

Network setup

Development (old environment)

  • docker for networking, run containers

  • docker-compose starting a structure

  • bash initialization

  • manual execution of development tests

Test cases

Executed by Jenkins (http://10.20.6.10:30080/view/INT_SDNC_FRANKFURT/) job: INT_SDNC_Frankfurt

Test case "Mount devices" (basic) >available<

  • Startup

    • Mount NTSim manager

    • Create and mount two NTSim/"oran" devices

  • Test steps

    • Verify that mount of the two devices was successfully done

Test case "Mount and get alarms for 50 devices" (load)

  • Startup

    • Mount 10 devices at a time

    • Mount with delay next 10 devices till we have the 50

  • Test seps

    • wait till startup is done

    • count the current alarms

    • Test Ok if current alarms count in a expected range.

Test case "Inventory" (functional)

  • Startup

    • Create docker network

      • a static network setup with static IPs for the containers

      • add name to hosts and use this names

    • start docker - Simulator (e.g. Sim12600 with equipment)

    • start docker - DB

    • start docker - SDNC

  • Test steps

    • mount sim12600

    • Read over the RESTCONF Interface via data-provider the equipment

    • Compare if it is the expected data

Network Topology Simulator

Instantiating NetConf simulators

  • New NetConf simulators can be instantiated using the NTS Manager as follows - 

    • Create a mountpoint in SDNR to mount the NTS Manager with the following parameters - 

      • Name - "NTS_Manager" (No double quotes. Any name is OK, see below)

      • IP Address - NTS Manager Docker container IP or Host IP of the Docker container

      • Port - NTS Manager Docker container port or the port mapped to the Host

      • Username - netconf

      • Password - netconf

    • Next, Use any REST Client to send PUT requests

    • Set the "content-type" to "Application/json"

    • Copy the following json into the body of the REST request - 

{
       "simulator-config": {
                  "mounted-devices": 0,
                  "notification-config": {
                         "fault-notification-delay-period": 0,
                         "is-netconf-available": true,
                         "is-ves-available": true,
                         "ves-heartbeat-period": 0
                   },
                  "simulated-devices": 0, # Toggle this value between 0 and any number greater than 0 to create and remove docker containers that send pnfRegistration VES messages to a VES Collector whose IP is                                                                           # configured using the "ves-endpoint-ip" field below
                  "ves-endpoint-details": {
                          "ves-endpoint-port": 8080,
                          "ves-registration": true,
                          "ves-endpoint-auth-method": "no-auth",
                          "ves-endpoint-ip": "10.20.5.5"
                  },
                 "controller-details": {
                          "controller-ip": "172.40.0.21",
                          "controller-port": 8181,
                          "controller-username": "admin",
                          "controller-password": "admin"
                 }
       }
}