VPN licensing server
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

86 rindas
2.7KB

  1. <?php
  2. class TransactionTest_55 extends SimpleTest {
  3. function test_1_transactions() {
  4. DB::$nested_transactions = true;
  5. $depth = DB::startTransaction();
  6. $this->assert($depth === 1);
  7. DB::query("UPDATE accounts SET age=%i WHERE username=%s", 700, 'Abe');
  8. $depth = DB::startTransaction();
  9. $this->assert($depth === 2);
  10. DB::query("UPDATE accounts SET age=%i WHERE username=%s", 800, 'Abe');
  11. $depth = DB::startTransaction();
  12. $this->assert($depth === 3);
  13. $this->assert(DB::transactionDepth() === 3);
  14. DB::query("UPDATE accounts SET age=%i WHERE username=%s", 500, 'Abe');
  15. $depth = DB::commit();
  16. $this->assert($depth === 2);
  17. $age = DB::queryFirstField("SELECT age FROM accounts WHERE username=%s", 'Abe');
  18. $this->assert($age == 500);
  19. $depth = DB::rollback();
  20. $this->assert($depth === 1);
  21. $age = DB::queryFirstField("SELECT age FROM accounts WHERE username=%s", 'Abe');
  22. $this->assert($age == 700);
  23. $depth = DB::commit();
  24. $this->assert($depth === 0);
  25. $age = DB::queryFirstField("SELECT age FROM accounts WHERE username=%s", 'Abe');
  26. $this->assert($age == 700);
  27. DB::$nested_transactions = false;
  28. }
  29. function test_2_transactions() {
  30. DB::$nested_transactions = true;
  31. DB::query("UPDATE accounts SET age=%i WHERE username=%s", 600, 'Abe');
  32. DB::startTransaction();
  33. DB::query("UPDATE accounts SET age=%i WHERE username=%s", 700, 'Abe');
  34. DB::startTransaction();
  35. DB::query("UPDATE accounts SET age=%i WHERE username=%s", 800, 'Abe');
  36. DB::rollback();
  37. $age = DB::queryFirstField("SELECT age FROM accounts WHERE username=%s", 'Abe');
  38. $this->assert($age == 700);
  39. DB::rollback();
  40. $age = DB::queryFirstField("SELECT age FROM accounts WHERE username=%s", 'Abe');
  41. $this->assert($age == 600);
  42. DB::$nested_transactions = false;
  43. }
  44. function test_3_transaction_rollback_all() {
  45. DB::$nested_transactions = true;
  46. DB::query("UPDATE accounts SET age=%i WHERE username=%s", 200, 'Abe');
  47. $depth = DB::startTransaction();
  48. $this->assert($depth === 1);
  49. DB::query("UPDATE accounts SET age=%i WHERE username=%s", 300, 'Abe');
  50. $depth = DB::startTransaction();
  51. $this->assert($depth === 2);
  52. DB::query("UPDATE accounts SET age=%i WHERE username=%s", 400, 'Abe');
  53. $depth = DB::rollback(true);
  54. $this->assert($depth === 0);
  55. $age = DB::queryFirstField("SELECT age FROM accounts WHERE username=%s", 'Abe');
  56. $this->assert($age == 200);
  57. DB::$nested_transactions = false;
  58. }
  59. }
  60. ?>