> Have you had a chance to deploy ducktests in bare metal? Working on servers obtaining.
On Thu, Jul 9, 2020 at 10:11 AM Max Shonichev <mshon...@yandex.ru> wrote: > Anton, > > well, strange thing, but clean up and rerun helped. > > > Ubuntu 18.04 > > > ==================================================================================================== > SESSION REPORT (ALL TESTS) > ducktape version: 0.7.7 > session_id: 2020-07-06--003 > run time: 4 minutes 44.835 seconds > tests run: 5 > passed: 5 > failed: 0 > ignored: 0 > > ==================================================================================================== > test_id: > > ignitetest.tests.benchmarks.add_node_rebalance_test.AddNodeRebalanceTest.test_add_node.version=2.8.1 > status: PASS > run time: 41.927 seconds > {"Rebalanced in (sec)": 1.02205491065979} > > ---------------------------------------------------------------------------------------------------- > test_id: > > ignitetest.tests.benchmarks.add_node_rebalance_test.AddNodeRebalanceTest.test_add_node.version=dev > status: PASS > run time: 51.985 seconds > {"Rebalanced in (sec)": 0.0760810375213623} > > ---------------------------------------------------------------------------------------------------- > test_id: > > ignitetest.tests.benchmarks.pme_free_switch_test.PmeFreeSwitchTest.test.version=2.7.6 > status: PASS > run time: 1 minute 4.283 seconds > {"Streamed txs": "1900", "Measure duration (ms)": "34818", "Worst > latency (ms)": "31035"} > > ---------------------------------------------------------------------------------------------------- > test_id: > > ignitetest.tests.benchmarks.pme_free_switch_test.PmeFreeSwitchTest.test.version=dev > status: PASS > run time: 1 minute 13.089 seconds > {"Streamed txs": "73134", "Measure duration (ms)": "35843", "Worst > latency (ms)": "139"} > > ---------------------------------------------------------------------------------------------------- > test_id: > > ignitetest.tests.spark_integration_test.SparkIntegrationTest.test_spark_client > status: PASS > run time: 53.332 seconds > > ---------------------------------------------------------------------------------------------------- > > > MacBook > > ================================================================================ > SESSION REPORT (ALL TESTS) > ducktape version: 0.7.7 > session_id: 2020-07-06--001 > run time: 6 minutes 58.612 seconds > tests run: 5 > passed: 5 > failed: 0 > ignored: 0 > > ================================================================================ > test_id: > > ignitetest.tests.benchmarks.add_node_rebalance_test.AddNodeRebalanceTest.test_add_node.version=2.8.1 > status: PASS > run time: 48.724 seconds > {"Rebalanced in (sec)": 3.2574470043182373} > > -------------------------------------------------------------------------------- > test_id: > > ignitetest.tests.benchmarks.add_node_rebalance_test.AddNodeRebalanceTest.test_add_node.version=dev > status: PASS > run time: 1 minute 23.210 seconds > {"Rebalanced in (sec)": 2.165921211242676} > > -------------------------------------------------------------------------------- > test_id: > > ignitetest.tests.benchmarks.pme_free_switch_test.PmeFreeSwitchTest.test.version=2.7.6 > status: PASS > run time: 1 minute 12.659 seconds > {"Streamed txs": "642", "Measure duration (ms)": "33177", "Worst latency > (ms)": "31063"} > > -------------------------------------------------------------------------------- > test_id: > > ignitetest.tests.benchmarks.pme_free_switch_test.PmeFreeSwitchTest.test.version=dev > status: PASS > run time: 1 minute 57.257 seconds > {"Streamed txs": "32924", "Measure duration (ms)": "48252", "Worst > latency (ms)": "1010"} > > -------------------------------------------------------------------------------- > test_id: > > ignitetest.tests.spark_integration_test.SparkIntegrationTest.test_spark_client > status: PASS > run time: 1 minute 36.317 seconds > > ============= > > while relative numbers proportion remains the same for different Ignite > versions, absolute number for mac/linux differ more then twice. > > I'm finalizing code with 'local Tiden' appliance for your tests. PR > would be ready soon. > > Have you had a chance to deploy ducktests in bare metal? > > > > On 06.07.2020 14:27, Anton Vinogradov wrote: > > Max, > > > > Thanks for the check! > > > >> Is it OK for those tests to fail? > > No. > > I see really strange things at logs. > > Looks like you have concurrent ducktests run started not expected > services, > > and this broke the tests. > > Could you please clean up the docker (use clean-up script [1]). > > Compile sources (use script [2]) and rerun the tests. > > > > [1] > > > https://github.com/anton-vinogradov/ignite/blob/dc98ee9df90b25eb5d928090b0e78b48cae2392e/modules/ducktests/tests/docker/clean_up.sh > > [2] > > > https://github.com/anton-vinogradov/ignite/blob/3c39983005bd9eaf8cb458950d942fb592fff85c/scripts/build.sh > > > > On Mon, Jul 6, 2020 at 12:03 PM Nikolay Izhikov <nizhi...@apache.org> > wrote: > > > >> Hello, Maxim. > >> > >> Thanks for writing down the minutes. > >> > >> There is no such thing as «Nikolay team» on the dev-list. > >> I propose to focus on product requirements and what we want to gain from > >> the framework instead of taking into account the needs of some team. > >> > >> Can you, please, write down your version of requirements so we can > reach a > >> consensus on that and therefore move to the discussion of the > >> implementation? > >> > >>> 6 июля 2020 г., в 11:18, Max Shonichev <mshon...@yandex.ru> > написал(а): > >>> > >>> Yes, Denis, > >>> > >>> common ground seems to be as follows: > >>> Anton Vinogradov and Nikolay Izhikov would try to prepare and run PoC > >> over physical hosts and share benchmark results. In the meantime, while > I > >> strongly believe that dockerized approach to benchmarking is a road to > >> misleading and false positives, I'll prepare a PoC of Tiden in > dockerized > >> environment to support 'fast development prototyping' usecase Nikolay > team > >> insist on. It should be a matter of few days. > >>> > >>> As a side note, I've run Anton PoC locally and would like to have some > >> comments about results: > >>> > >>> Test system: Ubuntu 18.04, docker 19.03.6 > >>> Test commands: > >>> > >>> > >>> git clone -b ignite-ducktape g...@github.com: > anton-vinogradov/ignite.git > >>> cd ignite > >>> mvn clean install -DskipTests -Dmaven.javadoc.skip=true > >> -Pall-java,licenses,lgpl,examples,!spark-2.4,!spark,!scala > >>> cd modules/ducktests/tests/docker > >>> ./run_tests.sh > >>> > >>> Test results: > >>> > >> > ==================================================================================================== > >>> SESSION REPORT (ALL TESTS) > >>> ducktape version: 0.7.7 > >>> session_id: 2020-07-05--004 > >>> run time: 7 minutes 36.360 seconds > >>> tests run: 5 > >>> passed: 3 > >>> failed: 2 > >>> ignored: 0 > >>> > >> > ==================================================================================================== > >>> test_id: > >> > ignitetest.tests.benchmarks.add_node_rebalance_test.AddNodeRebalanceTest.test_add_node.version=2.8.1 > >>> status: FAIL > >>> run time: 3 minutes 12.232 seconds > >>> > >> > ---------------------------------------------------------------------------------------------------- > >>> test_id: > >> > ignitetest.tests.benchmarks.pme_free_switch_test.PmeFreeSwitchTest.test.version=2.7.6 > >>> status: FAIL > >>> run time: 1 minute 33.076 seconds > >>> > >>> > >>> Is it OK for those tests to fail? Attached is full test report > >>> > >>> > >>> On 02.07.2020 17:46, Denis Magda wrote: > >>>> Folks, > >>>> Please share the summary of that Slack conversation here for records > >> once > >>>> you find common ground. > >>>> - > >>>> Denis > >>>> On Thu, Jul 2, 2020 at 3:22 AM Nikolay Izhikov <nizhi...@apache.org> > >> wrote: > >>>>> Igniters. > >>>>> > >>>>> All who are interested in integration testing framework discussion > are > >>>>> welcome into slack channel - > >>>>> > >> > https://join.slack.com/share/zt-fk2ovehf-TcomEAwiXaPzLyNKZbmfzw?cdn_fallback=2 > >>>>> > >>>>> > >>>>> > >>>>>> 2 июля 2020 г., в 13:06, Anton Vinogradov <a...@apache.org> > написал(а): > >>>>>> > >>>>>> Max, > >>>>>> Thanks for joining us. > >>>>>> > >>>>>>> 1. tiden can deploy artifacts by itself, while ducktape relies on > >>>>>>> dependencies being deployed by external scripts. > >>>>>> No. It is important to distinguish development, deploy, and > >>>>> orchestration. > >>>>>> All-in-one solutions have extremely limited usability. > >>>>>> As to Ducktests: > >>>>>> Docker is responsible for deployments during development. > >>>>>> CI/CD is responsible for deployments during release and nightly > >> checks. > >>>>> It's up to the team to chose AWS, VM, BareMetal, and even OS. > >>>>>> Ducktape is responsible for orchestration. > >>>>>> > >>>>>>> 2. tiden can execute actions over remote nodes in real parallel > >>>>> fashion, > >>>>>>> while ducktape internally does all actions sequentially. > >>>>>> No. Ducktape may start any service in parallel. See Pme-free > benchmark > >>>>> [1] for details. > >>>>>> > >>>>>>> if we used ducktape solution we would have to instead prepare some > >>>>>>> deployment scripts to pre-initialize Sberbank hosts, for example, > >> with > >>>>>>> Ansible or Chef. > >>>>>> Sure, because a way of deploy depends on infrastructure. > >>>>>> How can we be sure that OS we use and the restrictions we have will > be > >>>>> compatible with Tiden? > >>>>>> > >>>>>>> You have solved this deficiency with docker by putting all > >> dependencies > >>>>>>> into one uber-image ... > >>>>>> and > >>>>>>> I guess we all know about docker hyped ability to run over > >> distributed > >>>>>>> virtual networks. > >>>>>> It is very important not to confuse the test's development (docker > >> image > >>>>> you're talking about) and real deployment. > >>>>>> > >>>>>>> If we had stopped and started 5 nodes one-by-one, as ducktape does > >>>>>> All actions can be performed in parallel. > >>>>>> See how Ducktests [2] starts cluster in parallel for example. > >>>>>> > >>>>>> [1] > >>>>> > >> > https://github.com/apache/ignite/pull/7967/files#diff-59adde2a2ab7dc17aea6c65153dfcda7R84 > >>>>>> [2] > >>>>> > >> > https://github.com/apache/ignite/pull/7967/files#diff-d6a7b19f30f349d426b8894a40389cf5R79 > >>>>>> > >>>>>> On Thu, Jul 2, 2020 at 1:00 PM Nikolay Izhikov <nizhi...@apache.org > > > >>>>> wrote: > >>>>>> Hello, Maxim. > >>>>>> > >>>>>>> 1. tiden can deploy artifacts by itself, while ducktape relies on > >>>>> dependencies being deployed by external scripts > >>>>>> > >>>>>> Why do you think that maintaining deploy scripts coupled with the > >>>>> testing framework is an advantage? > >>>>>> I thought we want to see and maintain deployment scripts separate > from > >>>>> the testing framework. > >>>>>> > >>>>>>> 2. tiden can execute actions over remote nodes in real parallel > >>>>> fashion, while ducktape internally does all actions sequentially. > >>>>>> > >>>>>> Can you, please, clarify, what actions do you have in mind? > >>>>>> And why we want to execute them concurrently? > >>>>>> Ignite node start, Client application execution can be done > >> concurrently > >>>>> with the ducktape approach. > >>>>>> > >>>>>>> If we used ducktape solution we would have to instead prepare some > >>>>> deployment scripts to pre-initialize Sberbank hosts, for example, > with > >>>>> Ansible or Chef > >>>>>> > >>>>>> We shouldn’t take some user approach as an argument in this > >> discussion. > >>>>> Let’s discuss a general approach for all users of the Ignite. Anyway, > >> what > >>>>> is wrong with the external deployment script approach? > >>>>>> > >>>>>> We, as a community, should provide several ways to run integration > >> tests > >>>>> out-of-the-box AND the ability to customize deployment regarding the > >> user > >>>>> landscape. > >>>>>> > >>>>>>> You have solved this deficiency with docker by putting all > >>>>> dependencies into one uber-image and that looks like simple and > elegant > >>>>> solution however, that effectively limits you to single-host testing. > >>>>>> > >>>>>> Docker image should be used only by the Ignite developers to test > >>>>> something locally. > >>>>>> It’s not intended for some real-world testing. > >>>>>> > >>>>>> The main issue with the Tiden that I see, it tested and maintained > as > >> a > >>>>> closed source solution. > >>>>>> This can lead to the hard to solve problems when we start using and > >>>>> maintaining it as an open-source solution. > >>>>>> Like, how many developers used Tiden? And how many of developers > were > >>>>> not authors of the Tiden itself? > >>>>>> > >>>>>> > >>>>>>> 2 июля 2020 г., в 12:30, Max Shonichev <mshon...@yandex.ru> > >>>>> написал(а): > >>>>>>> > >>>>>>> Anton, Nikolay, > >>>>>>> > >>>>>>> Let's agree on what we are arguing about: whether it is about "like > >> or > >>>>> don't like" or about technical properties of suggested solutions. > >>>>>>> > >>>>>>> If it is about likes and dislikes, then the whole discussion is > >>>>> meaningless. However, I hope together we can analyse pros and cons > >>>>> carefully. > >>>>>>> > >>>>>>> As far as I can understand now, two main differences between > ducktape > >>>>> and tiden is that: > >>>>>>> > >>>>>>> 1. tiden can deploy artifacts by itself, while ducktape relies on > >>>>> dependencies being deployed by external scripts. > >>>>>>> > >>>>>>> 2. tiden can execute actions over remote nodes in real parallel > >>>>> fashion, while ducktape internally does all actions sequentially. > >>>>>>> > >>>>>>> As for me, these are very important properties for distributed > >> testing > >>>>> framework. > >>>>>>> > >>>>>>> First property let us easily reuse tiden in existing > infrastructures, > >>>>> for example, during Zookeeper IEP testing at Sberbank site we used > the > >> same > >>>>> tiden scripts that we use in our lab, the only change was putting a > >> list of > >>>>> hosts into config. > >>>>>>> > >>>>>>> If we used ducktape solution we would have to instead prepare some > >>>>> deployment scripts to pre-initialize Sberbank hosts, for example, > with > >>>>> Ansible or Chef. > >>>>>>> > >>>>>>> > >>>>>>> You have solved this deficiency with docker by putting all > >>>>> dependencies into one uber-image and that looks like simple and > elegant > >>>>> solution, > >>>>>>> however, that effectively limits you to single-host testing. > >>>>>>> > >>>>>>> I guess we all know about docker hyped ability to run over > >> distributed > >>>>> virtual networks. We used to go that way, but quickly found that it > is > >> more > >>>>> of the hype than real work. In real environments, there are problems > >> with > >>>>> routing, DNS, multicast and broadcast traffic, and many others, that > >> turn > >>>>> docker-based distributed solution into a fragile hard-to-maintain > >> monster. > >>>>>>> > >>>>>>> Please, if you believe otherwise, perform a run of your PoC over at > >>>>> least two physical hosts and share results with us. > >>>>>>> > >>>>>>> If you consider that one physical docker host is enough, please, > >> don't > >>>>> overlook that we want to run real scale scenarios, with 50-100 cache > >>>>> groups, persistence enabled and a millions of keys loaded. > >>>>>>> > >>>>>>> Practical limit for such configurations is 4-6 nodes per single > >>>>> physical host. Otherwise, tests become flaky due to resource > >> starvation. > >>>>>>> > >>>>>>> Please, if you believe otherwise, perform at least a 10 of runs of > >>>>> your PoC with other tests running at TC (we're targeting TeamCity, > >> right?) > >>>>> and share results so we could check if the numbers are reproducible. > >>>>>>> > >>>>>>> I stress this once more: functional integration tests are OK to run > >> in > >>>>> Docker and CI, but running benchmarks in Docker is a big NO GO. > >>>>>>> > >>>>>>> > >>>>>>> Second property let us write tests that require real-parallel > actions > >>>>> over hosts. > >>>>>>> > >>>>>>> For example, agreed scenario for PME benchmarkduring "PME > >> optimization > >>>>> stream" was as follows: > >>>>>>> > >>>>>>> - 10 server nodes, preloaded with 1M of keys > >>>>>>> - 4 client nodes perform transactional load (client nodes > >> physically > >>>>> separated from server nodes) > >>>>>>> - during load: > >>>>>>> -- 5 server nodes stopped in parallel > >>>>>>> -- after 1 minute, all 5 nodes are started in parallel > >>>>>>> - load stopped, logs are analysed for exchange times. > >>>>>>> > >>>>>>> If we had stopped and started 5 nodes one-by-one, as ducktape does, > >>>>> then partition map exchange merge would not happen and we could not > >> have > >>>>> measured PME optimizations for that case. > >>>>>>> > >>>>>>> > >>>>>>> These are limitations of ducktape that we believe as a more > important > >>>>>>> argument "against" than you provide "for". > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> On 30.06.2020 14:58, Anton Vinogradov wrote: > >>>>>>>> Folks, > >>>>>>>> First, I've created PR [1] with ducktests improvements > >>>>>>>> PR contains the following changes > >>>>>>>> - Pme-free switch proof-benchmark (2.7.6 vs master) > >>>>>>>> - Ability to check (compare with) previous releases (eg. 2.7.6 & > >> 2.8) > >>>>>>>> - Global refactoring > >>>>>>>> -- benchmarks javacode simplification > >>>>>>>> -- services python and java classes code deduplication > >>>>>>>> -- fail-fast checks for java and python (eg. application should > >>>>> explicitly write it finished with success) > >>>>>>>> -- simple results extraction from tests and benchmarks > >>>>>>>> -- javacode now configurable from tests/benchmarks > >>>>>>>> -- proper SIGTERM handling at javacode (eg. it may finish last > >>>>> operation and log results) > >>>>>>>> -- docker volume now marked as delegated to increase execution > speed > >>>>> for mac & win users > >>>>>>>> -- Ignite cluster now start in parallel (start speed-up) > >>>>>>>> -- Ignite can be configured at test/benchmark > >>>>>>>> - full and module assembly scripts added > >>>>>>> Great job done! But let me remind one of Apache Ignite principles: > >>>>>>> week of thinking save months of development. > >>>>>>> > >>>>>>> > >>>>>>>> Second, I'd like to propose to accept ducktests [2] (ducktape > >>>>> integration) as a target "PoC check & real topology benchmarking > tool". > >>>>>>>> Ducktape pros > >>>>>>>> - Developed for distributed system by distributed system > developers. > >>>>>>> So does Tiden > >>>>>>> > >>>>>>>> - Developed since 2014, stable. > >>>>>>> Tiden is also pretty stable, and development start date is not a > good > >>>>> argument, for example pytest is since 2004, pytest-xdist (plugin for > >>>>> distributed testing) is since 2010, but we don't see it as a > >> alternative at > >>>>> all. > >>>>>>> > >>>>>>>> - Proven usability by usage at Kafka. > >>>>>>> Tiden is proven usable by usage at GridGain and Sberbank > deployments. > >>>>>>> Core, storage, sql and tx teams use benchmark results provided by > >>>>> Tiden on a daily basis. > >>>>>>> > >>>>>>>> - Dozens of dozens tests and benchmarks at Kafka as a great > example > >>>>> pack. > >>>>>>> We'll donate some of our suites to Ignite as I've mentioned in > >>>>> previous letter. > >>>>>>> > >>>>>>>> - Built-in Docker support for rapid development and checks. > >>>>>>> False, there's no specific 'docker support' in ducktape itself, you > >>>>> just wrap it in docker by yourself, because ducktape is lacking > >> deployment > >>>>> abilities. > >>>>>>> > >>>>>>>> - Great for CI automation. > >>>>>>> False, there's no specific CI-enabled features in ducktape. Tiden, > on > >>>>> the other hand, provide generic xUnit reporting format, which is > >> supported > >>>>> by both TeamCity and Jenkins. Also, instead of using private keys, > >> Tiden > >>>>> can use SSH agent, which is also great for CI, because both > >>>>>>> TeamCity and Jenkins store keys in secret storage available only > for > >>>>> ssh-agent and only for the time of the test. > >>>>>>> > >>>>>>> > >>>>>>>>> As an additional motivation, at least 3 teams > >>>>>>>> - IEP-45 team (to check crash-recovery speed-up (discovery and > >> Zabbix > >>>>> speed-up)) > >>>>>>>> - Ignite SE Plugins team (to check plugin's features does not > >>>>> slow-down or broke AI features) > >>>>>>>> - Ignite SE QA team (to append already developed > smoke/load/failover > >>>>> tests to AI codebase) > >>>>>>> > >>>>>>> Please, before recommending your tests to other teams, provide > proofs > >>>>>>> that your tests are reproducible in real environment. > >>>>>>> > >>>>>>> > >>>>>>>> now, wait for ducktest merge to start checking cases they working > on > >>>>> in AI way. > >>>>>>>> Thoughts? > >>>>>>> Let us together review both solutions, we'll try to run your tests > in > >>>>> our lab, and you'll try to at least checkout tiden and see if same > >> tests > >>>>> can be implemented with it? > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>> [1] https://github.com/apache/ignite/pull/7967 > >>>>>>>> [2] https://github.com/apache/ignite/tree/ignite-ducktape > >>>>>>>> On Tue, Jun 16, 2020 at 12:22 PM Nikolay Izhikov < > >> nizhi...@apache.org > >>>>> <mailto:nizhi...@apache.org>> wrote: > >>>>>>>> Hello, Maxim. > >>>>>>>> Thank you for so detailed explanation. > >>>>>>>> Can we put the content of this discussion somewhere on the > wiki? > >>>>>>>> So It doesn’t get lost. > >>>>>>>> I divide the answer in several parts. From the requirements to > >> the > >>>>>>>> implementation. > >>>>>>>> So, if we agreed on the requirements we can proceed with the > >>>>>>>> discussion of the implementation. > >>>>>>>> 1. Requirements: > >>>>>>>> The main goal I want to achieve is *reproducibility* of the > >> tests. > >>>>>>>> I’m sick and tired with the zillions of flaky, rarely failed, > and > >>>>>>>> almost never failed tests in Ignite codebase. > >>>>>>>> We should start with the simplest scenarios that will be as > >>>>> reliable > >>>>>>>> as steel :) > >>>>>>>> I want to know for sure: > >>>>>>>> - Is this PR makes rebalance quicker or not? > >>>>>>>> - Is this PR makes PME quicker or not? > >>>>>>>> So, your description of the complex test scenario looks as a > next > >>>>>>>> step to me. > >>>>>>>> Anyway, It’s cool we already have one. > >>>>>>>> The second goal is to have a strict test lifecycle as we have > in > >>>>>>>> JUnit and similar frameworks. > >>>>>>>> > It covers production-like deployment and running a > scenarios > >>>>> over > >>>>>>>> a single database instance. > >>>>>>>> Do you mean «single cluster» or «single host»? > >>>>>>>> 2. Existing tests: > >>>>>>>> > A Combinator suite allows to run set of operations > >> concurrently > >>>>>>>> over given database instance. > >>>>>>>> > A Consumption suite allows to run a set production-like > >> actions > >>>>>>>> over given set of Ignite/GridGain versions and compare test > >> metrics > >>>>>>>> across versions > >>>>>>>> > A Yardstick suite > >>>>>>>> > A Stress suite that simulates hardware environment > degradation > >>>>>>>> > An Ultimate, DR and Compatibility suites that performs > >>>>> functional > >>>>>>>> regression testing > >>>>>>>> > Regression > >>>>>>>> Great news that we already have so many choices for testing! > >>>>>>>> Mature test base is a big +1 for Tiden. > >>>>>>>> 3. Comparison: > >>>>>>>> > Criteria: Test configuration > >>>>>>>> > Ducktape: single JSON string for all tests > >>>>>>>> > Tiden: any number of YaML config files, command line option > >> for > >>>>>>>> fine-grained test configuration, ability to select/modify > tests > >>>>>>>> behavior based on Ignite version. > >>>>>>>> 1. Many YAML files can be hard to maintain. > >>>>>>>> 2. In ducktape, you can set parameters via «—parameters» > option. > >>>>>>>> Please, take a look at the doc [1] > >>>>>>>> > Criteria: Cluster control > >>>>>>>> > Tiden: additionally can address cluster as a whole and > execute > >>>>>>>> remote commands in parallel. > >>>>>>>> It seems we implement this ability in the PoC, already. > >>>>>>>> > Criteria: Test assertions > >>>>>>>> > Tiden: simple asserts, also few customized assertion > helpers. > >>>>>>>> > Ducktape: simple asserts. > >>>>>>>> Can you, please, be more specific. > >>>>>>>> What helpers do you have in mind? > >>>>>>>> Ducktape has an asserts that waits for logfile messages or > some > >>>>>>>> process finish. > >>>>>>>> > Criteria: Test reporting > >>>>>>>> > Ducktape: limited to its own text/HTML format > >>>>>>>> Ducktape have > >>>>>>>> 1. Text reporter > >>>>>>>> 2. Customizable HTML reporter > >>>>>>>> 3. JSON reporter. > >>>>>>>> We can show JSON with the any template or tool. > >>>>>>>> > Criteria: Provisioning and deployment > >>>>>>>> > Ducktape: can provision subset of hosts from cluster for > test > >>>>>>>> needs. However, that means, that test can’t be scaled without > >> test > >>>>>>>> code changes. Does not do any deploy, relies on external > means, > >>>>> e.g. > >>>>>>>> pre-packaged in docker image, as in PoC. > >>>>>>>> This is not true. > >>>>>>>> 1. We can set explicit test parameters(node number) via > >> parameters. > >>>>>>>> We can increase client count of cluster size without test code > >>>>> changes. > >>>>>>>> 2. We have many choices for the test environment. These > choices > >> are > >>>>>>>> tested and used in other projects: > >>>>>>>> * docker > >>>>>>>> * vagrant > >>>>>>>> * private cloud(ssh access) > >>>>>>>> * ec2 > >>>>>>>> Please, take a look at Kafka documentation [2] > >>>>>>>> > I can continue more on this, but it should be enough for > now: > >>>>>>>> We need to go deeper! :) > >>>>>>>> [1] > >>>>>>>> > >>>>> > https://ducktape-docs.readthedocs.io/en/latest/run_tests.html#options > >>>>>>>> [2] > >>>>> https://github.com/apache/kafka/tree/trunk/tests#ec2-quickstart > >>>>>>>> > 9 июня 2020 г., в 17:25, Max A. Shonichev < > mshon...@yandex.ru > >>>>>>>> <mailto:mshon...@yandex.ru>> написал(а): > >>>>>>>> > > >>>>>>>> > Greetings, Nikolay, > >>>>>>>> > > >>>>>>>> > First of all, thank you for you great effort preparing PoC > of > >>>>>>>> integration testing to Ignite community. > >>>>>>>> > > >>>>>>>> > It’s a shame Ignite did not have at least some such tests > yet, > >>>>>>>> however, GridGain, as a major contributor to Apache Ignite > had a > >>>>>>>> profound collection of in-house tools to perform integration > and > >>>>>>>> performance testing for years already and while we slowly > >> consider > >>>>>>>> sharing our expertise with the community, your initiative > makes > >> us > >>>>>>>> drive that process a bit faster, thanks a lot! > >>>>>>>> > > >>>>>>>> > I reviewed your PoC and want to share a little about what > we > >> do > >>>>>>>> on our part, why and how, hope it would help community take > >> proper > >>>>>>>> course. > >>>>>>>> > > >>>>>>>> > First I’ll do a brief overview of what decisions we made > and > >>>>> what > >>>>>>>> we do have in our private code base, next I’ll describe what > we > >>>>> have > >>>>>>>> already donated to the public and what we plan public next, > then > >>>>>>>> I’ll compare both approaches highlighting deficiencies in > order > >> to > >>>>>>>> spur public discussion on the matter. > >>>>>>>> > > >>>>>>>> > It might seem strange to use Python to run Bash to run Java > >>>>>>>> applications because that introduces IT industry best of > breed’ – > >>>>>>>> the Python dependency hell – to the Java application code > base. > >> The > >>>>>>>> only strangest decision one can made is to use Maven to run > >> Docker > >>>>>>>> to run Bash to run Python to run Bash to run Java, but > desperate > >>>>>>>> times call for desperate measures I guess. > >>>>>>>> > > >>>>>>>> > There are Java-based solutions for integration testing > exists, > >>>>>>>> e.g. Testcontainers [1], Arquillian [2], etc, and they might > go > >>>>> well > >>>>>>>> for Ignite community CI pipelines by them selves. But we also > >>>>> wanted > >>>>>>>> to run performance tests and benchmarks, like the dreaded PME > >>>>>>>> benchmark, and this is solved by totally different set of > tools > >> in > >>>>>>>> Java world, e.g. Jmeter [3], OpenJMH [4], Gatling [5], etc. > >>>>>>>> > > >>>>>>>> > Speaking specifically about benchmarking, Apache Ignite > >>>>> community > >>>>>>>> already has Yardstick [6], and there’s nothing wrong with > writing > >>>>>>>> PME benchmark using Yardstick, but we also wanted to be able > to > >> run > >>>>>>>> scenarios like this: > >>>>>>>> > - put an X load to a Ignite database; > >>>>>>>> > - perform an Y set of operations to check how Ignite copes > >> with > >>>>>>>> operations under load. > >>>>>>>> > > >>>>>>>> > And yes, we also wanted applications under test be deployed > >>>>> ‘like > >>>>>>>> in a production’, e.g. distributed over a set of hosts. This > >> arises > >>>>>>>> questions about provisioning and nodes affinity which I’ll > cover > >> in > >>>>>>>> detail later. > >>>>>>>> > > >>>>>>>> > So we decided to put a little effort to build a simple > tool to > >>>>>>>> cover different integration and performance scenarios, and > our QA > >>>>>>>> lab first attempt was PoC-Tester [7], currently open source > for > >> all > >>>>>>>> but for reporting web UI. It’s a quite simple to use 95% > >> Java-based > >>>>>>>> tool targeted to be run on a pre-release QA stage. > >>>>>>>> > > >>>>>>>> > It covers production-like deployment and running a > scenarios > >>>>> over > >>>>>>>> a single database instance. PoC-Tester scenarios consists of a > >>>>>>>> sequence of tasks running sequentially or in parallel. After > all > >>>>>>>> tasks complete, or at any time during test, user can run logs > >>>>>>>> collection task, logs are checked against exceptions and a > >> summary > >>>>>>>> of found issues and task ops/latency statistics is generated > at > >> the > >>>>>>>> end of scenario. One of the main PoC-Tester features is its > >>>>>>>> fire-and-forget approach to task managing. That is, you can > >> deploy > >>>>> a > >>>>>>>> grid and left it running for weeks, periodically firing some > >> tasks > >>>>>>>> onto it. > >>>>>>>> > > >>>>>>>> > During earliest stages of PoC-Tester development it becomes > >>>>> quite > >>>>>>>> clear that Java application development is a tedious process > and > >>>>>>>> architecture decisions you take during development are slow > and > >>>>> hard > >>>>>>>> to change. > >>>>>>>> > For example, scenarios like this > >>>>>>>> > - deploy two instances of GridGain with master-slave data > >>>>>>>> replication configured; > >>>>>>>> > - put a load on master; > >>>>>>>> > - perform checks on slave, > >>>>>>>> > or like this: > >>>>>>>> > - preload a 1Tb of data by using your favorite tool of > choice > >> to > >>>>>>>> an Apache Ignite of version X; > >>>>>>>> > - run a set of functional tests running Apache Ignite > version > >> Y > >>>>>>>> over preloaded data, > >>>>>>>> > do not fit well in the PoC-Tester workflow. > >>>>>>>> > > >>>>>>>> > So, this is why we decided to use Python as a generic > >> scripting > >>>>>>>> language of choice. > >>>>>>>> > > >>>>>>>> > Pros: > >>>>>>>> > - quicker prototyping and development cycles > >>>>>>>> > - easier to find DevOps/QA engineer with Python skills than > >> one > >>>>>>>> with Java skills > >>>>>>>> > - used extensively all over the world for DevOps/CI > pipelines > >>>>> and > >>>>>>>> thus has rich set of libraries for all possible integration > uses > >>>>> cases. > >>>>>>>> > > >>>>>>>> > Cons: > >>>>>>>> > - Nightmare with dependencies. Better stick to specific > >>>>>>>> language/libraries version. > >>>>>>>> > > >>>>>>>> > Comparing alternatives for Python-based testing framework > we > >>>>> have > >>>>>>>> considered following requirements, somewhat similar to what > >> you’ve > >>>>>>>> mentioned for Confluent [8] previously: > >>>>>>>> > - should be able run locally or distributed (bare metal or > in > >>>>> the > >>>>>>>> cloud) > >>>>>>>> > - should have built-in deployment facilities for > applications > >>>>>>>> under test > >>>>>>>> > - should separate test configuration and test code > >>>>>>>> > -- be able to easily reconfigure tests by simple > configuration > >>>>>>>> changes > >>>>>>>> > -- be able to easily scale test environment by simple > >>>>>>>> configuration changes > >>>>>>>> > -- be able to perform regression testing by simple > switching > >>>>>>>> artifacts under test via configuration > >>>>>>>> > -- be able to run tests with different JDK version by > simple > >>>>>>>> configuration changes > >>>>>>>> > - should have human readable reports and/or reporting tools > >>>>>>>> integration > >>>>>>>> > - should allow simple test progress monitoring, one does > not > >>>>> want > >>>>>>>> to run 6-hours test to find out that application actually > crashed > >>>>>>>> during first hour. > >>>>>>>> > - should allow parallel execution of test actions > >>>>>>>> > - should have clean API for test writers > >>>>>>>> > -- clean API for distributed remote commands execution > >>>>>>>> > -- clean API for deployed applications start / stop and > other > >>>>>>>> operations > >>>>>>>> > -- clean API for performing check on results > >>>>>>>> > - should be open source or at least source code should > allow > >>>>> ease > >>>>>>>> change or extension > >>>>>>>> > > >>>>>>>> > Back at that time we found no better alternative than to > write > >>>>>>>> our own framework, and here goes Tiden [9] as GridGain > framework > >> of > >>>>>>>> choice for functional integration and performance testing. > >>>>>>>> > > >>>>>>>> > Pros: > >>>>>>>> > - solves all the requirements above > >>>>>>>> > Cons (for Ignite): > >>>>>>>> > - (currently) closed GridGain source > >>>>>>>> > > >>>>>>>> > On top of Tiden we’ve built a set of test suites, some of > >> which > >>>>>>>> you might have heard already. > >>>>>>>> > > >>>>>>>> > A Combinator suite allows to run set of operations > >> concurrently > >>>>>>>> over given database instance. Proven to find at least 30+ race > >>>>>>>> conditions and NPE issues. > >>>>>>>> > > >>>>>>>> > A Consumption suite allows to run a set production-like > >> actions > >>>>>>>> over given set of Ignite/GridGain versions and compare test > >> metrics > >>>>>>>> across versions, like heap/disk/CPU consumption, time to > perform > >>>>>>>> actions, like client PME, server PME, rebalancing time, data > >>>>>>>> replication time, etc. > >>>>>>>> > > >>>>>>>> > A Yardstick suite is a thin layer of Python glue code to > run > >>>>>>>> Apache Ignite pre-release benchmarks set. Yardstick itself > has a > >>>>>>>> mediocre deployment capabilities, Tiden solves this easily. > >>>>>>>> > > >>>>>>>> > A Stress suite that simulates hardware environment > degradation > >>>>>>>> during testing. > >>>>>>>> > > >>>>>>>> > An Ultimate, DR and Compatibility suites that performs > >>>>> functional > >>>>>>>> regression testing of GridGain Ultimate Edition features like > >>>>>>>> snapshots, security, data replication, rolling upgrades, etc. > >>>>>>>> > > >>>>>>>> > A Regression and some IEPs testing suites, like IEP-14, > >> IEP-15, > >>>>>>>> etc, etc, etc. > >>>>>>>> > > >>>>>>>> > Most of the suites above use another in-house developed > Java > >>>>> tool > >>>>>>>> – PiClient – to perform actual loading and miscellaneous > >> operations > >>>>>>>> with Ignite under test. We use py4j Python-Java gateway > library > >> to > >>>>>>>> control PiClient instances from the tests. > >>>>>>>> > > >>>>>>>> > When we considered CI, we put TeamCity out of scope, > because > >>>>>>>> distributed integration and performance tests tend to run for > >> hours > >>>>>>>> and TeamCity agents are scarce and costly resource. So, > bundled > >>>>> with > >>>>>>>> Tiden there is jenkins-job-builder [10] based CI pipelines and > >>>>>>>> Jenkins xUnit reporting. Also, rich web UI tool Ward > aggregates > >>>>> test > >>>>>>>> run reports across versions and has built in visualization > >> support > >>>>>>>> for Combinator suite. > >>>>>>>> > > >>>>>>>> > All of the above is currently closed source, but we plan to > >> make > >>>>>>>> it public for community, and publishing Tiden core [9] is the > >> first > >>>>>>>> step on that way. You can review some examples of using Tiden > for > >>>>>>>> tests at my repository [11], for start. > >>>>>>>> > > >>>>>>>> > Now, let’s compare Ducktape PoC and Tiden. > >>>>>>>> > > >>>>>>>> > Criteria: Language > >>>>>>>> > Tiden: Python, 3.7 > >>>>>>>> > Ducktape: Python, proposes itself as Python 2.7, 3.6, 3.7 > >>>>>>>> compatible, but actually can’t work with Python 3.7 due to > broken > >>>>>>>> Zmq dependency. > >>>>>>>> > Comment: Python 3.7 has a much better support for > async-style > >>>>>>>> code which might be crucial for distributed application > testing. > >>>>>>>> > Score: Tiden: 1, Ducktape: 0 > >>>>>>>> > > >>>>>>>> > Criteria: Test writers API > >>>>>>>> > Supported integration test framework concepts are basically > >> the > >>>>> same: > >>>>>>>> > - a test controller (test runner) > >>>>>>>> > - a cluster > >>>>>>>> > - a node > >>>>>>>> > - an application (a service in Ducktape terms) > >>>>>>>> > - a test > >>>>>>>> > Score: Tiden: 5, Ducktape: 5 > >>>>>>>> > > >>>>>>>> > Criteria: Tests selection and run > >>>>>>>> > Ducktape: suite-package-class-method level selection, > internal > >>>>>>>> scheduler allows to run tests in suite in parallel. > >>>>>>>> > Tiden: also suite-package-class-method level selection, > >>>>>>>> additionally allows selecting subset of tests by attribute, > >>>>> parallel > >>>>>>>> runs not built in, but allows merging test reports after > >> different > >>>>> runs. > >>>>>>>> > Score: Tiden: 2, Ducktape: 2 > >>>>>>>> > > >>>>>>>> > Criteria: Test configuration > >>>>>>>> > Ducktape: single JSON string for all tests > >>>>>>>> > Tiden: any number of YaML config files, command line option > >> for > >>>>>>>> fine-grained test configuration, ability to select/modify > tests > >>>>>>>> behavior based on Ignite version. > >>>>>>>> > Score: Tiden: 3, Ducktape: 1 > >>>>>>>> > > >>>>>>>> > Criteria: Cluster control > >>>>>>>> > Ducktape: allow execute remote commands by node granularity > >>>>>>>> > Tiden: additionally can address cluster as a whole and > execute > >>>>>>>> remote commands in parallel. > >>>>>>>> > Score: Tiden: 2, Ducktape: 1 > >>>>>>>> > > >>>>>>>> > Criteria: Logs control > >>>>>>>> > Both frameworks have similar builtin support for remote > logs > >>>>>>>> collection and grepping. Tiden has built-in plugin that can > zip, > >>>>>>>> collect arbitrary log files from arbitrary locations at > >>>>>>>> test/module/suite granularity and unzip if needed, also > >> application > >>>>>>>> API to search / wait for messages in logs. Ducktape allows > each > >>>>>>>> service declare its log files location (seemingly does not > >> support > >>>>>>>> logs rollback), and a single entrypoint to collect service > logs. > >>>>>>>> > Score: Tiden: 1, Ducktape: 1 > >>>>>>>> > > >>>>>>>> > Criteria: Test assertions > >>>>>>>> > Tiden: simple asserts, also few customized assertion > helpers. > >>>>>>>> > Ducktape: simple asserts. > >>>>>>>> > Score: Tiden: 2, Ducktape: 1 > >>>>>>>> > > >>>>>>>> > Criteria: Test reporting > >>>>>>>> > Ducktape: limited to its own text/html format > >>>>>>>> > Tiden: provides text report, yaml report for reporting > tools > >>>>>>>> integration, XML xUnit report for integration with > >>>>> Jenkins/TeamCity. > >>>>>>>> > Score: Tiden: 3, Ducktape: 1 > >>>>>>>> > > >>>>>>>> > Criteria: Provisioning and deployment > >>>>>>>> > Ducktape: can provision subset of hosts from cluster for > test > >>>>>>>> needs. However, that means, that test can’t be scaled without > >> test > >>>>>>>> code changes. Does not do any deploy, relies on external > means, > >>>>> e.g. > >>>>>>>> pre-packaged in docker image, as in PoC. > >>>>>>>> > Tiden: Given a set of hosts, Tiden uses all of them for the > >>>>> test. > >>>>>>>> Provisioning should be done by external means. However, > provides > >> a > >>>>>>>> conventional automated deployment routines. > >>>>>>>> > Score: Tiden: 1, Ducktape: 1 > >>>>>>>> > > >>>>>>>> > Criteria: Documentation and Extensibility > >>>>>>>> > Tiden: current API documentation is limited, should change > as > >> we > >>>>>>>> go open source. Tiden is easily extensible via hooks and > plugins, > >>>>>>>> see example Maven plugin and Gatling application at [11]. > >>>>>>>> > Ducktape: basic documentation at readthedocs.io > >>>>>>>> <http://readthedocs.io>. Codebase is rigid, framework core is > >>>>>>>> tightly coupled and hard to change. The only possible > extension > >>>>>>>> mechanism is fork-and-rewrite. > >>>>>>>> > Score: Tiden: 2, Ducktape: 1 > >>>>>>>> > > >>>>>>>> > I can continue more on this, but it should be enough for > now: > >>>>>>>> > Overall score: Tiden: 22, Ducktape: 14. > >>>>>>>> > > >>>>>>>> > Time for discussion! > >>>>>>>> > > >>>>>>>> > --- > >>>>>>>> > [1] - https://www.testcontainers.org/ > >>>>>>>> > [2] - http://arquillian.org/guides/getting_started/ > >>>>>>>> > [3] - https://jmeter.apache.org/index.html > >>>>>>>> > [4] - https://openjdk.java.net/projects/code-tools/jmh/ > >>>>>>>> > [5] - https://gatling.io/docs/current/ > >>>>>>>> > [6] - https://github.com/gridgain/yardstick > >>>>>>>> > [7] - https://github.com/gridgain/poc-tester > >>>>>>>> > [8] - > >>>>>>>> > >>>>> > >> > https://cwiki.apache.org/confluence/display/KAFKA/System+Test+Improvements > >>>>>>>> > [9] - https://github.com/gridgain/tiden > >>>>>>>> > [10] - https://pypi.org/project/jenkins-job-builder/ > >>>>>>>> > [11] - https://github.com/mshonichev/tiden_examples > >>>>>>>> > > >>>>>>>> > On 25.05.2020 11:09, Nikolay Izhikov wrote: > >>>>>>>> >> Hello, > >>>>>>>> >> > >>>>>>>> >> Branch with duck tape created - > >>>>>>>> https://github.com/apache/ignite/tree/ignite-ducktape > >>>>>>>> >> > >>>>>>>> >> Any who are willing to contribute to PoC are welcome. > >>>>>>>> >> > >>>>>>>> >> > >>>>>>>> >>> 21 мая 2020 г., в 22:33, Nikolay Izhikov > >>>>>>>> <nizhikov....@gmail.com <mailto:nizhikov....@gmail.com>> > >>>>> написал(а): > >>>>>>>> >>> > >>>>>>>> >>> Hello, Denis. > >>>>>>>> >>> > >>>>>>>> >>> There is no rush with these improvements. > >>>>>>>> >>> We can wait for Maxim proposal and compare two solutions > :) > >>>>>>>> >>> > >>>>>>>> >>>> 21 мая 2020 г., в 22:24, Denis Magda <dma...@apache.org > >>>>>>>> <mailto:dma...@apache.org>> написал(а): > >>>>>>>> >>>> > >>>>>>>> >>>> Hi Nikolay, > >>>>>>>> >>>> > >>>>>>>> >>>> Thanks for kicking off this conversation and sharing > your > >>>>>>>> findings with the > >>>>>>>> >>>> results. That's the right initiative. I do agree that > >> Ignite > >>>>>>>> needs to have > >>>>>>>> >>>> an integration testing framework with capabilities > listed > >> by > >>>>> you. > >>>>>>>> >>>> > >>>>>>>> >>>> As we discussed privately, I would only check if > instead of > >>>>>>>> >>>> Confluent's Ducktape library, we can use an integration > >>>>>>>> testing framework > >>>>>>>> >>>> developed by GridGain for testing of Ignite/GridGain > >>>>> clusters. > >>>>>>>> That > >>>>>>>> >>>> framework has been battle-tested and might be more > >>>>> convenient for > >>>>>>>> >>>> Ignite-specific workloads. Let's wait for @Maksim > Shonichev > >>>>>>>> >>>> <mshonic...@gridgain.com <mailto: > mshonic...@gridgain.com>> > >>>>> who > >>>>>>>> promised to join this thread once he finishes > >>>>>>>> >>>> preparing the usage examples of the framework. To my > >>>>>>>> knowledge, Max has > >>>>>>>> >>>> already been working on that for several days. > >>>>>>>> >>>> > >>>>>>>> >>>> - > >>>>>>>> >>>> Denis > >>>>>>>> >>>> > >>>>>>>> >>>> > >>>>>>>> >>>> On Thu, May 21, 2020 at 12:27 AM Nikolay Izhikov > >>>>>>>> <nizhi...@apache.org <mailto:nizhi...@apache.org>> > >>>>>>>> >>>> wrote: > >>>>>>>> >>>> > >>>>>>>> >>>>> Hello, Igniters. > >>>>>>>> >>>>> > >>>>>>>> >>>>> I created a PoC [1] for the integration tests of > Ignite. > >>>>>>>> >>>>> > >>>>>>>> >>>>> Let me briefly explain the gap I want to cover: > >>>>>>>> >>>>> > >>>>>>>> >>>>> 1. For now, we don’t have a solution for automated > testing > >>>>> of > >>>>>>>> Ignite on > >>>>>>>> >>>>> «real cluster». > >>>>>>>> >>>>> By «real cluster» I mean cluster «like a production»: > >>>>>>>> >>>>> * client and server nodes deployed on different > >> hosts. > >>>>>>>> >>>>> * thin clients perform queries from some other > hosts > >>>>>>>> >>>>> * etc. > >>>>>>>> >>>>> > >>>>>>>> >>>>> 2. We don’t have a solution for automated benchmarks of > >> some > >>>>>>>> internal > >>>>>>>> >>>>> Ignite process > >>>>>>>> >>>>> * PME > >>>>>>>> >>>>> * rebalance. > >>>>>>>> >>>>> This means we don’t know - Do we perform rebalance(or > PME) > >>>>> in > >>>>>>>> 2.7.0 faster > >>>>>>>> >>>>> or slower than in 2.8.0 for the same cluster? > >>>>>>>> >>>>> > >>>>>>>> >>>>> 3. We don’t have a solution for automated testing of > >> Ignite > >>>>>>>> integration in > >>>>>>>> >>>>> a real-world environment: > >>>>>>>> >>>>> Ignite-Spark integration can be taken as an example. > >>>>>>>> >>>>> I think some ML solutions also should be tested in > >>>>> real-world > >>>>>>>> deployments. > >>>>>>>> >>>>> > >>>>>>>> >>>>> Solution: > >>>>>>>> >>>>> > >>>>>>>> >>>>> I propose to use duck tape library from confluent > (apache > >>>>> 2.0 > >>>>>>>> license) > >>>>>>>> >>>>> I tested it both on the real cluster(Yandex Cloud) and > on > >>>>> the > >>>>>>>> local > >>>>>>>> >>>>> environment(docker) and it works just fine. > >>>>>>>> >>>>> > >>>>>>>> >>>>> PoC contains following services: > >>>>>>>> >>>>> > >>>>>>>> >>>>> * Simple rebalance test: > >>>>>>>> >>>>> Start 2 server nodes, > >>>>>>>> >>>>> Create some data with Ignite client, > >>>>>>>> >>>>> Start one more server node, > >>>>>>>> >>>>> Wait for rebalance finish > >>>>>>>> >>>>> * Simple Ignite-Spark integration test: > >>>>>>>> >>>>> Start 1 Spark master, start 1 Spark > worker, > >>>>>>>> >>>>> Start 1 Ignite server node > >>>>>>>> >>>>> Create some data with Ignite client, > >>>>>>>> >>>>> Check data in application that queries it > >> from > >>>>>>>> Spark. > >>>>>>>> >>>>> > >>>>>>>> >>>>> All tests are fully automated. > >>>>>>>> >>>>> Logs collection works just fine. > >>>>>>>> >>>>> You can see an example of the tests report - [4]. > >>>>>>>> >>>>> > >>>>>>>> >>>>> Pros: > >>>>>>>> >>>>> > >>>>>>>> >>>>> * Ability to test local changes(no need to public > changes > >> to > >>>>>>>> some remote > >>>>>>>> >>>>> repository or similar). > >>>>>>>> >>>>> * Ability to parametrize test environment(run the same > >> tests > >>>>>>>> on different > >>>>>>>> >>>>> JDK, JVM params, config, etc.) > >>>>>>>> >>>>> * Isolation by default so system tests are as reliable > as > >>>>>>>> possible. > >>>>>>>> >>>>> * Utilities for pulling up and tearing down services > >> easily > >>>>>>>> in clusters in > >>>>>>>> >>>>> different environments (e.g. local, custom cluster, > >> Vagrant, > >>>>>>>> K8s, Mesos, > >>>>>>>> >>>>> Docker, cloud providers, etc.) > >>>>>>>> >>>>> * Easy to write unit tests for distributed systems > >>>>>>>> >>>>> * Adopted and successfully used by other distributed > open > >>>>>>>> source project - > >>>>>>>> >>>>> Apache Kafka. > >>>>>>>> >>>>> * Collect results (e.g. logs, console output) > >>>>>>>> >>>>> * Report results (e.g. expected conditions met, > >> performance > >>>>>>>> results, etc.) > >>>>>>>> >>>>> > >>>>>>>> >>>>> WDYT? > >>>>>>>> >>>>> > >>>>>>>> >>>>> [1] https://github.com/nizhikov/ignite/pull/15 > >>>>>>>> >>>>> [2] https://github.com/confluentinc/ducktape > >>>>>>>> >>>>> [3] > >>>>> https://ducktape-docs.readthedocs.io/en/latest/run_tests.html > >>>>>>>> >>>>> [4] https://yadi.sk/d/JC8ciJZjrkdndg > >>>>>> > >>>>> > >>>>> > >>>>> > >>> <2020-07-05--004.tar.gz> > >> > >> > >> > > > >