From c11976a46247d8f20092e4c3c06e253cd4a53dbf Mon Sep 17 00:00:00 2001 From: gladysheva Date: Mon, 26 Feb 2024 10:27:55 +0500 Subject: [PATCH] Separate class for envStorages tests with observeNonExistentNodes flag --- .../EnvironmentStorage_TestsBase.cs | 26 ++++++ ...nvironmentsStorageWithObserveFlag_Tests.cs | 67 +++++++++++++++ .../EnvironmentsStorage_Tests.cs | 82 +------------------ 3 files changed, 95 insertions(+), 80 deletions(-) create mode 100644 Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentStorage_TestsBase.cs create mode 100644 Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentsStorageWithObserveFlag_Tests.cs diff --git a/Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentStorage_TestsBase.cs b/Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentStorage_TestsBase.cs new file mode 100644 index 0000000..677c0b7 --- /dev/null +++ b/Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentStorage_TestsBase.cs @@ -0,0 +1,26 @@ +using System; +using FluentAssertions; +using Vostok.Commons.Testing; +using Vostok.ServiceDiscovery.Abstractions.Models; +using Vostok.ServiceDiscovery.ServiceLocatorStorage; + +namespace Vostok.ServiceDiscovery.Tests.ServiceLocatorStorage; + +internal class EnvironmentStorage_TestsBase : TestsBase +{ + protected static void ShouldReturn(EnvironmentsStorage storage, string name, EnvironmentInfo info) + { + Action assertion = () => { ShouldReturnImmediately(storage, name, info); }; + assertion.ShouldPassIn(DefaultTimeout); + } + + protected static void ShouldReturnImmediately(EnvironmentsStorage storage, string name, EnvironmentInfo info) + { + storage.Get(name).Should().BeEquivalentTo(info); + } + + protected EnvironmentsStorage GetEnvironmentsStorage(bool observeNonExistentEnvironment = true) + { + return new EnvironmentsStorage(ZooKeeperClient, PathHelper, EventsQueue, observeNonExistentEnvironment, Log); + } +} \ No newline at end of file diff --git a/Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentsStorageWithObserveFlag_Tests.cs b/Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentsStorageWithObserveFlag_Tests.cs new file mode 100644 index 0000000..35fd583 --- /dev/null +++ b/Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentsStorageWithObserveFlag_Tests.cs @@ -0,0 +1,67 @@ +using NUnit.Framework; +using FluentAssertions; +using Vostok.ServiceDiscovery.Abstractions.Models; + +namespace Vostok.ServiceDiscovery.Tests.ServiceLocatorStorage; + +[TestFixture] +internal class EnvironmentsStorageWithObserveFlag_Tests : EnvironmentStorage_TestsBase +{ + [Test] + public void Should_not_delete_environment_from_cache_if_node_was_deleted_when_observation_of_deleted_apps_is_enabled() + { + using (var storage = GetEnvironmentsStorage(observeNonExistentEnvironment: true)) + { + CreateEnvironmentNode("default", "parent"); + + var expectedInfo = new EnvironmentInfo("default", "parent", null); + storage.Get("default").Should().BeEquivalentTo(expectedInfo); + + DeleteEnvironmentNode("default"); + storage.UpdateAll(); + storage.Contains("default").Should().BeTrue(); + storage.Get("default").Should().BeNull(); + + CreateEnvironmentNode("default", "parent"); + ShouldReturn(storage, "default", expectedInfo); + } + } + + [Test] + public void Should_not_delete_environment_from_cache_when_observation_of_deleted_apps_is_disabled_and_client_disconnected() + { + using (var storage = GetEnvironmentsStorage(observeNonExistentEnvironment: false)) + { + CreateEnvironmentNode("default", "parent"); + + var expectedInfo = new EnvironmentInfo("default", "parent", null); + ShouldReturnImmediately(storage, "default", expectedInfo); + + Ensemble.Stop(); + + storage.UpdateAll(); + storage.Contains("default").Should().BeTrue(); + ShouldReturnImmediately(storage, "default", expectedInfo); + } + } + + [Test] + public void Should_delete_environment_from_cache_if_node_was_deleted_when_observation_of_deleted_apps_is_disabled() + { + var expectedInfo = new EnvironmentInfo("default", "parent", null); + + using (var storage = GetEnvironmentsStorage(observeNonExistentEnvironment: false)) + { + for (var i = 0; i < 10; i++) + { + CreateEnvironmentNode("default", "parent"); + + ShouldReturnImmediately(storage, "default", expectedInfo); + + DeleteEnvironmentNode("default"); + storage.UpdateAll(); + storage.Contains("default").Should().BeFalse(); + } + } + } +} \ No newline at end of file diff --git a/Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentsStorage_Tests.cs b/Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentsStorage_Tests.cs index 62cc48c..5f5636f 100644 --- a/Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentsStorage_Tests.cs +++ b/Vostok.ServiceDiscovery.Tests/ServiceLocatorStorage/EnvironmentsStorage_Tests.cs @@ -1,16 +1,12 @@ -using System; -using System.Collections.Generic; -using FluentAssertions; +using System.Collections.Generic; using NUnit.Framework; -using Vostok.Commons.Testing; using Vostok.ServiceDiscovery.Abstractions.Models; -using Vostok.ServiceDiscovery.ServiceLocatorStorage; using Vostok.ZooKeeper.Client.Abstractions; namespace Vostok.ServiceDiscovery.Tests.ServiceLocatorStorage { [TestFixture] - internal class EnvironmentsStorage_Tests : TestsBase + internal class EnvironmentsStorage_Tests : EnvironmentStorage_TestsBase { [Test] public void Should_track_environment_parent_with_properties() @@ -153,79 +149,5 @@ public void UpdateAll_should_force_update() } } } - - [Test] - public void Should_not_delete_environment_from_cache_if_node_was_deleted_when_observation_of_deleted_apps_is_enabled() - { - using (var storage = GetEnvironmentsStorage(observeNonExistentEnvironment: true)) - { - CreateEnvironmentNode("default", "parent"); - - var expectedInfo = new EnvironmentInfo("default", "parent", null); - storage.Get("default").Should().BeEquivalentTo(expectedInfo); - - DeleteEnvironmentNode("default"); - storage.UpdateAll(); - storage.Contains("default").Should().BeTrue(); - storage.Get("default").Should().BeNull(); - - CreateEnvironmentNode("default", "parent"); - ShouldReturn(storage, "default", expectedInfo); - } - } - - [Test] - public void Should_not_delete_environment_from_cache_when_observation_of_deleted_apps_is_disabled_and_client_disconnected() - { - using (var storage = GetEnvironmentsStorage(observeNonExistentEnvironment: false)) - { - CreateEnvironmentNode("default", "parent"); - - var expectedInfo = new EnvironmentInfo("default", "parent", null); - ShouldReturnImmediately(storage, "default", expectedInfo); - - Ensemble.Stop(); - - storage.UpdateAll(); - storage.Contains("default").Should().BeTrue(); - ShouldReturnImmediately(storage, "default", expectedInfo); - } - } - - [Test] - public void Should_delete_environment_from_cache_if_node_was_deleted_when_observation_of_deleted_apps_is_disabled() - { - var expectedInfo = new EnvironmentInfo("default", "parent", null); - - using (var storage = GetEnvironmentsStorage(observeNonExistentEnvironment: false)) - { - for (var i = 0; i < 10; i++) - { - CreateEnvironmentNode("default", "parent"); - - ShouldReturnImmediately(storage, "default", expectedInfo); - - DeleteEnvironmentNode("default"); - storage.UpdateAll(); - storage.Contains("default").Should().BeFalse(); - } - } - } - - private static void ShouldReturn(EnvironmentsStorage storage, string name, EnvironmentInfo info) - { - Action assertion = () => { ShouldReturnImmediately(storage, name, info); }; - assertion.ShouldPassIn(DefaultTimeout); - } - - private static void ShouldReturnImmediately(EnvironmentsStorage storage, string name, EnvironmentInfo info) - { - storage.Get(name).Should().BeEquivalentTo(info); - } - - private EnvironmentsStorage GetEnvironmentsStorage(bool observeNonExistentEnvironment = true) - { - return new EnvironmentsStorage(ZooKeeperClient, PathHelper, EventsQueue, observeNonExistentEnvironment, Log); - } } } \ No newline at end of file