Skip to content

Commit

Permalink
[humble] Rollback to rcpputils::fs and workaround failure in "open_su…
Browse files Browse the repository at this point in the history
…cceds_twice" on second run. (#1666)

* Revert "Fix for "open_succeeds_twice" test failure on second run"

This reverts commit e0d3d48.

Signed-off-by: Michael Orlov <[email protected]>

* Workaround for "open_succeeds_twice" test failure on second run

Signed-off-by: Michael Orlov <[email protected]>

* Use test-specific temp subfolder to avoid interference with another tests

Signed-off-by: Michael Orlov <[email protected]>

---------

Signed-off-by: Michael Orlov <[email protected]>
  • Loading branch information
morlov-apexai authored May 22, 2024
1 parent 785e0fd commit 82bc154
Showing 1 changed file with 15 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@

#include <gmock/gmock.h>

#include <filesystem>
#include <fstream>
#include <memory>
#include <string>
#include <utility>
#include <vector>

#include "rcpputils/asserts.hpp"
#include "rcpputils/filesystem_helper.hpp"

#include "rosbag2_compression/compression_options.hpp"
#include "rosbag2_compression/sequential_compression_writer.hpp"
Expand All @@ -39,8 +39,6 @@

using namespace testing; // NOLINT

namespace fs = std::filesystem;

static constexpr const char * DefaultTestCompressor = "fake_comp";

class SequentialCompressionWriterTest : public Test
Expand All @@ -51,12 +49,12 @@ class SequentialCompressionWriterTest : public Test
storage_{std::make_shared<NiceMock<MockStorage>>()},
converter_factory_{std::make_shared<StrictMock<MockConverterFactory>>()},
metadata_io_{std::make_unique<NiceMock<MockMetadataIo>>()},
tmp_dir_{fs::temp_directory_path() / "SequentialCompressionWriterTest"},
tmp_dir_{rcpputils::fs::temp_directory_path() / "SequentialCompressionWriterTest"},
tmp_dir_storage_options_{},
serialization_format_{"rmw_format"}
{
tmp_dir_storage_options_.uri = tmp_dir_.string();
fs::remove_all(tmp_dir_);
rcpputils::fs::remove_all(tmp_dir_);
ON_CALL(*storage_factory_, open_read_write(_)).WillByDefault(Return(storage_));
EXPECT_CALL(*storage_factory_, open_read_write(_)).Times(AtLeast(0));
// intercept the metadata write so we can analyze it.
Expand All @@ -68,7 +66,7 @@ class SequentialCompressionWriterTest : public Test

~SequentialCompressionWriterTest()
{
fs::remove_all(tmp_dir_);
rcpputils::fs::remove_all(tmp_dir_);
}

void initializeFakeFileStorage()
Expand Down Expand Up @@ -127,7 +125,7 @@ class SequentialCompressionWriterTest : public Test
std::shared_ptr<NiceMock<MockStorage>> storage_;
std::shared_ptr<StrictMock<MockConverterFactory>> converter_factory_;
std::unique_ptr<MockMetadataIo> metadata_io_;
fs::path tmp_dir_;
rcpputils::fs::path tmp_dir_;
rosbag2_storage::StorageOptions tmp_dir_storage_options_;
rosbag2_storage::BagMetadata intercepted_metadata_;
std::unique_ptr<rosbag2_cpp::Writer> writer_;
Expand Down Expand Up @@ -194,11 +192,14 @@ TEST_F(SequentialCompressionWriterTest, open_succeeds_on_supported_compression_f
initializeWriter(compression_options);

auto tmp_dir = tmp_dir_ / "path_not_empty";
// Cleanup leftovers from previous run if any
rcpputils::fs::remove_all(tmp_dir);
auto storage_options = rosbag2_storage::StorageOptions();
storage_options.uri = tmp_dir.string();

EXPECT_NO_THROW(
writer_->open(tmp_dir_storage_options_, {serialization_format_, serialization_format_}));
rcpputils::fs::remove_all(tmp_dir);
}

TEST_F(SequentialCompressionWriterTest, open_succeeds_twice)
Expand All @@ -211,6 +212,10 @@ TEST_F(SequentialCompressionWriterTest, open_succeeds_twice)
auto tmp_dir = tmp_dir_ / "path_not_empty";
auto tmp_dir_next = tmp_dir_ / "path_not_empty_next";

// Cleanup leftovers from previous run if any
rcpputils::fs::remove_all(tmp_dir);
rcpputils::fs::remove_all(tmp_dir_next);

auto storage_options = rosbag2_storage::StorageOptions();
auto storage_options_next = rosbag2_storage::StorageOptions();

Expand All @@ -223,6 +228,9 @@ TEST_F(SequentialCompressionWriterTest, open_succeeds_twice)
writer_->close();
EXPECT_NO_THROW(
writer_->open(storage_options_next, {serialization_format_, serialization_format_}));

rcpputils::fs::remove_all(tmp_dir);
rcpputils::fs::remove_all(tmp_dir_next);
}

TEST_F(SequentialCompressionWriterTest, writer_calls_create_compressor)
Expand Down

0 comments on commit 82bc154

Please sign in to comment.