IQ.Pilot Release Commit @ bec7652
This commit is contained in:
44
iqpilot/system/loggerd/tests/test_zstd_writer.cc
Normal file
44
iqpilot/system/loggerd/tests/test_zstd_writer.cc
Normal file
@@ -0,0 +1,44 @@
|
||||
#include <zstd.h>
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
#include <cstring>
|
||||
#include <vector>
|
||||
|
||||
#include "common/util.h"
|
||||
#include "system/loggerd/logger.h"
|
||||
#include "system/loggerd/zstd_writer.h"
|
||||
|
||||
TEST_CASE("ZstdFileWriter writes and compresses data correctly in loops", "[ZstdFileWriter]") {
|
||||
const std::string filename = "test_zstd_file.zst";
|
||||
const int iterations = 100;
|
||||
const size_t dataSize = 1024;
|
||||
|
||||
std::string totalTestData;
|
||||
|
||||
// Step 1: Write compressed data to file in a loop
|
||||
{
|
||||
ZstdFileWriter writer(filename, LOG_COMPRESSION_LEVEL);
|
||||
// Write various data sizes including edge cases
|
||||
std::vector<size_t> testSizes = {dataSize, 1, 0, dataSize * 2}; // Normal, minimal, empty, large
|
||||
for (int i = 0; i < iterations; ++i) {
|
||||
size_t currentSize = testSizes[i % testSizes.size()];
|
||||
std::string testData = util::random_string(currentSize);
|
||||
totalTestData.append(testData);
|
||||
|
||||
writer.write((void *)testData.c_str(), testData.size());
|
||||
}
|
||||
}
|
||||
|
||||
// Step 2: Decompress the file and verify the data
|
||||
auto compressedContent = util::read_file(filename);
|
||||
REQUIRE(compressedContent.size() > 0);
|
||||
REQUIRE(compressedContent.size() < totalTestData.size());
|
||||
std::string decompressedData = zstd_decompress(compressedContent);
|
||||
|
||||
// Step 3: Verify that the decompressed data matches the original accumulated data
|
||||
REQUIRE(decompressedData.size() == totalTestData.size());
|
||||
REQUIRE(std::memcmp(decompressedData.data(), totalTestData.c_str(), totalTestData.size()) == 0);
|
||||
|
||||
// Clean up the test file
|
||||
std::remove(filename.c_str());
|
||||
}
|
||||
Reference in New Issue
Block a user