示例#1
0
        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();
        }
示例#2
0
        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);
        }
示例#4
0
        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);
        }