-
Notifications
You must be signed in to change notification settings - Fork 978
201 lines (167 loc) · 6.76 KB
/
ci-basictests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
name: CI-basictests
on:
push:
branches: [ "v2.x" ]
paths-ignore:
- '.github/**'
- '**.md'
pull_request:
branches: [ "v2.x" ]
paths-ignore:
- '.github/**'
- '**.md'
# schedule:
# - cron: '15 13 * * 3'
workflow_dispatch:
jobs:
build-n-test:
runs-on: ubuntu-22.04
steps:
- name: Install dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y python3-pymysql python3-structlog sysbench mycli
sudo pip3 install fastcov
wget https://github.com/openark/orchestrator/releases/download/v3.2.6/orchestrator-client_3.2.6_amd64.deb
sudo dpkg -i orchestrator-client_3.2.6_amd64.deb
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
wget https://repo.mysql.com/mysql-apt-config_0.8.24-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb
sudo apt-get update -y
sudo apt-cache policy mysql-shell
sudo apt-get install -y mysql-shell
sudo sed -i 's/8.0/5.7/' /etc/apt/sources.list.d/mysql.list
sudo sed -i 's/jammy/bionic/' /etc/apt/sources.list.d/mysql.list
sudo apt-get update -y
sudo apt-cache policy libmysqlclient-dev
sudo apt-get install -y --allow-downgrades libmysqlclient-dev=5.7*
- name: Checkout proxysql
uses: actions/checkout@v3
with:
repository: 'sysown/proxysql'
# ref: 'v2.x'
fetch-depth: 0
path: 'proxysql'
- name: Set GIT_VERSION
run: |
cd proxysql/
git fetch --tags --force
echo "GIT_VERSION=$(git describe --long --abbrev=7)" >> $GITHUB_ENV
- name: Fix paths
run: |
sudo ln -s ${{ github.workspace }}/proxysql /opt/proxysql
- name: Checkout jenkins_build_scripts
uses: actions/checkout@v3
with:
repository: 'proxysql/jenkins-build-scripts'
ref: 'kubernetes'
fetch-depth: 0
path: 'jenkins-build-scripts'
token: ${{ secrets.GH_TOKEN }}
submodules: 'false'
- name: Configure env.sh
run: |
cd jenkins-build-scripts
# configure paths
sed -i "s|JENKINS_SCRIPTS_PATH=.*|JENKINS_SCRIPTS_PATH=${{ github.workspace }}/jenkins-build-scripts|" env.sh
sed -i "s|WORKSPACE=.*|WORKSPACE=${{ github.workspace }}/proxysql|" env.sh
# select tests
sed -i "s|TEST_PY_INTERNAL=.*|TEST_PY_INTERNAL=0|" env.sh
sed -i "s|TEST_PY_BENCHMARK=.*|TEST_PY_BENCHMARK=1|" env.sh
sed -i "s|TEST_PY_CHUSER=.*|TEST_PY_CHUSER=1|" env.sh
sed -i "s|TEST_PY_STATS=.*|TEST_PY_STATS=0|" env.sh
sed -i "s|TEST_PY_TAP=.*|TEST_PY_TAP=0|" env.sh
sed -i "s|TEST_PY_TAPINT=.*|TEST_PY_TAPINT=0|" env.sh
sed -i "s|TEST_PY_FAILOVER=.*|TEST_PY_FAILOVER=1|" env.sh
#sed -i "s/TEST_PY_TAP_INCL=.*/TEST_PY_TAP_INCL=\"${{ matrix.testgroup }}\"/" env.sh
#sed -i "s|TEST_PY_TAP_EXCL=.*|TEST_PY_TAP_EXCL=\"\"|" env.sh
- name: Patch TAP-tests
run: |
# apply patches
for PATCH in $(cd jenkins-build-scripts/test-scripts/patches; find . -type f); do
if [[ $PATCH =~ \.patch ]]; then
patch proxysql/${PATCH%.patch} jenkins-build-scripts/test-scripts/patches/${PATCH} || true
elif [[ ! -f jenkins-build-scripts/test-scripts/patches/${PATCH#./}.patch ]]; then
cp jenkins-build-scripts/test-scripts/patches/${PATCH#./} proxysql/${PATCH#./} || true
fi
done
- name: Build
run: |
set -x
cd proxysql/
# fix compile issues
grep -rl "<curl/curl.h>" test/ | xargs -r sed -i 's|<curl/curl.h>|"curl/curl.h"|'
sed -i 's|-I/usr/include/mysql |-I/usr/include/mysql -I$(CURL_IDIR) |' test/tap/tests/Makefile
# build proxysql
sed -i "/command/c \ command: bash -l -c 'cd /opt/proxysql && make debug_clickhouse WITHGCOV=1'" docker-compose.yml
#cat docker-compose.yml
make ubuntu22-dbg
# build tap tests
sed -i "/command/c \ command: bash -l -c 'cd /opt/proxysql && make build_tap_test_debug WITHGCOV=1'" docker-compose.yml
#cat docker-compose.yml
#make ubuntu22-dbg
# remove irrelevant tests (failing)
cd test/tap/tests
rm -f *clickhouse*-t
#rm -f *cluster*-t
rm -f *binlog*-t
rm -f *mariadb*-t
rm -f reg_test_3992_fast_forward_malformed_packet*-t
#rm -f reg_test_3847_admin_lock-t
#rm -f set_testing-240-t
#rm -f test_com_reset_connection_com_change_user*-t
#rm -f max_connections_ff-t
#rm -f test_server_sess_status-t
# remove long running tests (passing)
#rm -f multiple_prepared_statements-t
#rm -f mysql-mirror1-t
- name: Run proxysql
run: |
set -x
set +e
cd ${{ github.workspace }}/jenkins-build-scripts
source ./env.sh
./cluster_start.bash
sleep 10
cd ${{ github.workspace }}/proxysql
mkdir -p ci_infra_logs/regular_infra/proxysql
cd src
mkdir coverage_reports
(./proxysql --clickhouse-server --sqlite3-server --idle-threads -f -c "$DOCKER_SCRIPT_PATH/conf/proxysql/proxysql.cnf" -D $REGULAR_INFRA_DATADIR &> $REGULAR_INFRA_DATADIR/proxysql.log) &
sleep 10
mysql -uadmin -padmin -h127.0.0.1 -P6032 -e "SELECT version();"
cd ${{ github.workspace }}/jenkins-build-scripts
./cluster_init.bash
sleep 10
- name: Run infra
run: |
cd ${{ github.workspace }}/jenkins-build-scripts
source ./env.sh
cd ${{ github.workspace }}/jenkins-build-scripts/infra-docker-hoster
#docker-compose up -d
./docker-compose-init.bash
cd ${{ github.workspace }}/jenkins-build-scripts/infra-mysql57
sed -i "s/\${INFRA}-\${CONTAINER}-1/\${INFRA}_\${CONTAINER}_1/" docker-compose-init.bash
./docker-compose-init.bash
- name: Basic tests
run: |
set +e
cd ${{ github.workspace }}/jenkins-build-scripts
source ./env.sh
env | sort
sudo -E ./test-scripts/bin/proxysql-tester.py
RC=$?
exit $RC
- name: Fix premissions
if: ${{ always() }}
run: |
sudo chmod -R 777 ${{ github.workspace }}/*
- name: Archive artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: ci-selftests-${{ env.GIT_VERSION }}-run#${{ github.run_number }}
path: |
proxysql/ci_gcov_logs/
proxysql/ci_infra_logs/
proxysql/ci_tests_logs/