From cc61af1e2c933f2178a5dc3e5a5599e74d380eb3 Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Thu, 10 Aug 2017 21:55:29 +0200 Subject: Add duration to packages and tpp format --- test/test-packages.cc | 107 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 102 insertions(+), 5 deletions(-) (limited to 'test/test-packages.cc') diff --git a/test/test-packages.cc b/test/test-packages.cc index fe56077..29bb0d9 100644 --- a/test/test-packages.cc +++ b/test/test-packages.cc @@ -19,9 +19,10 @@ public: struct Entry { Package package; std::string data; + struct timespec end; - Entry(Package const& package) - : package(package) { + Entry(Package const& package, struct timespec end) + : package(package), end(end) { } }; @@ -32,7 +33,7 @@ public: : good(true) { } - void package(Package const& package) override { + void package(Package const& package, struct timespec end) override { if (open_.find(package.id) != open_.end()) { std::cerr << "Duplicate id" << std::endl; good = false; @@ -44,7 +45,7 @@ public: return; } open_[package.id] = packages.size(); - packages.emplace_back(package); + packages.emplace_back(package, end); } void data(uint32_t id, char const* data, size_t size, bool last) override { @@ -72,13 +73,16 @@ private: bool test_sanity() { Package pkg1; + struct timespec end; setup(&pkg1); + end = pkg1.timestamp; + end.tv_sec += 12; std::stringstream stream; auto writer = std::unique_ptr( PackagesWriter::create(&stream)); - writer->write(pkg1, "Hello World!"); + writer->write(pkg1, "Hello World!", end); writer->flush(); Delegate delegate; @@ -87,6 +91,8 @@ bool test_sanity() { ASSERT_EQ(static_cast(1), delegate.packages.size()); ASSERT_TRUE(pkg_eq(pkg1, delegate.packages[0].package)); ASSERT_EQ("Hello World!", delegate.packages[0].data); + ASSERT_EQ(end.tv_sec, delegate.packages[0].end.tv_sec); + ASSERT_EQ(end.tv_nsec, delegate.packages[0].end.tv_nsec); return true; } @@ -102,11 +108,102 @@ bool test_empty() { return true; } +static const uint8_t OLD[] = { + 0x54, 0x50, 0x50, 0x01, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x4f, 0x42, 0x24, 0x0b, 0x3c, 0xe3, + 0x00, 0x00, 0x8c, 0x80, 0x00, 0x50, 0x00, 0x09, + 0x31, 0x32, 0x37, 0x2e, 0x30, 0x2e, 0x30, 0x2e, + 0x31, 0x00, 0x0f, 0x77, 0x77, 0x77, 0x2e, 0x73, + 0x70, 0x61, 0x77, 0x6e, 0x65, 0x64, 0x2e, 0x62, + 0x69, 0x7a, 0x48, 0x45, 0x41, 0x44, 0x20, 0x2f, + 0x20, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, + 0x31, 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, + 0x20, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x70, 0x61, + 0x77, 0x6e, 0x65, 0x64, 0x2e, 0x62, 0x69, 0x7a, + 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x63, 0x75, + 0x72, 0x6c, 0x2f, 0x37, 0x2e, 0x35, 0x34, 0x2e, + 0x31, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x3a, 0x20, 0x2a, 0x2f, 0x2a, 0x0d, 0x0a, + 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x4f, 0x42, 0x24, 0xcf, + 0xea, 0x31, 0x00, 0x00, 0x00, 0x50, 0x8c, 0x80, + 0x00, 0x0f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x70, + 0x61, 0x77, 0x6e, 0x65, 0x64, 0x2e, 0x62, 0x69, + 0x7a, 0x00, 0x09, 0x31, 0x32, 0x37, 0x2e, 0x30, + 0x2e, 0x30, 0x2e, 0x31, 0x48, 0x54, 0x54, 0x50, + 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x30, + 0x20, 0x4f, 0x4b, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, + 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, + 0x68, 0x74, 0x6d, 0x6c, 0x0d, 0x0a, 0x41, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x2d, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x73, 0x3a, 0x20, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x0d, 0x0a, 0x45, 0x54, 0x61, 0x67, + 0x3a, 0x20, 0x22, 0x31, 0x39, 0x30, 0x38, 0x30, + 0x37, 0x34, 0x30, 0x34, 0x39, 0x22, 0x0d, 0x0a, + 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a, 0x20, 0x53, + 0x61, 0x74, 0x2c, 0x20, 0x32, 0x31, 0x20, 0x41, + 0x70, 0x72, 0x20, 0x32, 0x30, 0x31, 0x32, 0x20, + 0x30, 0x39, 0x3a, 0x34, 0x32, 0x3a, 0x34, 0x36, + 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x38, 0x30, + 0x0d, 0x0a, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, + 0x57, 0x65, 0x64, 0x2c, 0x20, 0x30, 0x39, 0x20, + 0x41, 0x75, 0x67, 0x20, 0x32, 0x30, 0x31, 0x37, + 0x20, 0x31, 0x38, 0x3a, 0x34, 0x30, 0x3a, 0x33, + 0x33, 0x20, 0x47, 0x4d, 0x54, 0x0d, 0x0a, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x6c, + 0x69, 0x67, 0x68, 0x74, 0x74, 0x70, 0x64, 0x2f, + 0x31, 0x2e, 0x34, 0x2e, 0x33, 0x33, 0x0d, 0x0a, + 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, +}; + +bool test_upgrade() { + std::stringstream stream; + stream.write(reinterpret_cast(OLD), sizeof(OLD)); + Delegate delegate; + ASSERT_EQ(PackagesReader::GOOD, PackagesReader::read(stream, &delegate)); + ASSERT_TRUE(delegate.good); + ASSERT_EQ(static_cast(2), delegate.packages.size()); + ASSERT_EQ(static_cast(1), delegate.packages[0].package.id); + ASSERT_EQ(0x014f42, delegate.packages[0].package.timestamp.tv_sec); + ASSERT_EQ(0x240b3ce3, delegate.packages[0].package.timestamp.tv_nsec); + ASSERT_EQ(35968, delegate.packages[0].package.source_port); + ASSERT_EQ("127.0.0.1", delegate.packages[0].package.source_host); + ASSERT_EQ(80, delegate.packages[0].package.target_port); + ASSERT_EQ("www.spawned.biz", delegate.packages[0].package.target_host); + ASSERT_EQ(delegate.packages[0].package.timestamp.tv_sec, + delegate.packages[0].end.tv_sec); + ASSERT_EQ(delegate.packages[0].package.timestamp.tv_nsec, + delegate.packages[0].end.tv_nsec); + + ASSERT_EQ(static_cast(2), delegate.packages[1].package.id); + ASSERT_EQ(0x014f42, delegate.packages[1].package.timestamp.tv_sec); + ASSERT_EQ(0x24cfea31, delegate.packages[1].package.timestamp.tv_nsec); + ASSERT_EQ(80, delegate.packages[1].package.source_port); + ASSERT_EQ("www.spawned.biz", delegate.packages[1].package.source_host); + ASSERT_EQ(35968, delegate.packages[1].package.target_port); + ASSERT_EQ("127.0.0.1", delegate.packages[1].package.target_host); + ASSERT_EQ(delegate.packages[1].package.timestamp.tv_sec, + delegate.packages[1].end.tv_sec); + ASSERT_EQ(delegate.packages[1].package.timestamp.tv_nsec, + delegate.packages[1].end.tv_nsec); +return true; +} + } // namespace int main(void) { BEFORE; RUN(test_sanity()); RUN(test_empty()); + RUN(test_upgrade()); AFTER; } -- cgit v1.2.3-70-g09d2