aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-01-02 23:49:22 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2017-01-02 23:49:22 +0000
commit68b74816c5b6cc614107d3baf004011f2f427b2d (patch)
tree48bcad3503b1817de77a9fbd75e780c50978de3f
parent5c55b1b26d664a6143ec4b93e0d4a23f798cab42 (diff)
Ensure that we use unique directories.
-rw-r--r--storage/src/tests/bucketdb/bucketmanagertest.cpp15
-rw-r--r--storage/src/tests/bucketdb/initializertest.cpp3
-rw-r--r--storage/src/tests/common/metricstest.cpp4
-rw-r--r--storage/src/tests/common/testhelper.cpp10
-rw-r--r--storage/src/tests/common/testhelper.h4
-rw-r--r--storage/src/tests/persistence/common/filestortestfixture.cpp10
-rw-r--r--storage/src/tests/persistence/filestorage/filestormanagertest.cpp25
-rw-r--r--storage/src/tests/persistence/persistencetestutils.cpp15
-rw-r--r--storage/src/tests/persistence/persistencetestutils.h3
-rw-r--r--storage/src/tests/storageserver/statereportertest.cpp4
-rw-r--r--storage/src/tests/visiting/visitortest.cpp12
-rw-r--r--vdstestlib/src/vespa/vdstestlib/cppunit/dirconfig.cpp31
-rw-r--r--vdstestlib/src/vespa/vdstestlib/cppunit/dirconfig.hpp30
13 files changed, 99 insertions, 67 deletions
diff --git a/storage/src/tests/bucketdb/bucketmanagertest.cpp b/storage/src/tests/bucketdb/bucketmanagertest.cpp
index aded935080d..b18d841bd5a 100644
--- a/storage/src/tests/bucketdb/bucketmanagertest.cpp
+++ b/storage/src/tests/bucketdb/bucketmanagertest.cpp
@@ -176,15 +176,22 @@ CPPUNIT_TEST_SUITE_REGISTRATION(BucketManagerTest);
CPPUNIT_FAIL(ost.str()); \
}
+std::string getRmDisk(const std::string & rootFolder, int disk) {
+ std::ostringstream os;
+ os << "rm -rf " << rootFolder << "/disks/d" << disk;
+ return os.str();
+}
+
void BucketManagerTest::setupTestEnvironment(bool fakePersistenceLayer,
bool noDelete)
{
+ vdstestlib::DirConfig config(getStandardConfig(true, "bucketmanagertest"));
+ std::string rootFolder = getRootFolder(config);
if (!noDelete) {
- assert(system("rm -rf vdsroot") == 0);
+ assert(system(("rm -rf " + rootFolder).c_str()) == 0);
}
- assert(system("mkdir -p vdsroot/disks/d0") == 0);
- assert(system("mkdir -p vdsroot/disks/d1") == 0);
- vdstestlib::DirConfig config(getStandardConfig(true));
+ assert(system(getRmDisk(rootFolder, 0).c_str()) == 0);
+ assert(system(getRmDisk(rootFolder, 1).c_str()) == 0);
DocumentTypeRepo::SP repo(new DocumentTypeRepo(
*ConfigGetter<DocumenttypesConfig>::getConfig(
diff --git a/storage/src/tests/bucketdb/initializertest.cpp b/storage/src/tests/bucketdb/initializertest.cpp
index 35094092e53..05e00184ce3 100644
--- a/storage/src/tests/bucketdb/initializertest.cpp
+++ b/storage/src/tests/bucketdb/initializertest.cpp
@@ -16,8 +16,9 @@
#include <vespa/vdstestlib/cppunit/dirconfig.h>
#include <vespa/vdstestlib/cppunit/macros.h>
#include <vespa/storage/bucketdb/lockablemap.hpp>
-#include <vespa/log/log.h>
+#include <vespa/vdstestlib/cppunit/dirconfig.hpp>
+#include <vespa/log/log.h>
LOG_SETUP(".test.bucketdb.initializing");
namespace storage {
diff --git a/storage/src/tests/common/metricstest.cpp b/storage/src/tests/common/metricstest.cpp
index 9c2c8289d58..5ee7d4633ad 100644
--- a/storage/src/tests/common/metricstest.cpp
+++ b/storage/src/tests/common/metricstest.cpp
@@ -83,8 +83,8 @@ MetricsTest::MetricsTest()
}
void MetricsTest::setUp() {
- assert(system("rm -rf vdsroot") == 0);
- _config.reset(new vdstestlib::DirConfig(getStandardConfig(true)));
+ _config.reset(new vdstestlib::DirConfig(getStandardConfig(true, "metricstest")));
+ assert(system(("rm -rf " + getRootFolder(*_config)).c_str()) == 0);
try {
_node.reset(new TestServiceLayerApp(DiskCount(4), NodeIndex(0),
_config->getConfigId()));
diff --git a/storage/src/tests/common/testhelper.cpp b/storage/src/tests/common/testhelper.cpp
index 214885fef7f..3ec189c573b 100644
--- a/storage/src/tests/common/testhelper.cpp
+++ b/storage/src/tests/common/testhelper.cpp
@@ -45,7 +45,12 @@ void addStorageDistributionConfig(vdstestlib::DirConfig& dc)
}
}
-vdstestlib::DirConfig getStandardConfig(bool storagenode) {
+std::string getRootFolder(vdstestlib::DirConfig & dc) {
+ std::string defaultValue("");
+ return dc.getConfig("stor-server").getValue("root_folder", defaultValue);
+}
+
+vdstestlib::DirConfig getStandardConfig(bool storagenode, const std::string & rootOfRoot) {
std::string clusterName("storage");
vdstestlib::DirConfig dc;
vdstestlib::DirConfig::Config* config;
@@ -146,7 +151,8 @@ vdstestlib::DirConfig getStandardConfig(bool storagenode) {
config->set("enable_dead_lock_detector_warnings", "false");
config->set("max_merges_per_node", "25");
config->set("max_merge_queue_size", "20");
- vespalib::string rootFolder = (storagenode ? "vdsroot" : "vdsroot.distributor");
+ vespalib::string rootFolder = rootOfRoot + "_";
+ rootFolder += (storagenode ? "vdsroot" : "vdsroot.distributor");
config->set("root_folder", rootFolder);
config->set("is_distributor", (storagenode ? "false" : "true"));
config = &dc.addConfig("stor-devices");
diff --git a/storage/src/tests/common/testhelper.h b/storage/src/tests/common/testhelper.h
index 988ebee2798..a833ce01321 100644
--- a/storage/src/tests/common/testhelper.h
+++ b/storage/src/tests/common/testhelper.h
@@ -40,7 +40,9 @@ void addFileConfig(vdstestlib::DirConfig& dc,
void addStorageDistributionConfig(vdstestlib::DirConfig& dc);
-vdstestlib::DirConfig getStandardConfig(bool storagenode);
+vdstestlib::DirConfig getStandardConfig(bool storagenode, const std::string & rootFolder = "todo-make-unique");
+
+std::string getRootFolder(vdstestlib::DirConfig & dc);
void addSlobrokConfig(vdstestlib::DirConfig& dc,
const mbus::Slobrok& slobrok);
diff --git a/storage/src/tests/persistence/common/filestortestfixture.cpp b/storage/src/tests/persistence/common/filestortestfixture.cpp
index 8f7a95f53c8..b43a9d0ca8e 100644
--- a/storage/src/tests/persistence/common/filestortestfixture.cpp
+++ b/storage/src/tests/persistence/common/filestortestfixture.cpp
@@ -1,11 +1,10 @@
// 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 <sstream>
#include <vespa/storage/persistence/messages.h>
#include <vespa/storage/persistence/filestorage/filestormanager.h>
#include <vespa/persistence/dummyimpl/dummypersistence.h>
#include <tests/persistence/common/filestortestfixture.h>
+#include <sstream>
namespace storage {
@@ -15,11 +14,12 @@ const uint32_t FileStorTestFixture::MSG_WAIT_TIME;
void
FileStorTestFixture::setupDisks(uint32_t diskCount)
{
- _config.reset(new vdstestlib::DirConfig(getStandardConfig(true)));
+ std::string rootOfRoot = "todo-make-unique-filestorefixture";
+ _config.reset(new vdstestlib::DirConfig(getStandardConfig(true, rootOfRoot)));
_config2.reset(new vdstestlib::DirConfig(*_config));
- _config2->getConfig("stor-server").set("root_folder", "vdsroot.2");
- _config2->getConfig("stor-devices").set("root_folder", "vdsroot.2");
+ _config2->getConfig("stor-server").set("root_folder", (rootOfRoot + "-vdsroot.2"));
+ _config2->getConfig("stor-devices").set("root_folder", (rootOfRoot + "-vdsroot.2"));
_config2->getConfig("stor-server").set("node_index", "1");
_smallConfig.reset(new vdstestlib::DirConfig(*_config));
diff --git a/storage/src/tests/persistence/filestorage/filestormanagertest.cpp b/storage/src/tests/persistence/filestorage/filestormanagertest.cpp
index b58bdceb1e2..6d52dd455b9 100644
--- a/storage/src/tests/persistence/filestorage/filestormanagertest.cpp
+++ b/storage/src/tests/persistence/filestorage/filestormanagertest.cpp
@@ -1,5 +1,4 @@
// 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/document/update/assignvalueupdate.h>
#include <vespa/document/datatype/datatype.h>
#include <vespa/document/fieldvalue/document.h>
@@ -8,9 +7,6 @@
#include <vespa/document/fieldvalue/rawfieldvalue.h>
#include <vespa/document/fieldvalue/stringfieldvalue.h>
#include <vespa/document/select/parser.h>
-#include <fstream>
-#include <memory>
-#include <atomic>
#include <vespa/vdslib/state/random.h>
#include <vespa/vdslib/container/mutabledocumentlist.h>
#include <vespa/vdslib/container/operationlist.h>
@@ -35,10 +31,14 @@
#include <tests/common/dummystoragelink.h>
#include <tests/persistence/filestorage/forwardingmessagesender.h>
#include <vespa/persistence/dummyimpl/dummypersistence.h>
-#include <vespa/log/log.h>
#include <vespa/storageapi/message/batch.h>
#include <vespa/storage/storageserver/statemanager.h>
+#include <vespa/fastos/file.h>
+#include <fstream>
+#include <memory>
+#include <atomic>
+#include <vespa/log/log.h>
LOG_SETUP(".filestormanagertest");
using std::unique_ptr;
@@ -206,11 +206,12 @@ struct FileStorManagerTest : public CppUnit::TestFixture {
}
void setupDisks(uint32_t diskCount) {
- config.reset(new vdstestlib::DirConfig(getStandardConfig(true)));
+ std::string rootOfRoot = "filestormanagertest";
+ config.reset(new vdstestlib::DirConfig(getStandardConfig(true, rootOfRoot)));
config2.reset(new vdstestlib::DirConfig(*config));
- config2->getConfig("stor-server").set("root_folder", "vdsroot.2");
- config2->getConfig("stor-devices").set("root_folder", "vdsroot.2");
+ config2->getConfig("stor-server").set("root_folder", rootOfRoot + "-vdsroot.2");
+ config2->getConfig("stor-devices").set("root_folder", rootOfRoot + "-vdsroot.2");
config2->getConfig("stor-server").set("node_index", "1");
smallConfig.reset(new vdstestlib::DirConfig(*config));
@@ -220,10 +221,10 @@ struct FileStorManagerTest : public CppUnit::TestFixture {
c.set("use_direct_io", "false");
c.set("maximum_gap_to_read_through", "64");
- assert(system("rm -rf vdsroot") == 0);
- assert(system("rm -rf vdsroot.2") == 0);
- assert(system("mkdir -p vdsroot/disks/d0") == 0);
- assert(system("mkdir -p vdsroot.2/disks/d0") == 0);
+ assert(system(vespalib::make_string("rm -rf %s", getRootFolder(*config).c_str()).c_str()) == 0);
+ assert(system(vespalib::make_string("rm -rf %s", getRootFolder(*config2).c_str()).c_str()) == 0);
+ assert(system(vespalib::make_string("mkdir -p %s/disks/d0", getRootFolder(*config).c_str()).c_str()) == 0);
+ assert(system(vespalib::make_string("mkdir -p %s/disks/d0", getRootFolder(*config2).c_str()).c_str()) == 0);
try {
_node.reset(new TestServiceLayerApp(DiskCount(diskCount), NodeIndex(0),
config->getConfigId()));
diff --git a/storage/src/tests/persistence/persistencetestutils.cpp b/storage/src/tests/persistence/persistencetestutils.cpp
index d1a5100b7de..e6a401548aa 100644
--- a/storage/src/tests/persistence/persistencetestutils.cpp
+++ b/storage/src/tests/persistence/persistencetestutils.cpp
@@ -17,12 +17,13 @@ namespace {
spi::LoadType defaultLoadType(0, "default");
- vdstestlib::DirConfig initialize(uint32_t numDisks) {
- system(vespalib::make_string("rm -rf vdsroot").c_str());
+ vdstestlib::DirConfig initialize(uint32_t numDisks, const std::string & rootOfRoot) {
+ vdstestlib::DirConfig config(getStandardConfig(true, rootOfRoot));
+ std::string rootFolder = getRootFolder(config);
+ system(vespalib::make_string("rm -rf %s", rootFolder.c_str()).c_str());
for (uint32_t i = 0; i < numDisks; i++) {
- system(vespalib::make_string("mkdir -p vdsroot/disks/d%d", i).c_str());
+ system(vespalib::make_string("mkdir -p %s/disks/d%d", rootFolder.c_str(), i).c_str());
}
- vdstestlib::DirConfig config(getStandardConfig(true));
return config;
}
@@ -38,8 +39,8 @@ namespace {
};
}
-PersistenceTestEnvironment::PersistenceTestEnvironment(DiskCount numDisks)
- : _config(initialize(numDisks)),
+PersistenceTestEnvironment::PersistenceTestEnvironment(DiskCount numDisks, const std::string & rootOfRoot)
+ : _config(initialize(numDisks, rootOfRoot)),
_messageKeeper(),
_node(numDisks, NodeIndex(0), _config.getConfigId()),
_component(_node.getComponentRegister(), "persistence test env"),
@@ -82,7 +83,7 @@ PersistenceTestUtils::dumpBucket(const document::BucketId& bid,
void
PersistenceTestUtils::setupDisks(uint32_t numDisks) {
- _env.reset(new PersistenceTestEnvironment(DiskCount(numDisks)));
+ _env.reset(new PersistenceTestEnvironment(DiskCount(numDisks), "todo-make-unique-persistencetestutils"));
}
std::unique_ptr<PersistenceThread>
diff --git a/storage/src/tests/persistence/persistencetestutils.h b/storage/src/tests/persistence/persistencetestutils.h
index d584b4dce45..4f6c6ba3bbb 100644
--- a/storage/src/tests/persistence/persistencetestutils.h
+++ b/storage/src/tests/persistence/persistencetestutils.h
@@ -23,8 +23,7 @@ struct MessageKeeper : public MessageSender {
};
struct PersistenceTestEnvironment {
- PersistenceTestEnvironment(
- DiskCount numDisks);
+ PersistenceTestEnvironment(DiskCount numDisks, const std::string & rootOfRoot);
document::TestDocMan _testDocMan;
vdstestlib::DirConfig _config;
diff --git a/storage/src/tests/storageserver/statereportertest.cpp b/storage/src/tests/storageserver/statereportertest.cpp
index 1b6cd1d8a08..08558b515c8 100644
--- a/storage/src/tests/storageserver/statereportertest.cpp
+++ b/storage/src/tests/storageserver/statereportertest.cpp
@@ -74,8 +74,8 @@ StateReporterTest::StateReporterTest()
}
void StateReporterTest::setUp() {
- assert(system("rm -rf vdsroot") == 0);
- _config.reset(new vdstestlib::DirConfig(getStandardConfig(true)));
+ _config.reset(new vdstestlib::DirConfig(getStandardConfig(true, "statereportertest")));
+ assert(system(("rm -rf " + getRootFolder(*_config)).c_str()) == 0);
try {
_node.reset(new TestServiceLayerApp(DiskCount(4), NodeIndex(0),
_config->getConfigId()));
diff --git a/storage/src/tests/visiting/visitortest.cpp b/storage/src/tests/visiting/visitortest.cpp
index 90a1c51fe1f..cddd044ca4c 100644
--- a/storage/src/tests/visiting/visitortest.cpp
+++ b/storage/src/tests/visiting/visitortest.cpp
@@ -186,7 +186,7 @@ void
VisitorTest::initializeTest(const TestParams& params)
{
LOG(debug, "Initializing test");
- vdstestlib::DirConfig config(getStandardConfig(true));
+ vdstestlib::DirConfig config(getStandardConfig(true, "visitortest"));
config.getConfig("stor-visitor").set("visitorthreads", "1");
config.getConfig("stor-visitor").set(
"iterators_per_bucket",
@@ -198,10 +198,12 @@ VisitorTest::initializeTest(const TestParams& params)
"visitor_memory_usage_limit",
std::to_string(params._maxVisitorMemoryUsage));
- system("chmod 755 vdsroot 2>/dev/null");
- system("rm -rf vdsroot* 2>/dev/null");
- assert(system("mkdir -p vdsroot/disks/d0") == 0);
- assert(system("mkdir -p vdsroot/disks/d1") == 0);
+ std::string rootFolder = getRootFolder(config);
+
+ system(vespalib::make_string("chmod 755 %s 2>/dev/null", rootFolder.c_str()).c_str());
+ system(vespalib::make_string("rm -rf %s* 2>/dev/null", rootFolder.c_str()).c_str());
+ assert(system(vespalib::make_string("mkdir -p %s/disks/d0", rootFolder.c_str()).c_str()) == 0);
+ assert(system(vespalib::make_string("mkdir -p %s/disks/d1", rootFolder.c_str()).c_str()) == 0);
try {
_messageSessionFactory.reset(
diff --git a/vdstestlib/src/vespa/vdstestlib/cppunit/dirconfig.cpp b/vdstestlib/src/vespa/vdstestlib/cppunit/dirconfig.cpp
index f6f81b7f2c4..d0bcb47ae0c 100644
--- a/vdstestlib/src/vespa/vdstestlib/cppunit/dirconfig.cpp
+++ b/vdstestlib/src/vespa/vdstestlib/cppunit/dirconfig.cpp
@@ -1,15 +1,13 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vdstestlib/cppunit/dirconfig.h>
+#include <vespa/vdstestlib/cppunit/dirconfig.hpp>
-#include <fstream>
-#include <vespa/log/log.h>
-#include <sstream>
-#include <atomic>
#include <vespa/vespalib/io/fileutil.h>
#include <vespa/vespalib/util/exceptions.h>
-#include <boost/lexical_cast.hpp>
+#include <fstream>
+#include <atomic>
+#include <vespa/log/log.h>
LOG_SETUP(".dirconfig");
namespace vdstestlib {
@@ -142,24 +140,6 @@ DirConfig::getConfig(const ConfigName& name, bool createIfNonExisting)
return it->second;
}
-template<typename T>
-void
-DirConfig::Config::setValue(const ConfigKey& key, const T& value)
-{
- std::ostringstream ost;
- ost << value;
- set(key, ost.str());
-}
-
-template<typename T>
-T
-DirConfig::Config::getValue(const ConfigKey& key, const T& defVal) const
-{
- const ConfigValue* val(get(key));
- if (val == 0) return defVal;
- return boost::lexical_cast<T>(*val);
-}
-
void
DirConfig::removeConfig(const ConfigName& name)
{
@@ -213,4 +193,7 @@ DirConfig::isCacheDirty() const
return false;
}
+template void DirConfig::Config::setValue(const ConfigKey &, const int &);
+template std::string DirConfig::Config::getValue(const ConfigKey &, const std::string &) const;
+
} // storage
diff --git a/vdstestlib/src/vespa/vdstestlib/cppunit/dirconfig.hpp b/vdstestlib/src/vespa/vdstestlib/cppunit/dirconfig.hpp
new file mode 100644
index 00000000000..13dd481bb4e
--- /dev/null
+++ b/vdstestlib/src/vespa/vdstestlib/cppunit/dirconfig.hpp
@@ -0,0 +1,30 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vdstestlib/cppunit/dirconfig.h>
+
+#include <sstream>
+#include <boost/lexical_cast.hpp>
+
+namespace vdstestlib {
+
+template<typename T>
+void
+DirConfig::Config::setValue(const ConfigKey& key, const T& value)
+{
+ std::ostringstream ost;
+ ost << value;
+ set(key, ost.str());
+}
+
+template<typename T>
+T
+DirConfig::Config::getValue(const ConfigKey& key, const T& defVal) const
+{
+ const ConfigValue* val(get(key));
+ if (val == 0) return defVal;
+ return boost::lexical_cast<T>(*val);
+}
+
+} // storage