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 }
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); }
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); }
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; } }
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"]); }
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) )); }
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()); }