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> написал(а): > > 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> написал(а): >> >> 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> 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> >> 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 >