Skip to content

Commit b2db4bb

Browse files
committed
fix(lsp): fix trace_flusher::is_enabled not returning false
trace_flusher::disable doesn't change the trace_directory_ variable. This causes is_enabled to continue to return true. Fix this by clearning trace_directory_.
1 parent 0c5c1a6 commit b2db4bb

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/trace-flusher.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ void trace_flusher::disable() {
8585
for (auto& t : this->registered_threads_) {
8686
t->thread_writer->store(nullptr);
8787
}
88+
this->trace_directory_.clear();
8889
}
8990

9091
void trace_flusher::create_and_enable_in_child_directory(

test/test-trace-flusher.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,14 @@ TEST_F(test_trace_flusher, enabling_creates_metadata_file) {
8686
<< "TSDL specification: https://diamon.org/ctf/#spec7.1";
8787
}
8888

89+
TEST_F(test_trace_flusher, enabling_enables) {
90+
trace_flusher flusher;
91+
EXPECT_FALSE(flusher.is_enabled());
92+
auto result = flusher.enable_for_directory(this->trace_dir);
93+
ASSERT_TRUE(result.ok()) << result.error_to_string();
94+
EXPECT_TRUE(flusher.is_enabled());
95+
}
96+
8997
TEST_F(test_trace_flusher, enabling_fails_if_directory_is_missing) {
9098
trace_flusher flusher;
9199
auto result =
@@ -225,6 +233,16 @@ TEST_F(test_trace_flusher, cannot_write_events_after_enabling_then_disabling) {
225233
EXPECT_FALSE(writer);
226234
}
227235

236+
TEST_F(test_trace_flusher, disabling_disables) {
237+
trace_flusher flusher;
238+
auto result = flusher.enable_for_directory(this->trace_dir);
239+
ASSERT_TRUE(result.ok()) << result.error_to_string();
240+
ASSERT_TRUE(flusher.is_enabled());
241+
242+
flusher.disable();
243+
EXPECT_FALSE(flusher.is_enabled());
244+
}
245+
228246
TEST_F(test_trace_flusher,
229247
can_write_events_after_enabling_then_enabling_again) {
230248
std::string trace_dir_2 = this->make_temporary_directory();

0 commit comments

Comments
 (0)