Output a Trace Event metadata event identifying each named thread
Move the generic dummy implementation of TraceEvent::emitOneRecording() to a source file of its own. (That is the one which is used in test and tool executables.) Signed-off-by: Tor Lillqvist <tml@collabora.com> Change-Id: I81cab07e5a6852b42d278a5446c13c3825cf546e
This commit is contained in:
parent
bbd60b5575
commit
d6569159b7
7 changed files with 42 additions and 13 deletions
|
@ -154,12 +154,14 @@ noinst_PROGRAMS += loolwsd_fuzzer
|
|||
endif
|
||||
|
||||
connect_SOURCES = tools/Connect.cpp \
|
||||
common/DummyTraceEventEmitter.cpp \
|
||||
common/Log.cpp \
|
||||
common/Protocol.cpp \
|
||||
common/StringVector.cpp \
|
||||
common/Util.cpp
|
||||
|
||||
lokitclient_SOURCES = common/Log.cpp \
|
||||
common/DummyTraceEventEmitter.cpp \
|
||||
tools/KitClient.cpp \
|
||||
common/Protocol.cpp \
|
||||
common/StringVector.cpp \
|
||||
|
@ -210,6 +212,7 @@ httpresponse_fuzzer_SOURCES = \
|
|||
httpresponse_fuzzer_LDFLAGS = -fsanitize=fuzzer $(AM_LDFLAGS)
|
||||
|
||||
clientnb_SOURCES = net/clientnb.cpp \
|
||||
common/DummyTraceEventEmitter.cpp \
|
||||
common/Log.cpp \
|
||||
common/StringVector.cpp \
|
||||
common/Util.cpp
|
||||
|
@ -222,18 +225,21 @@ loolconvert_SOURCES = tools/Tool.cpp
|
|||
|
||||
loolstress_CPPFLAGS = -DTDOC=\"$(abs_top_srcdir)/test/data\" ${include_paths}
|
||||
loolstress_SOURCES = tools/Stress.cpp \
|
||||
common/DummyTraceEventEmitter.cpp \
|
||||
common/Protocol.cpp \
|
||||
common/StringVector.cpp \
|
||||
common/Log.cpp \
|
||||
common/Util.cpp
|
||||
|
||||
loolconfig_SOURCES = tools/Config.cpp \
|
||||
common/DummyTraceEventEmitter.cpp \
|
||||
common/Crypto.cpp \
|
||||
common/Log.cpp \
|
||||
common/StringVector.cpp \
|
||||
common/Util.cpp
|
||||
|
||||
loolsocketdump_SOURCES = tools/WebSocketDump.cpp \
|
||||
common/DummyTraceEventEmitter.cpp \
|
||||
$(shared_sources)
|
||||
|
||||
wsd_headers = wsd/Admin.hpp \
|
||||
|
|
18
common/DummyTraceEventEmitter.cpp
Normal file
18
common/DummyTraceEventEmitter.cpp
Normal file
|
@ -0,0 +1,18 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
// Compile and link this into test and utility executables that need it to link
|
||||
|
||||
#include <common/TraceEvent.hpp>
|
||||
|
||||
void TraceEvent::emitOneRecording(const std::string &recording)
|
||||
{
|
||||
// Dummy.
|
||||
(void) recording;
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
@ -102,10 +102,6 @@ protected:
|
|||
}
|
||||
}
|
||||
|
||||
// This method needs to be implemented separately in the WSD and Kit processes. (WSD writes the
|
||||
// actual Trace Event log file, Kit just forwards the Trace Events to WSD for output.)
|
||||
static void emitOneRecording(const std::string &recording);
|
||||
|
||||
public:
|
||||
static void startRecording();
|
||||
static void stopRecording();
|
||||
|
@ -120,6 +116,10 @@ public:
|
|||
emitInstantEvent(name, createArgsString(args));
|
||||
}
|
||||
|
||||
// This method needs to be implemented separately in the WSD and Kit processes. (WSD writes the
|
||||
// actual Trace Event log file, Kit just forwards the Trace Events to WSD for output.)
|
||||
static void emitOneRecording(const std::string &recording);
|
||||
|
||||
TraceEvent(const TraceEvent&) = delete;
|
||||
void operator=(const TraceEvent&) = delete;
|
||||
};
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
#include "Common.hpp"
|
||||
#include "Log.hpp"
|
||||
#include "Protocol.hpp"
|
||||
#include "TraceEvent.hpp"
|
||||
|
||||
namespace Util
|
||||
{
|
||||
|
@ -573,6 +574,16 @@ namespace Util
|
|||
[[NSThread currentThread] setName:[NSString stringWithUTF8String:ThreadName]];
|
||||
LOG_INF("Thread " << getThreadId() << ") is now called [" << s << ']');
|
||||
#endif
|
||||
|
||||
// Emit a metadata Trace Event identifying this thread. This will invoke a different function
|
||||
// depending on which executable this is in.
|
||||
TraceEvent::emitOneRecording("{\"name\":\"thread_name\",\"ph\":\"M\",\"args\":{\"name\":\""
|
||||
+ s
|
||||
+ "\"},\"pid\":"
|
||||
+ std::to_string(getpid())
|
||||
+ ",\"tid\":"
|
||||
+ std::to_string(Util::getThreadId())
|
||||
+ "},");
|
||||
}
|
||||
|
||||
const char *getThreadName()
|
||||
|
|
|
@ -525,7 +525,6 @@ int main(int argc, char** argv)
|
|||
SigUtil::setTerminationSignals();
|
||||
#endif
|
||||
|
||||
Util::setThreadName("forkit");
|
||||
Util::setApplicationPath(Poco::Path(argv[0]).parent().toString());
|
||||
|
||||
// Initialization
|
||||
|
@ -694,6 +693,8 @@ int main(int argc, char** argv)
|
|||
config::initialize(std::string(conf ? conf : std::string()));
|
||||
#endif
|
||||
|
||||
Util::setThreadName("forkit");
|
||||
|
||||
LOG_INF("Preinit stage OK.");
|
||||
|
||||
// We must have at least one child, more are created dynamically.
|
||||
|
|
|
@ -119,7 +119,7 @@ unit_base_la_LIBADD += -lssl -lcrypto
|
|||
endif
|
||||
|
||||
fakesockettest_CPPFLAGS = -g
|
||||
fakesockettest_SOURCES = fakesockettest.cpp ../net/FakeSocket.cpp ../common/Log.cpp ../common/Util.cpp
|
||||
fakesockettest_SOURCES = fakesockettest.cpp ../net/FakeSocket.cpp ../common/DummyTraceEventEmitter.cpp ../common/Log.cpp ../common/Util.cpp
|
||||
fakesockettest_LDADD = $(CPPUNIT_LIBS)
|
||||
|
||||
# old-style unit tests - bootstrapped via UnitClient
|
||||
|
|
|
@ -28,16 +28,9 @@
|
|||
#if ENABLE_SSL
|
||||
# include <SslSocket.hpp>
|
||||
#endif
|
||||
#include <common/TraceEvent.hpp>
|
||||
|
||||
SocketPoll DumpSocketPoll("websocket");
|
||||
|
||||
void TraceEvent::emitOneRecording(const std::string &sRecording)
|
||||
{
|
||||
// Dummy.
|
||||
(void) sRecording;
|
||||
}
|
||||
|
||||
// Dumps incoming websocket messages and doesn't respond.
|
||||
class DumpSocketHandler : public WebSocketHandler
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue