Skip to content

Commit 7d7a213

Browse files
committed
Move acceptance tests to a generic script
This patch will avoid the duplication of gophercloud-acceptance script by adding job variants, where we set variables of what we want to deploy and it'll use the same workflow/scripts. This removes the specific playbook for running Ironic tests and creates these variables: * `acceptance_tests`: List of acceptance tests (which can be discovered via: ``` find acceptance/openstack -name '*_test.go' -exec dirname {} \; | sort -n | uniq -c | awk '{print $2}' ``` * `devstack_services`: List of devstack services to activate. * `devstack_override_enabled_services`: List of services to activate in Devstack, specific to the framework itself. * `devstack_projects`: List of projects that will have to be cloned by devstack to be installed. This moves both gophercloud-acceptance-test and gophercloud-acceptance-test-ironic to use this new layout; providing the same configuration as before. This will reduce maintenance cost and simplify when we want to add other variants (will come later).
1 parent 2cf8e4c commit 7d7a213

5 files changed

Lines changed: 65 additions & 153 deletions

File tree

.zuul.yaml

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,64 @@
1414
run: .zuul/playbooks/gophercloud-acceptance-test/run.yaml
1515
timeout: 18000 # 5 hours
1616
nodeset: ubuntu-focal
17+
vars:
18+
# the list of all available tests can generated by:
19+
# find acceptance/openstack -name '*_test.go' -exec dirname {} \; | sort -n | uniq -c | awk '{print $2}'
20+
acceptance_tests:
21+
- acceptance/openstack
22+
- acceptance/openstack/blockstorage
23+
- acceptance/openstack/blockstorage/extensions
24+
- acceptance/openstack/blockstorage/v3
25+
- acceptance/openstack/compute/v2
26+
- acceptance/openstack/container/v1
27+
- acceptance/openstack/dns/v2
28+
- acceptance/openstack/identity/v2
29+
- acceptance/openstack/identity/v3
30+
- acceptance/openstack/imageservice/v2
31+
- acceptance/openstack/keymanager/v1
32+
- acceptance/openstack/loadbalancer/v2
33+
- acceptance/openstack/networking/v2
34+
- acceptance/openstack/networking/v2/extensions
35+
- acceptance/openstack/networking/v2/extensions/agents
36+
- acceptance/openstack/networking/v2/extensions/dns
37+
- acceptance/openstack/networking/v2/extensions/layer3
38+
- acceptance/openstack/networking/v2/extensions/mtu
39+
- acceptance/openstack/networking/v2/extensions/networkipavailabilities
40+
- acceptance/openstack/networking/v2/extensions/portsbinding
41+
- acceptance/openstack/networking/v2/extensions/qos/policies
42+
- acceptance/openstack/networking/v2/extensions/qos/rules
43+
- acceptance/openstack/networking/v2/extensions/qos/ruletypes
44+
- acceptance/openstack/networking/v2/extensions/quotas
45+
- acceptance/openstack/networking/v2/extensions/rbacpolicies
46+
- acceptance/openstack/networking/v2/extensions/subnetpools
47+
- acceptance/openstack/networking/v2/extensions/trunks
48+
- acceptance/openstack/networking/v2/extensions/vlantransparent
49+
- acceptance/openstack/objectstorage/v1
50+
- acceptance/openstack/orchestration/v1
51+
- acceptance/openstack/placement/v1
52+
- acceptance/openstack/sharedfilesystems/v2
53+
- acceptance/openstack/sharedfilesystems/v2/messages
54+
devstack_services:
55+
- designate
56+
- manila
57+
- neutron-ext
58+
- octavia
59+
- zun
1760

1861
- job:
1962
name: gophercloud-acceptance-test-ironic
2063
parent: golang-test
2164
description: |
2265
Run gophercloud ironic acceptance test on master branch
23-
run: .zuul/playbooks/gophercloud-acceptance-test-ironic/run.yaml
66+
run: .zuul/playbooks/gophercloud-acceptance-test/run.yaml
2467
nodeset: ubuntu-focal
68+
vars:
69+
devstack_services:
70+
- ironic
71+
devstack_override_enabled_services: 'g-api,g-reg,q-agt,q-dhcp,q-l3,q-svc,key,mysql,rabbit,ir-api,ir-cond,s-account,s-container,s-object,s-proxy'
72+
devstack_projects: 'openstack/ironic-python-agent-builder openstack/ironic'
73+
acceptance_tests:
74+
- acceptance/openstack/baremetal/v1
2575

2676
- job:
2777
name: gophercloud-acceptance-test-ussuri

.zuul/playbooks/gophercloud-acceptance-test-ironic/run.yaml

Lines changed: 0 additions & 27 deletions
This file was deleted.

.zuul/playbooks/gophercloud-acceptance-test/run.yaml

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,20 @@
55
go_version: '1.15'
66
- clone-devstack-gate-to-workspace
77
- role: create-devstack-local-conf
8-
enable_services:
9-
- 'manila'
10-
- 'designate'
11-
- 'zun'
12-
- 'octavia'
13-
- 'neutron-ext'
14-
- install-devstack
8+
enable_services: "{{ devstack_services | default(omit) }}"
9+
- role: install-devstack
10+
environment:
11+
OVERRIDE_ENABLED_SERVICES: "{{ devstack_override_enabled_services | default('') }}"
12+
PROJECTS: "{{ devstack_projects | default('') }}"
1513
tasks:
16-
- name: Run acceptance tests with gophercloud
14+
- name: Run ironic acceptance tests with gophercloud
1715
shell:
1816
cmd: |
1917
set -e
2018
set -o pipefail
2119
set -x
2220
echo $(export |grep OS_BRANCH)
23-
export OS_DEBUG=1
21+
export ACCEPTANCE_TESTS="{{ acceptance_tests|default('') }}"
2422
go get ./... || true
2523
./script/acceptancetest -v 2>&1 | tee $TEST_RESULTS_TXT
2624
executable: /bin/bash

