Exemple #1
0
        public void T17()
        {
            var tran1 = new LockTransaction("Testing 101", "A", 0, 0.0d,
                                            LockOp.Assert(LockOp.SetVar("tblMany3", "Dima1", 12345, "Set Dima to 12345"))

                                            );

            var tran2 = new LockTransaction("Testing 101", "A", 0, 0.0d,
                                            LockOp.Assert(LockOp.SetVar("tA", "Key1", null, "This will be rolled back")),
                                            LockOp.Assert(LockOp.SetVar("tB", "Key2", null, "This will be rolled back")),
                                            LockOp.Assert(LockOp.SetVar("tblMany3", "Dima1", 78901, "Set Dima to 78901", allowDuplicates: false)) //DUPLICATES ARE DISALLOWED

                                            );

            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);

            var result = m_Server.ExecuteLockTransaction(session1, tran1);

            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            result = m_Server.ExecuteLockTransaction(session2, tran2);
            Aver.IsTrue(LockStatus.TransactionError == result.Status); //duplicates are not allowed
            Aver.IsTrue(LockErrorCause.Statement == result.ErrorCause);

            var read = new LockTransaction("Testing 101", "A", 0, 0.0d,
                                           LockOp.SelectVarValue("MY-RESULT", "tA", "Key1")
                                           );

            result = m_Server.ExecuteLockTransaction(session3, read);
            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            Aver.IsNull(result["MY-RESULT"]); //because the change rolled back the whole transaction
        }
Exemple #2
0
        public void T12()
        {
            var tran = new LockTransaction("Testing 101", "A", 0, 0.0d,
                                           LockOp.Assert(LockOp.SetVar("table1", "Dima", 12345, "Set Dima to 12345 in table1"))

                                           );

            var session1 = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000);
            var session2 = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "Another session", 1000);
            var result   = m_Server.ExecuteLockTransaction(session1, tran);

            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            var read = new LockTransaction("Testing 101", "A", 0, 0.0d,
                                           LockOp.SelectVarValue("MY-RESULT", "table1", "Dima")
                                           );

            result = m_Server.ExecuteLockTransaction(session2, read);

            Aver.IsTrue(LockStatus.TransactionOK == result.Status);
            Console.WriteLine(result["MY-RESULT"].GetType().FullName);


            var svar = (Agni.Locking.Server.Variable)result["MY-RESULT"];

            Aver.AreEqual(12345, svar.Value.AsInt());
            Aver.AreEqual("Set Dima to 12345 in table1", svar.Description);
        }
Exemple #3
0
        public void T16()
        {
            var tran1 = new LockTransaction("Testing 101", "A", 0, 0.0d,
                                            LockOp.Assert(LockOp.SetVar("tblMany2", "Dima1", 12345, "Set Dima to 12345"))

                                            );

            var tran2 = new LockTransaction("Testing 101", "A", 0, 0.0d,
                                            LockOp.Assert(LockOp.SetVar("tblMany2", "Dima1", 78901, "Set Dima to 78901", allowDuplicates: true)) //DUPLICATES ARE ALLOWED NOW

                                            );

            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);

            var result = m_Server.ExecuteLockTransaction(session1, tran1);

            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            result = m_Server.ExecuteLockTransaction(session2, tran2);
            Aver.IsTrue(LockStatus.TransactionOK == result.Status);


            var read = new LockTransaction("Testing 101", "A", 0, 0.0d,
                                           LockOp.SelectVarValue("MY-RESULT", "tblMany2", "Dima1", selectMany: true)
                                           );

            result = m_Server.ExecuteLockTransaction(session3, read);
            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            var svar = (Agni.Locking.Server.Variable[])result["MY-RESULT"];

            Aver.AreEqual(2, svar.Length);
            Aver.AreEqual(12345, svar[0].Value.AsInt());
            Aver.AreEqual("Set Dima to 12345", svar[0].Description);

            Aver.AreEqual(78901, svar[1].Value.AsInt());
            Aver.AreEqual("Set Dima to 78901", svar[1].Description);
        }
Exemple #4
0
        private void registerThisWorker()
        {
            ensureSession();

            var table = this.GetType().AssemblyQualifiedName;

            var value  = "{0}::{1}".Args(m_Round, AgniSystem.HostName);//round must be the first - it ensures different sorting every time when round changes
            var descr  = "{0} {1}".Args(GetType().Name, value);
            var script = new LockTransaction(descr, WORKSET_NS, 0, 0.0d,
                                             LockOp.SelectVarValue("Workers", table, Name, ignoreThisSession: true, abortIfNotFound: false, selectMany: true),
                                             LockOp.AnywayContinueAfter(LockOp.DeleteVar(table, Name), resetAbort: true),
                                             LockOp.Assert(LockOp.SetVar(table, Name, value, allowDuplicates: true))
                                             );
            var result = AgniSystem.LockManager.ExecuteLockTransaction(m_Session, script);

            if (result.ErrorCause != LockErrorCause.Unspecified)
            {
                //todo che delat?
                //Interumentatiopn + logging
                //Log()
            }

            var vars = result["Workers"] as SrvVar[];

            if (vars != null)
            {
                var values = new List <string>(vars.Select(v => v.Value.AsString()));
                values.Add(value);                            //add myself
                values.Sort(StringComparer.InvariantCulture); //must have pre-determined order

                m_WorkerCount = values.Count;
                m_MyIndex     = values.IndexOf(value);//my index in the set
            }
            else
            {
                m_WorkerCount = 1;
                m_MyIndex     = 0;
            }
        }
