You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.1 KiB
62 lines
2.1 KiB
2 months ago
|
// License: Apache 2.0. See LICENSE file in root directory.
|
||
|
// Copyright(c) 2020 Intel Corporation. All Rights Reserved.
|
||
|
|
||
|
//#cmake: static!
|
||
|
|
||
|
#include <rsutils/easylogging/easyloggingpp.h>
|
||
|
// Catch also defines CHECK(), and so we have to undefine it or we get compilation errors!
|
||
|
#undef CHECK
|
||
|
#include "../catch.h"
|
||
|
|
||
|
// With Catch2, turn this into SCOPED_INFO (right now, does not work)
|
||
|
#if 1
|
||
|
#define TRACE(X) do { \
|
||
|
std::cout << X; \
|
||
|
} while(0)
|
||
|
#else
|
||
|
#define TRACE(X) do {} while(0)
|
||
|
#endif
|
||
|
|
||
|
#include <src/log.h>
|
||
|
|
||
|
|
||
|
using namespace librealsense;
|
||
|
|
||
|
|
||
|
TEST_CASE( "rs2_log vs LOG() - internal", "[log]" )
|
||
|
{
|
||
|
size_t n_callbacks = 0;
|
||
|
class default_dispatcher : public el::LogDispatchCallback
|
||
|
{
|
||
|
public:
|
||
|
size_t* pn_callbacks = nullptr; // only the default ctor is available to us...!
|
||
|
protected:
|
||
|
void handle( const el::LogDispatchData* data ) noexcept override
|
||
|
{
|
||
|
if( pn_callbacks )
|
||
|
(*pn_callbacks)++;
|
||
|
TRACE( data->logMessage()->logger()->logBuilder()->build( data->logMessage(), true ));
|
||
|
}
|
||
|
};
|
||
|
el::Helpers::installLogDispatchCallback< default_dispatcher >( "default_dispatcher" );
|
||
|
auto dispatcher = el::Helpers::logDispatchCallback< default_dispatcher >( "default_dispatcher" );
|
||
|
dispatcher->pn_callbacks = &n_callbacks;
|
||
|
// Make sure the default logger dispatch (which will log to standard out/err) is disabled
|
||
|
el::Helpers::uninstallLogDispatchCallback< el::base::DefaultLogDispatchCallback >( "DefaultLogDispatchCallback" );
|
||
|
|
||
|
// LOG(XXX) should log to the default logger, which is NOT the librealsense logger
|
||
|
LOG(INFO) << "Log message to default logger";
|
||
|
REQUIRE( n_callbacks == 1 );
|
||
|
|
||
|
CLOG(INFO, LIBREALSENSE_ELPP_ID) << "Log message to \"librealsense\" logger";
|
||
|
REQUIRE( n_callbacks == 2 );
|
||
|
|
||
|
LOG_INFO( "Log message using LOG_INFO()" );
|
||
|
REQUIRE( n_callbacks == 3 );
|
||
|
|
||
|
REQUIRE_NOTHROW( rs2_log( RS2_LOG_SEVERITY_INFO, "Log message using rs2_log()", nullptr ));
|
||
|
REQUIRE( n_callbacks == 4 );
|
||
|
|
||
|
// NOTE that all the above called the same callback!! Callbacks are not logger-specific!
|
||
|
}
|