blob: c97c709353b61aa3f616164a6288664c8582b038 [file] [log] [blame]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <memory>
#include <utility>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "metrics/metrics_library_mock.h"
#include "minios/metrics_reporter.h"
#include "minios/mock_process_manager.h"
using ::testing::_;
using ::testing::StrictMock;
namespace minios {
class MetricsReporterTest : public ::testing::Test {
protected:
std::unique_ptr<MockProcessManager> mock_process_manager_ =
std::make_unique<StrictMock<MockProcessManager>>();
MockProcessManager* mock_process_manager_ptr_ = mock_process_manager_.get();
std::unique_ptr<MetricsLibraryMock> metrics_library_mock_ =
std::make_unique<StrictMock<MetricsLibraryMock>>();
MetricsLibraryMock* metrics_library_mock_ptr_ = metrics_library_mock_.get();
std::unique_ptr<MetricsReporter> reporter_;
void SetUp() override {
reporter_ = std::make_unique<MetricsReporter>(
mock_process_manager_ptr_, std::move(metrics_library_mock_));
}
};
TEST_F(MetricsReporterTest, ReportNBRComplete) {
EXPECT_CALL(*mock_process_manager_ptr_, RunCommand)
.WillOnce(::testing::Return(0));
EXPECT_CALL(*metrics_library_mock_ptr_, SetOutputFile(kStatefulEventsPath));
EXPECT_CALL(*metrics_library_mock_ptr_,
SendEnumToUMA(kRecoveryReason, kRecoveryReasonCode_NBR,
kRecoveryReasonCode_MAX));
EXPECT_CALL(*metrics_library_mock_ptr_,
SendToUMA(kRecoveryDurationMinutes, _, /*min=*/0,
kRecoveryDurationMinutes_MAX,
kRecoveryDurationMinutes_Buckets));
reporter_->ReportNBRComplete();
}
TEST_F(MetricsReporterTest, ReportNBRCompleteFailToMountStateful) {
EXPECT_CALL(*mock_process_manager_ptr_, RunCommand)
.WillOnce(::testing::Return(1));
reporter_->ReportNBRComplete();
}
} // namespace minios