public async Task Should_Fire_A_Finalizing_Event(CacheComparisonResult cacheResult) { var called = false; _cache .Setup(c => c.Upsert(It.IsAny <TestStatusEntity>(), out It.Ref <CacheComparisonResult> .IsAny)) .Callback( new CacheResult( (TestStatusEntity resource, out CacheComparisonResult result) => { result = cacheResult; })) .Returns <TestStatusEntity, CacheComparisonResult>((entity, result) => entity); _queue.ResourceEvent += (_, tuple) => { var(type, resource) = tuple; type.Should().Be(ResourceEventType.Finalizing); called = true; }; await _queue.Start(); _watcher.Raise( w => w.WatcherEvent += null, null, (WatchEventType.Added, new TestStatusEntity { Metadata = new V1ObjectMeta(uid: "uuid", deletionTimestamp: DateTime.UtcNow) })); await Task.Yield(); await Task.Delay(50); called.Should().BeTrue(); }
public TEntity Upsert(TEntity resource, out CacheComparisonResult result) { result = CompareCache(resource); if (result == CacheComparisonResult.New) { _cache.Add(resource.Metadata.Uid, resource.DeepClone()); } else { _cache[resource.Metadata.Uid] = resource.DeepClone(); } return(resource); }
public void Should_Correctly_Compare_Objects( TestStatusEntity?firstInsert, TestStatusEntity secondInsert, CacheComparisonResult expectedResult) { _cache.Clear(); if (firstInsert != null) { _cache.Upsert(firstInsert, out _); } _cache.Upsert(secondInsert, out var result); result.Should().Be(expectedResult); }
public TEntity Upsert(TEntity resource, out CacheComparisonResult result) { result = CompareCache(resource); if (result == CacheComparisonResult.New) { _cache.Add(resource.Metadata.Uid, resource.DeepClone()); } else { _cache[resource.Metadata.Uid] = resource.DeepClone(); } _metrics.CachedItemsSize.Set(_cache.Count); _metrics.CachedItemsSummary.Observe(_cache.Count); return(resource); }