[
https://issues.apache.org/jira/browse/IGNITE-19255?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aleksandr Polovtcev reassigned IGNITE-19255:
--------------------------------------------
Assignee: Mirza Aliev
> Fix broken unit tests in distribution-zones module
> --------------------------------------------------
>
> Key: IGNITE-19255
> URL: https://issues.apache.org/jira/browse/IGNITE-19255
> Project: Ignite
> Issue Type: Bug
> Reporter: Aleksandr Polovtcev
> Assignee: Mirza Aliev
> Priority: Blocker
> Labels: ignite-3
>
> In IGNITE-19105 I've changed some internal shenanigans of the
> MetaStorageManager (without affecting its API in any way). After that, nearly
> all unit tests in the {{distribution-zones}} module started to fail. Turns
> out it happened because of extensive mock usages that emulate behavior of the
> Meta Storage. So I decided to replace it with the
> {{StandaloneMetaStorageManager}} implementation and all hell broke loose:
> many tests emulate Meta Storage incorrectly, a lot of races appeared, because
> many methods became truly asynchronous.
> This situation is very frustrating: a different component internals were
> changed with no API changes and a completely unrelated module is not longer
> able to pass its tests. Though I fixed most of the failures, some tests are
> still failing and I'm going to try to describe, what's wrong with them:
> *{{DistributionZoneManagerScaleUpTest#testDataNodesPropagationAfterScaleUpTriggeredOnNewCluster}}*
> - this test tests a scenario when we start a node after logical topology was
> updated. I don't know how realistic is this scenario, but the problem is that
> "data nodes" don't get populated with the logical topology nodes on
> {{distributionZoneManager}} start, because {{scheduleTimers}} method, that
> get's invoked from the Meta Storage Watch, doesn't go inside the {{if
> (!addedNodes.isEmpty() && autoAdjustScaleUp != INFINITE_TIMER_VALUE)}} branch.
> *{{DistributionZoneManagerScaleUpTest#testDataNodesPropagationForDefaultZoneAfterScaleUpTriggered}}*
> - same issue as above.
> *{{DistributionZoneManagerScaleUpTest#testDataNodesPropagationForDefaultZoneAfterScaleDownTriggered}}*
> - same issue as above.
> *{{DistributionZoneManagerScaleUpTest#testUpdateZoneScaleUpTriggersDataNodePropagation}}*
> - this test fails with the following assertion error: _Expected revision
> that is greater or equal to already seen meta storage events._. This is
> because TestConfigurationStorage does not use the same revision as the Meta
> Storage, therefore their revisions can't be compared directly. This should
> either be converted to an integration test or it should use
> `DistributedConfigurationStrorage` instead.
> *{{DistributionZoneManagerScaleUpTest#testUpdateZoneScaleDownTriggersDataNodePropagation}}*
> - same issue as above.
> *{{DistributionZoneManagerScaleUpTest#testScaleUpDidNotChangeDataNodesWhenTriggerKeyWasConcurrentlyChanged}}*
> - fails, because I had to comment the part which emulates a concurrent Meta
> Storage update. Nothing is wrong with this test, we simply need to invent a
> different way to emulate concurrent Meta Storage updates.
> *{{DistributionZoneManagerScaleUpTest#testScaleDownDidNotChangeDataNodesWhenTriggerKeyWasConcurrentlyChanged}}*
> - same issue as above.
> *{{DistributionZoneManagerWatchListenerTest#testDataNodesOfDefaultZoneUpdatedOnWatchListenerEvent}}*
> - this test is flaky, probably due to some races between Watch and
> Configuration Listener execution (sometimes a retry on {{invoke}} happens and
> {{Mockito#verify}} fails).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)