-
Notifications
You must be signed in to change notification settings - Fork 40
302 lines (296 loc) · 11.2 KB
/
test.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
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
name: Build and test skaled
on:
push:
branches-ignore:
- 'master'
- 'beta'
- 'stable'
defaults:
run:
shell: bash
jobs:
build:
runs-on: self-hosted
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
NO_ULIMIT_CHECK: 1
ccache_compress: 'true'
ccache_compresslevel: 9
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}
- name: Extract repo name
run: echo ::set-env name=REPOSITORY_NAME::$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}')
shell: bash
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
- name: checkout
uses: actions/checkout@v2
- name: Cache apt packages
uses: actions/cache@v2
with:
path: |
/var/cache/apt/archives
key: ${{ runner.os }}-apt-cache
ttl: 1000000 # purge cache every 1000000 seconds (10 days). This is to pull updated packages
- name: update apt
run: |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test || true
sudo apt-get update || true
- name: install packages
run: |
sudo apt-get -y remove libzmq* || true
sudo apt-get -y install software-properties-common gcc-9 g++-9 || true
- name: Use g++-9 and gcov-9 by default
run: |
echo "Updating all needed alternatives"
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9
sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-9 9
sudo update-alternatives --install /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-9 9
sudo update-alternatives --install /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-9 9
echo "Checking alternative for gcc"
which gcc
gcc --version
echo "Checking alternative for g++"
which g++
g++ --version
echo "Checking alternative for gcov"
which gcov
gcov --version
echo "Checking alternative for gcov-dump"
which gcov-dump
gcov-dump --version
echo "Checking alternative for gcov-tool"
which gcov-tool
gcov-tool --version
- name: Get newest lcov
run: |
# sudo apt-get install libcapture-tiny-perl
echo "Removing previous lcov version..."
sudo apt-get remove lcov || true
echo "Installing newest lcov version..."
rm -rf newer_lcov || true
mkdir newer_lcov
cd newer_lcov
git clone https://github.com/linux-test-project/lcov --recursive --recurse-submodules
cd lcov
git checkout 92e2121
sudo make install
cd ..
cd ..
echo "Checking installed lcov version..."
which lcov
lcov --version
- name: Submodule update
run: |
rm -rf ./libconsensus || true
ls -1
git submodule update --init --recursive
- name: Prepare ccache timestamp
id: ccache_cache_timestamp
shell: cmake -P {0}
run: |
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
message("::set-output name=timestamp::${current_date}")
- name: Ccache cache files
uses: actions/[email protected]
with:
path: .ccache
key: ${ { matrix.config.name } }-ccache-${ { steps.ccache_cache_timestamp.outputs.timestamp } }
restore-keys: |
${ { matrix.config.name } }-ccache-
- name: Update gcc-9
run: |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9
- name: Configure ccache cache size, zero ccache counters and print ccache stats before start
run: |
ccache --max-size=15G
ccache -z
ccache --show-stats
- name: Build dependencies
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
export CC=gcc-9
export CXX=g++-9
export TARGET=all
export CMAKE_BUILD_TYPE=Debug
export CODE_COVERAGE=ON
cd deps
#######################################./clean.sh
rm -f ./libwebsockets-from-git.tar.gz
./build.sh DEBUG=1 PARALLEL_COUNT=$(nproc)
cd ..
- name: Configure all
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
export CC=gcc-9
export CXX=g++-9
export TARGET=all
export CMAKE_BUILD_TYPE=Debug
export CODE_COVERAGE=ON
mkdir -p build
cd build
# -DCMAKE_C_FLAGS=-O3 -DCMAKE_CXX_FLAGS=-O3
cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCOVERAGE=$CODE_COVERAGE ..
cd ..
- name: Print ccache stats for deps
run: |
ccache --show-stats
- name: Build all
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
export CC=gcc-9
export CXX=g++-9
export TARGET=all
export CMAKE_BUILD_TYPE=Debug
export CODE_COVERAGE=ON
cd build
make testeth -j$(nproc)
cd ..
- name: Print ccache stats after full build
run : |
ccache --show-stats
# first run with verbosity 1. If test fails, rerun with verbosity 4
# we specifically run each test for easier log review
- name: Testeth verbosity 1
run : |
mkdir -p /tmp/tests/
sudo rm -rf /tmp/tests/*
cd build/test
export NO_NTP_CHECK=1
export NO_ULIMIT_CHECK=1
function run_test() { ./testeth --report_level=detailed -t "$1" -- --express && touch "/tmp/tests/${1}Passed"; }
run_test TransitionTests
run_test TransactionTests
run_test VMTests
run_test LevelDBTests
run_test CoreLibTests
run_test RlpTests
run_test SharedSpaceTests
run_test EthashTests
run_test SealEngineTests
run_test DifficultyTests
run_test BlockSuite
run_test BlockChainMainNetworkSuite
run_test BlockChainFrontierSuite
run_test BlockQueueSuite
run_test ClientBase
run_test EstimateGas
run_test getHistoricNodesData
run_test ExtVmSuite
run_test GasPricer
run_test BasicTests
run_test InstanceMonitorSuite
run_test PrecompiledTests
run_test SkaleHostSuite
run_test StateUnitTests
run_test libethereum
run_test TransactionQueueSuite
run_test LegacyVMSuite
run_test SkaleInterpreterSuite
run_test SnapshotSigningTestSuite
run_test SkUtils
run_test BlockChainTestSuite
run_test TestHelperSuite
run_test LevelDBHashBase
run_test memDB
run_test OverlayDBTests
run_test AccountHolderTest
run_test ClientTests
run_test JsonRpcSuite
run_test SingleConsensusTests
run_test ConsensusTests
sudo ./testeth -t BtrfsTestSuite -- --all && touch /tmp/tests/BtrfsTestSuitePassed
sudo ./testeth -t HashSnapshotTestSuite -- --all && touch /tmp/tests/HashSnapshotTestSuitePassed
sudo ./testeth -t ClientSnapshotsSuite -- --all && touch /tmp/tests/ClientSnapshotsSuitePassed
cd ..
- name: Testeth verbosity 4
run : |
# Since a tests failed, we are rerunning the failed test with higher verbosity
cd build/test
export NO_NTP_CHECK=1
export NO_ULIMIT_CHECK=1
function rerun_test() { ls "/tmp/tests/${1}Passed" 2>/dev/null || ./testeth --report_level=detailed -t "$1" -- --express --verbosity 4; }
rerun_test TransitionTests
rerun_test TransactionTests
rerun_test VMTests
rerun_test LevelDBTests
rerun_test CoreLibTests
rerun_test RlpTests
rerun_test SharedSpaceTests
rerun_test EthashTests
rerun_test SealEngineTests
rerun_test DifficultyTests
rerun_test BlockSuite
rerun_test BlockChainMainNetworkSuite
rerun_test BlockChainFrontierSuite
rerun_test BlockQueueSuite
rerun_test ClientBase
rerun_test EstimateGas
rerun_test getHistoricNodesData
rerun_test ExtVmSuite
rerun_test GasPricer
rerun_test BasicTests
rerun_test InstanceMonitorSuite
rerun_test PrecompiledTests
rerun_test SkaleHostSuite
rerun_test StateUnitTests
rerun_test libethereum
rerun_test TransactionQueueSuite
rerun_test LegacyVMSuite
rerun_test SkaleInterpreterSuite
rerun_test SnapshotSigningTestSuite
rerun_test SkUtils
rerun_test BlockChainTestSuite
rerun_test TestHelperSuite
rerun_test LevelDBHashBase
rerun_test memDB
rerun_test OverlayDBTests
rerun_test AccountHolderTest
rerun_test ClientTests
rerun_test JsonRpcSuite
rerun_test SingleConsensusTests
rerun_test ConsensusTests
ls /tmp/tests/BtrfsTestSuitePassed || sudo NO_ULIMIT_CHECK=1 NO_NTP_CHECK=1 ./testeth -t BtrfsTestSuite -- --all --verbosity 4
ls /tmp/tests/HashSnapshotTestSuitePassed || sudo NO_ULIMIT_CHECK=1 NO_NTP_CHECK=1 ./testeth -t HashSnapshotTestSuite -- --all --verbosity 4
ls /tmp/tests/ClientSnapshotsSuitePassed || sudo NO_ULIMIT_CHECK=1 NO_NTP_CHECK=1 ./testeth -t ClientSnapshotsSuite -- --all --verbosity 4
cd ..
- name: Configure all as historic
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
export CC=gcc-9
export CXX=g++-9
export TARGET=all
export CMAKE_BUILD_TYPE=Debug
export CODE_COVERAGE=ON
mkdir -p build_historic
cd build_historic
# -DCMAKE_C_FLAGS=-O3 -DCMAKE_CXX_FLAGS=-O3
cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCOVERAGE=$CODE_COVERAGE -DHISTORIC_STATE=1 ..
cd ..
- name: Build all historic
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
export CC=gcc-9
export CXX=g++-9
export TARGET=all
export CMAKE_BUILD_TYPE=Debug
export CODE_COVERAGE=ON
cd build_historic
make testeth -j$(nproc)
cd ..
- name: Print ccache stats after full historic build
run : |
ccache --show-stats
- name: Testeth historic
run : |
cd build_historic/test
export NO_NTP_CHECK=1
export NO_ULIMIT_CHECK=1
./testeth -t JsonRpcSuite -- --express --verbosity 4