1#!/usr/local/bin/bash
2
3set -o pipefail -eux
4
5declare -a args
6IFS='/:' read -ra args <<< "$1"
7
8group="${args[0]}"
9
10command -v python
11python -V
12if [ "$2" = "2.7" ]
13then
14    echo "The specified environment is Python2.7"
15else
16    alias pip='pip3'
17    sudo apt update
18    sudo apt install software-properties-common
19    sudo add-apt-repository ppa:deadsnakes/ppa
20    sudo apt install python"$2" -y
21    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python"$2" 1
22fi
23
24command -v pip
25pip --version
26pip list --disable-pip-version-check
27
28export PATH="${PWD}/bin:${PATH}"
29export PYTHONIOENCODING="UTF-8"
30export LC_ALL="en_US.utf-8"
31
32pip install virtualenv
33virtualenv --python /usr/bin/python"$2" ~/ansible-venv
34
35set +ux
36. ~/ansible-venv/bin/activate
37set -ux
38
39git clone https://github.com/ansible/ansible.git
40cd "ansible"
41if [ "$3" = "devel" ]
42then
43    echo "The branch is devel"
44else
45    git checkout "stable-$3"
46fi
47source hacking/env-setup
48pip install paramiko PyYAML Jinja2  httplib2 six
49
50TEST_DIR="${HOME}/.ansible/ansible_collections/azure/azcollection"
51mkdir -p "${TEST_DIR}"
52cp -aT "${SHIPPABLE_BUILD_DIR}" "${TEST_DIR}"
53cd "${TEST_DIR}"
54mkdir -p shippable/testresults
55
56pip install  -I -r "${TEST_DIR}/requirements-azure.txt"
57pip install  -I -r "${TEST_DIR}/sanity-requirements-azure.txt"
58
59timeout=90
60
61if [ "$4" = "all" ]
62then
63    echo "All module need test"
64else
65    path_dir="${TEST_DIR}/tests/integration/targets/"
66    for item in "$path_dir"*
67    do
68        if [ "${item}" = "$path_dir""$4" ]
69        then
70            echo "PASS"
71        else
72            echo " " >> "${item}"/aliases
73            echo "disabled" >> "${item}"/aliases
74        fi
75    done
76fi
77echo '--------------------------------------------'
78pip list
79ansible --version
80echo '--------------------------------------------'
81
82ansible-test env --dump --show --timeout "${timeout}" --color -v
83
84cat <<EOF >> "${TEST_DIR}"/tests/integration/cloud-config-azure.ini
85[default]
86AZURE_CLIENT_ID:${AZURE_CLIENT_ID}
87AZURE_SECRET:${AZURE_SECRET}
88AZURE_SUBSCRIPTION_ID:${AZURE_SUBSCRIPTION_ID}
89AZURE_SUBSCRIPTION_SEC_ID:${AZURE_SUBSCRIPTION_SEC_ID}
90AZURE_TENANT:${AZURE_TENANT}
91RESOURCE_GROUP:${RESOURCE_GROUP}
92RESOURCE_GROUP_SECONDARY:${RESOURCE_GROUP_SECONDARY}
93RESOURCE_GROUP_DATALAKE:${RESOURCE_GROUP_DATALAKE}
94AZURE_PRINCIPAL_ID:${AZURE_PRINCIPAL_ID}
95AZURE_MANAGED_BY_TENANT_ID:${AZURE_MANAGED_BY_TENANT_ID}
96AZURE_ROLE_DEFINITION_ID:${AZURE_ROLE_DEFINITION_ID}
97EOF
98
99if [ "sanity" = "${group}" ]
100then
101    ansible-test sanity --color -v --junit
102else
103    ansible-test integration --color -v --retry-on-error "shippable/azure/group${group}/" --allow-destructive
104fi
105