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")