summaryrefslogtreecommitdiffstats
path: root/staging_vespalib
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2019-01-10 12:24:56 +0000
committerHåvard Pettersen <havardpe@oath.com>2019-01-10 12:24:56 +0000
commit2fdcca86e36498a9451fddb3b3e0ad55ef02f3d7 (patch)
treeaed80c90276ec09dea0ced124adb8d88751e3c3a /staging_vespalib
parentc2122f0ebf10d3b29f9b61e1bdf3f89a13fac899 (diff)
added lock to make memory access more defined
Diffstat (limited to 'staging_vespalib')
-rw-r--r--staging_vespalib/src/tests/state_server/state_server_test.cpp32
1 files changed, 21 insertions, 11 deletions
diff --git a/staging_vespalib/src/tests/state_server/state_server_test.cpp b/staging_vespalib/src/tests/state_server/state_server_test.cpp
index dcc8f664c7a..d4f665029cc 100644
--- a/staging_vespalib/src/tests/state_server/state_server_test.cpp
+++ b/staging_vespalib/src/tests/state_server/state_server_test.cpp
@@ -124,15 +124,19 @@ TEST_FF("require that host is passed correctly", EchoHost(), HttpServer(0)) {
}
struct SamplingHandler : JsonGetHandler {
+ mutable std::mutex my_lock;
mutable vespalib::string my_host;
mutable vespalib::string my_path;
mutable std::map<vespalib::string,vespalib::string> my_params;
vespalib::string get(const vespalib::string &host, const vespalib::string &path,
const std::map<vespalib::string,vespalib::string> &params) const override
{
- my_host = host;
- my_path = path;
- my_params = params;
+ {
+ auto guard = std::lock_guard(my_lock);
+ my_host = host;
+ my_path = path;
+ my_params = params;
+ }
return "[]";
}
};
@@ -141,20 +145,26 @@ TEST_FF("require that request parameters can be inspected", SamplingHandler(), H
{
auto token = f2.repo().bind("/foo", f1);
EXPECT_EQUAL("[]", getPage(f2.port(), "/foo?a=b&x=y&z"));
- EXPECT_EQUAL(f1.my_path, "/foo");
- EXPECT_EQUAL(f1.my_params.size(), 3u);
- EXPECT_EQUAL(f1.my_params["a"], "b");
- EXPECT_EQUAL(f1.my_params["x"], "y");
- EXPECT_EQUAL(f1.my_params["z"], "");
- EXPECT_EQUAL(f1.my_params.size(), 3u); // "z" was present
+ {
+ auto guard = std::lock_guard(f1.my_lock);
+ EXPECT_EQUAL(f1.my_path, "/foo");
+ EXPECT_EQUAL(f1.my_params.size(), 3u);
+ EXPECT_EQUAL(f1.my_params["a"], "b");
+ EXPECT_EQUAL(f1.my_params["x"], "y");
+ EXPECT_EQUAL(f1.my_params["z"], "");
+ EXPECT_EQUAL(f1.my_params.size(), 3u); // "z" was present
+ }
}
TEST_FF("require that request path is dequoted", SamplingHandler(), HttpServer(0))
{
auto token = f2.repo().bind("/[foo]", f1);
EXPECT_EQUAL("[]", getPage(f2.port(), "/%5bfoo%5D"));
- EXPECT_EQUAL(f1.my_path, "/[foo]");
- EXPECT_EQUAL(f1.my_params.size(), 0u);
+ {
+ auto guard = std::lock_guard(f1.my_lock);
+ EXPECT_EQUAL(f1.my_path, "/[foo]");
+ EXPECT_EQUAL(f1.my_params.size(), 0u);
+ }
}
//-----------------------------------------------------------------------------