summaryrefslogtreecommitdiffstats
path: root/vespamalloc/src/tests
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-01-07 12:13:54 +0100
committerGitHub <noreply@github.com>2017-01-07 12:13:54 +0100
commit95881a2d13b3db13ea4fe936d5195f8b791748ca (patch)
treeb6116441b0e65f69f0486240875c936ac0e7406b /vespamalloc/src/tests
parenta35ffed3918dab6e41fd7052ed82b82bdae54abb (diff)
Revert "Revert "Balder/vespamalloc should not depend on anything else rebased 2""
Diffstat (limited to 'vespamalloc/src/tests')
-rw-r--r--vespamalloc/src/tests/allocfree/allocfree.cpp9
-rw-r--r--vespamalloc/src/tests/allocfree/creatingmanythreads.cpp3
-rw-r--r--vespamalloc/src/tests/allocfree/linklist.cpp29
-rw-r--r--vespamalloc/src/tests/allocfree/realloc.cpp5
-rw-r--r--vespamalloc/src/tests/doubledelete/expectsignal.cpp4
-rw-r--r--vespamalloc/src/tests/overwrite/expectsignal.cpp4
-rw-r--r--vespamalloc/src/tests/overwrite/overwrite.cpp4
-rw-r--r--vespamalloc/src/tests/test.cpp2
-rw-r--r--vespamalloc/src/tests/test1/CMakeLists.txt1
-rw-r--r--vespamalloc/src/tests/test1/testatomic.cpp26
10 files changed, 40 insertions, 47 deletions
diff --git a/vespamalloc/src/tests/allocfree/allocfree.cpp b/vespamalloc/src/tests/allocfree/allocfree.cpp
index f1ecb74754b..7e81aaa9c1d 100644
--- a/vespamalloc/src/tests/allocfree/allocfree.cpp
+++ b/vespamalloc/src/tests/allocfree/allocfree.cpp
@@ -1,16 +1,15 @@
// 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/log/log.h>
-#include <vespa/vespalib/testkit/testapp.h>
#include "producerconsumer.h"
+#include <vespa/vespalib/testkit/testapp.h>
#include <map>
+#include <vespa/log/log.h>
+LOG_SETUP("allocfree_test");
+
using vespalib::Consumer;
using vespalib::Producer;
using vespalib::ProducerConsumer;
-LOG_SETUP("allocfree_test");
-
TEST_SETUP(Test);
//-----------------------------------------------------------------------------
diff --git a/vespamalloc/src/tests/allocfree/creatingmanythreads.cpp b/vespamalloc/src/tests/allocfree/creatingmanythreads.cpp
index 53de3f274cc..86da05311c6 100644
--- a/vespamalloc/src/tests/allocfree/creatingmanythreads.cpp
+++ b/vespamalloc/src/tests/allocfree/creatingmanythreads.cpp
@@ -1,8 +1,7 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/log/log.h>
-#include <vespa/fastos/fastos.h>
#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/log/log.h>
LOG_SETUP("creatingmanythreads_test");
TEST_SETUP(Test);
diff --git a/vespamalloc/src/tests/allocfree/linklist.cpp b/vespamalloc/src/tests/allocfree/linklist.cpp
index 39cd237420b..9642c987899 100644
--- a/vespamalloc/src/tests/allocfree/linklist.cpp
+++ b/vespamalloc/src/tests/allocfree/linklist.cpp
@@ -1,17 +1,15 @@
// 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/vespalib/testkit/testapp.h>
#include "producerconsumer.h"
+#include <vespa/vespalib/testkit/testapp.h>
#include <vespamalloc/malloc/allocchunk.h>
#include <vespamalloc/util/callstack.h>
#include <vespa/log/log.h>
+LOG_SETUP("linklist_test");
using vespalib::Consumer;
using vespalib::Producer;
using vespalib::ProducerConsumer;
-LOG_SETUP("linklist_test");
-
TEST_SETUP(Test);
//-----------------------------------------------------------------------------
@@ -60,9 +58,9 @@ List globalList[NumBlocks];
class LinkIn : public Consumer {
public:
- LinkIn(List::HeadPtr & list, uint32_t maxQueue, bool inverse);
+ LinkIn(List::AtomicHeadPtr & list, uint32_t maxQueue, bool inverse);
private:
- List::HeadPtr & _head;
+ List::AtomicHeadPtr & _head;
virtual void consume(void * p) {
List * l((List *) p);
if ( ! ((l >= &globalList[0]) && (l < &globalList[NumBlocks]))) { abort(); }
@@ -70,7 +68,7 @@ private:
}
};
-LinkIn::LinkIn(List::HeadPtr & list, uint32_t maxQueue, bool inverse) :
+LinkIn::LinkIn(List::AtomicHeadPtr & list, uint32_t maxQueue, bool inverse) :
Consumer (maxQueue, inverse),
_head(list)
{
@@ -80,10 +78,10 @@ LinkIn::LinkIn(List::HeadPtr & list, uint32_t maxQueue, bool inverse) :
class LinkOut : public Producer {
public:
- LinkOut(List::HeadPtr & list, uint32_t cnt, LinkIn &target)
+ LinkOut(List::AtomicHeadPtr & list, uint32_t cnt, LinkIn &target)
: Producer(cnt, target), _head(list) {}
private:
- List::HeadPtr & _head;
+ List::AtomicHeadPtr & _head;
virtual void * produce() {
void *p = List::linkOut(_head);
List *l((List *)p);
@@ -96,10 +94,10 @@ private:
class LinkInOutAndIn : public ProducerConsumer {
public:
- LinkInOutAndIn(List::HeadPtr & list, uint32_t cnt, bool inverse)
+ LinkInOutAndIn(List::AtomicHeadPtr & list, uint32_t cnt, bool inverse)
: ProducerConsumer(cnt, inverse), _head(list) { }
private:
- List::HeadPtr & _head;
+ List::AtomicHeadPtr & _head;
virtual void * produce() {
void *p = List::linkOut(_head);
List *l((List *)p);
@@ -125,10 +123,7 @@ int Test::Main() {
ASSERT_EQUAL(1024ul, sizeof(List));
FastOS_ThreadPool pool(128000);
- List::HeadPtr sharedList;
- sharedList._tag = 1;
- List::init();
- List::enableThreadSupport();
+ List::AtomicHeadPtr sharedList(List::HeadPtr(nullptr, 1));
fprintf(stderr, "Start populating list\n");
for (size_t i=0; i < NumBlocks; i++) {
List * l(&globalList[i]);
@@ -143,7 +138,9 @@ int Test::Main() {
List *n = List::linkOut(sharedList);
ASSERT_TRUE(n == NULL);
- sharedList._tag = 1;
+ List::HeadPtr tmp(sharedList.load());
+ tmp._tag = 1;
+ sharedList.store(tmp);
fprintf(stderr, "Start populating list\n");
for (size_t i=0; i < NumBlocks; i++) {
List * l(&globalList[i]);
diff --git a/vespamalloc/src/tests/allocfree/realloc.cpp b/vespamalloc/src/tests/allocfree/realloc.cpp
index 8cfd50d0132..efaf89f7e1b 100644
--- a/vespamalloc/src/tests/allocfree/realloc.cpp
+++ b/vespamalloc/src/tests/allocfree/realloc.cpp
@@ -1,9 +1,6 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/log/log.h>
-#include <vespa/fastos/fastos.h>
-#include <vespa/vespalib/testkit/testapp.h>
-LOG_SETUP("realloc_test");
+#include <vespa/vespalib/testkit/testapp.h>
TEST_SETUP(Test);
diff --git a/vespamalloc/src/tests/doubledelete/expectsignal.cpp b/vespamalloc/src/tests/doubledelete/expectsignal.cpp
index 0b2d5e154c4..f1fb6eb5694 100644
--- a/vespamalloc/src/tests/doubledelete/expectsignal.cpp
+++ b/vespamalloc/src/tests/doubledelete/expectsignal.cpp
@@ -1,11 +1,7 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/log/log.h>
-#include <vespa/fastos/fastos.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/slaveproc.h>
-LOG_SETUP("expectsignal_test");
-
using namespace vespalib;
class Test : public TestApp
diff --git a/vespamalloc/src/tests/overwrite/expectsignal.cpp b/vespamalloc/src/tests/overwrite/expectsignal.cpp
index 0b2d5e154c4..f1fb6eb5694 100644
--- a/vespamalloc/src/tests/overwrite/expectsignal.cpp
+++ b/vespamalloc/src/tests/overwrite/expectsignal.cpp
@@ -1,11 +1,7 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/log/log.h>
-#include <vespa/fastos/fastos.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/slaveproc.h>
-LOG_SETUP("expectsignal_test");
-
using namespace vespalib;
class Test : public TestApp
diff --git a/vespamalloc/src/tests/overwrite/overwrite.cpp b/vespamalloc/src/tests/overwrite/overwrite.cpp
index d7057444505..8c35fe841fe 100644
--- a/vespamalloc/src/tests/overwrite/overwrite.cpp
+++ b/vespamalloc/src/tests/overwrite/overwrite.cpp
@@ -1,10 +1,6 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/log/log.h>
-#include <vespa/fastos/fastos.h>
#include <vespa/vespalib/testkit/testapp.h>
-LOG_SETUP("overwrite_test");
-
using namespace vespalib;
class Test : public TestApp
diff --git a/vespamalloc/src/tests/test.cpp b/vespamalloc/src/tests/test.cpp
index 24acb3368d8..d6208fdc240 100644
--- a/vespamalloc/src/tests/test.cpp
+++ b/vespamalloc/src/tests/test.cpp
@@ -1,7 +1,7 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdio.h>
#include <stdlib.h>
-#include <vespa/fastos/fastos.h>
+#include <vespa/fastos/thread.h>
namespace vespamalloc {
void info();
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..78d94429a3f 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::TaggedPtr> taggedPtr;
+ ASSERT_EQUAL(16, sizeof(vespamalloc::TaggedPtr));
+ ASSERT_TRUE(taggedPtr.is_lock_free());
+ }
+
testSwap<uint32_t>(6);
testSwap<uint32_t>(7);
testSwap<uint32_t>(uint32_t(-6));