예제 #1
0
        public void WhenStaleLocksAreExpired_TheLocksAreRemoved()
        {
            var thePackage = CreatePackageIdentity("Package", "1.0");

            var packageLocks = new PackageLocks
            {
                new UsageDetails(new ServerTaskId("Deployment-1"), new CacheAge(1), new DateTime(2021, 1, 1))
            };

            var journalEntry = new JournalEntry(thePackage, 1, packageLocks);

            var journalEntries = new Dictionary <PackageIdentity, JournalEntry>()
            {
                { thePackage, journalEntry }
            };

            var testJournal = new PackageJournal(new InMemoryJournalRepository(journalEntries),
                                                 Substitute.For <ILog>(),
                                                 Substitute.For <ICalamariFileSystem>(),
                                                 Substitute.For <IRetentionAlgorithm>(),
                                                 Substitute.For <ISemaphoreFactory>());

            testJournal.ExpireStaleLocks(TimeSpan.FromDays(14));

            Assert.IsFalse(journalRepository.HasLock(thePackage));
        }
예제 #2
0
        public void OnlyStaleLocksAreExpired()
        {
            var packageOne = CreatePackageIdentity("PackageOne", "1.0");
            var packageTwo = CreatePackageIdentity("PackageTwo", "1.0");

            var packageOneLocks = new PackageLocks
            {
                new UsageDetails(new ServerTaskId("Deployment-1"), new CacheAge(1), new DateTime(2021, 1, 1)),
            };

            var packageTwoLocks = new PackageLocks
            {
                new UsageDetails(new ServerTaskId("Deployment-2"), new CacheAge(1), DateTime.Now),
            };

            var packageOneJournalEntry = new JournalEntry(packageOne, 1, packageOneLocks);
            var packageTwoJournalEntry = new JournalEntry(packageTwo, 1, packageTwoLocks);

            var journalEntries = new Dictionary <PackageIdentity, JournalEntry>()
            {
                { packageOne, packageOneJournalEntry },
                { packageTwo, packageTwoJournalEntry }
            };

            var testJournalRepository = new InMemoryJournalRepository(journalEntries);
            var testJournal           = new PackageJournal(testJournalRepository,
                                                           Substitute.For <ILog>(),
                                                           Substitute.For <ICalamariFileSystem>(),
                                                           Substitute.For <IRetentionAlgorithm>(),
                                                           Substitute.For <ISemaphoreFactory>());

            testJournal.ExpireStaleLocks(TimeSpan.FromDays(14));

            Assert.IsFalse(testJournalRepository.HasLock(packageOne));
            Assert.IsTrue(testJournalRepository.HasLock(packageTwo));
        }