This is an automated email from the ASF dual-hosted git repository.

bcall pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new f683b76  Fix test_AcidPtr
f683b76 is described below

commit f683b767405908c22c2fdd2a9d38cbfe9e8c335a
Author: Aaron Canary <acan...@oath.com>
AuthorDate: Fri Mar 8 13:56:01 2019 -0600

    Fix test_AcidPtr
    
    needed to call destructor
---
 src/tscore/unit_tests/test_AcidPtr.cc    | 17 +++++++++++++++++
 src/tscore/unit_tests/test_Extendible.cc | 24 ++++++++++++++++++++----
 2 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/src/tscore/unit_tests/test_AcidPtr.cc 
b/src/tscore/unit_tests/test_AcidPtr.cc
index e3f8901..f33af7b 100644
--- a/src/tscore/unit_tests/test_AcidPtr.cc
+++ b/src/tscore/unit_tests/test_AcidPtr.cc
@@ -94,3 +94,20 @@ TEST_CASE("AcidPtr Isolation")
   }
   CHECK(*p.getPtr() == 42);
 }
+
+TEST_CASE("AcidPtr Abort")
+{
+  AcidPtr<int> p;
+  {
+    AcidCommitPtr<int> w(p);
+    *w = 40;
+  }
+  CHECK(*p.getPtr() == 40);
+  {
+    AcidCommitPtr<int> w = p;
+    *w += 1;
+    w.abort();
+    CHECK(w == nullptr);
+  }
+  CHECK(*p.getPtr() == 40);
+}
diff --git a/src/tscore/unit_tests/test_Extendible.cc 
b/src/tscore/unit_tests/test_Extendible.cc
index 6a0900e..3166929 100644
--- a/src/tscore/unit_tests/test_Extendible.cc
+++ b/src/tscore/unit_tests/test_Extendible.cc
@@ -209,13 +209,28 @@ TEST_CASE("Extendible", "")
     CHECK(testField::alive == 0);
   }
 
+  INFO("AcidPtr AcidCommitPtr malloc ptr int");
+  {
+    void *mem            = malloc(sizeof(AcidPtr<int>));
+    AcidPtr<int> &reader = *(new (mem) AcidPtr<int>);
+    {
+      auto writer = reader.startCommit();
+      CHECK(*writer == 0);
+      *writer = 1;
+      CHECK(*writer == 1);
+      CHECK(*reader.getPtr().get() == 0);
+      // end of scope writer, commit to reader
+    }
+    CHECK(*reader.getPtr().get() == 1);
+    reader.~AcidPtr<int>();
+    free(mem);
+  }
   INFO("AcidPtr AcidCommitPtr casting");
   {
-    void *mem = malloc(sizeof(AcidPtr<testField>));
-    new (mem) AcidPtr<testField>();
-    AcidPtr<testField> &reader = *static_cast<AcidPtr<testField> *>(mem);
+    void *mem                  = malloc(sizeof(AcidPtr<testField>));
+    AcidPtr<testField> &reader = *(new (mem) AcidPtr<testField>);
     {
-      AcidCommitPtr<testField> writer = AcidCommitPtr<testField>(reader);
+      auto writer = reader.startCommit();
       CHECK(writer->arr[0] == 1);
       CHECK(reader.getPtr()->arr[0] == 1);
       writer->arr[0] = 99;
@@ -223,6 +238,7 @@ TEST_CASE("Extendible", "")
       CHECK(reader.getPtr()->arr[0] == 1);
     }
     CHECK(reader.getPtr()->arr[0] == 99);
+    reader.~AcidPtr<testField>();
     free(mem);
   }
   INFO("ACIDPTR block-free reader")

Reply via email to