Skip to content

Commit 384ed89

Browse files
committed
Add test case for cache cleaning on node removal
1 parent 0e4b6ac commit 384ed89

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

Orm/Xtensive.Orm.Tests/Storage/Multinode/StaleQueryCacheForReAddedNodes.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,39 @@ public void ReAddNodeWithAnotherSchemaMappingNoCacheCleanTest()
202202
Assert.That(Domain.QueryCache.Count, Is.EqualTo(queryCacheSize));
203203
}
204204

205+
[Test]
206+
public void ReAddNodeWithAnotherSchemaMappingWithCacheCleanTest()
207+
{
208+
var node = Domain.StorageNodeManager.GetNode(TestNodeId2);
209+
var queryCacheSize = Domain.QueryCache.Count;
210+
211+
using (var session = node.OpenSession())
212+
using (var tx = session.OpenTransaction()) {
213+
_ = session.Query.Execute(SimpleQueryKey, q => q.All<BaseTestEntity>().Where(e => e.BaseName.Contains("B"))).ToList();
214+
}
215+
Assert.That(Domain.QueryCache.Count, Is.EqualTo(queryCacheSize));
216+
217+
_ = Domain.StorageNodeManager.RemoveNode(TestNodeId2, true);
218+
Assert.That(Domain.QueryCache.Count, Is.LessThan(queryCacheSize));
219+
220+
CustomUpgradeHandler.CurrentNodeId = TestNodeId2;
221+
var nodeConfiguration = new NodeConfiguration(TestNodeId2);
222+
nodeConfiguration.SchemaMapping.Add(DefaultSchema, Schema2);// uses schema of TestNodeId3
223+
nodeConfiguration.UpgradeMode = DomainUpgradeMode.Validate;
224+
_ = Domain.StorageNodeManager.AddNode(nodeConfiguration);
225+
226+
node = Domain.StorageNodeManager.GetNode(TestNodeId2);
227+
228+
using (var session = node.OpenSession())
229+
using (var tx = session.OpenTransaction()) {
230+
var results = session.Query.Execute(SimpleQueryKey, q => q.All<BaseTestEntity>().Where(e => e.BaseName.Contains("B"))).ToList();
231+
foreach (var item in results) {
232+
Assert.That(item.BaseOwnerNodeId, Is.Not.EqualTo(node.Id)); // gets result from correct schema but data was added by TestNodeId3
233+
}
234+
}
235+
Assert.That(Domain.QueryCache.Count, Is.EqualTo(queryCacheSize));
236+
}
237+
205238
private List<BaseTestEntity> ExecuteSimpleQueryCaching(Session session) =>
206239
session.Query.Execute(SimpleQueryKey, q => q.All<BaseTestEntity>().Where(e => e.BaseName.Contains("B"))).ToList();
207240
}

0 commit comments

Comments
 (0)