blob: c2d0152df56646dc17b4b4098b1f649461b9298f [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <lib/syslog/logger.h>
#include "gtest/gtest.h"
#include "lib/fsl/syslogger/init.h"
#include "lib/fxl/command_line.h"
#include "lib/syslog/cpp/logger.h"
__BEGIN_CDECLS
// This does not come from header file as this function should only be used in
// tests and is not for general use.
void fx_log_reset_global(void);
__END_CDECLS
namespace fsl {
namespace {
#define EXPECT_STR_EMPTY(str) EXPECT_STREQ("", str.c_str())
TEST(SysloggerSettings, ParseValidOptions) {
syslog::LogSettings settings = {FX_LOG_ERROR, -1};
EXPECT_STR_EMPTY(ParseLoggerSettings(
fxl::CommandLineFromInitializerList({"argv0"}), &settings));
EXPECT_EQ(FX_LOG_ERROR, settings.severity);
EXPECT_STR_EMPTY(ParseLoggerSettings(
fxl::CommandLineFromInitializerList({"argv0", "--verbose"}), &settings));
EXPECT_EQ(-1, settings.severity);
EXPECT_STR_EMPTY(ParseLoggerSettings(
fxl::CommandLineFromInitializerList({"argv0", "--verbose=0"}),
&settings));
EXPECT_EQ(0, settings.severity);
EXPECT_STR_EMPTY(ParseLoggerSettings(
fxl::CommandLineFromInitializerList({"argv0", "--verbose=3"}),
&settings));
EXPECT_EQ(-3, settings.severity);
EXPECT_STR_EMPTY(ParseLoggerSettings(
fxl::CommandLineFromInitializerList({"argv0", "--quiet=0"}), &settings));
EXPECT_EQ(0, settings.severity);
EXPECT_STR_EMPTY(ParseLoggerSettings(
fxl::CommandLineFromInitializerList({"argv0", "--quiet"}), &settings));
EXPECT_EQ(0, settings.severity);
EXPECT_STR_EMPTY(ParseLoggerSettings(
fxl::CommandLineFromInitializerList({"argv0", "--quiet=3"}), &settings));
EXPECT_EQ(3, settings.severity);
EXPECT_STR_EMPTY(
ParseLoggerSettings(fxl::CommandLineFromInitializerList(
{"argv0", "--log-file=/tmp/custom.log"}),
&settings));
EXPECT_GT(settings.fd, 0);
close(settings.fd);
}
#define EXPECT_STR_NEMPTY(str) EXPECT_STRNE(str.c_str(), "")
TEST(SysloggerSettings, ParseInvalidOptions) {
syslog::LogSettings settings = {FX_LOG_ERROR, -1};
EXPECT_STR_NEMPTY(ParseLoggerSettings(
fxl::CommandLineFromInitializerList({"argv0", "--verbose=-1"}),
&settings));
EXPECT_EQ(FX_LOG_ERROR, settings.severity);
EXPECT_STR_NEMPTY(ParseLoggerSettings(
fxl::CommandLineFromInitializerList({"argv0", "--verbose=123garbage"}),
&settings));
EXPECT_EQ(FX_LOG_ERROR, settings.severity);
EXPECT_STR_NEMPTY(ParseLoggerSettings(
fxl::CommandLineFromInitializerList({"argv0", "--quiet=-1"}), &settings));
EXPECT_EQ(FX_LOG_ERROR, settings.severity);
EXPECT_STR_NEMPTY(ParseLoggerSettings(
fxl::CommandLineFromInitializerList({"argv0", "--quiet=123garbage"}),
&settings));
EXPECT_EQ(FX_LOG_ERROR, settings.severity);
EXPECT_STR_NEMPTY(
ParseLoggerSettings(fxl::CommandLineFromInitializerList(
{"argv0", "--log-file=\\\\//invalid-path"}),
&settings));
EXPECT_EQ(FX_LOG_ERROR, settings.severity);
EXPECT_EQ(-1, settings.fd);
}
TEST(SysLoggerInit, Init) {
fx_log_reset_global();
ASSERT_EQ(ZX_OK,
InitLoggerFromCommandLine(
fxl::CommandLineFromInitializerList({"argv0", "--verbose=0"}),
{"tag1", "tag2"}));
fx_log_reset_global();
ASSERT_EQ(ZX_OK,
InitLoggerFromCommandLine(
fxl::CommandLineFromInitializerList({"argv0", "--verbose=0"})));
fx_log_reset_global();
}
} // namespace
} // namespace fsl