From ca5f6106bc2a07a960cfa607ad1c35a8d93c69ce Mon Sep 17 00:00:00 2001 From: Morgan Richomme Date: Tue, 26 Jan 2016 15:03:44 +0100 Subject: [PATCH] Patch ODL scenario to support joid (different keystone and neutron API IP) JIRA: FUNCTEST-124 Change-Id: I84834fcb78e652f3b39696f0e17bf54cb5804559 Signed-off-by: Morgan Richomme (cherry picked from commit 1a40722cd446af5416029dc0f3b371a835fa444c) --- docker/run_tests.sh | 9 +++- .../CI/custom_tests/neutron/010__networks.robot | 56 ++++++++++++++++++++++ .../ODL/CI/custom_tests/neutron/020__subnets.robot | 56 ++++++++++++++++++++++ .../ODL/CI/custom_tests/neutron/030__ports.robot | 56 ++++++++++++++++++++++ .../CI/custom_tests/neutron/040__delete_ports.txt | 2 +- .../custom_tests/neutron/050__delete_subnets.txt | 2 +- .../custom_tests/neutron/060__delete_networks.txt | 2 +- testcases/Controllers/ODL/CI/start_tests.sh | 3 +- 8 files changed, 180 insertions(+), 6 deletions(-) create mode 100644 testcases/Controllers/ODL/CI/custom_tests/neutron/010__networks.robot create mode 100644 testcases/Controllers/ODL/CI/custom_tests/neutron/020__subnets.robot create mode 100644 testcases/Controllers/ODL/CI/custom_tests/neutron/030__ports.robot diff --git a/docker/run_tests.sh b/docker/run_tests.sh index bf68612f9..9e2021669 100755 --- a/docker/run_tests.sh +++ b/docker/run_tests.sh @@ -51,7 +51,9 @@ function clean_openstack(){ } function odl_tests(){ - neutron_ip=$(keystone catalog --service identity | grep publicURL | cut -f3 -d"/" | cut -f1 -d":") + keystone_ip=$(keystone catalog --service identity | grep publicURL | cut -f3 -d"/" | cut -f1 -d":") + # historically most of the installers use the same IP for neutron and keystone API + neutron_ip=keystone_ip odl_ip=$(keystone catalog --service network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":") usr_name=$(env | grep OS | grep OS_USERNAME | cut -f2 -d'=') password=$(env | grep OS | grep OS_PASSWORD | cut -f2 -d'=') @@ -61,6 +63,9 @@ function odl_tests(){ elif [ $INSTALLER_TYPE == "apex" ]; then : elif [ $INSTALLER_TYPE == "joid" ]; then + odl_ip=$(env | grep ODL_CONTROLLER | cut -f2 -d'=') + neutron_ip=$(keystone catalog --service network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":") + odl_port=8080 : elif [ $INSTALLER_TYPE == "compass" ]; then : @@ -90,7 +95,7 @@ function run_test(){ "odl") info "Running ODL test..." odl_tests - ODL_PORT=$odl_port ODL_IP=$odl_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$password \ + ODL_PORT=$odl_port ODL_IP=$odl_ip KEYSTONE_IP=$keystone_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$password \ ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh # push results to the DB in case of CI diff --git a/testcases/Controllers/ODL/CI/custom_tests/neutron/010__networks.robot b/testcases/Controllers/ODL/CI/custom_tests/neutron/010__networks.robot new file mode 100644 index 000000000..583a6a153 --- /dev/null +++ b/testcases/Controllers/ODL/CI/custom_tests/neutron/010__networks.robot @@ -0,0 +1,56 @@ +*** Settings *** +Documentation Checking Network created in OpenStack are pushed to OpenDaylight +Suite Setup Create Session OSSession http://${NEUTRON}:9696 headers=${X-AUTH} +Suite Teardown Delete All Sessions +Library SSHLibrary +Library Collections +Library OperatingSystem +Library RequestsLibrary +Library ../../../libraries/Common.py +Variables ../../../variables/Variables.py + +*** Variables *** +${ODLREST} /controller/nb/v2/neutron/networks +${OSREST} /v2.0/networks +${postNet} {"network":{"name":"odl_network","admin_state_up":true}} + +*** Test Cases *** +Check OpenStack Networks + [Documentation] Checking OpenStack Neutron for known networks + [Tags] Network Neutron OpenStack + Log ${X-AUTH} + ${resp} get OSSession ${OSREST} + Should be Equal As Strings ${resp.status_code} 200 + ${OSResult} To Json ${resp.content} + Set Suite Variable ${OSResult} + Log ${OSResult} + +Check OpenDaylight Networks + [Documentation] Checking OpenDaylight Neutron API for Known Networks + [Tags] Network Neutron OpenDaylight + Create Session ODLSession http://${CONTROLLER}:${PORT} headers=${HEADERS} auth=${AUTH} + ${resp} get ODLSession ${ODLREST} + Should be Equal As Strings ${resp.status_code} 200 + ${ODLResult} To Json ${resp.content} + Set Suite Variable ${ODLResult} + Log ${ODLResult} + +Create Network + [Documentation] Create new network in OpenStack + [Tags] Create Network OpenStack Neutron + Log ${postNet} + ${resp} post OSSession ${OSREST} data=${postNet} + Should be Equal As Strings ${resp.status_code} 201 + ${result} To JSON ${resp.content} + ${result} Get From Dictionary ${result} network + ${NETID} Get From Dictionary ${result} id + Log ${result} + Log ${NETID} + Set Global Variable ${NETID} + sleep 2 + +Check Network + [Documentation] Check Network created in OpenDaylight + [Tags] Check Network OpenDaylight + ${resp} get ODLSession ${ODLREST}/${NetID} + Should be Equal As Strings ${resp.status_code} 200 diff --git a/testcases/Controllers/ODL/CI/custom_tests/neutron/020__subnets.robot b/testcases/Controllers/ODL/CI/custom_tests/neutron/020__subnets.robot new file mode 100644 index 000000000..5f5b82440 --- /dev/null +++ b/testcases/Controllers/ODL/CI/custom_tests/neutron/020__subnets.robot @@ -0,0 +1,56 @@ +*** Settings *** +Documentation Checking Subnets created in OpenStack are pushed to OpenDaylight +Suite Setup Create Session OSSession http://${NEUTRON}:9696 headers=${X-AUTH} +Suite Teardown Delete All Sessions +Library SSHLibrary +Library Collections +Library OperatingSystem +Library RequestsLibrary +Library ../../../libraries/Common.py +Variables ../../../variables/Variables.py + +*** Variables *** +${ODLREST} /controller/nb/v2/neutron/subnets +${OSREST} /v2.0/subnets +${data} {"subnet":{"network_id":"${NETID}","ip_version":4,"cidr":"172.16.64.0/24","allocation_pools":[{"start":"172.16.64.20","end":"172.16.64.120"}]}} + +*** Test Cases *** +Check OpenStack Subnets + [Documentation] Checking OpenStack Neutron for known Subnets + [Tags] Subnets Neutron OpenStack + Log ${X-AUTH} + ${resp} get OSSession ${OSREST} + Should be Equal As Strings ${resp.status_code} 200 + ${OSResult} To Json ${resp.content} + Set Suite Variable ${OSResult} + Log ${OSResult} + +Check OpenDaylight subnets + [Documentation] Checking OpenDaylight Neutron API for Known Subnets + [Tags] Subnets Neutron OpenDaylight + Create Session ODLSession http://${CONTROLLER}:${PORT} headers=${HEADERS} auth=${AUTH} + ${resp} get ODLSession ${ODLREST} + Should be Equal As Strings ${resp.status_code} 200 + ${ODLResult} To Json ${resp.content} + Set Suite Variable ${ODLResult} + Log ${ODLResult} + +Create New subnet + [Documentation] Create new subnet in OpenStack + [Tags] Create Subnet OpenStack Neutron + Log ${data} + ${resp} post OSSession ${OSREST} data=${data} + Should be Equal As Strings ${resp.status_code} 201 + ${result} To JSON ${resp.content} + ${result} Get From Dictionary ${result} subnet + ${SUBNETID} Get From Dictionary ${result} id + Log ${result} + Log ${SUBNETID} + Set Global Variable ${SUBNETID} + sleep 2 + +Check New subnet + [Documentation] Check new subnet created in OpenDaylight + [Tags] Check subnet OpenDaylight + ${resp} get ODLSession ${ODLREST}/${SUBNETID} + Should be Equal As Strings ${resp.status_code} 200 diff --git a/testcases/Controllers/ODL/CI/custom_tests/neutron/030__ports.robot b/testcases/Controllers/ODL/CI/custom_tests/neutron/030__ports.robot new file mode 100644 index 000000000..8b75733b7 --- /dev/null +++ b/testcases/Controllers/ODL/CI/custom_tests/neutron/030__ports.robot @@ -0,0 +1,56 @@ +*** Settings *** +Documentation Checking Port created in OpenStack are pushed to OpenDaylight +Suite Setup Create Session OSSession http://${NEUTRON}:9696 headers=${X-AUTH} +Suite Teardown Delete All Sessions +Library SSHLibrary +Library Collections +Library OperatingSystem +Library RequestsLibrary +Library ../../../libraries/Common.py +Variables ../../../variables/Variables.py + +*** Variables *** +${ODLREST} /controller/nb/v2/neutron/ports +${OSREST} /v2.0/ports +${data} {"port":{"network_id":"${NETID}","admin_state_up": true}} + +*** Test Cases *** +Check OpenStack ports + [Documentation] Checking OpenStack Neutron for known ports + [Tags] Ports Neutron OpenStack + Log ${X-AUTH} + ${resp} get OSSession ${OSREST} + Should be Equal As Strings ${resp.status_code} 200 + ${OSResult} To Json ${resp.content} + Set Suite Variable ${OSResult} + Log ${OSResult} + +Check OpenDaylight ports + [Documentation] Checking OpenDaylight Neutron API for Known Ports + [Tags] Ports Neutron OpenDaylight + Create Session ODLSession http://${CONTROLLER}:${PORT} headers=${HEADERS} auth=${AUTH} + ${resp} get ODLSession ${ODLREST} + Should be Equal As Strings ${resp.status_code} 200 + ${ODLResult} To Json ${resp.content} + Set Suite Variable ${ODLResult} + Log ${ODLResult} + +Create New Port + [Documentation] Create new port in OpenStack + [Tags] Create port OpenStack Neutron + Log ${data} + ${resp} post OSSession ${OSREST} data=${data} + Should be Equal As Strings ${resp.status_code} 201 + ${result} To JSON ${resp.content} + ${result} Get From Dictionary ${result} port + ${PORTID} Get From Dictionary ${result} id + Log ${result} + Log ${PORTID} + Set Global Variable ${PORTID} + sleep 2 + +Check New Port + [Documentation] Check new subnet created in OpenDaylight + [Tags] Check subnet OpenDaylight + ${resp} get ODLSession ${ODLREST}/${PORTID} + Should be Equal As Strings ${resp.status_code} 200 diff --git a/testcases/Controllers/ODL/CI/custom_tests/neutron/040__delete_ports.txt b/testcases/Controllers/ODL/CI/custom_tests/neutron/040__delete_ports.txt index 02c90c37c..f10298839 100644 --- a/testcases/Controllers/ODL/CI/custom_tests/neutron/040__delete_ports.txt +++ b/testcases/Controllers/ODL/CI/custom_tests/neutron/040__delete_ports.txt @@ -1,6 +1,6 @@ *** Settings *** Documentation Checking Port deleted in OpenStack are deleted also in OpenDaylight -Suite Setup Create Session OSSession http://${OPENSTACK}:9696 headers=${X-AUTH} +Suite Setup Create Session OSSession http://${NEUTRON}:9696 headers=${X-AUTH} Suite Teardown Delete All Sessions Library SSHLibrary Library Collections diff --git a/testcases/Controllers/ODL/CI/custom_tests/neutron/050__delete_subnets.txt b/testcases/Controllers/ODL/CI/custom_tests/neutron/050__delete_subnets.txt index 4121c98fe..fb619825b 100644 --- a/testcases/Controllers/ODL/CI/custom_tests/neutron/050__delete_subnets.txt +++ b/testcases/Controllers/ODL/CI/custom_tests/neutron/050__delete_subnets.txt @@ -1,6 +1,6 @@ *** Settings *** Documentation Checking Subnets deleted in OpenStack are deleted also in OpenDaylight -Suite Setup Create Session OSSession http://${OPENSTACK}:9696 headers=${X-AUTH} +Suite Setup Create Session OSSession http://${NEUTRON}:9696 headers=${X-AUTH} Suite Teardown Delete All Sessions Library SSHLibrary Library Collections diff --git a/testcases/Controllers/ODL/CI/custom_tests/neutron/060__delete_networks.txt b/testcases/Controllers/ODL/CI/custom_tests/neutron/060__delete_networks.txt index fc823fa4b..528fbfca2 100644 --- a/testcases/Controllers/ODL/CI/custom_tests/neutron/060__delete_networks.txt +++ b/testcases/Controllers/ODL/CI/custom_tests/neutron/060__delete_networks.txt @@ -1,6 +1,6 @@ *** Settings *** Documentation Checking Network deleted in OpenStack are deleted also in OpenDaylight -Suite Setup Create Session OSSession http://${OPENSTACK}:9696 headers=${X-AUTH} +Suite Setup Create Session OSSession http://${NEUTRON}:9696 headers=${X-AUTH} Suite Teardown Delete All Sessions Library SSHLibrary Library Collections diff --git a/testcases/Controllers/ODL/CI/start_tests.sh b/testcases/Controllers/ODL/CI/start_tests.sh index 4d600224e..5b45a2e92 100755 --- a/testcases/Controllers/ODL/CI/start_tests.sh +++ b/testcases/Controllers/ODL/CI/start_tests.sh @@ -51,6 +51,7 @@ ODL_PORT=${ODL_PORT:-8081} USR_NAME=${USR_NAME:-'neutron'} PASS=${PASS:-'octopus'} NEUTRON_IP=${NEUTRON_IP:-192.168.0.68} +KEYSTONE_IP=${NEUTRON_IP:-192.168.0.69} set +x init_file=${REPO_DIR}/test/csit/suites/openstack/neutron/__init__.robot @@ -80,7 +81,7 @@ do ((test_num++)) echo -e "${light_green}Starting test: $line ${nc}" - pybot -v OPENSTACK:${NEUTRON_IP} -v PORT:${ODL_PORT} -v CONTROLLER:${ODL_IP} ${REPO_DIR}/$line + pybot -v OPENSTACK:${KEYSTONE_IP} -v NEUTRON:${NEUTRON_IP} -v PORT:${ODL_PORT} -v CONTROLLER:${ODL_IP} ${REPO_DIR}/$line mkdir -p $RESULTS_DIR/logs/${test_num} mv log.html $RESULTS_DIR/logs/${test_num}/ mv report.html $RESULTS_DIR/logs/${test_num}/ -- 2.16.6