public async Task RecycledFileContentTableHonorsNewConfiguration()
        {
            WriteTestFiles();

            var originalTable = FileContentTable.CreateNew(LoggingContext, entryTimeToLive: 20);

            RecordContentHash(originalTable, m_testFileA, s_hashA);

            var newTable = FileContentTable.CreateFromTable(originalTable, LoggingContext, newEntryTimeToLive: 2);

            RecordContentHash(newTable, m_testFileB, s_hashB);

            FileContentTable loadedTable = null;

            for (int i = 0; i < 3; i++)
            {
                // Consume the TTLs
                // On the first reload the TTL for fileA will change so it will also be consumed
                loadedTable = await SaveAndReloadTable(loadedTable ?? newTable);
            }

            ExpectHashUnknown(loadedTable, m_testFileA);
            ExpectHashUnknown(loadedTable, m_testFileB);

            VerifyTable(loadedTable);
        }
        public void RecycledFileContentTableKeepsInformation()
        {
            WriteTestFiles();

            var originalTable = FileContentTable.CreateNew(LoggingContext);

            RecordContentHash(originalTable, m_testFileA, s_hashA);
            RecordContentHash(originalTable, m_testFileB, s_hashB);

            var newTable = FileContentTable.CreateFromTable(originalTable, LoggingContext);

            ExpectHashKnown(newTable, m_testFileA, s_hashA);
            ExpectHashKnown(newTable, m_testFileB, s_hashB);

            VerifyTable(newTable);
        }
        public void RecyclingFileContentTableIsTheSameAsSavingAndLoadingFromFile()
        {
            WriteTestFiles();

            var table = FileContentTable.CreateNew(LoggingContext, entryTimeToLive: 2);

            RecordContentHash(table, m_testFileA, s_hashA);                    // TTL(A) = 2

            table = FileContentTable.CreateFromTable(table, LoggingContext);   // TTL(A) = 1
            table = FileContentTable.CreateFromTable(table, LoggingContext);   // TTL(A) = 0

            RecordContentHash(table, m_testFileB, s_hashB);                    // TTL(B) = 2

            table = FileContentTable.CreateFromTable(table, LoggingContext);
            ExpectHashUnknown(table, m_testFileA);                             // A Evicted
            ExpectHashKnown(table, m_testFileB, s_hashB);                      // TTL(B) = 1

            VerifyTable(table);
        }