From 14da94d1893601894f39b86e252ead0eb2f3ec6a Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Thu, 11 Mar 2021 13:27:54 -0500 Subject: [PATCH] Add more compression tests for dump local --- .../formats/test_dump_local_compressed.cpp | 194 +++++++++++++++++- 1 file changed, 190 insertions(+), 4 deletions(-) diff --git a/unittest/formats/test_dump_local_compressed.cpp b/unittest/formats/test_dump_local_compressed.cpp index 048053fb9a..b3c96b6edc 100644 --- a/unittest/formats/test_dump_local_compressed.cpp +++ b/unittest/formats/test_dump_local_compressed.cpp @@ -27,16 +27,20 @@ class DumpLocalCompressTest : public CompressedDumpTest { public: DumpLocalCompressTest() : CompressedDumpTest("local") { } + + void SetUp() override { + CompressedDumpTest::SetUp(); + + if (!verbose) ::testing::internal::CaptureStdout(); + command("compute comp all pair/local dist eng"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + } }; TEST_F(DumpLocalCompressTest, compressed_run0) { if (!COMPRESS_BINARY) GTEST_SKIP(); - if (!verbose) ::testing::internal::CaptureStdout(); - command("compute comp all pair/local dist eng"); - if (!verbose) ::testing::internal::GetCapturedStdout(); - auto base_name = "run*.melt.local"; auto base_name_0 = "run0.melt.local"; auto text_files = text_dump_filename(base_name); @@ -61,6 +65,188 @@ TEST_F(DumpLocalCompressTest, compressed_run0) delete_file(converted_file_0); } +TEST_F(DumpLocalCompressTest, compressed_multi_file_run1) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto base_name = "multi_file_run1_*.melt.local"; + auto base_name_0 = "multi_file_run1_0.melt.local"; + auto base_name_1 = "multi_file_run1_1.melt.local"; + auto text_file = text_dump_filename(base_name); + auto text_file_0 = text_dump_filename(base_name_0); + auto text_file_1 = text_dump_filename(base_name_1); + auto compressed_file = compressed_dump_filename(base_name); + auto compressed_file_0 = compressed_dump_filename(base_name_0); + auto compressed_file_1 = compressed_dump_filename(base_name_1); + auto fields = "index c_comp[1]"; + + generate_text_and_compressed_dump(text_file, compressed_file, fields, "", 1); + + TearDown(); + + auto converted_file_0 = convert_compressed_to_text(compressed_file_0); + auto converted_file_1 = convert_compressed_to_text(compressed_file_1); + + ASSERT_THAT(converted_file_0, Eq(converted_dump_filename(base_name_0))); + ASSERT_THAT(converted_file_1, Eq(converted_dump_filename(base_name_1))); + ASSERT_FILE_EXISTS(converted_file_0); + ASSERT_FILE_EXISTS(converted_file_1); + ASSERT_FILE_EQUAL(text_file_0, converted_file_0); + ASSERT_FILE_EQUAL(text_file_1, converted_file_1); + + delete_file(text_file_0); + delete_file(text_file_1); + delete_file(compressed_file_0); + delete_file(compressed_file_1); + delete_file(converted_file_0); + delete_file(converted_file_1); +} + +TEST_F(DumpLocalCompressTest, compressed_multi_file_with_pad_run1) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto base_name = "multi_file_pad_run1_*.melt.local"; + auto base_name_0 = "multi_file_pad_run1_000.melt.local"; + auto base_name_1 = "multi_file_pad_run1_001.melt.local"; + auto text_file = text_dump_filename(base_name); + auto text_file_0 = text_dump_filename(base_name_0); + auto text_file_1 = text_dump_filename(base_name_1); + auto compressed_file = compressed_dump_filename(base_name); + auto compressed_file_0 = compressed_dump_filename(base_name_0); + auto compressed_file_1 = compressed_dump_filename(base_name_1); + auto fields = "index c_comp[1]"; + + generate_text_and_compressed_dump(text_file, compressed_file, fields, "pad 3", 1); + + TearDown(); + + ASSERT_FILE_EXISTS(text_file_0); + ASSERT_FILE_EXISTS(text_file_1); + ASSERT_FILE_EXISTS(compressed_file_0); + ASSERT_FILE_EXISTS(compressed_file_1); + + auto converted_file_0 = convert_compressed_to_text(compressed_file_0); + auto converted_file_1 = convert_compressed_to_text(compressed_file_1); + + ASSERT_THAT(converted_file_0, Eq(converted_dump_filename(base_name_0))); + ASSERT_THAT(converted_file_1, Eq(converted_dump_filename(base_name_1))); + ASSERT_FILE_EXISTS(converted_file_0); + ASSERT_FILE_EXISTS(converted_file_1); + ASSERT_FILE_EQUAL(text_file_0, converted_file_0); + ASSERT_FILE_EQUAL(text_file_1, converted_file_1); + + delete_file(text_file_0); + delete_file(text_file_1); + delete_file(compressed_file_0); + delete_file(compressed_file_1); + delete_file(converted_file_0); + delete_file(converted_file_1); +} + +TEST_F(DumpLocalCompressTest, compressed_multi_file_with_maxfiles_run1) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto base_name = "multi_file_maxfiles_run1_*.melt.local"; + auto base_name_0 = "multi_file_maxfiles_run1_0.melt.local"; + auto base_name_1 = "multi_file_maxfiles_run1_1.melt.local"; + auto base_name_2 = "multi_file_maxfiles_run1_2.melt.local"; + auto text_file = text_dump_filename(base_name); + auto text_file_0 = text_dump_filename(base_name_0); + auto text_file_1 = text_dump_filename(base_name_1); + auto text_file_2 = text_dump_filename(base_name_2); + auto compressed_file = compressed_dump_filename(base_name); + auto compressed_file_0 = compressed_dump_filename(base_name_0); + auto compressed_file_1 = compressed_dump_filename(base_name_1); + auto compressed_file_2 = compressed_dump_filename(base_name_2); + auto fields = "index c_comp[1]"; + + generate_text_and_compressed_dump(text_file, compressed_file, fields, "maxfiles 2", 2); + + TearDown(); + + ASSERT_FILE_NOT_EXISTS(text_file_0); + ASSERT_FILE_EXISTS(text_file_1); + ASSERT_FILE_EXISTS(text_file_2); + ASSERT_FILE_NOT_EXISTS(compressed_file_0); + ASSERT_FILE_EXISTS(compressed_file_1); + ASSERT_FILE_EXISTS(compressed_file_2); + + auto converted_file_1 = convert_compressed_to_text(compressed_file_1); + auto converted_file_2 = convert_compressed_to_text(compressed_file_2); + + ASSERT_THAT(converted_file_1, Eq(converted_dump_filename(base_name_1))); + ASSERT_THAT(converted_file_2, Eq(converted_dump_filename(base_name_2))); + ASSERT_FILE_EXISTS(converted_file_1); + ASSERT_FILE_EXISTS(converted_file_2); + ASSERT_FILE_EQUAL(text_file_1, converted_file_1); + ASSERT_FILE_EQUAL(text_file_2, converted_file_2); + + delete_file(text_file_1); + delete_file(text_file_2); + delete_file(compressed_file_1); + delete_file(compressed_file_2); + delete_file(converted_file_1); + delete_file(converted_file_2); +} + +TEST_F(DumpLocalCompressTest, compressed_modify_bad_param) +{ + if (compression_style != "local/gz") GTEST_SKIP(); + + auto fields = "index c_comp[1]"; + + if (!verbose) ::testing::internal::CaptureStdout(); + command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_bad_param_run0_*.melt.local"), fields)); + if (!verbose) ::testing::internal::GetCapturedStdout(); + + TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + command("dump_modify id1 compression_level 12"); + ); +} + +TEST_F(DumpLocalCompressTest, compressed_modify_multi_bad_param) +{ + if (compression_style != "local/gz") GTEST_SKIP(); + + auto fields = "index c_comp[1]"; + + if (!verbose) ::testing::internal::CaptureStdout(); + command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_multi_bad_param_run0_*.melt.local"), fields)); + if (!verbose) ::testing::internal::GetCapturedStdout(); + + TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + command("dump_modify id1 pad 3 compression_level 12"); + ); +} + +TEST_F(DumpLocalCompressTest, compressed_modify_clevel_run0) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto base_name = "modify_clevel_run0.melt.local"; + auto text_file = text_dump_filename(base_name); + auto compressed_file = compressed_dump_filename(base_name); + auto fields = "index c_comp[1]"; + + generate_text_and_compressed_dump(text_file, compressed_file, fields, fields, "", "compression_level 3", 0); + + TearDown(); + + ASSERT_FILE_EXISTS(text_file); + ASSERT_FILE_EXISTS(compressed_file); + + auto converted_file = convert_compressed_to_text(compressed_file); + + ASSERT_THAT(converted_file, Eq(converted_dump_filename(base_name))); + ASSERT_FILE_EXISTS(converted_file); + ASSERT_FILE_EQUAL(text_file, converted_file); + delete_file(text_file); + delete_file(compressed_file); + delete_file(converted_file); +} + int main(int argc, char **argv) { MPI_Init(&argc, &argv);