Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions source/DoubleCache/Redis/RedisPublisher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,18 @@ public class RedisPublisher : ICachePublisher
{
private IConnectionMultiplexer _connection;
private IItemSerializer _itemSerializer;
private string _clientName;

public RedisPublisher(IConnectionMultiplexer connection, IItemSerializer itemSerializer)
{
_connection = connection;
_itemSerializer = itemSerializer;
_clientName = connection.ClientName + "." + System.AppDomain.CurrentDomain.FriendlyName;
}

public void NotifyUpdate(string key, string type)
{
var data = _itemSerializer.Serialize(new CacheUpdateNotificationArgs { Key = key, Type = type, ClientName = _connection.ClientName });
var data = _itemSerializer.Serialize(new CacheUpdateNotificationArgs { Key = key, Type = type, ClientName = _clientName });
_connection.GetSubscriber().Publish(
"cacheUpdate",
data,
Expand All @@ -30,7 +32,7 @@ public void NotifyUpdate(string key, string type, TimeSpan? specificTimeToLive)
var data = _itemSerializer.Serialize(new CacheUpdateNotificationArgs {
Key = key,
Type = type,
ClientName = _connection.ClientName,
ClientName = _clientName,
SpecificTimeToLive = new TimeToLive(specificTimeToLive)});

_connection.GetSubscriber().Publish(
Expand All @@ -43,7 +45,8 @@ public void NotifyDelete(string key)
{
var data = _itemSerializer.Serialize(new CacheUpdateNotificationArgs {
Key = key,
ClientName = _connection.ClientName});
ClientName = _clientName
});
_connection.GetSubscriber().Publish(
"cacheDelete",
data,
Expand Down
2 changes: 1 addition & 1 deletion source/DoubleCache/Redis/RedisSubscriber.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public RedisSubscriber(IConnectionMultiplexer connection, ICacheAside remoteCach
connection.GetSubscriber().Subscribe("cacheDelete", CacheDeleted);
_remoteCache = remoteCache;
_itemSerializer = itemSerializer;
_clientName = connection.ClientName;
_clientName = connection.ClientName + "." + System.AppDomain.CurrentDomain.FriendlyName;
}

private void CacheUpdated(RedisChannel channel, RedisValue message)
Expand Down
6 changes: 4 additions & 2 deletions source/DoubleCacheTests/PublisherTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public class PublisherTests
private IConnectionMultiplexer _connection;
private IItemSerializer _serializer;
private ISubscriber _subscriber;
private string _expectedClientName;

private ICachePublisher publisher;

Expand All @@ -21,6 +22,7 @@ public PublisherTests()
_connection = A.Fake<IConnectionMultiplexer>();
_serializer = A.Fake<IItemSerializer>();
_subscriber = A.Fake<ISubscriber>();
_expectedClientName = "C." + System.AppDomain.CurrentDomain.FriendlyName;

A.CallTo(() => _connection.GetSubscriber(null)).Returns(_subscriber);
A.CallTo(() => _connection.ClientName).Returns("C");
Expand All @@ -35,7 +37,7 @@ public void PublishUpdate_SerializerCalled()
publisher.NotifyUpdate("A", "B");

A.CallTo(() => _serializer.Serialize(
A<CacheUpdateNotificationArgs>.That.Matches(args => args.Key == "A" && args.Type == "B" && args.ClientName == "C")))
A<CacheUpdateNotificationArgs>.That.Matches(args => args.Key == "A" && args.Type == "B" && args.ClientName == _expectedClientName)))
.MustHaveHappened(Repeated.Exactly.Once);
}

Expand All @@ -45,7 +47,7 @@ public void PublishDelete_SerializerCalled()
publisher.NotifyDelete("A");

A.CallTo(() => _serializer.Serialize(
A<CacheUpdateNotificationArgs>.That.Matches(args => args.Key == "A" && args.ClientName == "C")))
A<CacheUpdateNotificationArgs>.That.Matches(args => args.Key == "A" && args.ClientName == _expectedClientName)))
.MustHaveHappened(Repeated.Exactly.Once);
}

Expand Down
8 changes: 5 additions & 3 deletions source/DoubleCacheTests/RedisSubscriberTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ public class RedisSubscriberTests
private ICacheAside _remoteCache;
private IItemSerializer _itemSerializer;
private IConnectionMultiplexer _connection;
private string _expectedClientName;

public RedisSubscriberTests()
{
_subscriber = A.Fake<ISubscriber>();
_remoteCache = A.Fake<ICacheAside>();
_itemSerializer = A.Fake<IItemSerializer>();
_expectedClientName = "A." + System.AppDomain.CurrentDomain.FriendlyName;

_connection = A.Fake<IConnectionMultiplexer>();
A.CallTo(() => _connection.GetSubscriber(A<object>._)).Returns(_subscriber);
Expand Down Expand Up @@ -86,7 +88,7 @@ public void OnMessage_EventTriggered(string channelName)

var eventHandler = A.Fake<EventHandler<CacheUpdateNotificationArgs>>();

A.CallTo(() => _itemSerializer.Deserialize<CacheUpdateNotificationArgs>(A<byte[]>._)).Returns(new CacheUpdateNotificationArgs() { ClientName ="A" });
A.CallTo(() => _itemSerializer.Deserialize<CacheUpdateNotificationArgs>(A<byte[]>._)).Returns(new CacheUpdateNotificationArgs() { ClientName = _expectedClientName });

var cacheSubscriber = new RedisSubscriber(_connection, _remoteCache, _itemSerializer);

Expand All @@ -101,7 +103,7 @@ public void OnMessage_EventTriggered(string channelName)
[Theory]
[InlineData("cacheUpdate")]
[InlineData("cacheDelete")]
public void OnMessage_SameClientName_EventNotTriggered(string channelName)
public void OnMessage_SameClientNameSameApplicationName_EventNotTriggered(string channelName)
{
Action<RedisChannel, RedisValue> method = null;

Expand All @@ -113,7 +115,7 @@ public void OnMessage_SameClientName_EventNotTriggered(string channelName)

var eventHandler = A.Fake<EventHandler<CacheUpdateNotificationArgs>>();

A.CallTo(() => _itemSerializer.Deserialize<CacheUpdateNotificationArgs>(A<byte[]>._)).Returns(new CacheUpdateNotificationArgs() { ClientName = "A" });
A.CallTo(() => _itemSerializer.Deserialize<CacheUpdateNotificationArgs>(A<byte[]>._)).Returns(new CacheUpdateNotificationArgs() { ClientName = _expectedClientName });

var cacheSubscriber = new RedisSubscriber(_connection, _remoteCache, _itemSerializer);

Expand Down