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

Reply via email to