android_device_google_gs-co.../modem/test/modem_log_dumper_test.cpp

107 lines
3.2 KiB
C++
Raw Normal View History

#include "modem_log_dumper.h"
#include <string_view>
#include "dumper.h"
#include "fake_android_property_manager.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
namespace modem {
namespace logging {
namespace {
using ::testing::Eq;
inline constexpr static std::string_view kFakePilotLoggingPath =
"//pilot/logging/path";
inline constexpr static std::string_view kFakeOnDemandLoggingPath =
"//on/demand/logging/path";
inline constexpr static LogDumpInfo kAlwaysOnLogDumpInfo = {
kModemAlwaysOnLogDirectory, kBugreportPackingDirectory,
kDefaultBugreportNumberFiles, kModemLogPrefix};
void StartModemLogging(
FakeAndroidPropertyManager& fake_android_property_manager) {
fake_android_property_manager.SetProperty(
kModemLoggingEnabledProperty.data(),
FakeAndroidPropertyManager::kTruthString.data());
}
class MockDumper : public Dumper {
public:
~MockDumper() = default;
MOCK_METHOD(void, DumpLogs, (const LogDumpInfo&), (override));
MOCK_METHOD(void, CopyFile, (const FileCopyInfo&), (override));
};
class ModemLogDumperTest : public ::testing::Test {
protected:
ModemLogDumperTest()
: modem_log_dumper(mock_dumper, fake_android_property_manager) {}
void SetUp() override {
// set default logging mode to always on logging
fake_android_property_manager.SetProperty(
kModemLoggingPathProperty.data(), kModemAlwaysOnLogDirectory.data());
}
MockDumper mock_dumper;
FakeAndroidPropertyManager fake_android_property_manager;
ModemLogDumper modem_log_dumper;
};
TEST_F(ModemLogDumperTest, DumpLogsDumpsAllDirectoriesAndCopiesAllFiles) {
EXPECT_CALL(mock_dumper, DumpLogs(Eq(kAlwaysOnLogDumpInfo)));
for (const LogDumpInfo& log_dump_info : kLogDumpInfo) {
EXPECT_CALL(mock_dumper, DumpLogs(Eq(log_dump_info)));
}
for (const FileCopyInfo& fileCopyInfo : kFileCopyInfo) {
EXPECT_CALL(mock_dumper, CopyFile(Eq(fileCopyInfo)));
}
modem_log_dumper.DumpModemLogs();
}
TEST_F(ModemLogDumperTest, DumpLogsRestartModemLoggingWhenEnabled) {
StartModemLogging(fake_android_property_manager);
modem_log_dumper.DumpModemLogs();
EXPECT_TRUE(fake_android_property_manager.ModemLoggingHasRestarted());
}
TEST_F(ModemLogDumperTest, DumpLogsDoesNotRestartModemLoggingWhenDisabled) {
modem_log_dumper.DumpModemLogs();
EXPECT_FALSE(fake_android_property_manager.ModemLoggingHasRestarted());
}
TEST_F(ModemLogDumperTest, DumpLogsDoesNotRestartModemLoggingWhenPilotEnabled) {
// Enable PILOT
fake_android_property_manager.SetProperty(kModemLoggingPathProperty.data(),
kFakePilotLoggingPath.data());
StartModemLogging(fake_android_property_manager);
modem_log_dumper.DumpModemLogs();
EXPECT_FALSE(fake_android_property_manager.ModemLoggingHasRestarted());
}
TEST_F(ModemLogDumperTest,
DumpLogsDoesNotRestartModemLoggingWhenOnDemandLoggingEnabled) {
// Enable On Demand Logging
fake_android_property_manager.SetProperty(kModemLoggingPathProperty.data(),
kFakeOnDemandLoggingPath.data());
StartModemLogging(fake_android_property_manager);
modem_log_dumper.DumpModemLogs();
EXPECT_FALSE(fake_android_property_manager.ModemLoggingHasRestarted());
}
} // namespace
} // namespace logging
} // namespace modem