private void txAbortButton_Click(object sender, EventArgs e) { //statusTextBox.Clear(); try { PadiDstm.TxAbort(); txBeginButton.Enabled = true; } catch (TxException) { statusTextBox.AppendText("Cannot abort. No active Transaction.\r\n"); } }
public void TestSimpleAbort(int uid0) { Console.WriteLine("------ Test: Simple Abort ------"); Logger.Log(new String[] { "Client", "------ Test: Simple Abort ------" }); Console.WriteLine("library created"); try { Console.WriteLine("init() Done"); PadiDstm.TxBegin(); Console.WriteLine("txBegin Done"); PadInt padInt0 = PadiDstm.CreatePadInt(uid0); Console.WriteLine("padInt0 created with uid: " + uid0); if (padInt0.Write(20)) { Console.WriteLine("padInt0 write done with value (20) : " + padInt0.Read()); } PadiDstm.TxAbort(); Console.WriteLine("txAbort Done"); /* do a read to test if the abort was successful */ Console.WriteLine("I will test if the abort was successful..."); PadiDstm.TxBegin(); Console.WriteLine("txBegin Done"); PadInt padInt0A = PadiDstm.AccessPadInt(uid0); /* the padInt's value must be equal to initialization value */ int value = padInt0A.Read(); if (value == 0) { Console.WriteLine("it's OK"); } else { Console.WriteLine("BUG!!!!!: abort was not successful... value = " + value); } PadiDstm.TxCommit(); Console.WriteLine("txCommit Done"); Console.WriteLine("closeChannel Done"); } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("------------"); Logger.Log(new String[] { "---------Simple abort end----------" }); }
/* * public bool TestReadPadIntOnFrozenServer(){ * // Test10: Issues access, read and write requests for a padInt on a frozen server, that will be recovered later * // Fails the 2001 server first to grant assignment to 2002 server * // Expected result: delay * launchMaster(); * launchTwoServers(); * try { * bool res = PadiDstm.TxBegin(); * // res = PadiDstm.Recover("tcp://localhost:2002/Server"); // continuacao do metodo anterior * res = PadiDstm.Fail("tcp://localhost:2001/Server"); * PadInt pi_o = PadiDstm.CreatePadInt(11); // assigned to 2002 * res = PadiDstm.Recover("tcp://localhost:2001/Server"); * res = PadiDstm.Freeze("tcp://localhost:2002/Server"); * pi_o = PadiDstm.AccessPadInt(11); * Console.WriteLine(pi_o.Read()); * pi_o.Write(5); * Console.WriteLine(pi_o.Read()); * res = PadiDstm.Recover("tcp://localhost:2002/Server"); * Console.WriteLine(pi_o.Read()); * res = PadiDstm.TxCommit(); * master.Kill(); * server1.Kill(); * server2.Kill(); * return res; * } catch (TxException e) { * Console.WriteLine("TestReadPadIntOnFrozenServer error: " + e); * master.Kill(); * server1.Kill(); * server2.Kill(); * return false; * } * } */ /* Transactions tests */ public bool TestReadPadIntAfterWritingTransactionAborted() { // Test11: Locally writes on a PadInt, and aborts this transaction. Another transaction will read the PadInt. // Expected result: The PadInt must have the initial values, no modifications. launchMaster(); launchTwoServers(); try { bool res = PadiDstm.TxBegin(); PadInt pi_p = PadiDstm.CreatePadInt(11); pi_p = PadiDstm.AccessPadInt(11); //Console.WriteLine(pi_p.Read()); Assert.AreEqual(pi_p.Read(), 0); // tem que estar a zero, valor inicial res = PadiDstm.TxCommit(); res = PadiDstm.TxBegin(); pi_p.Write(100); //Console.WriteLine(pi_p.Read()); Assert.AreEqual(pi_p.Read(), 100); // tem que estar a 100, modificação local res = PadiDstm.TxAbort(); // falha a transacção res = PadiDstm.TxBegin(); Assert.AreEqual(pi_p.Read(), 0); // tem que estar a zero, valor inicial res = PadiDstm.TxCommit(); master.Kill(); server1.Kill(); server2.Kill(); return(res); } catch (Exception e) { Console.WriteLine("TestReadPadIntAfterWritingTransactionAborted error: " + e); master.Kill(); server1.Kill(); server2.Kill(); return(false); } }
static void Main(string[] args) { bool res = false; int aborted = 0, committed = 0; PadiDstm.Init(); String key = Console.ReadLine(); if (key.Equals("C")) { args = new String[] { "C" }; } Stopwatch sw = Stopwatch.StartNew(); try { if ((args.Length > 0) && (args[0].Equals("C"))) { res = PadiDstm.TxBegin(); PadInt pi_a = PadiDstm.CreatePadInt(2); PadInt pi_b = PadiDstm.CreatePadInt(12); PadInt pi_c = PadiDstm.CreatePadInt(20); pi_a.Write(0); pi_b.Write(0); res = PadiDstm.TxCommit(); } Console.WriteLine("####################################################################"); Console.WriteLine("Finished creating PadInts. Press enter for 300 R/W transaction cycle."); Console.WriteLine("####################################################################"); Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); Console.ReadLine(); PadiDstm.TxAbort(); } for (int i = 0; i < 300; i++) { try { res = PadiDstm.TxBegin(); PadInt pi_d = PadiDstm.AccessPadInt(2); PadInt pi_e = PadiDstm.AccessPadInt(12); PadInt pi_f = PadiDstm.AccessPadInt(20); int d = pi_d.Read(); d++; pi_d.Write(d); int e = pi_e.Read(); e++; pi_e.Write(e); int f = pi_f.Read(); f++; pi_f.Write(f); Console.Write("."); res = PadiDstm.TxCommit(); if (res) { committed++; Console.Write("."); } else { aborted++; Console.WriteLine("$$$$$$$$$$$$$$ ABORT $$$$$$$$$$$$$$$$$"); } } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); Console.ReadLine(); PadiDstm.TxAbort(); aborted++; } } Console.WriteLine("####################################################################"); Console.WriteLine("committed = " + committed + " ; aborted = " + aborted); Console.WriteLine("Status after cycle. Press enter for verification transaction."); Console.WriteLine("####################################################################"); PadiDstm.Status(); Console.ReadLine(); try { res = PadiDstm.TxBegin(); PadInt pi_g = PadiDstm.AccessPadInt(2); PadInt pi_h = PadiDstm.AccessPadInt(12); PadInt pi_j = PadiDstm.AccessPadInt(20); int g = pi_g.Read(); int h = pi_h.Read(); int j = pi_j.Read(); res = PadiDstm.TxCommit(); Console.WriteLine("####################################################################"); Console.WriteLine("2 = " + g); Console.WriteLine("2000000001 = " + h); Console.WriteLine("1000000000 = " + j); Console.WriteLine("Status post verification transaction. Press enter for exit."); Console.WriteLine("####################################################################"); PadiDstm.Status(); Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); Console.ReadLine(); PadiDstm.TxAbort(); } sw.Stop(); Console.WriteLine("{Total time (ms) : " + (long)sw.ElapsedMilliseconds); Console.ReadLine(); }
static void Main(string[] args) { bool res = false; PadInt pi_a, pi_b; PadiDstm.Init(); if ((args.Length > 0) && (args[0].Equals("C"))) { try{ res = PadiDstm.TxBegin(); pi_a = PadiDstm.CreatePadInt(1); pi_b = PadiDstm.CreatePadInt(2000000000); Console.WriteLine("####################################################################"); Console.WriteLine("BEFORE create commit. Press enter for commit."); Console.WriteLine("####################################################################"); PadiDstm.Status(); Console.ReadLine(); res = PadiDstm.TxCommit(); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create commit. commit = " + res + " . Press enter for next transaction."); Console.WriteLine("####################################################################"); Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); Console.ReadLine(); PadiDstm.TxAbort(); } } try { res = PadiDstm.TxBegin(); if ((args.Length > 0) && ((args[0].Equals("A")) || (args[0].Equals("C")))) { pi_b = PadiDstm.AccessPadInt(2000000000); pi_b.Write(211); Console.WriteLine("####################################################################"); Console.WriteLine("Status post first op: write. Press enter for second op."); Console.WriteLine("####################################################################"); PadiDstm.Status(); Console.ReadLine(); pi_a = PadiDstm.AccessPadInt(1); //pi_a.Write(212); Console.WriteLine("####################################################################"); Console.WriteLine("Status post second op: read. uid(1)= " + pi_a.Read() + ". Press enter for commit."); Console.WriteLine("####################################################################"); PadiDstm.Status(); Console.ReadLine(); } else { pi_a = PadiDstm.AccessPadInt(1); pi_a.Write(221); Console.WriteLine("####################################################################"); Console.WriteLine("Status post first op: write. Press enter for second op."); Console.WriteLine("####################################################################"); PadiDstm.Status(); Console.ReadLine(); pi_b = PadiDstm.AccessPadInt(2000000000); //pi_b.Write(222); Console.WriteLine("####################################################################"); Console.WriteLine("Status post second op: read. uid(1)= " + pi_b.Read() + ". Press enter for commit."); Console.WriteLine("####################################################################"); PadiDstm.Status(); Console.ReadLine(); } res = PadiDstm.TxCommit(); Console.WriteLine("####################################################################"); Console.WriteLine("commit = " + res + " . Press enter for verification transaction."); Console.WriteLine("####################################################################"); Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER r/w ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); Console.ReadLine(); PadiDstm.TxAbort(); } try { res = PadiDstm.TxBegin(); PadInt pi_c = PadiDstm.AccessPadInt(1); PadInt pi_d = PadiDstm.AccessPadInt(2000000000); Console.WriteLine("0 = " + pi_c.Read()); Console.WriteLine("2000000000 = " + pi_d.Read()); Console.WriteLine("####################################################################"); Console.WriteLine("Status after verification read. Press enter for verification commit."); Console.WriteLine("####################################################################"); PadiDstm.Status(); res = PadiDstm.TxCommit(); Console.WriteLine("####################################################################"); Console.WriteLine("commit = " + res + " . Press enter for exit."); Console.WriteLine("####################################################################"); Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER verification ABORT. Commit returned " + res + " . Press enter for abort and exit."); Console.WriteLine("####################################################################"); Console.ReadLine(); PadiDstm.TxAbort(); } }
public void CrossedLocksTest() { bool res = false; PadInt pi_a, pi_b; PadiDstm.Init(); // if ((args.Length > 0) && (args[0].Equals("C"))) // { try { res = PadiDstm.TxBegin(); Assert.IsTrue(res, "Failed to begin first transaction."); pi_a = PadiDstm.CreatePadInt(1); Assert.IsNotNull(pi_a, "Failed to create padint a."); pi_b = PadiDstm.CreatePadInt(2000000000); Assert.IsNotNull(pi_b, "Failed to create padint b."); Console.WriteLine("####################################################################"); Console.WriteLine("BEFORE create commit. Press enter for commit."); Console.WriteLine("####################################################################"); PadiDstm.Status(); res = PadiDstm.TxCommit(); Assert.IsTrue(res, "Failed to commit first transaction."); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create commit. commit = " + res + " . Press enter for next transaction."); Console.WriteLine("####################################################################"); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); PadiDstm.TxAbort(); Assert.Fail("Failed to finalize first transaction."); } // } try { res = PadiDstm.TxBegin(); Assert.IsTrue(res, "Failed to begin second transaction."); // if ((args.Length > 0) && ((args[0].Equals("A")) || (args[0].Equals("C")))) // { pi_b = PadiDstm.AccessPadInt(2000000000); Assert.IsNotNull(pi_b, "Failed to access padint 2000000000 on second transaction."); pi_b.Write(211); Console.WriteLine("####################################################################"); Console.WriteLine("Status post first op: write. Press enter for second op."); Console.WriteLine("####################################################################"); PadiDstm.Status(); pi_a = PadiDstm.AccessPadInt(1); Assert.IsNotNull(pi_a, "Failed to access padint 1 on second transaction."); //pi_a.Write(212); Console.WriteLine("####################################################################"); Console.WriteLine("Status post second op: read. uid(1)= " + pi_a.Read() + ". Press enter for commit."); Console.WriteLine("####################################################################"); PadiDstm.Status(); // } // else // { pi_a = PadiDstm.AccessPadInt(1); Assert.IsNotNull(pi_a, "Failed to access padint 1 on second transaction."); pi_a.Write(221); Console.WriteLine("####################################################################"); Console.WriteLine("Status post first op: write. Press enter for second op."); Console.WriteLine("####################################################################"); PadiDstm.Status(); pi_b = PadiDstm.AccessPadInt(2000000000); Assert.IsNotNull(pi_b, "Failed to access padint 2000000000 on second transaction."); //pi_b.Write(222); Console.WriteLine("####################################################################"); Console.WriteLine("Status post second op: read. uid(1)= " + pi_b.Read() + ". Press enter for commit."); Console.WriteLine("####################################################################"); PadiDstm.Status(); //} res = PadiDstm.TxCommit(); Assert.IsTrue(res, "Failed to commit second transaction"); Console.WriteLine("####################################################################"); Console.WriteLine("commit = " + res + " . Press enter for verification transaction."); Console.WriteLine("####################################################################"); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER r/w ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); PadiDstm.TxAbort(); } try { res = PadiDstm.TxBegin(); PadInt pi_c = PadiDstm.AccessPadInt(1); PadInt pi_d = PadiDstm.AccessPadInt(2000000000); Console.WriteLine("0 = " + pi_c.Read()); Console.WriteLine("2000000000 = " + pi_d.Read()); Console.WriteLine("####################################################################"); Console.WriteLine("Status after verification read. Press enter for verification commit."); Console.WriteLine("####################################################################"); PadiDstm.Status(); res = PadiDstm.TxCommit(); Assert.IsTrue(res, "Failed to commit third transaction."); Console.WriteLine("####################################################################"); Console.WriteLine("commit = " + res + " . Press enter for exit."); Console.WriteLine("####################################################################"); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER verification ABORT. Commit returned " + res + " . Press enter for abort and exit."); Console.WriteLine("####################################################################"); PadiDstm.TxAbort(); Assert.Fail("Exception block. Failed to commit."); } }
static void Main(string[] args) { bool res = false; int aborted = 0, committed = 0; PadiDstm.Init(); try { if ((args.Length > 0) && (args[0].Equals("C"))) { res = PadiDstm.TxBegin(); for (int i = 0; i < 10001; i++) { PadInt pi_a = PadiDstm.CreatePadInt(i); pi_a.Write(i); } res = PadiDstm.TxCommit(); } Console.WriteLine("####################################################################"); Console.WriteLine("Finished creating PadInts. Press enter for sum transaction."); Console.WriteLine("####################################################################"); Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); Console.ReadLine(); PadiDstm.TxAbort(); } try { int sum = 0; PadInt pi_a; res = PadiDstm.TxBegin(); for (int i = 0; i < 9999; i++) { pi_a = PadiDstm.AccessPadInt(i); sum += pi_a.Read(); } Console.WriteLine("sum= " + sum); if (args[0].Equals("D1")) { pi_a = PadiDstm.AccessPadInt(10000); pi_a.Write(sum); } if (args[0].Equals("D2")) { pi_a = PadiDstm.AccessPadInt(10001); pi_a.Write(sum); } res = PadiDstm.TxCommit(); if (res) { committed++; Console.Write("."); } else { aborted++; Console.WriteLine("$$$$$$$$$$$$$$ ABORT $$$$$$$$$$$$$$$$$"); } } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); Console.ReadLine(); PadiDstm.TxAbort(); aborted++; } Console.WriteLine("####################################################################"); Console.WriteLine("committed = " + committed + " ; aborted = " + aborted); Console.WriteLine("Press enter for status."); Console.WriteLine("####################################################################"); Console.ReadLine(); PadiDstm.Status(); Console.WriteLine("####################################################################"); Console.WriteLine("Press enter for verification transaction."); Console.WriteLine("####################################################################"); try { res = PadiDstm.TxBegin(); PadInt pi_g = PadiDstm.AccessPadInt(10000); int g = pi_g.Read(); res = PadiDstm.TxCommit(); Console.WriteLine("####################################################################"); Console.WriteLine("sum = " + g); Console.WriteLine("Status post verification transaction. Press enter for exit."); Console.WriteLine("####################################################################"); PadiDstm.Status(); Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); Console.ReadLine(); PadiDstm.TxAbort(); } }
public void CicleTest() { bool res = false; int aborted = 0, committed = 0; PadiDstm.Init(); try { //if ((args.Length > 0) && (args[0].Equals("C"))) { res = PadiDstm.TxBegin(); PadInt pi_a = PadiDstm.CreatePadInt(2); Assert.IsNotNull(pi_a, "Padint a failed to create."); PadInt pi_b = PadiDstm.CreatePadInt(2000000001); Assert.IsNotNull(pi_b, "Padint b failed to create."); PadInt pi_c = PadiDstm.CreatePadInt(1000000000); Assert.IsNotNull(pi_c, "Padint c failed to create."); pi_a.Write(0); pi_b.Write(0); res = PadiDstm.TxCommit(); Assert.IsTrue(res, "Failed to commit first transaction."); //} Console.WriteLine("####################################################################"); Console.WriteLine("Finished creating PadInts. Press enter for 300 R/W transaction cycle."); Console.WriteLine("####################################################################"); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); PadiDstm.TxAbort(); Assert.Fail("Failed to commit first transaction."); } int previousD = 0; int previousE = 0; int previousF = 0; for (int i = 0; i < 300; i++) { try { res = PadiDstm.TxBegin(); PadInt pi_d = PadiDstm.AccessPadInt(2); Assert.IsNotNull(pi_d, "Padint a failed to access."); PadInt pi_e = PadiDstm.AccessPadInt(2000000001); Assert.IsNotNull(pi_e, "Padint e failed to access."); PadInt pi_f = PadiDstm.AccessPadInt(1000000000); Assert.IsNotNull(pi_f, "Padint f failed to access."); int d = pi_d.Read(); Assert.AreEqual(previousD, d, "Object d does not have a consistent value."); d++; pi_d.Write(d); previousD = d; int e = pi_e.Read(); Assert.AreEqual(previousE, e, "Object e does not have a consistent value."); e++; pi_e.Write(e); previousE = e; int f = pi_f.Read(); Assert.AreEqual(previousF, f, "Object f does not have a consistent value."); f++; pi_f.Write(f); previousF = f; Console.Write("."); res = PadiDstm.TxCommit(); Assert.IsTrue(res, "Failed to commit second transaction."); if (res) { committed++; Console.Write("."); } else { aborted++; Console.WriteLine("$$$$$$$$$$$$$$ ABORT $$$$$$$$$$$$$$$$$"); } } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); PadiDstm.TxAbort(); aborted++; } } Console.WriteLine("####################################################################"); Console.WriteLine("committed = " + committed + " ; aborted = " + aborted); Console.WriteLine("Status after cycle. Press enter for verification transaction."); Console.WriteLine("####################################################################"); PadiDstm.Status(); try { res = PadiDstm.TxBegin(); PadInt pi_g = PadiDstm.AccessPadInt(2); PadInt pi_h = PadiDstm.AccessPadInt(2000000001); PadInt pi_j = PadiDstm.AccessPadInt(1000000000); int g = pi_g.Read(); Assert.AreEqual(previousD, g, "Object g does not have a consistent value."); int h = pi_h.Read(); Assert.AreEqual(previousE, h, "Object d does not have a consistent value."); int j = pi_j.Read(); Assert.AreEqual(previousF, j, "Object d does not have a consistent value."); res = PadiDstm.TxCommit(); Assert.IsTrue(res, "Failed to commit last transaction."); Console.WriteLine("####################################################################"); Console.WriteLine("2 = " + g); Console.WriteLine("2000000001 = " + h); Console.WriteLine("1000000000 = " + j); Console.WriteLine("Status post verification transaction. Press enter for exit."); Console.WriteLine("####################################################################"); PadiDstm.Status(); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("####################################################################"); Console.WriteLine("AFTER create ABORT. Commit returned " + res + " . Press enter for abort and next transaction."); Console.WriteLine("####################################################################"); PadiDstm.TxAbort(); Assert.IsTrue(res, "Failed to commit last transaction."); } }
public void TestCreateTransaction() { const int UID1 = 10; const int UID2 = -10; const int WRITE = 5; bool result = PadiDstm.Init(); //Falha create bool beginSuccess = PadiDstm.TxBegin(); PadInt padInt1 = PadiDstm.CreatePadInt(UID1); padInt1.Write(WRITE); PadInt padInt2 = PadiDstm.CreatePadInt(UID2); padInt1.Write(WRITE); PadiDstm.TxAbort(); //Falha access beginSuccess = PadiDstm.TxBegin(); padInt1 = PadiDstm.AccessPadInt(UID1); Assert.IsNull(padInt1); padInt2 = PadiDstm.AccessPadInt(UID2); Assert.IsNull(padInt2); PadiDstm.TxCommit(); //Pode criar beginSuccess = PadiDstm.TxBegin(); padInt1 = PadiDstm.CreatePadInt(UID1); padInt1.Write(WRITE); padInt2 = PadiDstm.CreatePadInt(UID2); padInt2.Write(WRITE); PadiDstm.TxCommit(); //Pode ler beginSuccess = PadiDstm.TxBegin(); Assert.IsTrue(beginSuccess); padInt1 = PadiDstm.AccessPadInt(UID1); Assert.IsNotNull(padInt1); int r1 = padInt1.Read(); Assert.AreEqual(r1, WRITE); padInt2 = PadiDstm.AccessPadInt(UID2); Assert.IsNotNull(padInt2); int r2 = padInt2.Read(); Assert.AreEqual(r2, WRITE); PadiDstm.TxCommit(); //Ja esta criado beginSuccess = PadiDstm.TxBegin(); padInt1 = PadiDstm.CreatePadInt(UID1); Assert.IsNull(padInt1); padInt2 = PadiDstm.CreatePadInt(UID2); Assert.IsNull(padInt1); PadiDstm.TxCommit(); }
//Criado 3 //1-> 3 //2 -> 10 //3-> 30 private bool transaction2() { bool succeed; try { Console.WriteLine("Primeira transaccao começa"); succeed = PadiDstm.TxBegin(); if (!succeed) { return(false); } PadInt pad = PadiDstm.CreatePadInt(2); Console.WriteLine("Antes do write"); pad = PadiDstm.AccessPadInt(2); pad.Write(10); pad.Write(20); Console.WriteLine("Deve ler 20 ->" + pad.Read()); succeed = PadiDstm.TxCommit(); if (!succeed) { PadiDstm.TxAbort(); return(false); } Console.WriteLine("Segunda transaccao começa"); succeed = PadiDstm.TxBegin(); if (!succeed) { return(false); } pad = PadiDstm.AccessPadInt(2); pad.Write(10); Console.WriteLine("Deve dar 10 -> " + pad.Read()); succeed = PadiDstm.TxCommit(); if (!succeed) { PadiDstm.TxAbort(); return(false); } //T3 succeed = PadiDstm.TxBegin(); if (!succeed) { return(false); } pad = PadiDstm.CreatePadInt(3); pad.Write(30); Console.WriteLine("Deve dar 30 -> " + pad.Read()); succeed = PadiDstm.TxCommit(); if (!succeed) { PadiDstm.TxAbort(); return(false); } Console.ReadLine(); } catch (TxException e) { Console.WriteLine(e); } return(true); }