//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test void concurrentFlushingWithFailuresMustNotPutInterleavedDataIntoFile()
        internal virtual void ConcurrentFlushingWithFailuresMustNotPutInterleavedDataIntoFile()
        {
            assertTimeout(ofMillis(LONG_TIMEOUT_MILLIS), () =>
            {
                RecordFormat recordFormat = new StandardRecordFormat();
                const int filePageCount   = 2_000;
                using (RandomPageCacheTestHarness harness = new RandomPageCacheTestHarness())
                {
                    harness.ConcurrencyLevel   = 16;
                    harness.UseAdversarialIO   = true;
                    harness.MischiefRate       = 0.0;
                    harness.FailureRate        = 0.5;
                    harness.ErrorRate          = 0.0;
                    harness.CachePageCount     = filePageCount / 2;
                    harness.FilePageCount      = filePageCount;
                    harness.InitialMappedFiles = 3;
                    harness.CommandCount       = 15_000;
                    harness.FileSystem         = fs;
                    harness.disableCommands(MapFile, UnmapFile, ReadRecord, ReadMulti);
                    harness.Verification = FilesAreCorrectlyWrittenVerification(recordFormat, filePageCount);

                    harness.run(LONG_TIMEOUT_MILLIS, MILLISECONDS);
                }
            });
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test void concurrentPageFaultingMustNotPutInterleavedDataIntoPages()
        internal virtual void ConcurrentPageFaultingMustNotPutInterleavedDataIntoPages()
        {
            assertTimeout(ofMillis(LONG_TIMEOUT_MILLIS), () =>
            {
                const int filePageCount   = 11;
                RecordFormat recordFormat = new PageCountRecordFormat();
                using (RandomPageCacheTestHarness harness = new RandomPageCacheTestHarness())
                {
                    harness.ConcurrencyLevel   = 11;
                    harness.UseAdversarialIO   = false;
                    harness.CachePageCount     = 3;
                    harness.FilePageCount      = filePageCount;
                    harness.InitialMappedFiles = 1;
                    harness.CommandCount       = 10000;
                    harness.RecordFormat       = recordFormat;
                    harness.FileSystem         = fs;
                    harness.useProfiler(Profiler);
                    harness.disableCommands(FlushCache, FlushFile, MapFile, UnmapFile, WriteRecord, WriteMulti);
                    harness.Preparation = (cache, fs, filesTouched) =>
                    {
                        File file = filesTouched.GetEnumerator().next();
                        using (PagedFile pf = cache.map(file, cache.pageSize()), PageCursor cursor = pf.Io(0, PF_SHARED_WRITE_LOCK))
                        {
                            for (int pageId = 0; pageId < filePageCount; pageId++)
                            {
                                cursor.Next();
                                recordFormat.fillWithRecords(cursor);
                            }
                        }
                    };

                    harness.run(LONG_TIMEOUT_MILLIS, MILLISECONDS);
                }
            });
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @RepeatedTest(10) void readsAndWritesMustBeMutuallyConsistent()
        internal virtual void ReadsAndWritesMustBeMutuallyConsistent()
        {
            assertTimeout(ofMillis(SEMI_LONG_TIMEOUT_MILLIS), () =>
            {
                int filePageCount = 100;
                using (RandomPageCacheTestHarness harness = new RandomPageCacheTestHarness())
                {
                    harness.disableCommands(FlushCache, FlushFile, MapFile, UnmapFile);
                    harness.setCommandProbabilityFactor(ReadRecord, 0.5);
                    harness.setCommandProbabilityFactor(WriteRecord, 0.5);
                    harness.ConcurrencyLevel   = 8;
                    harness.FilePageCount      = filePageCount;
                    harness.InitialMappedFiles = 1;
                    harness.Verification       = FilesAreCorrectlyWrittenVerification(new StandardRecordFormat(), filePageCount);
                    harness.run(SEMI_LONG_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
                }
            });
        }