Skip to content

Commit 688906d

Browse files
committed
Add mutex to MockLogger, seems to be prevent SIGSEGV now that telemetry is making Curl requests.
1 parent 04e1a17 commit 688906d

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

test/mocks/loggers.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include <algorithm>
77
#include <iosfwd>
8+
#include <mutex>
89
#include <ostream>
910
#include <sstream>
1011
#include <string>
@@ -28,6 +29,7 @@ struct MockLogger : public Logger {
2829
std::variant<std::string, Error> payload;
2930
};
3031

32+
mutable std::mutex mutex;
3133
std::ostream* echo = nullptr;
3234
std::vector<Entry> entries;
3335

@@ -41,6 +43,7 @@ struct MockLogger : public Logger {
4143
MockLogger() = default;
4244

4345
void log_error(const LogFunc& write) override {
46+
std::lock_guard<std::mutex> lock{mutex};
4447
std::ostringstream stream;
4548
write(stream);
4649
if (echo) {
@@ -50,6 +53,7 @@ struct MockLogger : public Logger {
5053
}
5154

5255
void log_startup(const LogFunc& write) override {
56+
std::lock_guard<std::mutex> lock{mutex};
5357
std::ostringstream stream;
5458
write(stream);
5559
if (echo && policy == ERRORS_AND_STARTUP) {
@@ -59,13 +63,15 @@ struct MockLogger : public Logger {
5963
}
6064

6165
void log_error(const Error& error) override {
66+
std::lock_guard<std::mutex> lock{mutex};
6267
if (echo) {
6368
*echo << error << '\n';
6469
}
6570
entries.push_back(Entry{Entry::ERROR, error});
6671
}
6772

6873
void log_error(StringView message) override {
74+
std::lock_guard<std::mutex> lock{mutex};
6975
if (echo) {
7076
*echo << message << '\n';
7177
}
@@ -77,13 +83,15 @@ struct MockLogger : public Logger {
7783
int startup_count() const { return count(Entry::STARTUP); }
7884

7985
int count(Entry::Kind kind) const {
86+
std::lock_guard<std::mutex> lock{mutex};
8087
return std::count_if(
8188
entries.begin(), entries.end(),
8289
[kind](const Entry& entry) { return entry.kind == kind; });
8390
}
8491

8592
const Error& first_error() const {
8693
REQUIRE(error_count() > 0);
94+
std::lock_guard<std::mutex> lock{mutex};
8795
auto found = std::find_if(
8896
entries.begin(), entries.end(),
8997
[](const Entry& entry) { return entry.kind == Entry::ERROR; });
@@ -92,6 +100,7 @@ struct MockLogger : public Logger {
92100

93101
const std::string& first_startup() const {
94102
REQUIRE(startup_count() > 0);
103+
std::lock_guard<std::mutex> lock{mutex};
95104
auto found = std::find_if(
96105
entries.begin(), entries.end(),
97106
[](const Entry& entry) { return entry.kind == Entry::STARTUP; });

0 commit comments

Comments
 (0)