blob: f33f421feb1399d2e1c677c2f1c5d4c6c1dec046 [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
Stephan Pleinesf63bde82024-01-13 15:59:33 -080017namespace aos::testing {
Eric Schmiedeberge279b532023-04-19 16:36:02 -060018using namespace logger::testing;
19using namespace logger;
20namespace chrono = std::chrono;
21
22using ConfigRemapperTest = MultinodeLoggerTest;
23
24INSTANTIATE_TEST_SUITE_P(
25 All, ConfigRemapperTest,
26 ::testing::Combine(
27 ::testing::Values(
28 ConfigParams{"multinode_pingpong_combined_config.json", true,
Austin Schuh6ecfe902023-08-04 22:44:37 -070029 kCombinedConfigSha1(), kCombinedConfigSha1(),
Austin Schuh63097262023-08-16 17:04:29 -070030 FileStrategy::kCombine,
31 ForceTimestampBuffering::kForceBufferTimestamps},
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(),
Austin Schuh63097262023-08-16 17:04:29 -070034 FileStrategy::kCombine,
35 ForceTimestampBuffering::kForceBufferTimestamps}),
Eric Schmiedeberge279b532023-04-19 16:36:02 -060036 ::testing::ValuesIn(SupportedCompressionAlgorithms())));
37
38// Tests that we can read a config and remap a channel
39TEST_P(ConfigRemapperTest, RemapOriginalChannel) {
40 ConfigRemapper remapper(&config_.message());
41
42 remapper.RemapOriginalChannel<examples::Ping>("/test");
43
44 const Channel *channel = configuration::GetChannel<examples::Ping>(
45 remapper.remapped_configuration(), "/original/test", "pi1", nullptr);
46 EXPECT_NE(channel, nullptr);
47 EXPECT_EQ(channel->name()->string_view(), "/original/test");
48 EXPECT_EQ(channel->type()->string_view(), "aos.examples.Ping");
49}
50
51// Tests that we can read a config and rename a channel
52TEST_P(ConfigRemapperTest, RenameOriginalChannel) {
53 ConfigRemapper remapper(&config_.message());
54
55 remapper.RenameOriginalChannel<examples::Ping>("/test", "/original/test");
56
57 const Channel *channel = configuration::GetChannel<examples::Ping>(
58 remapper.remapped_configuration(), "/original/test", "pi1", nullptr);
59 EXPECT_NE(channel, nullptr);
60 EXPECT_EQ(channel->name()->string_view(), "/original/test");
61 EXPECT_EQ(channel->type()->string_view(), "aos.examples.Ping");
62}
63
64// Tests that we can remap a channel specifying a certain node
65TEST_P(ConfigRemapperTest, RemapOriginalChannelWithNode) {
66 ConfigRemapper remapper(&config_.message());
67
68 const Node *node =
69 configuration::GetNode(remapper.remapped_configuration(), "pi1");
70
71 // Remap just on pi1.
72 remapper.RemapOriginalChannel<aos::timing::Report>("/aos", node);
73
74 const Channel *channel = configuration::GetChannel<aos::timing::Report>(
75 remapper.remapped_configuration(), "/original/pi1/aos", "pi1", node);
76 EXPECT_NE(channel, nullptr);
77 EXPECT_EQ(channel->name()->string_view(), "/original/pi1/aos");
78 EXPECT_EQ(channel->type()->string_view(), "aos.timing.Report");
79}
80
81// Tests that we can rename a channel specifying a certain node
82TEST_P(ConfigRemapperTest, RenameOriginalChannelWithNode) {
83 ConfigRemapper remapper(&config_.message());
84
85 const Node *node =
86 configuration::GetNode(remapper.remapped_configuration(), "pi1");
87
88 // Rename just on pi1.
89 remapper.RenameOriginalChannel<aos::timing::Report>("/aos", node,
90 "/original/pi1/aos");
91
92 const Channel *channel = configuration::GetChannel<aos::timing::Report>(
93 remapper.remapped_configuration(), "/original/pi1/aos", "pi1", node);
94 EXPECT_NE(channel, nullptr);
95 EXPECT_EQ(channel->name()->string_view(), "/original/pi1/aos");
96 EXPECT_EQ(channel->type()->string_view(), "aos.timing.Report");
97}
98
Stephan Pleinesf63bde82024-01-13 15:59:33 -080099} // namespace aos::testing