script/acceptancetest

Lines changed: 7 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -7,97 +7,17 @@ source `dirname $0`/stackenv
77
timeout="60m"
88
failed=
99

10-
# Run the acceptance tests.
11-
# Check the error code after each suite, but do not exit early if a suite failed.
1210

13-
# list generated by:
14-
# find acceptance/openstack -name '*_test.go' -exec dirname {} \; | sort -n | uniq -c | awk '{print $2}'
15-
ACCEPTANCE_TESTS=(
16-
acceptance/openstack
17-
18-
# IronicEndpoint is required
19-
# acceptance/openstack/baremetal/noauth
20-
# No suitable endpoint could be found in the service catalog
21-
# acceptance/openstack/baremetal/v1
22-
23-
acceptance/openstack/blockstorage
24-
acceptance/openstack/blockstorage/extensions
25-
26-
# snapshots_test.go:16: Unable to create a blockstorage client: CinderEndpoint is required
27-
# acceptance/openstack/blockstorage/noauth
28-
29-
# snapshots_test.go:21: Unable to retrieve snapshots: Resource not found
30-
# acceptance/openstack/blockstorage/v1
31-
# acceptance/openstack/blockstorage/v2
32-
33-
acceptance/openstack/blockstorage/v3
34-
35-
# No suitable endpoint could be found in the service catalog.
36-
# acceptance/openstack/clustering/v1
37-
38-
acceptance/openstack/compute/v2
39-
40-
# No suitable endpoint could be found in the service catalog.
41-
# acceptance/openstack/containerinfra/v1
42-
43-
acceptance/openstack/container/v1
44-
45-
# Unable to create a DB client: No suitable endpoint could be found in the service catalog.
46-
# acceptance/openstack/db/v1
47-
48-
acceptance/openstack/dns/v2
49-
acceptance/openstack/identity/v2
50-
acceptance/openstack/identity/v3
51-
acceptance/openstack/imageservice/v2
52-
acceptance/openstack/keymanager/v1
53-
acceptance/openstack/loadbalancer/v2
54-
55-
# No suitable endpoint could be found in the service catalog.
56-
# acceptance/openstack/messaging/v2
57-
58-
acceptance/openstack/networking/v2
59-
acceptance/openstack/networking/v2/extensions
60-
acceptance/openstack/networking/v2/extensions/agents
61-
acceptance/openstack/networking/v2/extensions/dns
62-
63-
# Resource not found
64-
# acceptance/openstack/networking/v2/extensions/fwaas
65-
# acceptance/openstack/networking/v2/extensions/fwaas_v2
66-
acceptance/openstack/networking/v2/extensions/layer3
67-
68-
# Unable to create: Resource not found
69-
# acceptance/openstack/networking/v2/extensions/lbaas
70-
71-
# Resource not found
72-
# acceptance/openstack/networking/v2/extensions/lbaas_v2
73-
74-
acceptance/openstack/networking/v2/extensions/mtu
75-
acceptance/openstack/networking/v2/extensions/networkipavailabilities
76-
acceptance/openstack/networking/v2/extensions/portsbinding
77-
acceptance/openstack/networking/v2/extensions/qos/policies
78-
acceptance/openstack/networking/v2/extensions/qos/rules
79-
acceptance/openstack/networking/v2/extensions/qos/ruletypes
80-
acceptance/openstack/networking/v2/extensions/quotas
81-
acceptance/openstack/networking/v2/extensions/rbacpolicies
82-
acceptance/openstack/networking/v2/extensions/subnetpools
83-
acceptance/openstack/networking/v2/extensions/trunks
84-
acceptance/openstack/networking/v2/extensions/vlantransparent
85-
86-
# Unable to create: Resource not found
87-
# acceptance/openstack/networking/v2/extensions/vpnaas
88-
89-
acceptance/openstack/objectstorage/v1
90-
acceptance/openstack/orchestration/v1
91-
acceptance/openstack/placement/v1
92-
acceptance/openstack/sharedfilesystems/v2
93-
acceptance/openstack/sharedfilesystems/v2/messages
11+
if [[ -z $ACCEPTANCE_TESTS ]]; then
12+
echo "No acceptance tests to run"
13+
exit 0
14+
fi
9415

95-
# No suitable endpoint could be found in the service catalog
96-
# acceptance/openstack/workflow/v2
97-
)
16+
TESTS=($(python <<< "print(' '.join($ACCEPTANCE_TESTS))"))
9817

99-
for acceptance_test in ${ACCEPTANCE_TESTS[@]}; do
18+
for acceptance_test in "${TESTS[@]}"; do
10019
go test -v -timeout $timeout -tags "fixtures acceptance" ./${acceptance_test}
20+
# Check the error code after each suite, but do not exit early if a suite failed.
10121
if [[ $? != 0 ]]; then
10222
failed=1
10323
fi

script/acceptancetest-ironic

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)