Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }