blob: 82b6481b765556b17f31fce453cd22082dc7c662 [file] [log] [blame]
// Copyright 2024 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/driver/testing/cpp/driver_lifecycle.h>
#include <lib/driver/testing/cpp/driver_runtime.h>
#include <lib/driver/testing/cpp/test_environment.h>
#include <lib/driver/testing/cpp/test_node.h>
#include <lib/syslog/structured_backend/fuchsia_syslog.h>
#include <gtest/gtest.h>
#include "src/graphics/display/lib/driver-framework-migration-utils/logging/testing/dfv2-driver-with-logging.h"
namespace display {
namespace {
class DriverLoggingTest : public ::testing::Test {
public:
void SetUp() override {
// Create start args
node_server_.emplace("root");
zx::result start_args = node_server_->CreateStartArgsAndServe();
EXPECT_EQ(ZX_OK, start_args.status_value());
// Start the test environment
test_environment_.emplace();
zx::result result =
test_environment_->Initialize(std::move(start_args->incoming_directory_server));
EXPECT_EQ(ZX_OK, result.status_value());
// Start driver
zx::result start_result =
runtime_.RunToCompletion(driver_.Start(std::move(start_args->start_args)));
EXPECT_EQ(ZX_OK, start_result.status_value());
}
void TearDown() override {
zx::result prepare_stop_result = runtime_.RunToCompletion(driver_.PrepareStop());
EXPECT_EQ(ZX_OK, prepare_stop_result.status_value());
test_environment_.reset();
node_server_.reset();
runtime_.ShutdownAllDispatchers(fdf::Dispatcher::GetCurrent()->get());
}
fdf_testing::DriverUnderTest<testing::Dfv2DriverWithLogging>& driver() { return driver_; }
private:
// Attaches a foreground dispatcher for us automatically.
fdf_testing::DriverRuntime runtime_;
// These will use the foreground dispatcher.
std::optional<fdf_testing::TestNode> node_server_;
std::optional<fdf_testing::TestEnvironment> test_environment_;
fdf_testing::DriverUnderTest<testing::Dfv2DriverWithLogging> driver_;
};
TEST_F(DriverLoggingTest, MinimumLogLevelTrace) {
driver()->logger().SetSeverity(FUCHSIA_LOG_TRACE);
EXPECT_TRUE(driver()->LogTrace());
EXPECT_TRUE(driver()->LogDebug());
EXPECT_TRUE(driver()->LogInfo());
EXPECT_TRUE(driver()->LogWarning());
EXPECT_TRUE(driver()->LogError());
}
TEST_F(DriverLoggingTest, MinimumLogLevelDebug) {
driver()->logger().SetSeverity(FUCHSIA_LOG_DEBUG);
EXPECT_FALSE(driver()->LogTrace());
EXPECT_TRUE(driver()->LogDebug());
EXPECT_TRUE(driver()->LogInfo());
EXPECT_TRUE(driver()->LogWarning());
EXPECT_TRUE(driver()->LogError());
}
TEST_F(DriverLoggingTest, MinimumLogLevelInfo) {
driver()->logger().SetSeverity(FUCHSIA_LOG_INFO);
EXPECT_FALSE(driver()->LogTrace());
EXPECT_FALSE(driver()->LogDebug());
EXPECT_TRUE(driver()->LogInfo());
EXPECT_TRUE(driver()->LogWarning());
EXPECT_TRUE(driver()->LogError());
}
TEST_F(DriverLoggingTest, MinimumLogLevelWarning) {
driver()->logger().SetSeverity(FUCHSIA_LOG_WARNING);
EXPECT_FALSE(driver()->LogTrace());
EXPECT_FALSE(driver()->LogDebug());
EXPECT_FALSE(driver()->LogInfo());
EXPECT_TRUE(driver()->LogWarning());
EXPECT_TRUE(driver()->LogError());
}
TEST_F(DriverLoggingTest, MinimumLogLevelError) {
driver()->logger().SetSeverity(FUCHSIA_LOG_ERROR);
EXPECT_FALSE(driver()->LogTrace());
EXPECT_FALSE(driver()->LogDebug());
EXPECT_FALSE(driver()->LogInfo());
EXPECT_FALSE(driver()->LogWarning());
EXPECT_TRUE(driver()->LogError());
}
} // namespace
} // namespace display