blob: 89e1c96ce3afbf5dbdcada1875d6efb61f3f2455 [file] [log] [blame]
Eric Schmiedeberge279b532023-04-19 16:36:02 -06001#include "aos/events/logging/config_remapper.h"
2
3#include "gmock/gmock.h"
4#include "gtest/gtest.h"
5
6#include "aos/events/event_loop_generated.h"
7#include "aos/events/logging/log_reader.h"
8#include "aos/events/logging/multinode_logger_test_lib.h"
9#include "aos/events/message_counter.h"
10#include "aos/events/ping_lib.h"
11#include "aos/events/pong_lib.h"
12#include "aos/network/remote_message_generated.h"
13#include "aos/network/timestamp_generated.h"
14#include "aos/testing/tmpdir.h"
15#include "multinode_logger_test_lib.h"
16
17namespace aos {
18namespace testing {
19using namespace logger::testing;
20using namespace logger;
21namespace chrono = std::chrono;
22
23using ConfigRemapperTest = MultinodeLoggerTest;
24
25INSTANTIATE_TEST_SUITE_P(
26 All, ConfigRemapperTest,
27 ::testing::Combine(
28 ::testing::Values(
29 ConfigParams{"multinode_pingpong_combined_config.json", true,
Austin Schuh6ecfe902023-08-04 22:44:37 -070030 kCombinedConfigSha1(), kCombinedConfigSha1(),
31 FileStrategy::kCombine},
Eric Schmiedeberge279b532023-04-19 16:36:02 -060032 ConfigParams{"multinode_pingpong_split_config.json", false,
Austin Schuh6ecfe902023-08-04 22:44:37 -070033 kSplitConfigSha1(), kReloggedSplitConfigSha1(),
34 FileStrategy::kCombine}),
Eric Schmiedeberge279b532023-04-19 16:36:02 -060035 ::testing::ValuesIn(SupportedCompressionAlgorithms())));
36
37// Tests that we can read a config and remap a channel
38TEST_P(ConfigRemapperTest, RemapOriginalChannel) {
39 ConfigRemapper remapper(&config_.message());
40
41 remapper.RemapOriginalChannel<examples::Ping>("/test");
42
43 const Channel *channel = configuration::GetChannel<examples::Ping>(
44 remapper.remapped_configuration(), "/original/test", "pi1", nullptr);
45 EXPECT_NE(channel, nullptr);
46 EXPECT_EQ(channel->name()->string_view(), "/original/test");
47 EXPECT_EQ(channel->type()->string_view(), "aos.examples.Ping");
48}
49
50// Tests that we can read a config and rename a channel
51TEST_P(ConfigRemapperTest, RenameOriginalChannel) {
52 ConfigRemapper remapper(&config_.message());
53
54 remapper.RenameOriginalChannel<examples::Ping>("/test", "/original/test");
55
56 const Channel *channel = configuration::GetChannel<examples::Ping>(
57 remapper.remapped_configuration(), "/original/test", "pi1", nullptr);
58 EXPECT_NE(channel, nullptr);
59 EXPECT_EQ(channel->name()->string_view(), "/original/test");
60 EXPECT_EQ(channel->type()->string_view(), "aos.examples.Ping");
61}
62
63// Tests that we can remap a channel specifying a certain node
64TEST_P(ConfigRemapperTest, RemapOriginalChannelWithNode) {
65 ConfigRemapper remapper(&config_.message());
66
67 const Node *node =
68 configuration::GetNode(remapper.remapped_configuration(), "pi1");
69
70 // Remap just on pi1.
71 remapper.RemapOriginalChannel<aos::timing::Report>("/aos", node);
72
73 const Channel *channel = configuration::GetChannel<aos::timing::Report>(
74 remapper.remapped_configuration(), "/original/pi1/aos", "pi1", node);
75 EXPECT_NE(channel, nullptr);
76 EXPECT_EQ(channel->name()->string_view(), "/original/pi1/aos");
77 EXPECT_EQ(channel->type()->string_view(), "aos.timing.Report");
78}
79
80// Tests that we can rename a channel specifying a certain node
81TEST_P(ConfigRemapperTest, RenameOriginalChannelWithNode) {
82 ConfigRemapper remapper(&config_.message());
83
84 const Node *node =
85 configuration::GetNode(remapper.remapped_configuration(), "pi1");
86
87 // Rename just on pi1.
88 remapper.RenameOriginalChannel<aos::timing::Report>("/aos", node,
89 "/original/pi1/aos");
90
91 const Channel *channel = configuration::GetChannel<aos::timing::Report>(
92 remapper.remapped_configuration(), "/original/pi1/aos", "pi1", node);
93 EXPECT_NE(channel, nullptr);
94 EXPECT_EQ(channel->name()->string_view(), "/original/pi1/aos");
95 EXPECT_EQ(channel->type()->string_view(), "aos.timing.Report");
96}
97
98} // namespace testing
99} // namespace aos