//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void transactionCommittedMustBeAtomic() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void TransactionCommittedMustBeAtomic() { using (MetaDataStore store = NewMetaDataStore()) { PagedFile pf = store.PagedFile; store.TransactionCommitted(2, 2, 2); AtomicLong writeCount = new AtomicLong(); AtomicLong fileReadCount = new AtomicLong(); AtomicLong apiReadCount = new AtomicLong(); int upperLimit = 10_000; int lowerLimit = 100; long endTime = currentTimeMillis() + SECONDS.toMillis(10); Race race = new Race(); race.WithEndCondition(() => writeCount.get() >= upperLimit && fileReadCount.get() >= upperLimit && apiReadCount.get() >= upperLimit); race.WithEndCondition(() => writeCount.get() >= lowerLimit && fileReadCount.get() >= lowerLimit && apiReadCount.get() >= lowerLimit && currentTimeMillis() >= endTime); race.AddContestants(3, () => { long count = writeCount.incrementAndGet(); store.TransactionCommitted(count, count, count); }); race.AddContestants(3, throwing(() => { using (PageCursor cursor = pf.Io(0, PagedFile.PF_SHARED_READ_LOCK)) { assertTrue(cursor.next()); long id; long checksum; do { id = store.GetRecordValue(cursor, MetaDataStore.Position.LastTransactionId); checksum = store.GetRecordValue(cursor, MetaDataStore.Position.LastTransactionChecksum); } while (cursor.shouldRetry()); AssertIdEqualsChecksum(id, checksum, "file"); fileReadCount.incrementAndGet(); } })); race.AddContestants(3, () => { TransactionId transaction = store.LastCommittedTransaction; AssertIdEqualsChecksum(transaction.TransactionIdConflict(), transaction.Checksum(), "API"); apiReadCount.incrementAndGet(); }); race.Go(); } }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void transactionClosedMustBeAtomic() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void TransactionClosedMustBeAtomic() { using (MetaDataStore store = NewMetaDataStore()) { PagedFile pf = store.PagedFile; int initialValue = 2; store.TransactionClosed(initialValue, initialValue, initialValue); AtomicLong writeCount = new AtomicLong(); AtomicLong fileReadCount = new AtomicLong(); AtomicLong apiReadCount = new AtomicLong(); int upperLimit = 10_000; int lowerLimit = 100; long endTime = currentTimeMillis() + SECONDS.toMillis(10); Race race = new Race(); race.WithEndCondition(() => writeCount.get() >= upperLimit && fileReadCount.get() >= upperLimit && apiReadCount.get() >= upperLimit); race.WithEndCondition(() => writeCount.get() >= lowerLimit && fileReadCount.get() >= lowerLimit && apiReadCount.get() >= lowerLimit && currentTimeMillis() >= endTime); race.AddContestants(3, () => { long count = writeCount.incrementAndGet(); store.TransactionCommitted(count, count, count); }); race.AddContestants(3, throwing(() => { using (PageCursor cursor = pf.Io(0, PagedFile.PF_SHARED_READ_LOCK)) { assertTrue(cursor.next()); long logVersion; long byteOffset; do { logVersion = store.GetRecordValue(cursor, MetaDataStore.Position.LastClosedTransactionLogVersion); byteOffset = store.GetRecordValue(cursor, MetaDataStore.Position.LastClosedTransactionLogByteOffset); } while (cursor.shouldRetry()); AssertLogVersionEqualsByteOffset(logVersion, byteOffset, "file"); fileReadCount.incrementAndGet(); } })); race.AddContestants(3, () => { long[] transaction = store.LastClosedTransaction; AssertLogVersionEqualsByteOffset(transaction[0], transaction[1], "API"); apiReadCount.incrementAndGet(); }); race.Go(); } }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void transactionCommittedShouldFailWhenStoreIsClosed() public virtual void TransactionCommittedShouldFailWhenStoreIsClosed() { MetaDataStore metaDataStore = NewMetaDataStore(); metaDataStore.Close(); try { metaDataStore.TransactionCommitted(1, 1, BASE_TX_COMMIT_TIMESTAMP); fail("Expected exception reading from MetaDataStore after being closed."); } catch (Exception e) { assertThat(e, instanceOf(typeof(System.InvalidOperationException))); } }