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 <[email protected]>
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")