Add multi-gateway topology smoke test

1. What is the problem
Smoke test engine has been implemented[1] and a smoke test for
single north-south gateway topology has also been added. But
we still lack test for multiple north-south gateway topology.

2. What is the solution for the problem
Define the test using YAML file.

3. What features need to be implemented to the Tricircle to
realize the solution
N/A

[1] https://review.openstack.org/#/c/477500/

Implements: blueprint smoke-test-engine
Change-Id: Ied0693add47d479e7c6a01e09928d601635b1438
Depends-On: Ice098ce020c85f74d008c1952dd1dd36350dec1d
This commit is contained in:
zhiyuan_cai 2017-07-04 15:43:08 +08:00
parent d93333d39b
commit 428310fcc4
2 changed files with 577 additions and 0 deletions

View File

@ -0,0 +1,573 @@
- task_set_id: preparation
tasks:
- task_id: image1
region: region1
type: image
query:
get_one: true
- task_id: image2
region: region2
type: image
query:
get_one: true
- task_id: ext-net1
region: central
type: network
params:
name: ext-net1
is_router_external: true
provider_network_type: vlan
provider_physical_network: bridge
availability_zone_hints: [RegionOne]
- task_id: ext-subnet1
region: central
type: subnet
depend: [ext-net1]
params:
name: ext-subnet1
ip_version: 4
cidr: 163.3.124.0/24
is_dhcp_enabled: false
network_id: ext-net1@id
- task_id: ext-net2
region: central
type: network
params:
name: ext-net2
is_router_external: true
provider_network_type: flat
provider_physical_network: extern
availability_zone_hints: [RegionTwo]
- task_id: ext-subnet2
region: central
type: subnet
depend: [ext-net2]
params:
name: ext-subnet2
ip_version: 4
cidr: 163.3.125.0/24
is_dhcp_enabled: false
network_id: ext-net2@id
- task_id: router1
region: central
type: router
params:
name: router1
availability_zone_hints: [RegionOne]
- task_id: router2
region: central
type: router
params:
name: router2
availability_zone_hints: [RegionTwo]
- task_id: router3
region: central
type: router
params:
name: router3
- task_id: net1
region: central
type: network
params:
name: net1
availability_zone_hints: [RegionOne]
- task_id: subnet1
region: central
type: subnet
depend: [net1]
params:
name: subnet1
ip_version: 4
cidr: 10.0.1.0/24
network_id: net1@id
- task_id: net2
region: central
type: network
params:
name: net2
availability_zone_hints: [RegionTwo]
- task_id: subnet2
region: central
type: subnet
depend: [net2]
params:
name: subnet2
ip_version: 4
cidr: 10.0.2.0/24
network_id: net2@id
- task_id: add-gateway1
region: central
type: router
action:
target: router1@id
method: update
depend:
- ext-net1
- ext-subnet1
- router1
params:
external_gateway_info:
network_id: ext-net1@id
enable_snat: true
- task_id: add-gateway2
region: central
type: router
action:
target: router2@id
method: update
depend:
- ext-net2
- ext-subnet2
- router2
params:
external_gateway_info:
network_id: ext-net2@id
enable_snat: true
- task_id: add-subnet1
region: central
type: router
depend:
- subnet1
- router1
action:
target: router1@id
method: add_interface_to_router
params:
subnet_id: subnet1@id
- task_id: add-subnet2
region: central
type: router
depend:
- subnet2
- router2
action:
target: router2@id
method: add_interface_to_router
params:
subnet_id: subnet2@id
- task_id: inf-net1
region: central
type: port
depend:
- net1
- subnet1
params:
network_id: net1@id
- task_id: inf-net2
region: central
type: port
depend:
- net2
- subnet2
params:
network_id: net2@id
- task_id: add-inf1
region: central
type: router
depend:
- inf-net1
- router3
action:
target: router3@id
method: add_interface_to_router
params:
port_id: inf-net1@id
- task_id: add-inf2
region: central
type: router
depend:
- inf-net2
- router3
action:
target: router3@id
method: add_interface_to_router
params:
port_id: inf-net2@id
- task_id: vm1
region: region1
type: server
depend:
- net1
- image1
- add-gateway1
- add-subnet1
- add-inf1
params:
flavor_id: 1
image_id: image1@id
name: vm1
networks:
- uuid: net1@id
- task_id: vm2
region: region2
type: server
depend:
- net2
- image2
- add-gateway2
- add-subnet2
- add-inf2
params:
flavor_id: 1
image_id: image2@id
name: vm2
networks:
- uuid: net2@id
- task_set_id: wait-for-job
tasks:
- task_id: check-job
region: central
type: job
validate:
predicate: all
retries: 10
condition:
- status: SUCCESS
- task_set_id: check
depend: [preparation]
tasks:
- task_id: router1
region: region1
type: router
query:
get_one: true
params:
name: preparation@router1@id
- task_id: router2
region: region2
type: router
query:
get_one: true
params:
name: preparation@router2@id
- task_id: router3-1
region: region1
type: router
query:
get_one: true
params:
name: preparation@router3@id
- task_id: router3-2
region: region2
type: router
query:
get_one: true
params:
name: preparation@router3@id
- task_id: check-subnets1
region: region1
type: subnet
validate:
predicate: any
condition:
- cidr: 10.0.1.0/24
host_routes:
- destination: 10.0.2.0/24
nexthop: 10.0.1.*
- cidr: 100.0.0.0/24
- cidr: 163.3.124.0/24
- task_id: check-subnets2
region: region2
type: subnet
validate:
predicate: any
condition:
- cidr: 10.0.2.0/24
host_routes:
- destination: 10.0.1.0/24
nexthop: 10.0.2.*
- cidr: 100.0.0.0/24
- cidr: 163.3.125.0/24
- task_id: check-ports1
region: region1
type: port
depend: [router1]
validate:
predicate: any
condition:
- fixed_ips:
- ip_address: 10.0.1*
- fixed_ips:
- ip_address: 163.3.124*
params:
device_id: router1@id
- task_id: check-ports2
region: region2
type: port
depend: [router2]
validate:
predicate: any
condition:
- fixed_ips:
- ip_address: 10.0.2*
- fixed_ips:
- ip_address: 163.3.125*
params:
device_id: router2@id
- task_id: check-ports3-1
region: region1
type: port
depend: [router3-1]
validate:
predicate: any
condition:
- fixed_ips:
- ip_address: 10.0.1*
- fixed_ips:
- ip_address: 100.0.0*
params:
device_id: router3-1@id
- task_id: check-ports3-2
region: region2
type: port
depend: [router3-2]
validate:
predicate: any
condition:
- fixed_ips:
- ip_address: 10.0.2*
- fixed_ips:
- ip_address: 100.0.0*
params:
device_id: router3-2@id
- task_id: check-routers3-1
region: region1
type: router
validate:
predicate: any
condition:
- routes:
- destination: 10.0.2*
nexthop: 100.0.0*
- task_id: check-routers3-2
region: region2
type: router
validate:
predicate: any
condition:
- routes:
- destination: 10.0.1*
nexthop: 100.0.0*
- task_id: check-servers1
region: region1
type: server
validate:
predicate: any
condition:
- status: ACTIVE
name: vm1
- task_id: check-servers2
region: region2
type: server
validate:
predicate: any
condition:
- status: ACTIVE
name: vm2
- task_set_id: clean
depend: [preparation]
tasks:
- task_id: delete-vm1
region: region1
type: server
action:
target: preparation@vm1@id
method: delete
- task_id: delete-vm2
region: region2
type: server
action:
target: preparation@vm2@id
method: delete
- task_id: remove-gateway1
region: central
type: router
action:
target: preparation@router1@id
method: update
params:
external_gateway_info: null
- task_id: remove-gateway2
region: central
type: router
action:
target: preparation@router2@id
method: update
params:
external_gateway_info: null
- task_id: remove-subnet1
region: central
type: router
action:
target: preparation@router1@id
method: remove_interface_from_router
params:
subnet_id: preparation@subnet1@id
- task_id: remove-subnet2
region: central
type: router
action:
target: preparation@router2@id
method: remove_interface_from_router
params:
subnet_id: preparation@subnet2@id
- task_id: remove-inf1
region: central
type: router
action:
target: preparation@router3@id
method: remove_interface_from_router
params:
port_id: preparation@inf-net1@id
- task_id: remove-inf2
region: central
type: router
action:
target: preparation@router3@id
method: remove_interface_from_router
params:
port_id: preparation@inf-net2@id
- task_id: delete-router1
region: central
type: router
action:
target: preparation@router1@id
method: delete
retries: 3
depend:
- remove-gateway1
- remove-subnet1
- task_id: delete-router2
region: central
type: router
action:
target: preparation@router2@id
method: delete
retries: 3
depend:
- remove-gateway2
- remove-subnet2
- task_id: delete-router3
region: central
type: router
action:
target: preparation@router3@id
method: delete
retries: 3
depend:
- remove-inf1
- remove-inf2
# router3 must be the last router to delete, otherwise bridge
# resources will not be deleted, this is a known issue
- delete-router1
- delete-router2
- task_id: delete-inf1
region: central
type: port
action:
target: preparation@inf-net1@id
method: delete
depend: [delete-router3]
- task_id: delete-inf2
region: central
type: port
action:
target: preparation@inf-net2@id
method: delete
depend: [delete-router3]
- task_id: delete-subnet1
region: central
type: subnet
action:
target: preparation@subnet1@id
method: delete
retries: 3
depend: [delete-inf1]
- task_id: delete-subnet2
region: central
type: subnet
action:
target: preparation@subnet2@id
method: delete
retries: 3
depend: [delete-inf2]
- task_id: delete-net1
region: central
type: network
action:
target: preparation@net1@id
method: delete
depend: [delete-subnet1]
- task_id: delete-net2
region: central
type: network
action:
target: preparation@net2@id
method: delete
depend: [delete-subnet2]
- task_id: delete-ext-subnet1
region: central
type: subnet
action:
target: preparation@ext-subnet1@id
method: delete
depend: [delete-router1]
- task_id: delete-ext-net1
region: central
type: network
action:
target: preparation@ext-net1@id
method: delete
depend: [delete-ext-subnet1]
- task_id: delete-ext-subnet2
region: central
type: subnet
action:
target: preparation@ext-subnet2@id
method: delete
depend: [delete-router2]
- task_id: delete-ext-net2
region: central
type: network
action:
target: preparation@ext-net2@id
method: delete
depend: [delete-ext-subnet2]
- task_set_id: clean-check
tasks:
- task_id: check-no-routers1
region: region1
type: router
validate:
predicate: all
condition:
- name: invalid-name
- task_id: check-no-routers2
region: region2
type: router
validate:
predicate: all
condition:
- name: invalid-name
- task_id: check-no-networks1
region: region1
type: network
validate:
predicate: all
condition:
- name: invalid-name
- task_id: check-no-networks2
region: region2
type: network
validate:
predicate: all
condition:
- name: invalid-name
- task_id: check-jobs
region: central
type: job
validate:
predicate: all
retries: 10
condition:
- status: SUCCESS

View File

@ -9,3 +9,7 @@ python run_yaml_test.py single_gw_topology_test.yaml "$OS_AUTH_URL" "$OS_TENANT_
if [ $? != 0 ]; then
die $LINENO "Smoke test fails, error in single gateway topology test"
fi
python run_yaml_test.py multi_gw_topology_test.yaml "$OS_AUTH_URL" "$OS_TENANT_NAME" "$OS_USERNAME" "$OS_PASSWORD"
if [ $? != 0 ]; then
die $LINENO "Smoke test fails, error in multi gateway topology test"
fi