public void Bug_20161102_DoubleSetvar() { var t1 = new LockTransaction("Bug 20161102", "Bug20161102", 0, 0, LockOp.Assert(LockOp.And(LockOp.SetVar("TBL_1", "BUG", null, allowDuplicates: false), LockOp.SetVar("TBL_2", "SAME", null, allowDuplicates: false)))); var t2 = new LockTransaction("Bug 20161102", "Bug20161102", 0, 0, LockOp.Assert(LockOp.And(LockOp.SetVar("TBL_1", "OTHER", null, allowDuplicates: false), LockOp.SetVar("TBL_2", "SAME", null, allowDuplicates: false)))); var s1 = new Agni.Locking.Server.LockSessionData(new LockSessionID("host1"), "Session 1", 1000); var s2 = new Agni.Locking.Server.LockSessionData(new LockSessionID("host2"), "Session 2", 1000); var result = m_Server.ExecuteLockTransaction(s1, t1); Aver.IsTrue(LockStatus.TransactionOK == result.Status); result = m_Server.ExecuteLockTransaction(s2, t2); Aver.IsTrue(LockStatus.TransactionError == result.Status); m_Server.EndLockSession(s1.ID); result = m_Server.ExecuteLockTransaction(s2, t2); Aver.IsTrue(LockStatus.TransactionOK == result.Status); }
public void T18() { var tran = new LockTransaction("Testing 101", "A", 0, 0.0d, LockOp.Assert(LockOp.SetVar("t1", "Data1", 123, "Set Data1 in tbl1 to 123")), LockOp.Assert(LockOp.SetVar("t2", "Data1", 123, "Set Data1 in tbl2 to 123")) ); var session1 = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000); var session2 = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000); var result = m_Server.ExecuteLockTransaction(session1, tran); Aver.IsTrue(LockStatus.TransactionOK == result.Status); var exists = new LockTransaction("Testing 101", "A", 0, 0.0d, LockOp.Assert( LockOp.And ( LockOp.Exists("t1", "Data1"), LockOp.Exists("t2", "Data1") ) )); result = m_Server.ExecuteLockTransaction(session1, exists); //ignore this session, since sessio1 is created under FALSE Aver.IsTrue(LockStatus.TransactionError == result.Status); Aver.IsTrue(LockErrorCause.Statement == result.ErrorCause); result = m_Server.ExecuteLockTransaction(session2, exists); //ignore this session, since session2 is NOT the created under TRUE Aver.IsTrue(LockStatus.TransactionOK == result.Status); }
public void T6() { var tran = new LockTransaction("Testing 101", "A", 0, 0.0d, LockOp.Assert(LockOp.And(LockOp.True, LockOp.False)) //assert(true & false) must fail ); var session = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000); var result = m_Server.ExecuteLockTransaction(session, tran); Aver.IsTrue(LockStatus.TransactionError == result.Status); Aver.IsTrue(LockErrorCause.Statement == result.ErrorCause); Aver.AreEqual("0:/AssertOp/", result.FailedStatement); }
public void T10() { var tran = new LockTransaction("Testing 101", "A", 0, 0.0d, LockOp.Assert(LockOp.True), LockOp.Assert(LockOp.And(LockOp.True, LockOp.True)), LockOp.Assert(LockOp.Or(LockOp.False, LockOp.True)), LockOp.Assert(LockOp.Not(LockOp.Or(LockOp.False, LockOp.False))), LockOp.Assert(LockOp.Not(LockOp.False)), LockOp.Assert(LockOp.Xor(LockOp.False, LockOp.True)), LockOp.Assert(LockOp.Xor(LockOp.True, LockOp.False)), LockOp.Assert(LockOp.Not(LockOp.Xor(LockOp.True, LockOp.True))), LockOp.Assert(LockOp.Not(LockOp.Xor(LockOp.False, LockOp.False))) ); var session = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000); var result = m_Server.ExecuteLockTransaction(session, tran); Aver.IsTrue(LockStatus.TransactionOK == result.Status); }
public void T19() { var set1 = new LockTransaction("Testing 101", "A", 0, 0.0d, LockOp.Assert(LockOp.SetVar("Patient", "Barkhan1", null, "Oleg Petrovich Barkharev")) ); var set2 = new LockTransaction("Testing 101", "A", 0, 0.0d, LockOp.Assert(LockOp.SetVar("Patient", "buloch1970", null, "S***n Genadievich Bulochkin")) ); var session1 = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000); var session2 = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000); var session3 = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000); //1st user var result = m_Server.ExecuteLockTransaction(session1, set1); Aver.IsTrue(LockStatus.TransactionOK == result.Status); //2nd user result = m_Server.ExecuteLockTransaction(session2, set2); Aver.IsTrue(LockStatus.TransactionOK == result.Status); var exists = new LockTransaction("Testing 101", "A", 0, 0.0d, LockOp.Assert( LockOp.And ( LockOp.Exists("Patient", "Barkhan1"), LockOp.Exists("Patient", "buloch1970") ) )); //3rd user sees what the first two have set result = m_Server.ExecuteLockTransaction(session3, exists); Aver.IsTrue(LockStatus.TransactionOK == result.Status); var delete = new LockTransaction("Testing 101", "A", 0, 0.0d, LockOp.Assert( LockOp.DeleteVar("Patient", "Barkhan1", null) )); //2nd user wants to delete what the 1st set, CANT result = m_Server.ExecuteLockTransaction(session2, delete); Aver.IsTrue(LockStatus.TransactionError == result.Status); Aver.IsTrue(LockErrorCause.Statement == result.ErrorCause); //3rd user wants to delete what the 1st set, CANT result = m_Server.ExecuteLockTransaction(session3, delete); Aver.IsTrue(LockStatus.TransactionError == result.Status); Aver.IsTrue(LockErrorCause.Statement == result.ErrorCause); //3rd user still sees the two original records result = m_Server.ExecuteLockTransaction(session3, exists); Aver.IsTrue(LockStatus.TransactionOK == result.Status); //1st user deletes what the 1st set, CAN result = m_Server.ExecuteLockTransaction(session1, delete); Aver.IsTrue(LockStatus.TransactionOK == result.Status); //3rd user does not see the two original records anymore result = m_Server.ExecuteLockTransaction(session3, exists); Aver.IsTrue(LockStatus.TransactionError == result.Status); Aver.IsTrue(LockErrorCause.Statement == result.ErrorCause); //3rd does not see the first, but still sees the second result = m_Server.ExecuteLockTransaction(session3, new LockTransaction("Testing 101", "A", 0, 0.0d, LockOp.Assert( LockOp.And ( LockOp.Not(LockOp.Exists("Patient", "Barkhan1")), LockOp.Exists("Patient", "buloch1970") ) ))); Aver.IsTrue(LockStatus.TransactionOK == result.Status); }