예제 #1
0
        public async Task DefaultBucket_MultipleClient(int clientCount)
        {
            var loggerFactory = new ClusterFixture.TestOutputLoggerFactory(_outputHelper);
            var clients       = new List <PerBucketCleaner>(clientCount);
            var activeClients = new List <string>();

            try
            {
                for (int i = 0; i < clientCount; i++)
                {
                    var clientUuid = Guid.NewGuid().ToString();
                    var cleaner    = new Cleaner(_fixture.Cluster, null, loggerFactory);
                    var collection = await _fixture.OpenDefaultCollection(_outputHelper);

                    var repo             = new CleanerRepository(collection, null);
                    var perBucketCleaner = new PerBucketCleaner(clientUuid, cleaner, repo, TimeSpan.FromSeconds(0.1), loggerFactory, startDisabled: true);
                    clients.Add(perBucketCleaner);
                    var details = await perBucketCleaner.ProcessClient(cleanupAtrs : false);

                    activeClients.Add(clientUuid);
                    foreach (var activeClient in activeClients)
                    {
                        Assert.Contains(details.ActiveClientIds, cid => cid == activeClient);
                    }
                }
            }
            finally
            {
                foreach (var client in clients)
                {
                    await client.DisposeAsync();
                }
            }
        }
예제 #2
0
        public async Task DefaultBucket_BasicBackgroundRun()
        {
            var loggerFactory = new ClusterFixture.TestOutputLoggerFactory(_outputHelper);
            var clientUuid    = Guid.NewGuid().ToString();
            var cleaner       = new Cleaner(_fixture.Cluster, null, loggerFactory);
            var collection    = await _fixture.OpenDefaultCollection(_outputHelper);

            var repo = new CleanerRepository(collection, null);
            PerBucketCleaner perBucketCleaner = null;

            try
            {
                perBucketCleaner = new PerBucketCleaner(clientUuid, cleaner, repo, TimeSpan.FromSeconds(0.1), loggerFactory);
                await Task.Delay(500);

                Assert.True(perBucketCleaner.Running);
                for (var i = 0; i < 10 && perBucketCleaner.RunCount < 1; i++)
                {
                    await Task.Delay(500);
                }

                Assert.NotEqual(0, perBucketCleaner.RunCount);
            }
            finally
            {
                await perBucketCleaner.DisposeAsync();
            }

            var recordFetch = await repo.GetClientRecord();

            Assert.DoesNotContain(recordFetch.clientRecord.Clients, kvp => kvp.Key == clientUuid);

            Assert.False(perBucketCleaner.Running);
        }