blob: fec3186f132285fd835799900627f376f41b772d [file] [log] [blame]
Austin Schuhc243b422020-10-11 15:35:08 -07001#include "aos/events/logging/logfile_utils.h"
2
3#include "gtest/gtest.h"
4
5#include "aos/events/logging/test_message_generated.h"
6#include "aos/json_to_flatbuffer.h"
7#include "aos/testing/tmpdir.h"
8
9namespace aos {
10namespace logger {
11namespace testing {
12
13template <typename T>
14SizePrefixedFlatbufferDetachedBuffer<T> JsonToSizedFlatbuffer(
15 const std::string_view data) {
16 flatbuffers::FlatBufferBuilder fbb;
17 fbb.ForceDefaults(true);
18 fbb.FinishSizePrefixed(JsonToFlatbuffer<T>(data, &fbb));
19 return fbb.Release();
20}
21
22TEST(SpanReaderTest, ReadWrite) {
23 const std::string logfile = aos::testing::TestTmpDir() + "/log.bfbs";
24 unlink(logfile.c_str());
25
26 const aos::SizePrefixedFlatbufferDetachedBuffer<TestMessage> m1 =
27 JsonToSizedFlatbuffer<TestMessage>(
28 R"({ "value": 1 })");
29 const aos::SizePrefixedFlatbufferDetachedBuffer<TestMessage> m2 =
30 JsonToSizedFlatbuffer<TestMessage>(
31 R"({ "value": 2 })");
32
33 {
34 DetachedBufferWriter writer(logfile, std::make_unique<DummyEncoder>());
35 writer.QueueSpan(m1.full_span());
36 writer.QueueSpan(m2.full_span());
37 }
38
39 SpanReader reader(logfile);
40
41 EXPECT_EQ(reader.filename(), logfile);
42 EXPECT_EQ(reader.ReadMessage(), m1.full_span());
43 EXPECT_EQ(reader.ReadMessage(), m2.full_span());
44 EXPECT_EQ(reader.ReadMessage(), absl::Span<const uint8_t>());
45}
46
47} // namespace testing
48} // namespace logger
49} // namespace aos