blob: 69722e80a8129213094ba8fb4b4276cb2884798c [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 "runtime_probe/utils/multi_function_runner.h"
#include <memory>
#include <base/json/json_reader.h>
#include <base/test/task_environment.h>
#include <base/test/test_future.h>
#include <gtest/gtest.h>
#include "runtime_probe/probe_function.h"
#include "runtime_probe/utils/function_test_utils.h"
namespace runtime_probe {
namespace {
class MultiFunctionRunnerTest : public ::testing::Test {
private:
base::test::SingleThreadTaskEnvironment task_environment_;
};
TEST_F(MultiFunctionRunnerTest, Success) {
MultiFunctionRunner runner;
runner.AddFunction(std::make_unique<FakeProbeFunction>(R"JSON(
[{
"key1": "key1"
}]
)JSON"));
runner.AddFunction(std::make_unique<FakeProbeFunction>(R"JSON(
[{
"key2": "key2"
},
{
"key3": "key3"
}]
)JSON"));
EXPECT_TRUE(runner.IsValid());
auto ans = base::JSONReader::Read(R"JSON(
[{
"key1": "key1"
},
{
"key2": "key2"
},
{
"key3": "key3"
}]
)JSON");
base::test::TestFuture<base::Value::List> future;
runner.Run(future.GetCallback());
EXPECT_EQ(future.Get(), ans);
}
TEST_F(MultiFunctionRunnerTest, ProberInitilizationFailed) {
MultiFunctionRunner runner;
runner.AddFunction(nullptr);
EXPECT_FALSE(runner.IsValid());
}
TEST_F(MultiFunctionRunnerTest, ProbeEmptyResults) {
MultiFunctionRunner runner;
EXPECT_TRUE(runner.IsValid());
auto ans = base::JSONReader::Read(R"JSON(
[]
)JSON");
base::test::TestFuture<base::Value::List> future;
runner.Run(future.GetCallback());
EXPECT_EQ(future.Get(), ans);
}
} // namespace
} // namespace runtime_probe