Skip to content

Commit

Permalink
Separate class for envStorages tests with observeNonExistentNodes flag
Browse files Browse the repository at this point in the history
  • Loading branch information
gladysheva committed Feb 26, 2024
1 parent 178bd60 commit c11976a
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 80 deletions.
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
}
Original file line number Diff line number Diff line change
@@ -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()
Expand Down Expand Up @@ -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);
}
}
}

0 comments on commit c11976a

Please sign in to comment.