summaryrefslogtreecommitdiffstats
path: root/vespamalloc/src/tests
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-12-22 09:47:36 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-01-06 23:21:15 +0100
commitfc3f722ae22b63ea9484a63ad1aa432490290258 (patch)
tree3f5195b0e29396b54eaac8bb643d3eea98b0661f /vespamalloc/src/tests
parent56b220ba1cf20f0ccb443ee684239622b3f6376b (diff)
remove the indirection due to not all cpus supporting cmpXchg16 in 2007.
Diffstat (limited to 'vespamalloc/src/tests')
-rw-r--r--vespamalloc/src/tests/allocfree/linklist.cpp2
-rw-r--r--vespamalloc/src/tests/test1/CMakeLists.txt1
-rw-r--r--vespamalloc/src/tests/test1/testatomic.cpp26
3 files changed, 20 insertions, 9 deletions
diff --git a/vespamalloc/src/tests/allocfree/linklist.cpp b/vespamalloc/src/tests/allocfree/linklist.cpp
index 39cd237420b..5dabdca65d6 100644
--- a/vespamalloc/src/tests/allocfree/linklist.cpp
+++ b/vespamalloc/src/tests/allocfree/linklist.cpp
@@ -127,8 +127,6 @@ int Test::Main() {
FastOS_ThreadPool pool(128000);
List::HeadPtr sharedList;
sharedList._tag = 1;
- List::init();
- List::enableThreadSupport();
fprintf(stderr, "Start populating list\n");
for (size_t i=0; i < NumBlocks; i++) {
List * l(&globalList[i]);
diff --git a/vespamalloc/src/tests/test1/CMakeLists.txt b/vespamalloc/src/tests/test1/CMakeLists.txt
index 205de0f96fc..3120f1d39d0 100644
--- a/vespamalloc/src/tests/test1/CMakeLists.txt
+++ b/vespamalloc/src/tests/test1/CMakeLists.txt
@@ -3,5 +3,6 @@ vespa_add_executable(vespamalloc_testatomic_app TEST
SOURCES
testatomic.cpp
DEPENDS
+ atomic
)
vespa_add_test(NAME vespamalloc_testatomic_app NO_VALGRIND COMMAND vespamalloc_testatomic_app)
diff --git a/vespamalloc/src/tests/test1/testatomic.cpp b/vespamalloc/src/tests/test1/testatomic.cpp
index 1222493446c..8d72e560bf1 100644
--- a/vespamalloc/src/tests/test1/testatomic.cpp
+++ b/vespamalloc/src/tests/test1/testatomic.cpp
@@ -1,10 +1,8 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/fastos/fastos.h>
+#include <vespa/fastos/thread.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/atomic.h>
-#include <vector>
-
-using vespalib::Atomic;
+#include <vespamalloc/malloc/allocchunk.h>
class Test : public vespalib::TestApp
{
@@ -39,10 +37,10 @@ void Test::testSwap(T initial)
{
T value(initial);
- ASSERT_TRUE(Atomic::cmpSwap(&value, initial+1, initial));
+ ASSERT_TRUE(vespalib::Atomic::cmpSwap(&value, initial+1, initial));
ASSERT_TRUE(value == initial+1);
- ASSERT_TRUE(!Atomic::cmpSwap(&value, initial+2, initial));
+ ASSERT_TRUE(!vespalib::Atomic::cmpSwap(&value, initial+2, initial));
ASSERT_TRUE(value == initial+1);
}
@@ -91,7 +89,7 @@ template <typename T>
void Stress<T>::stressSwap(T & value)
{
for (T old = value; old > 0; old = value) {
- if (Atomic::cmpSwap(&value, old-1, old)) {
+ if (vespalib::Atomic::cmpSwap(&value, old-1, old)) {
_successCount++;
} else {
_failedCount++;
@@ -103,6 +101,20 @@ int Test::Main()
{
TEST_INIT("atomic");
+ {
+ std::atomic<uint32_t> uint32V;
+ ASSERT_TRUE(uint32V.is_lock_free());
+ }
+ {
+ std::atomic<uint64_t> uint64V;
+ ASSERT_TRUE(uint64V.is_lock_free());
+ }
+ {
+ std::atomic<vespamalloc::Atomic::TaggedPtr> taggedPtr;
+ ASSERT_EQUAL(16, sizeof(vespamalloc::Atomic::TaggedPtr));
+ ASSERT_TRUE(taggedPtr.is_lock_free());
+ }
+
testSwap<uint32_t>(6);
testSwap<uint32_t>(7);
testSwap<uint32_t>(uint32_t(-6));