public void TestValidation1Event() { //Test the function of UpdateVersionMaxCommitTs() in the event-driven senario. UpdateVersionMaxCommitTsRequest req = new UpdateVersionMaxCommitTsRequest(TABLE_ID, DEFAULT_KEY, 1L, 5L); this.versionDb.GetVersionTable(TABLE_ID).EnqueueVersionEntryRequest(req); while (req.Result == null) { this.versionDb.Visit(TABLE_ID, 0); } VersionEntry versionEntry = req.Result as VersionEntry; Assert.AreEqual(5L, versionEntry.MaxCommitTs); req = new UpdateVersionMaxCommitTsRequest(TABLE_ID, DEFAULT_KEY, 1L, 3L); this.versionDb.GetVersionTable(TABLE_ID).EnqueueVersionEntryRequest(req); while (req.Result == null) { this.versionDb.Visit(TABLE_ID, 0); } this.versionDb.Visit(TABLE_ID, 0); versionEntry = req.Result as VersionEntry; Assert.AreEqual(5L, versionEntry.MaxCommitTs); }
public void TestValidation3Event() { UpdateVersionMaxCommitTsRequest req = new UpdateVersionMaxCommitTsRequest(TABLE_ID, DEFAULT_KEY, 1L, 5L); this.versionDb.GetVersionTable(TABLE_ID).EnqueueVersionEntryRequest(req); while (req.Result == null) { this.versionDb.Visit(TABLE_ID, 0); } TransactionExecution tex = new TransactionExecution(null, this.versionDb); tex.DEBUG_MODE = true; while (tex.Progress == TxProgress.Initi) { this.versionDb.Visit(RedisVersionDb.TX_TABLE, 0); tex.InitTx(); } tex.Read(TABLE_ID, DEFAULT_KEY, out bool received, out object payload); while (!received) { this.versionDb.Visit(TABLE_ID, 0); tex.Read(TABLE_ID, DEFAULT_KEY, out received, out payload); } tex.Upload(); while (tex.CurrentProc == null) { this.versionDb.Visit(TABLE_ID, 0); tex.Upload(); } tex.maxCommitTsOfWrites = 4L; tex.SetCommitTimestamp(); while (tex.CurrentProc == new Procedure(tex.SetCommitTimestamp)) { this.versionDb.Visit(RedisVersionDb.TX_TABLE, 0); tex.SetCommitTimestamp(); } VersionEntry versionEntry = this.versionDb.ReplaceVersionEntry(TABLE_ID, DEFAULT_KEY, 1L, 0L, 4L, -1, -1, long.MaxValue); tex.Validate(); while (tex.CurrentProc == new Procedure(tex.Validate)) { this.versionDb.Visit(TABLE_ID, 0); tex.Validate(); } Assert.AreEqual(new Procedure(tex.Abort), tex.CurrentProc); }
public void TestSetGetCommitTs5Event() { UpdateVersionMaxCommitTsRequest req = new UpdateVersionMaxCommitTsRequest(TABLE_ID, DEFAULT_KEY, 1L, 5L); this.versionDb.GetVersionTable(TABLE_ID).EnqueueVersionEntryRequest(req); while (req.Result == null) { this.versionDb.Visit(TABLE_ID, 0); } TransactionExecution tex = new TransactionExecution(null, this.versionDb); while (tex.Progress == TxProgress.Initi) { this.versionDb.Visit(RedisVersionDb.TX_TABLE, 0); tex.InitTx(); } tex.Read(TABLE_ID, DEFAULT_KEY, out bool received, out object payload); while (!received) { this.versionDb.Visit(TABLE_ID, 0); tex.Read(TABLE_ID, DEFAULT_KEY, out received, out payload); } tex.Update(TABLE_ID, DEFAULT_KEY, "value_update_1"); tex.Commit(); while (tex.Progress != TxProgress.Close) { this.versionDb.Visit(TABLE_ID, 0); this.versionDb.Visit(RedisVersionDb.TX_TABLE, 0); tex.CurrentProc(); } GetTxEntryRequest getTxReq = new GetTxEntryRequest(tex.txId); this.versionDb.EnqueueTxEntryRequest(tex.txId, getTxReq); this.versionDb.Visit(RedisVersionDb.TX_TABLE, 0); while (getTxReq.Result == null) { this.versionDb.Visit(RedisVersionDb.TX_TABLE, 0); } TxTableEntry txEntry = getTxReq.Result as TxTableEntry; Assert.AreEqual(6L, txEntry.CommitTime); }