Exemple #5
0
        public void T14()
        {
            var tran = new LockTransaction("Testing 101", "A", 0, 0.0d,
                                           LockOp.Assert(LockOp.SetVar("table3", "Dima", 12345, "Set Dima to 12345"))

                                           );

            var session1 = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000);
            var session2 = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "Another session", 1000);
            var result   = m_Server.ExecuteLockTransaction(session1, tran);

            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            var read = new LockTransaction("Testing 101", "A", 0, 0.0d,
                                           LockOp.SelectVarValue("MY-RESULT", "different table", "Dima") //DIFFERENT TABLE NAME
                                           );

            result = m_Server.ExecuteLockTransaction(session2, read);

            Aver.IsTrue(LockStatus.TransactionOK == result.Status);
            Aver.IsNull(result["MY-RESULT"]);
        }
Exemple #6
0
 private LockTransaction select(string facility, string varName)
 {
     return(new LockTransaction("Test select var", "Clinical", 0, 0.0d,
                                LockOp.SelectVarValue("VAR-RESULT", varName, facility, chkIgnoreSession.Checked)
                                ));
 }
Exemple #7
0
        public void T25()
        {
            var set1 = new LockTransaction("Testing 101", "B", 0, 0.0d,
                                           LockOp.Assert(LockOp.SetVar("Doctor", "Sbaitso", "data{ age=23}", "Description 1", allowDuplicates: true))
                                           );

            var set2 = new LockTransaction("Testing 101", "B", 0, 0.0d,
                                           LockOp.Assert(LockOp.SetVar("Doctor", "Sbaitso", "data{ score=3489}", "Description 1", allowDuplicates: true)),
                                           LockOp.Assert(LockOp.SetVar("Doctor", "Lector", "zhaba", "Description 3", allowDuplicates: true))
                                           );


            var sessionSetter1 = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000);
            var sessionSetter2 = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000);
            var sessionGetter  = new Agni.Locking.Server.LockSessionData(new LockSessionID(null), "My session", 1000);

            var result = m_Server.ExecuteLockTransaction(sessionSetter1, set1);

            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            result = m_Server.ExecuteLockTransaction(sessionSetter2, set2);
            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            var get = new LockTransaction("Testing 101", "B", 0, 0.0d,
                                          LockOp.SelectVarValue("A", "Doctor", "Sbaitso", selectMany: true)
                                          );

            result = m_Server.ExecuteLockTransaction(sessionGetter, get);
            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            var v = result["A"] as Agni.Locking.Server.Variable[];

            Aver.IsNotNull(v);
            Aver.AreEqual(2, v.Length);
            Console.WriteLine(v[0].Value);
            Aver.AreEqual(23, v[0].Value.AsLaconicConfig().AttrByName("age").ValueAsInt());
            Aver.AreEqual(3489, v[1].Value.AsLaconicConfig().AttrByName("score").ValueAsInt());

            var del1 = new LockTransaction("Testing 101", "B", 0, 0.0d,
                                           LockOp.Assert(LockOp.DeleteVar("Doctor", "Sbaitso", "data{ age=12111113}"))
                                           );

            result = m_Server.ExecuteLockTransaction(sessionSetter1, del1);
            Aver.IsTrue(LockStatus.TransactionError == result.Status); //because DATA does not match
            Aver.IsTrue(LockErrorCause.Statement == result.ErrorCause);


            result = m_Server.ExecuteLockTransaction(sessionGetter, get);
            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            v = result["A"] as Agni.Locking.Server.Variable[];
            Aver.IsNotNull(v);
            Aver.AreEqual(2, v.Length);
            Console.WriteLine(v[0].Value);
            Aver.AreEqual(23, v[0].Value.AsLaconicConfig().AttrByName("age").ValueAsInt());
            Aver.AreEqual(3489, v[1].Value.AsLaconicConfig().AttrByName("score").ValueAsInt());


            del1 = new LockTransaction("Testing 101", "B", 0, 0.0d,
                                       LockOp.Assert(LockOp.DeleteVar("Doctor", "Sbaitso", null))
                                       );

            //Reexecute delet from setter2, it shpould only remove what he has set keeping setters'1 data
            result = m_Server.ExecuteLockTransaction(sessionSetter2, del1);
            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            result = m_Server.ExecuteLockTransaction(sessionGetter, get);
            Aver.IsTrue(LockStatus.TransactionOK == result.Status);

            //Setters'1 data is still here, but setter's2 is gone
            v = result["A"] as Agni.Locking.Server.Variable[];
            Aver.IsNotNull(v);
            Aver.AreEqual(1, v.Length);
            Console.WriteLine(v[0].Value);
            Aver.AreEqual(23, v[0].Value.AsLaconicConfig().AttrByName("age").ValueAsInt());
        }