diff options
author | Haavard <havardpe@yahoo-inc.com> | 2017-06-01 12:18:32 +0000 |
---|---|---|
committer | Haavard <havardpe@yahoo-inc.com> | 2017-06-01 12:18:32 +0000 |
commit | 7d24996180577083beb0335608b1cdf34e2ded41 (patch) | |
tree | 5c8ad9b7b3c23265a0f6d6c7f5d684b41f23216b /vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp | |
parent | a9772aff3ee6ce7b1f76322b0617890545289592 (diff) |
added worker init wrapper support for executors
Diffstat (limited to 'vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp')
-rw-r--r-- | vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp b/vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp index f8136fe2a10..6b295497744 100644 --- a/vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp +++ b/vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp @@ -4,6 +4,7 @@ #include <vespa/vespalib/util/blockingthreadstackexecutor.h> #include <vespa/vespalib/util/executor.h> #include <vespa/vespalib/util/sync.h> +#include <vespa/vespalib/util/backtrace.h> #include <thread> using namespace vespalib; @@ -108,4 +109,32 @@ TEST_F("require that task limit can be decreased", Fixture(3, 3)) f.blockedExecuteAndWaitUntilFinished(); } +vespalib::string get_worker_stack_trace(BlockingThreadStackExecutor &executor) { + struct StackTraceTask : public Executor::Task { + vespalib::string &trace; + explicit StackTraceTask(vespalib::string &t) : trace(t) {} + void run() override { trace = getStackTrace(0); } + }; + vespalib::string trace; + executor.execute(std::make_unique<StackTraceTask>(trace)); + executor.sync(); + return trace; +} + +VESPA_THREAD_STACK_TAG(my_stack_tag); + +TEST_F("require that executor has appropriate default thread stack tag", BlockingThreadStackExecutor(1, 128*1024, 10)) { + vespalib::string trace = get_worker_stack_trace(f1); + if (!EXPECT_TRUE(trace.find("unnamed_blocking_executor") != vespalib::string::npos)) { + fprintf(stderr, "%s\n", trace.c_str()); + } +} + +TEST_F("require that executor thread stack tag can be set", BlockingThreadStackExecutor(1, 128*1024, 10, my_stack_tag)) { + vespalib::string trace = get_worker_stack_trace(f1); + if (!EXPECT_TRUE(trace.find("my_stack_tag") != vespalib::string::npos)) { + fprintf(stderr, "%s\n", trace.c_str()); + } +} + TEST_MAIN() { TEST_RUN_ALL(); } |