Skip to content

Commit 26990ed

Browse files
dothebartjsteemannKVS85Sven LuschgyMarkus Pfeiffer
authored
Main (#420)
* QA-273: Feature/python test runner (#401) Co-authored-by: Jan <[email protected]> Co-authored-by: Vadim <[email protected]> * Feature/python test runner (#417) * start implementing a python launch controller * make it work for the first time * try launching outside of oskar. * no more pipes needed * adjust report directory * fix paths, thread naming. * fallback if no env is configured * lint * more work on cluster etc * silence, proper error message for missing variable * convert params * lint * fix slot * fix arangosh.conf, launching of subsequent testruns * try to launch it from fish * implement 7zip * add modules to the docker container * more printing * fix handling * Add pip3 * Fix typo * Typo 2 * handle INNERWORKDIR * fix missing line break * export settings * fix typo * on windows skip !windows tests * lint, refactor, simplify * install 7z * export core directory * work on fish integration * similarize for new python job scheduler * work on reprot generating * try to implement timeout * also upload 7z and txt * also upload 7z and txt * fix deadline * fix workspace handling * fix temporary directory handling * make sure out temp directory exists * RTFM fail * don't put it to the workspace * implement gtest invoking * cleanup * sort, lint * prefer INNERWORKDIR * implement writing test.log * implement html report * bring back function deletet to early * install the windows boomerang handler on top level * fix include * fix reference * print before killing shit * work on timeout * finish deadline handling, rename script * fix exit code handling * lint * thanks @mpoeter for ps aid * make the thread identifier the test plus a growing number * implement central final deadline, which will kick in after 2 minutes * remove debug output * use /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin to locate python * wintendo next try * wintendo next try * wintendo go home * fix calculation of hard time limit * make sure nobody changes the exit code to good * add monkey patches * cleanup deadline * ignore exceptions if no process is there * deadline handling: prioritize incomming lines over timeout counting * fix directory handling * work on result presentation * cleanup * let the file remain open for further info * fix environment variable handling * documentation * fix port handling * work on deadline * fix hard deadline handling * make it 20s * need more time * list processes so we may guess whats actually going on * kill all, then waitpid all * make threads provide half a slot. * be sure to catch * resume just in case, then kill * resume just in case, then kill * ignore resume errors * increase volume * lint * lint * catch more * add multipliers * more load, print load avg * fix sorting by prio - biggest values first * cleanup crash report for size * if test indicates its been crashing create report as well. * more threat to the machine. * timeout * fix typo * delete tzdata subdir first * use load and sockets for throttle control * install required python libs * only see for load [0, 1] * increase container version * anounce deadline at start * don't print to logfile * give better feedback if arangosh fails to launch in first place, thangs @maierlars for bringing up the topic * Update helper.linux.fish * tschuess ruby * re-sync to be stock RTA * fix container numbers, adjust #3 * sync to rta * resync * this is not needed anymore * add --fix-missing * fresh python? * revert to tar.gz * chaos tests in nightlies demand for longer timeouts, since tests run longer. * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * remove more old stuff * ignore encoding errors * increase timeout to hard self kill * switch to one environment variable name * env * limit the amount of coredumps * ignore access denied to open sockets * if we need to wait for the system to cool down on start... * make sure we don't come back good if nothing launched at all * them tiny boxes need more time * need more time * add deadline status to testfailurs.txt * need more time * beautify testfailures.txt * give machine estimate reasons at the start of the run * case may matter * one more environment variable Co-authored-by: Vadim <[email protected]> Co-authored-by: Jan <[email protected]> * Feature/python test runner (#418) * start implementing a python launch controller * make it work for the first time * try launching outside of oskar. * no more pipes needed * adjust report directory * fix paths, thread naming. * fallback if no env is configured * lint * more work on cluster etc * silence, proper error message for missing variable * convert params * lint * fix slot * fix arangosh.conf, launching of subsequent testruns * try to launch it from fish * implement 7zip * add modules to the docker container * more printing * fix handling * Add pip3 * Fix typo * Typo 2 * handle INNERWORKDIR * fix missing line break * export settings * fix typo * on windows skip !windows tests * lint, refactor, simplify * install 7z * export core directory * work on fish integration * similarize for new python job scheduler * work on reprot generating * try to implement timeout * also upload 7z and txt * also upload 7z and txt * fix deadline * fix workspace handling * fix temporary directory handling * make sure out temp directory exists * RTFM fail * don't put it to the workspace * implement gtest invoking * cleanup * sort, lint * prefer INNERWORKDIR * implement writing test.log * implement html report * bring back function deletet to early * install the windows boomerang handler on top level * fix include * fix reference * print before killing shit * work on timeout * finish deadline handling, rename script * fix exit code handling * lint * thanks @mpoeter for ps aid * make the thread identifier the test plus a growing number * implement central final deadline, which will kick in after 2 minutes * remove debug output * use /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin to locate python * wintendo next try * wintendo next try * wintendo go home * fix calculation of hard time limit * make sure nobody changes the exit code to good * add monkey patches * cleanup deadline * ignore exceptions if no process is there * deadline handling: prioritize incomming lines over timeout counting * fix directory handling * work on result presentation * cleanup * let the file remain open for further info * fix environment variable handling * documentation * fix port handling * work on deadline * fix hard deadline handling * make it 20s * need more time * list processes so we may guess whats actually going on * kill all, then waitpid all * make threads provide half a slot. * be sure to catch * resume just in case, then kill * resume just in case, then kill * ignore resume errors * increase volume * lint * lint * catch more * add multipliers * more load, print load avg * fix sorting by prio - biggest values first * cleanup crash report for size * if test indicates its been crashing create report as well. * more threat to the machine. * timeout * fix typo * delete tzdata subdir first * use load and sockets for throttle control * install required python libs * only see for load [0, 1] * increase container version * anounce deadline at start * don't print to logfile * give better feedback if arangosh fails to launch in first place, thangs @maierlars for bringing up the topic * Update helper.linux.fish * tschuess ruby * re-sync to be stock RTA * fix container numbers, adjust #3 * sync to rta * resync * this is not needed anymore * add --fix-missing * fresh python? * revert to tar.gz * chaos tests in nightlies demand for longer timeouts, since tests run longer. * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * remove more old stuff * ignore encoding errors * increase timeout to hard self kill * switch to one environment variable name * env * limit the amount of coredumps * ignore access denied to open sockets * if we need to wait for the system to cool down on start... * make sure we don't come back good if nothing launched at all * them tiny boxes need more time * need more time * add deadline status to testfailurs.txt * need more time * beautify testfailures.txt * give machine estimate reasons at the start of the run * case may matter * one more environment variable * anounce test directory * switch sequence, print first * one more var exported Co-authored-by: Vadim <[email protected]> Co-authored-by: Jan <[email protected]> * Fixed 7z and Signing Added fixes for signing and 7z * Feature/python test runner (#419) * start implementing a python launch controller * make it work for the first time * try launching outside of oskar. * no more pipes needed * adjust report directory * fix paths, thread naming. * fallback if no env is configured * lint * more work on cluster etc * silence, proper error message for missing variable * convert params * lint * fix slot * fix arangosh.conf, launching of subsequent testruns * try to launch it from fish * implement 7zip * add modules to the docker container * more printing * fix handling * Add pip3 * Fix typo * Typo 2 * handle INNERWORKDIR * fix missing line break * export settings * fix typo * on windows skip !windows tests * lint, refactor, simplify * install 7z * export core directory * work on fish integration * similarize for new python job scheduler * work on reprot generating * try to implement timeout * also upload 7z and txt * also upload 7z and txt * fix deadline * fix workspace handling * fix temporary directory handling * make sure out temp directory exists * RTFM fail * don't put it to the workspace * implement gtest invoking * cleanup * sort, lint * prefer INNERWORKDIR * implement writing test.log * implement html report * bring back function deletet to early * install the windows boomerang handler on top level * fix include * fix reference * print before killing shit * work on timeout * finish deadline handling, rename script * fix exit code handling * lint * thanks @mpoeter for ps aid * make the thread identifier the test plus a growing number * implement central final deadline, which will kick in after 2 minutes * remove debug output * use /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin to locate python * wintendo next try * wintendo next try * wintendo go home * fix calculation of hard time limit * make sure nobody changes the exit code to good * add monkey patches * cleanup deadline * ignore exceptions if no process is there * deadline handling: prioritize incomming lines over timeout counting * fix directory handling * work on result presentation * cleanup * let the file remain open for further info * fix environment variable handling * documentation * fix port handling * work on deadline * fix hard deadline handling * make it 20s * need more time * list processes so we may guess whats actually going on * kill all, then waitpid all * make threads provide half a slot. * be sure to catch * resume just in case, then kill * resume just in case, then kill * ignore resume errors * increase volume * lint * lint * catch more * add multipliers * more load, print load avg * fix sorting by prio - biggest values first * cleanup crash report for size * if test indicates its been crashing create report as well. * more threat to the machine. * timeout * fix typo * delete tzdata subdir first * use load and sockets for throttle control * install required python libs * only see for load [0, 1] * increase container version * anounce deadline at start * don't print to logfile * give better feedback if arangosh fails to launch in first place, thangs @maierlars for bringing up the topic * Update helper.linux.fish * tschuess ruby * re-sync to be stock RTA * fix container numbers, adjust #3 * sync to rta * resync * this is not needed anymore * add --fix-missing * fresh python? * revert to tar.gz * chaos tests in nightlies demand for longer timeouts, since tests run longer. * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * Update README.md Co-authored-by: Jan <[email protected]> * remove more old stuff * ignore encoding errors * increase timeout to hard self kill * switch to one environment variable name * env * limit the amount of coredumps * ignore access denied to open sockets * if we need to wait for the system to cool down on start... * make sure we don't come back good if nothing launched at all * them tiny boxes need more time * need more time * add deadline status to testfailurs.txt * need more time * beautify testfailures.txt * give machine estimate reasons at the start of the run * case may matter * one more environment variable * anounce test directory * switch sequence, print first * one more var exported * add disk i/o to the output * better work with M1 performance cores * print other sequence; enable more load[1] * more threads doesn't cut it * print platform * precise M1 detection * two places on mac to collect cores * properly append * fix default directory * use iso-ish datetime format for filenames Co-authored-by: Vadim <[email protected]> Co-authored-by: Jan <[email protected]> Co-authored-by: Markus Pfeiffer <[email protected]> Co-authored-by: Jan <[email protected]> Co-authored-by: Vadim <[email protected]> Co-authored-by: Sven Luschgy <[email protected]> Co-authored-by: Markus Pfeiffer <[email protected]>
1 parent 9569f8b commit 26990ed

23 files changed

+1956
-835
lines changed

Diff for: README.md

+94
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,100 @@ if supported, set number of concurrent builds to `PARALLELISM`
234234

235235
## Testing
236236

237+
`jenkins/helper/test_launch_controller.py` is used to control multiple test executions.
238+
239+
### Its dependencies over stock python3 are:
240+
- psutil to control subprocesses
241+
- py7zr (optional) to build 7z reports instead of tar.bz2
242+
243+
### It's reading these environment variables:
244+
- `INNERWORKDIR` - as the directory to place the report files
245+
- `WORKDIR` - used instead if `INNERWORKDIR` hasn't been set.
246+
- `TEMP` - temporary directory if not `INNERWORKDIR`/ArangoDB
247+
- `TMPDIR` and `TEMP` are passed to the executors.
248+
- `TSHARK` passed as value to `--sniffProgram`
249+
- `DUMPDEVICE` passed as value to `--sniffDevice`
250+
- `SKIPNONDETERMINISTIC` passed on as value to `--skipNondeterministic` to the testing.
251+
- `SKIPTIMECRITICAL` passed on as value to `--skipTimeCritical` to the testing.
252+
- `BUILDMODE` passed on as value to `--buildType` to the testing.
253+
- `DUMPAGENCYONERROR` passed on as value to `--dumpAgencyOnError` to the testing.
254+
- `PORTBASE` passed on as value to `--minPort` and `--maxPort` (+99) to the testing. Defaults to 7000
255+
- `SKIPGREY` passed on as value to `--skipGrey` to the testing.
256+
- `ONLYGREY` passed on as value to `--onlyGrey` to the testing.
257+
- `TIMELIMIT` is used to calculate the execution deadline starting point in time.
258+
- `COREDIR` the directory to locate coredumps for crashes
259+
- `LDAPHOST` to enable the tests with `ldap` flags.
260+
- any parameter in `test-definition.txt` that starts with a `$` is expanded to its value.
261+
262+
### Its Parameters are:
263+
- `PATH/test-definition.txt` - (first parameter) test definitions file from the arangodb source tree
264+
(also used to locate the arangodb source)
265+
- `-f` `[launch|dump]` use `dump` for syntax checking of `test-definition.txt` instead of executing the tests
266+
- `--validate-only` don't run the tests
267+
- `--help-flags` list the flags which can be used in `test-definition.txt`:
268+
- `cluster`: this test requires a cluster
269+
- `single`: this test requires a single server
270+
- `full`: this test is only executed in full tests
271+
- `!full`: this test is only executed in non-full tests
272+
- `gtest`: only the gtests are to be executed
273+
- `ldap`: ldap
274+
- `enterprise`: this test is only executed with the enterprise version
275+
- `!windows`: test is excluded from ps1 output
276+
- `--cluster` filter `test-definition.txt` for all tests flagged as `cluster`
277+
- `--full` - all tests including those flagged as `full` are executed.
278+
- `--gtest` - only gtests are executed
279+
- `--all` - output unfiltered
280+
281+
### Syntax in `test-definition.txt`
282+
Lines consist of these parts:
283+
```
284+
testingJsSuiteName flags params suffix -- args to testing.js
285+
```
286+
where
287+
- `flags` are listed above in `--help-flags`
288+
- params are:
289+
- weight - sequence priority of test, 250 is the default.
290+
- wweight - execution slots to book. defaults to 1, if cluster 4.
291+
- buckets - split testcases to be launched in concurent chunks
292+
Specifying a `*` in front of the number takes the default and multiplies it by the value.
293+
- suffix - if a testsuite is launched several times, make it distinguishable
294+
like shell_aql => shell_aql_vst ; Bucket indexes are appended afterwards.
295+
- `--` literally the two dashes to split the line at.
296+
- `args to testing.js` - anything that `./scripts/unittest --help` would print you.
297+
298+
### job scheduling
299+
To utilize all of the machines resources, tests can be run in parallel. The `execution_slots` are
300+
set to the number of the physical cores of the machine (not threads).
301+
`wweight` is used to add the currently expected load by the tests to be no more than `execution_slots`.
302+
303+
For managing each of these parallel executions of testing.js, worker threads are used. The workers
304+
themselves will spawn a set of I/O threads to capture the output of testing.js into a report file.
305+
306+
The life cycle of a testrun will be as follows:
307+
308+
- the environment variable `TIMELIMIT` defines a *deadline* to all the tests, how much seconds should be allowed.
309+
- tests are running in worker threads.
310+
- main thread keeps control, launches more worker threads, once machine bandwith permits, but only every 5s as closest to not overwhelm the machine while launching arangods.
311+
- tests themselves have their timeouts; `testing.js` will abort if they are reached.
312+
- workers have a progressive timeout, if it doesn't hear back from `testing.js` for 999999999s it will hard kill and abort. [currently high / not used!]
313+
- if workers have no output from `testing.js` they check whether the *deadline* is reached.
314+
- if the *deadline* is reached, `SIG_INT`[* nix] / `SIG_BREAK`[windows] is sent to `testing.js` to trigger its *deadline* feature.
315+
- the reached *deadline* will be indicated to the `testfailures.txt` report file and the logfile of the test in question.
316+
- with *deadline* engageged, `testing.js` can send no more subsequent requests, nor spawn processes => eventually testing will abort.
317+
- force shutdown of arangod Instances will reset the deadline, SIG_ABRT arangods, and try to do core dump analysis.
318+
- workers continue reading pipes from `testing.js`, but once no chars are comming, `waitpid()` checks with a 1s timout whether `testing.js` is done and exited.
319+
- if the worker reaches `180` counters of `waitpid()` invocations it will give up. It will hard kill `testing.js` and all other child processes it can find.
320+
- this should unblock the workers I/O threads, and they should exit.
321+
- the `waitpid()` on `testing.js` should exit, I/O threads should be joined, results should be passed up to the main thread.
322+
- so the workers still have a slugish interpretation of the *deadline*, giving them the chance to collect as much knowledge about the test execution as posible.
323+
- meanwhile the main thread has a *fixed* deadline: 5 minutes after the `TIMELIMIT` is reached.
324+
- if not all workers have indicated their exit before this final deadline:
325+
- the main thread will start killing any subprocesses of itself which it finds.
326+
- after this wait another 20s, to see whether the workers may have been unblocked by the killing
327+
- if not, it shouts "Geronimoooo" and takes the big shotgun, and force-terminates the python process which is running it. This will kill all threads as well and terminate the process.
328+
- if all workers have indicated their exit in time, their threads will be joined.
329+
- reports will be generated.
330+
237331
## Packaging
238332

239333
makeRelease

Diff for: containers/buildUbuntu3.docker/Dockerfile

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ ENV COMPILER_VERSION 9
77

88
ENV CLANG_VERSION 12
99

10-
RUN apt-get update && \
10+
RUN apt-get update --fix-missing && \
1111
apt-get install -y software-properties-common && \
1212
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
1313
apt-get update && \
14-
apt-get upgrade -y
15-
16-
RUN apt-get install -y build-essential gcc-${COMPILER_VERSION} g++-${COMPILER_VERSION} cmake make bison flex python python3-distutils ccache git libjemalloc-dev vim exuberant-ctags gdb fish ruby ruby-httparty ruby-rspec psmisc sudo debhelper debconf jq wget libdb-dev curl gnupg2 gcovr prometheus && gem install persistent_httparty && apt-get clean
14+
apt-get upgrade -y && \
15+
apt-get install -y build-essential gcc-${COMPILER_VERSION} g++-${COMPILER_VERSION} cmake make bison flex python3-psutil python3-distutils ccache git libjemalloc-dev vim exuberant-ctags gdb fish psmisc sudo debhelper debconf jq wget libdb-dev curl gnupg2 gcovr prometheus &&\
16+
apt-get clean
1717

1818
RUN curl -L https://github.com/mozilla/sccache/releases/download/v0.2.15/sccache-v0.2.15-${ARCH}-unknown-linux-musl.tar.gz | tar xvz -C /tmp && mv /tmp/sccache-v0.2.15-${ARCH}-unknown-linux-musl/sccache /usr/bin/sccache && chmod +x /usr/bin/sccache && rm -rf /tmp/sccache-v0.2.15-${ARCH}-unknown-linux-musl
1919

Diff for: containers/buildUbuntu4.docker/Dockerfile

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
FROM ubuntu:20.04
23
MAINTAINER Max Neunhoeffer <[email protected]>
34

@@ -7,12 +8,12 @@ ENV COMPILER_VERSION 9
78

89
ENV CLANG_VERSION 12
910

10-
RUN apt-get update && \
11+
RUN apt-get update --fix-missing && \
1112
apt-get install -y software-properties-common && \
1213
apt-get update && \
1314
apt-get upgrade -y
1415

15-
RUN apt-get install -y build-essential gcc-${COMPILER_VERSION} g++-${COMPILER_VERSION} cmake make bison flex python ccache git libjemalloc-dev vim exuberant-ctags gdb fish ruby ruby-httparty ruby-rspec psmisc sudo debhelper debconf jq wget libdb-dev curl gnupg2 gcovr prometheus && gem install persistent_httparty && apt-get clean
16+
RUN apt-get install -y build-essential gcc-${COMPILER_VERSION} g++-${COMPILER_VERSION} cmake make bison flex python ccache git libjemalloc-dev vim exuberant-ctags gdb fish psmisc sudo debhelper debconf jq wget libdb-dev curl gnupg2 gcovr prometheus && apt-get clean
1617

1718
RUN curl -L https://github.com/mozilla/sccache/releases/download/v0.2.15/sccache-v0.2.15-${ARCH}-unknown-linux-musl.tar.gz | tar xvz -C /tmp && mv /tmp/sccache-v0.2.15-${ARCH}-unknown-linux-musl/sccache /usr/bin/sccache && chmod +x /usr/bin/sccache && rm -rf /tmp/sccache-v0.2.15-${ARCH}-unknown-linux-musl
1819

@@ -32,4 +33,6 @@ RUN git config --global --add safe.directory /work/ArangoDB
3233
RUN git config --global --add safe.directory /work/ArangoDB/enterprise
3334
RUN git config --global --add safe.directory /work/ArangoDB/docs
3435

36+
RUN apt-get install -y python3-pip && pip3 install py7zr psutil
37+
3538
CMD [ "/usr/bin/fish" ]

Diff for: containers/buildUbuntu5.docker/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ ENV COMPILER_VERSION 10
77

88
ENV CLANG_VERSION 12
99

10-
RUN apt-get update && \
10+
RUN apt-get update --fix-missing && \
1111
apt-get install -y software-properties-common && \
1212
apt-get update && \
1313
apt-get upgrade -y
1414

15-
RUN apt-get install -y build-essential gcc-${COMPILER_VERSION} g++-${COMPILER_VERSION} cmake make bison flex python ccache git libjemalloc-dev vim exuberant-ctags gdb fish ruby ruby-httparty ruby-rspec psmisc sudo debhelper debconf jq wget libdb-dev curl gnupg2 gcovr prometheus && gem install persistent_httparty && apt-get clean
15+
RUN apt-get install -y build-essential gcc-${COMPILER_VERSION} g++-${COMPILER_VERSION} cmake make bison flex python ccache git libjemalloc-dev vim exuberant-ctags gdb fish psmisc sudo debhelper debconf jq wget libdb-dev curl gnupg2 gcovr prometheus && apt-get clean
1616

1717
RUN curl -L https://github.com/mozilla/sccache/releases/download/v0.2.15/sccache-v0.2.15-${ARCH}-unknown-linux-musl.tar.gz | tar xvz -C /tmp && mv /tmp/sccache-v0.2.15-${ARCH}-unknown-linux-musl/sccache /usr/bin/sccache && chmod +x /usr/bin/sccache && rm -rf /tmp/sccache-v0.2.15-${ARCH}-unknown-linux-musl
1818

@@ -37,4 +37,6 @@ RUN git config --global --add safe.directory /work/ArangoDB/3rdParty/iresearch
3737
RUN git config --global --add safe.directory /work/ArangoDB/3rdParty/rocksdb
3838
RUN git config --global --add safe.directory /work/ArangoDB/3rdParty/velocypack
3939

40+
RUN apt-get install -y python3-pip && pip3 install py7zr psutil
41+
4042
CMD [ "/usr/bin/fish" ]

Diff for: containers/buildUbuntu6.docker/Dockerfile

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ ENV COMPILER_VERSION 11
77

88
ENV CLANG_VERSION 14
99

10-
RUN apt-get update && \
10+
RUN apt-get update --fix-missing && \
1111
apt-get install -y software-properties-common && \
1212
apt-get update && \
1313
apt-get upgrade -y
@@ -39,4 +39,6 @@ RUN git config --global --add safe.directory /work/ArangoDB/3rdParty/iresearch
3939
RUN git config --global --add safe.directory /work/ArangoDB/3rdParty/rocksdb
4040
RUN git config --global --add safe.directory /work/ArangoDB/3rdParty/velocypack
4141

42+
RUN apt-get install -y python3-pip && pip3 install py7zr psutil
43+
4244
CMD [ "/usr/bin/fish" ]

Diff for: helper.fish

+4-3
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ end
9595
function single ; set -gx TESTSUITE single ; end
9696
function cluster ; set -gx TESTSUITE cluster ; end
9797
function resilience ; set -gx TESTSUITE resilience ; end
98-
function catchtest ; set -gx TESTSUITE catchtest ; end
98+
function catchtest ; set -gx TESTSUITE gtest ; end
99+
function gtest ; set -gx TESTSUITE gtest ; end
99100
if test -z "$TESTSUITE" ; cluster
100101
else ; set -gx TESTSUITE $TESTSUITE ; end
101102
@@ -1518,7 +1519,7 @@ function showConfig
15181519
printf $fmt3 'SkipGrey' $SKIPGREY '(skipGrey/includeGrey)'
15191520
printf $fmt3 'OnlyGrey' $ONLYGREY '(onlyGreyOn/onlyGreyOff)'
15201521
printf $fmt3 'Storage engine' $STORAGEENGINE '(mmfiles/rocksdb)'
1521-
printf $fmt3 'Test suite' $TESTSUITE '(single/cluster/resilience/catchtest)'
1522+
printf $fmt3 'Test suite' $TESTSUITE '(single/cluster/resilience/gtest)'
15221523
printf $fmt2 'Log Levels' (echo $LOG_LEVELS)
15231524
echo
15241525
echo 'Package Configuration'
@@ -1977,7 +1978,7 @@ function moveResultsToWorkspace
19771978
mv $WORKDIR/work/coverage $WORKSPACE
19781979
end
19791980

1980-
set -l matches $WORKDIR/work/*.{asc,deb,dmg,rpm,tar.gz,tar.bz2,zip,html,csv}
1981+
set -l matches $WORKDIR/work/*.{asc,testfailures.txt,deb,dmg,rpm,7z,tar.gz,tar.bz2,zip,html,csv}
19811982
for f in $matches
19821983
echo $f | grep -qv testreport ; and echo "mv $f" ; and mv $f $WORKSPACE; or echo "skipping $f"
19831984
end

Diff for: helper.linux.fish

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,19 @@ set -gx ARCH (uname -m)
1515
set IMAGE_ARGS "--build-arg ARCH=$ARCH"
1616

1717
set -gx UBUNTUBUILDIMAGE3_NAME arangodb/ubuntubuildarangodb3-$ARCH
18-
set -gx UBUNTUBUILDIMAGE3_TAG 16
18+
set -gx UBUNTUBUILDIMAGE3_TAG 17
1919
set -gx UBUNTUBUILDIMAGE3 $UBUNTUBUILDIMAGE3_NAME:$UBUNTUBUILDIMAGE3_TAG
2020

2121
set -gx UBUNTUBUILDIMAGE4_NAME arangodb/ubuntubuildarangodb4-$ARCH
22-
set -gx UBUNTUBUILDIMAGE4_TAG 17
22+
set -gx UBUNTUBUILDIMAGE4_TAG 18
2323
set -gx UBUNTUBUILDIMAGE4 $UBUNTUBUILDIMAGE4_NAME:$UBUNTUBUILDIMAGE4_TAG
2424

2525
set -gx UBUNTUBUILDIMAGE5_NAME arangodb/ubuntubuildarangodb5-$ARCH
26-
set -gx UBUNTUBUILDIMAGE5_TAG 10
26+
set -gx UBUNTUBUILDIMAGE5_TAG 11
2727
set -gx UBUNTUBUILDIMAGE5 $UBUNTUBUILDIMAGE5_NAME:$UBUNTUBUILDIMAGE5_TAG
2828

2929
set -gx UBUNTUBUILDIMAGE6_NAME arangodb/ubuntubuildarangodb6-$ARCH
30-
set -gx UBUNTUBUILDIMAGE6_TAG 2
30+
set -gx UBUNTUBUILDIMAGE6_TAG 3
3131
set -gx UBUNTUBUILDIMAGE6 $UBUNTUBUILDIMAGE6_NAME:$UBUNTUBUILDIMAGE6_TAG
3232

3333
set -gx UBUNTUPACKAGINGIMAGE arangodb/ubuntupackagearangodb-$ARCH:1
@@ -453,11 +453,11 @@ function oskar
453453
and if test "$SAN" = "On"
454454
parallelism 2
455455
clearSanStatus
456-
runInContainer --cap-add SYS_NICE --cap-add SYS_PTRACE (findBuildImage) $SCRIPTSDIR/runTests.fish $argv
456+
runInContainer --security-opt seccomp=unconfined --cap-add SYS_NICE --cap-add SYS_PTRACE (findBuildImage) $SCRIPTSDIR/runTests.fish $argv
457457
set s $status
458458
set s (math $s + (getSanStatus))
459459
else
460-
runInContainer --cap-add SYS_NICE (findBuildImage) $SCRIPTSDIR/runTests.fish $argv
460+
runInContainer --security-opt seccomp=unconfined --cap-add SYS_NICE (findBuildImage) $SCRIPTSDIR/runTests.fish $argv
461461
set s $status
462462
end
463463

Diff for: helper.psm1

+14-8
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ Else
4242
$global:TSHARK = ""
4343
}
4444
}
45+
$ENV:TSHARK=$global:TSHARK
4546

4647
$global:HANDLE_EXE = $null
4748
If (Get-Command handle.exe -ErrorAction SilentlyContinue)
@@ -65,7 +66,7 @@ Else
6566
{
6667
Remove-Item "$global:COREDIR\*" -Recurse -Force
6768
}
68-
$global:RUBY = (Get-Command ruby.exe).Path
69+
$env:COREDIR=$global:COREDIR
6970
$global:INNERWORKDIR = "$WORKDIR\work"
7071
$global:ARANGODIR = "$INNERWORKDIR\ArangoDB"
7172
$global:ENTERPRISEDIR = "$global:ARANGODIR\enterprise"
@@ -191,14 +192,14 @@ Function comm
191192

192193
Function 7zip($Path,$DestinationPath,$moreArgs)
193194
{
194-
Write-Host "7za.exe" -argument "a -mx9 $DestinationPath $Path $moreArgs" -logfile $false -priority "Normal"
195-
proc -process "7za.exe" -argument "a -mx9 $DestinationPath $Path $moreArgs" -logfile $false -priority "Normal"
195+
Write-Host "7z.exe" -argument "a -mx9 $DestinationPath $Path $moreArgs" -logfile $false -priority "Normal"
196+
proc -process "7z.exe" -argument "a -mx9 $DestinationPath $Path $moreArgs" -logfile $false -priority "Normal"
196197
}
197198

198199
Function 7unzip($zip)
199200
{
200-
Write-Host "7za.exe" -argument "x $zip -aoa" -logfile $false -priority "Normal"
201-
proc -process "7za.exe" -argument "x $zip -aoa" -logfile $false -priority "Normal"
201+
Write-Host "7z.exe" -argument "x $zip -aoa" -logfile $false -priority "Normal"
202+
proc -process "7z.exe" -argument "x $zip -aoa" -logfile $false -priority "Normal"
202203
}
203204

204205
Function isGCE
@@ -582,6 +583,11 @@ Function showConfig
582583
Write-Host "------------------------------------------------------------------------------"
583584
Write-Host "Cache Statistics"
584585
showCacheStats
586+
$ENV:SKIPNONDETERMINISTIC = $SKIPNONDETERMINISTIC
587+
$ENV:SKIPTIMECRITICAL = $SKIPTIMECRITICAL
588+
$ENV:SKIPGREY = $SKIPGREY
589+
$ENV:ONLYGREY = $ONLYGREY
590+
$ENV:BUILDMODE = $BUILDMODE
585591
comm
586592
}
587593

@@ -600,7 +606,7 @@ Function resilience
600606
Function catchtest
601607
{
602608
$global:TESTSUITE = "catchtest"
603-
$global:TESTSUITE_TIMEOUT = 1800
609+
$global:TIMELIMIT = 1800
604610
}
605611
If (-Not($TESTSUITE))
606612
{
@@ -1618,8 +1624,8 @@ Function signWindows
16181624
Write-Host "Time: $((Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH.mm.ssZ'))"
16191625
ForEach ($PACKAGE in $(Get-ChildItem -Filter ArangoDB3*.exe).FullName)
16201626
{
1621-
Write-Host "Sign: signtool.exe sign /fd sha1 /td sha1 /sha1 D4F9266E06107CF3C29AA7E5635AD5F76018F6A3 /tr `"http://sha256timestamp.ws.symantec.com/sha256/timestamp`" `"$PACKAGE`""
1622-
proc -process signtool.exe -argument "sign /fd sha1 /td sha1 /sha1 D4F9266E06107CF3C29AA7E5635AD5F76018F6A3 /tr `"http://sha256timestamp.ws.symantec.com/sha256/timestamp`" `"$PACKAGE`"" -logfile "$INNERWORKDIR\$($PACKAGE.Split('\')[-1])-sign.log" -priority "Normal"
1627+
Write-Host "Sign: signtool.exe sign /sm /fd sha1 /td sha1 /sha1 D4F9266E06107CF3C29AA7E5635AD5F76018F6A3 /tr `"http://sha256timestamp.ws.symantec.com/sha256/timestamp`" `"$PACKAGE`""
1628+
proc -process signtool.exe -argument "sign /sm /fd sha1 /td sha1 /sha1 D4F9266E06107CF3C29AA7E5635AD5F76018F6A3 /tr `"http://sha256timestamp.ws.symantec.com/sha256/timestamp`" `"$PACKAGE`"" -logfile "$INNERWORKDIR\$($PACKAGE.Split('\')[-1])-sign.log" -priority "Normal"
16231629
}
16241630
Pop-Location
16251631
}

Diff for: jenkins/helper/allure_commons/_allure.py

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
def attach(**kwargs):
2+
return

0 commit comments

Comments
 (0)