Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IGNITE-13428 Ignite Distributed Environment Tests (IEP-56) #9117

Merged
merged 184 commits into from Jun 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
184 commits
Select commit Hold shift + click to select a range
d970146
ignite-ducktape: Initial commit.
nizhikov Apr 7, 2020
aedd1d4
Merge branch 'master' into ignite-ducktape
nizhikov Apr 7, 2020
c56b8b8
ignite-ducktape: Initial commit.
nizhikov Apr 8, 2020
ac17e7c
Merge branch 'ignite-ducktape2' into ignite-ducktape
nizhikov Apr 8, 2020
200e760
ignite-ducktape: Initial commit.
nizhikov Apr 8, 2020
2b1aba6
Merge branch 'master' into ignite-ducktape
nizhikov Apr 8, 2020
d42ff02
ignite-ducktape: WIP.
nizhikov Apr 9, 2020
f43ac87
ignite-ducktape: WIP.
nizhikov Apr 10, 2020
34185dd
Merge branch 'master' into ignite-ducktape
nizhikov Apr 12, 2020
84c302b
ignite-ducktape: WIP.
nizhikov Apr 13, 2020
eb0109f
Merge branch 'master' into ignite-ducktape
nizhikov May 4, 2020
082b187
ignite-ducktape: fix logging to the docker image instead of src/ignit…
nizhikov May 5, 2020
410e347
ignite-ducktape: console.log now captured for each Ignite node.
nizhikov May 6, 2020
f8b176a
ignite-ducktape: IgniteClientApplication added and working.
nizhikov May 6, 2020
f05dfb3
ignite-ducktape: starting last node after client and waiting for reba…
nizhikov May 6, 2020
c59ec28
ignite-ducktape: starting last node after client and waiting for reba…
nizhikov May 6, 2020
f5eeb04
ignite-ducktape: cleaning garbage.
nizhikov May 6, 2020
7a2a226
ignite-ducktape: cleaning garbage.
nizhikov May 6, 2020
2d57713
ignite-ducktape: cleaning garbage.
nizhikov May 6, 2020
55de212
Merge branch 'master' into ignite-ducktape
nizhikov May 9, 2020
bbf7365
Merge branch 'master' into ignite-ducktape
nizhikov May 9, 2020
c7611c1
ignite-ducktape: yandex cluster file.
nizhikov May 9, 2020
53755e9
ignite-ducktape: Spark integration test added.
nizhikov May 12, 2020
24b8bcc
Merge branch 'master' into ignite-ducktape
nizhikov May 25, 2020
7d4f0d8
naming -> ducktest (#7857)
anton-vinogradov May 27, 2020
dc98ee9
Ignite ducktape (#7866)
anton-vinogradov May 28, 2020
4bfa3aa
Ignite ducktape (#7868)
anton-vinogradov May 28, 2020
b173b50
Merge remote-tracking branch 'remotes/origin/master' into ignite-duck…
anton-vinogradov Jun 16, 2020
06ccab1
Merge remote-tracking branch 'remotes/origin/master' into ignite-duck…
anton-vinogradov Jun 18, 2020
8311f0b
Merge remote-tracking branch 'remotes/origin/master' into ignite-duck…
anton-vinogradov Jun 22, 2020
d6fc9cd
Merge branch 'master' into ignite-ducktape
anton-vinogradov Jul 3, 2020
aeb5db9
Duck is a duck (#7967)
anton-vinogradov Jul 16, 2020
812fc63
Merge branch 'master' into ignite-ducktape
nizhikov Jul 16, 2020
46334eb
Merge branch 'ignite-ducktape' of https://github.com/apache/ignite in…
nizhikov Jul 16, 2020
7bf4d5b
Update of the Dockerfile to conform security policies.
nizhikov Jul 16, 2020
328ef28
bump version
nizhikov Jul 16, 2020
772bd39
fixing checkstyle
nizhikov Jul 16, 2020
73b897b
compilation & runtime fix
anton-vinogradov Jul 20, 2020
51f2ea7
Merge remote-tracking branch 'origin/ignite-ducktape' into ignite-duc…
anton-vinogradov Jul 20, 2020
9719ebb
Merge remote-tracking branch 'remotes/origin/master' into ignite-duck…
anton-vinogradov Jul 20, 2020
ea7fcd5
Add zookeeper service and basic topology test to ignite-ducktests (#8…
ivandasch Jul 21, 2020
df24284
mem limit fix
anton-vinogradov Jul 21, 2020
57aa778
Add jmx client and some basic discovery stuff fo IgniteClusterNode. (…
ivandasch Jul 23, 2020
c84478f
cleanup
anton-vinogradov Jul 23, 2020
5f2ca37
Make ducktape work with ISE / ISP (#8071)
timoninmaxim Jul 29, 2020
330c17b
Ducktape codestyle (#8098)
ivandasch Jul 30, 2020
495e07c
ducktape to v0.7.8 (#8100)
Vladsz83 Jul 30, 2020
2c47911
Merge remote-tracking branch 'remotes/origin/master' into ignite-duck…
anton-vinogradov Jul 31, 2020
6bcbb89
Fix zk wait for finishing node. (#8106)
ivandasch Jul 31, 2020
ef9dda8
Support inclusion of optional modules in services (#8097)
timoninmaxim Jul 31, 2020
3d9d7a5
Merge remote-tracking branch 'remotes/origin/master' into ignite-duck…
anton-vinogradov Aug 4, 2020
254bb67
Json params support (#8109)
anton-vinogradov Aug 5, 2020
36ed2c3
Ignite ducktape control sh (#8127)
ivandasch Aug 10, 2020
77c3ff4
Cellular affinity test (#8130)
anton-vinogradov Aug 11, 2020
d750eee
Ignite ducktape test decorators (#8137)
ivandasch Aug 11, 2020
9e34638
looks good (#8141)
Vladsz83 Aug 11, 2020
84d8016
API simplification (#8140)
anton-vinogradov Aug 12, 2020
2e4b4ad
Fix measuring timers in discovery tests (#8142)
Vladsz83 Aug 12, 2020
879fa1f
Fail fast (#8147)
anton-vinogradov Aug 13, 2020
27239fe
Merge remote-tracking branch 'remotes/origin/master' into ignite-duck…
anton-vinogradov Aug 13, 2020
5f3b0f1
Ducktape Service Specs (#8154)
timoninmaxim Aug 17, 2020
52e8ecc
Merge remote-tracking branch 'remotes/origin/master' into ignite-duck…
anton-vinogradov Aug 18, 2020
f839a29
fix: collect logs for IgniteAwareService (#8171)
timoninmaxim Aug 19, 2020
3b9c6ac
Set version of pylint (#8181)
ivandasch Aug 24, 2020
f707e43
Ignite ducktape py3 (#8155)
ivandasch Aug 24, 2020
c6f5504
Loading in discovery tests. (#8159)
Vladsz83 Aug 26, 2020
bb5453f
Ducktape parallel (#8192)
ivandasch Aug 31, 2020
793f056
Transaction to the discovery test. (#8194)
Vladsz83 Sep 4, 2020
4d0d349
Merge remote-tracking branch 'remotes/origin/master' into ignite-duck…
anton-vinogradov Sep 4, 2020
3c537ca
Implements @ignite_versions decorator. Add support to override parame…
ivandasch Sep 4, 2020
47d1311
IGNITE-13433 Benchmark confirms operation's latency drop decrease on …
anton-vinogradov Sep 15, 2020
db85d67
Merge remote-tracking branch 'remotes/origin/master' into ignite-duck…
anton-vinogradov Sep 15, 2020
af0f0a7
IGNITE-13429 Integration test of control.sh transactions' management …
ivandasch Sep 15, 2020
4dfdbcc
Add check codestyle (flake8) (#8248)
ivandasch Sep 16, 2020
f7e1755
Fix discovery templates discovery path (#8271)
timoninmaxim Sep 23, 2020
0db59f7
Remove tox from ignitetest setup.py due to version conflict with duck…
timoninmaxim Sep 23, 2020
cb0b247
IGNITE-13434 add assertion test (#8259)
oleg-ostanin Sep 24, 2020
cedb251
IGNITE-13481 Fix decorators @ignite_versions and @version_if. Introdu…
ivandasch Sep 25, 2020
7fbe369
Update README.md (#8288)
timoninmaxim Sep 30, 2020
0b4b909
Merge branch 'master' into ignite-ducktape
nizhikov Sep 30, 2020
a50949a
typo fix
anton-vinogradov Oct 5, 2020
d9decd7
Pme test fix (#8321)
anton-vinogradov Oct 7, 2020
c435d93
typo fix
anton-vinogradov Oct 7, 2020
241e304
IGNITE-13552 PME-free test should check both drops (PME duration vs P…
anton-vinogradov Oct 8, 2020
281458e
IGNITE-13571 (#8349)
anton-vinogradov Oct 12, 2020
3d955e1
Merge remote-tracking branch 'origin/master' into ignite-ducktape
anton-vinogradov Oct 20, 2020
b70d2dd
JVM_OPTS fixed
anton-vinogradov Oct 20, 2020
8e9350e
Ducktests iptables (#8211)
Vladsz83 Oct 21, 2020
797dbfd
IGNITE-13599 Switch tests should have better precision (#8374)
anton-vinogradov Oct 22, 2020
bd26242
IGNITE-13489 Clients log in and out of the topology (#8362)
SwirMix Oct 23, 2020
b319b34
Merge remote-tracking branch 'origin/master' into ignite-ducktape
anton-vinogradov Oct 26, 2020
d819023
Logging improvement
anton-vinogradov Oct 28, 2020
d09d651
IGNITE-13638 : Bring log config to ducktape tests (#8405)
Vladsz83 Oct 29, 2020
7bb2886
IGNITE-13620 : Bind ignite node to 1 address in the ducktests (#8399)
Vladsz83 Oct 29, 2020
fa6389e
IGNITE-13660 Unexpected NODE_LEFT on graceful stop (at ducktests) (#8…
anton-vinogradov Nov 5, 2020
a44d5a3
IGNITE-13645 : Discovery ducktape test should detect failed nodes by …
Vladsz83 Nov 5, 2020
b6043d8
Merge remote-tracking branch 'origin/master' into ignite-ducktape
anton-vinogradov Nov 10, 2020
4ed79a5
Fix regexp in baseline output. (#8450)
ivandasch Nov 12, 2020
d354c76
IGNITE-13694 Check difference between SIGTERM, SIGKILL and Disconnect…
anton-vinogradov Nov 13, 2020
90a8695
IGNITE-13666 : Fix detection of failed node number in the discovery d…
Vladsz83 Nov 13, 2020
d292458
Implement custom cluster metadata decorator with support of global cl…
ivandasch Nov 18, 2020
dd071b4
Implement IntEnum enhancement (construct_from) for better support of …
ivandasch Nov 19, 2020
aecf851
IGNITE-13646 : Turn failure detection timeout into a parameter in dis…
Vladsz83 Nov 23, 2020
41606e9
IGNITE-13703 Check difference between TcpDiscovery and ZookeeperDisco…
anton-vinogradov Nov 25, 2020
4716452
Merge remote-tracking branch 'origin/master' into ignite-ducktape
anton-vinogradov Nov 26, 2020
6995e93
IGNITE-13704 : Discovery ducktest: Reduce FDT. Fix netfilter logs. Ma…
Vladsz83 Nov 30, 2020
1546a76
IGNITE-13778: fix startup_timeout_sec on discovery_test.py (#8519)
Sega76 Dec 1, 2020
cbfdf07
Merge remote-tracking branch 'origin/master' into ignite-ducktape
anton-vinogradov Dec 2, 2020
eb94300
IGNITE-13790 Configured detection timeout at cellular switch test (#8…
anton-vinogradov Dec 7, 2020
bca8bfe
IGNITE-13789 Add 2.9.0 version to ducktape tests (#8536)
Dec 9, 2020
21f4c71
IGNITE-13828: Change ducktape dependency to own fork (#8555)
Sega76 Dec 14, 2020
dd6f2f7
IGNITE-13829: added rotate log (#8578)
Sega76 Dec 18, 2020
cbf8bdf
IGNITE-13882 Add parametrization to ducktape install_root and persist…
ivandasch Dec 25, 2020
362e8c3
Check master (#8620)
Sega76 Dec 28, 2020
243011c
Log fix (#8661)
Vladsz83 Jan 15, 2021
6565798
params fix (#8662)
Vladsz83 Jan 18, 2021
f904aa2
IGNITE-14012 fix ducktape jmx_tools MBean pattern (#8672)
map7000 Jan 22, 2021
0541ac3
IGNITE-14038 : Separate JVM settings in the ducktests. (#8660)
Vladsz83 Jan 22, 2021
500d81d
Add additional unit test for merge jvm (#8687)
ivandasch Jan 25, 2021
6fd2eb2
IGNITE-14046 Update ducktape version to 0.8.2 in ignite-ducktape modu…
ivandasch Jan 26, 2021
170599f
Run tests fix (#8705)
ivandasch Jan 26, 2021
f610f56
IGNITE-14054 : Improve discovery ducktest: add partial network drop. …
Vladsz83 Jan 29, 2021
c35850e
IGNITE-13895: SSL usage in ducktape tests (#8623)
Sega76 Feb 1, 2021
1fc213f
IGNITE-14105: Fix ignoring tests PmeFreeSwitchTests (#8734)
Sega76 Feb 1, 2021
b7b44a9
IGNITE-14106 Get rid of obsolete version testing. All tests should be…
anton-vinogradov Feb 5, 2021
8c2019b
Remove notloaded discotests (#8758)
Vladsz83 Feb 5, 2021
71cc2cf
GNITE-13835 : Improve discovery ducktape test to research small timeo…
Vladsz83 Feb 8, 2021
492a3fc
Revert "Check master (#8620)"
anton-vinogradov Feb 10, 2021
779ce47
Merge remote-tracking branch 'origin/master' into ignite-ducktape
anton-vinogradov Feb 10, 2021
349be54
version update
anton-vinogradov Feb 10, 2021
0c45ac8
Merge remote-tracking branch 'origin/master' into ignite-ducktape
anton-vinogradov Feb 15, 2021
07f1b5f
IGNITE-14192: added modules/ducktests/tests/certs to .gitignore (#8804)
Sega76 Feb 17, 2021
8fa155c
IGNITE-13492: Added snapshot test to ducktests (#8575)
Sega76 Feb 19, 2021
caed7ae
Merge remote-tracking branch 'origin/master' into ignite-ducktape
anton-vinogradov Feb 23, 2021
9493647
IGNITE-13446 (#8517)
Sega76 Feb 23, 2021
43b926a
IGNITE-14242 Build ducktests with minimal required classpath
anton-vinogradov Feb 25, 2021
9656a73
IGNITE-13430 Create minimal documentation for ducktape tests (#8829)
anton-vinogradov Feb 26, 2021
e60dea1
IGNITE-14023 Password based authentication support in ducktape tests …
map7000 Mar 15, 2021
572133b
IGNITE-14228 Ducktape test of rebalance for in-memory mode (#8832)
x-kreator Mar 15, 2021
6bdcdca
IGNITE-14329 Set 2.9.1 as LATEST_2.9 and 2.10 as LATEST
anton-vinogradov Mar 18, 2021
e41e8fd
IGNITE-14337 Increase default failure detection timeout to 2 seconds …
anton-vinogradov Mar 19, 2021
3a68ccb
Addh sha-1 hash of args to results dir and test name. (#8899)
ivandasch Mar 19, 2021
6933aa9
IGNITE-14300 Rebalance speed as part of test result data (#8891)
x-kreator Mar 23, 2021
25841d2
Linter fixes because of RED BAD merge from https://github.com/apache/…
anton-vinogradov Mar 24, 2021
0af3592
Merge remote-tracking branch 'origin/master' into ignite-ducktape
anton-vinogradov Mar 24, 2021
488ecfe
IGNITE-14395 Shorter test results directory name (#8932)
x-kreator Mar 26, 2021
c626d9d
IGNITE-14396: Сrash of snapshot test on ducktape (#8930)
Sega76 Mar 26, 2021
ac544aa
IGNITE-14391 Multi-node cache data preloading (#8927)
x-kreator Mar 29, 2021
6ca6f8f
IGNITE-14422: Version management for ducktape. (#8938)
Sega76 Mar 29, 2021
ab881ba
IGNITE-14333 Services should be stopped only once (#8894)
anton-vinogradov Mar 29, 2021
62474bc
IGNITE-14437 : Adjust test params: exclude input net failures with di…
Vladsz83 Mar 30, 2021
235b25e
IGNITE-14390 Add rebalance statistic to test result data (#8945)
x-kreator Mar 30, 2021
5eb3a5d
IGNITE-14455: The directory with logs must contain IgniteConfiguratio…
Sega76 Apr 2, 2021
aa2b706
IGNITE-14463 Support of testing Ignite based products with ducktape t…
nizhikov Apr 2, 2021
8c432ba
Ignite-14452 : Add checking of the iptables settings applied (#8954)
Vladsz83 Apr 2, 2021
21c0a5c
IGNITE-13605 Basic PDS compatibility test (#8971)
map7000 Apr 6, 2021
0d84263
IGNITE-14483 Ignite_app and ignite clean_up (#8975)
anton-vinogradov Apr 7, 2021
26c40bd
IGNITE-13970 Thin client compatibility test (#8968)
eadha Apr 7, 2021
a98a4b3
IGNITE-14503 Ability to specify project (fork) via the Version (#8996)
anton-vinogradov Apr 14, 2021
8470295
Removed obsolete linter ignore
anton-vinogradov Apr 14, 2021
85ea232
IGNITE-14585 IgniteSpec can provide arbitrary configs (#9013)
nizhikov Apr 19, 2021
c18062b
IGNITE-14592 Incapsulate configuration preparation (#9019)
nizhikov Apr 19, 2021
04d59bc
IGNITE-14592 Minor fix.
nizhikov Apr 19, 2021
b52b0ac
IGNITE-14509 XML-based configuration for thin client (#8998)
eadha Apr 20, 2021
09050ab
IGNITE-14601 Specs should use service's params instead of copying. (#…
anton-vinogradov Apr 21, 2021
c8b905c
IGNITE-14622 Snapshot test simplification (#9033)
anton-vinogradov Apr 22, 2021
f9183b6
IGNITE-14618 Increase stop timeout to 60 seconds (#9034)
anton-vinogradov Apr 22, 2021
6a80994
IGNITE-14631 SSL certificates generation via python code (#9038)
nizhikov Apr 23, 2021
389f42a
Merge branch 'master' into ignite-ducktape
nizhikov Apr 23, 2021
2c8805f
IGNITE-14629 Update ducktests documentation about forks run (form rel…
anton-vinogradov Apr 26, 2021
ee3f454
IGNITE-14520 Plugins support in Ignite configuration (#9008)
map7000 Apr 29, 2021
f23241b
IGNITE-14520 fix SSL certs generation
nizhikov Apr 30, 2021
79027ca
IGNITE-14659 Check mutlikey and noncollocated tx impact on sync-free …
anton-vinogradov May 7, 2021
ccd1d4d
IGNITE-14600 SSL test for thin client (#9071)
eadha May 11, 2021
cdb395b
IGNITE-14701 Simple PDS upgrade test (#9093)
anton-vinogradov May 13, 2021
c314e7f
IGNITE-14668 SSL certificates generation on parallel run (#9065)
map7000 May 14, 2021
c977265
IGNITE-14727 SSL test should work with custom persistance root (#9099)
map7000 May 18, 2021
2fd1d74
IGNITE-14485 : Docker execution fail on iptables change (#9104)
Vladsz83 May 20, 2021
a0572b7
Merge remote-tracking branch 'origin/master' into ignite-ducktape
anton-vinogradov May 26, 2021
d3dde8e
Incorrect master merge fix
anton-vinogradov May 26, 2021
64283c9
IGNITE-14786 Authentication ducktest should not use internal api (#9…
map7000 May 27, 2021
73c5b2d
IGNITE-14780 Thin client test should use versions from globals (#9147)
map7000 Jun 18, 2021
fdc1b2e
IGNITE-14477 Add test for rebalance with persistence - Fixes #9142.
Sega76 Jun 24, 2021
45e439b
Merge remote-tracking branch 'origin/master' into ignite-ducktape
anton-vinogradov Jun 29, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 10 additions & 0 deletions .gitignore
Expand Up @@ -86,3 +86,13 @@ packages
**/venv
**/.pytest_cache
**/pyignite.egg-info

#Ducktape
/results
.ducktape
*.pyc
/tests/venv
modules/ducktests/tests/docker/build/**
modules/ducktests/tests/.tox
modules/ducktests/tests/certs/*
modules/ducktests/tests/ignitetest.egg-info/**
16 changes: 16 additions & 0 deletions .travis.yml
Expand Up @@ -13,6 +13,10 @@
# See the License for the specific language governing permissions and
# limitations under the License.

_ducktape-tox: &ducktape-tox
install: pip install tox
before_script: cd modules/ducktests/tests

matrix:
include:
- language: java
Expand Down Expand Up @@ -60,3 +64,15 @@ matrix:
script: mvn test -Pcheck-test-suites,all-java,all-scala,scala -B -V
before_cache: rm -rfv $HOME/.m2/repository/org/apache/ignite
cache: { directories: [ $HOME/.m2/repository ] }

- language: python
python: 3.7.9
<<: *ducktape-tox
script:
- tox -e py37

- language: python
python: 3.8.5
<<: *ducktape-tox
script:
- tox -e linter,codestyle,py38
2 changes: 1 addition & 1 deletion bin/control.sh
Expand Up @@ -166,7 +166,7 @@ elif [ $version -ge 11 ] ; then
${CONTROL_JVM_OPTS}"
fi

if [ -n "${JVM_OPTS}" ] ; then
if [ -n "${JVM_OPTS:-}" ] ; then
echo "JVM_OPTS environment variable is set, but will not be used. To pass JVM options use CONTROL_JVM_OPTS"
echo "JVM_OPTS=${JVM_OPTS}"
fi
Expand Down
26 changes: 16 additions & 10 deletions bin/include/build-classpath.sh
Expand Up @@ -47,21 +47,27 @@ includeToClassPath() {

for file in $1/*
do
if [ -d ${file} ] && [ -d "${file}/target" ]; then
if [ -d "${file}/target/classes" ]; then
IGNITE_LIBS=${IGNITE_LIBS}${SEP}${file}/target/classes
fi
if [[ -z "${EXCLUDE_MODULES:-}" ]] || [[ ${EXCLUDE_MODULES:-} != *"`basename $file`"* ]]; then
if [ -d ${file} ] && [ -d "${file}/target" ]; then
if [ -d "${file}/target/classes" ]; then
IGNITE_LIBS=${IGNITE_LIBS}${SEP}${file}/target/classes
fi

if [ -d "${file}/target/test-classes" ]; then
IGNITE_LIBS=${IGNITE_LIBS}${SEP}${file}/target/test-classes
fi
if [[ -z "${EXCLUDE_TEST_CLASSES:-}" ]]; then
if [ -d "${file}/target/test-classes" ]; then
IGNITE_LIBS=${IGNITE_LIBS}${SEP}${file}/target/test-classes
fi
fi

if [ -d "${file}/target/libs" ]; then
IGNITE_LIBS=${IGNITE_LIBS}${SEP}${file}/target/libs/*
if [ -d "${file}/target/libs" ]; then
IGNITE_LIBS=${IGNITE_LIBS}${SEP}${file}/target/libs/*
fi
fi
else
echo "$file excluded by EXCLUDE_MODULES settings"
fi
done

IFS=$SAVEIFS
}

Expand Down
126 changes: 126 additions & 0 deletions modules/ducktests/README.md
@@ -0,0 +1,126 @@
# Overview
The `ignitetest` framework provides basic functionality and services
to write integration tests for Apache Ignite. This framework bases on
the `ducktape` test framework, for information about it check the links:
- https://github.com/confluentinc/ducktape - source code of the `ducktape`.
- http://ducktape-docs.readthedocs.io - documentation to the `ducktape`.

Structure of the `tests` directory is:
- `./ignitetest/services` contains basic services functionality.
- `./ignitetest/utils` contains utils for testing.
- `./ignitetest/tests` contains tests.
- `./checks` contains unit tests of utils, tests' decorators etc.

# Local run
Docker is used to emulate distributed environment. Single container represents
a running node.

## Requirements
To just start tests locally the only requirement is preinstalled `docker`.
For development process requirements are `python` >= 3.7.

## Run tests
- Change a current directory to`${IGNITE_HOME}`
- Build Apache IGNITE invoking `${IGNITE_HOME}/scripts/build-module.sh ducktests`
- Change a current directory to `${IGNITE_HOME}/modules/ducktests/tests`
- Run tests in docker containers using a following command:
```
./docker/run_tests.sh
```
- For detailed help and instructions, use a following command:
```
./docker/run_tests.sh --help
```
- Test reports, including service logs, are located in the `${IGNITE_HOME}/results` directory.

## Runned tests management
- Tear down all the currently active ducker-ignite nodes using a following command:
```
./docker/clean_up.sh
```

# Real environment run
[Ducktape](https://ducktape-docs.readthedocs.io/en/latest/index.html) allow runs on
Custom cluster, Vagrant, K8s, Mesos, Docker, cloud providers, etc.

## Requirements
- Set up the cluster.
See `./docker/Dockerfile` for servers setup hints.

## Run tests
- Change a current directory to`${IGNITE_HOME}`
- Build Apache IGNITE invoking `${IGNITE_HOME}/scripts/build-module.sh ducktests`
- Run tests using [Ducktape](https://ducktape-docs.readthedocs.io/en/latest/run_tests.html). \
For example:
```
ducktape --results-root=./results --cluster-file=./cluster.json --repeat 1 --max-parallel 16 ./modules/ducktests/tests/ignitetest
```
# Custom Ignites (forks) testing
## Run all tests
### Setup
Any version of Apache Ignite, or it's fork, can be tested.
Binary releases supported as well as compiled sources.

- Binary releases should be located at `/opt` directory, eg. `/opt/ignite-2.11.0`.
- Source releases also should be located at `/opt` directory, but should be compiled before the first use.\
Use the following command to compile sources properly:
```
./scripts/build-module.sh ducktests
```
You may replace `/opt` with custom directory by setting `install_root` globals param. \
For example, `--globals-json, eg: {"install_root": "/dir42"}`

### Execution
You may set versions (products) using `@ignite_versions` decorator at code
```
@ignite_versions(str(DEV_BRANCH), str(LATEST))
```
or passing versions set via globals during the execution
```
--globals-json, eg: {"ignite_versions":["2.8.1", "dev"]}
```
You may also specify product prefix by `project` param at globals, for example:
```
--globals-json, eg: {"project": "fork" ,"ignite_versions": ["ignite-2.8.1", "2.8.1", "dev"]}
```
will execute tests on `ignite-2.8.1, fork-2.8.1, fork-dev`

## Run tests from the external source/repository
TBD

# Special runs
## Run with enabled security
### Run with SSL enabled
TBD

### Run with build-in authentication enabled
TBD

# Development
## Preparing development environment
- Create a virtual environment and activate it using following commands:
```
python3 -m venv ~/.virtualenvs/ignite-ducktests-dev
source ~/.virtualenvs/ignite-ducktests-dev/bin/activate
```
- Change a current directory to `${IGNITE_HOME}/modules/ducktests/tests`. We refer to it as `${DUCKTESTS_DIR}`.
- Install requirements and `ignitetests` as editable using following commands:
```
pip install -r docker/requirements-dev.txt
pip install -e .
```
---

- For running unit tests invoke `pytest` in `${DUCKTESTS_DIR}`.
- For checking codestyle invoke `flake8` in `${DUCKTESTS_DIR}`.
- For running linter invoke `pylint --rcfile=tox.ini ignitetests checks` in `${DUCKTESTS_DIR}`.

#### Run checks over multiple python's versions using tox (optional)
All commits and PR's are checked against multiple python's version, namely 3.6, 3.7 and 3.8.
If you want to check your PR as it will be checked on Travis CI, you should do following steps:

- Install `pyenv`, see installation instruction [here](https://github.com/pyenv/pyenv#installation).
- Install different versions of python (recommended versions are `3.7.9` and `3.8.5`)
- Activate them with a command `pyenv shell 3.7.9 3.8.5`
- Install `tox` by invoking a command `pip install tox`
- Change a current directory to `${DUCKTESTS_DIR}` and invoke `tox`