3636#include " mock_storage_factory.hpp"
3737
3838#include " mock_compression_factory.hpp"
39+ #include " fake_compression_factory.hpp"
3940
4041#ifdef _WIN32
4142#include < windows.h>
42- #else
43- #include < unistd.h>
44- #include < sys/resource.h>
4543#endif
4644
4745using namespace testing ; // NOLINT
@@ -401,82 +399,37 @@ TEST_P(SequentialCompressionWriterTest, writer_writes_with_compression_queue_siz
401399 EXPECT_EQ (fake_storage_size_, kNumMessagesToWrite );
402400}
403401
404-
405- TEST_P (SequentialCompressionWriterTest, writer_sets_nice_value)
402+ TEST_P (SequentialCompressionWriterTest, writer_sets_threads_priority)
406403{
407404 const std::string test_topic_name = " test_topic" ;
408405 const std::string test_topic_type = " test_msgs/BasicTypes" ;
409406 const uint64_t kCompressionQueueSize = GetParam ();
410- const int wanted_nice_value = 10 ;
411-
412- class TestCompressor : public rosbag2_compression ::BaseCompressorInterface
413- {
414- int & detected_nice_value;
415-
416- public:
417- TestCompressor (int & detected_nice_value)
418- : detected_nice_value(detected_nice_value) {}
419- virtual std::string compress_uri (const std::string & uri)
420- {
421- return uri;
422- }
423-
424- virtual void compress_serialized_bag_message (
425- const rosbag2_storage::SerializedBagMessage * bag_message,
426- rosbag2_storage::SerializedBagMessage * compressed_message)
427- {
428- #ifdef _WIN32
429- int cur_nice_value = getpriority (PRIO_PROCESS, 0 );
430- if (cur_nice_value != -1 && errno == 0 ) {
431-
432- detected_nice_value = cur_nice_value;
433- }
407+ #ifndef _WIN32
408+ const int wanted_thread_priority = 10 ;
434409#else
435- // FIXME implement windows version
410+ const int wanted_thread_priority = THREAD_MODE_BACKGROUND_BEGIN;
436411#endif
437412
438- *compressed_message = *bag_message;
439- }
440-
441- /* *
442- * Get the identifier of the compression algorithm.
443- * This is appended to the extension of the compressed file.
444- */
445- virtual std::string get_compression_identifier () const
446- {
447- return " niceTest" ;
448- }
449- };
450-
451- class FakeFactory : public rosbag2_compression ::CompressionFactory
452- {
453- int & detected_nice_value;
454-
455- public:
456- FakeFactory (int & detected_nice_value)
457- : detected_nice_value(detected_nice_value) {}
458-
459- virtual std::shared_ptr<rosbag2_compression::BaseCompressorInterface>
460- create_compressor (const std::string & /* compression_format*/ )
461- {
462- return std::make_shared<TestCompressor>(detected_nice_value);
463- }
464- };
465-
466413 // queue size should be 0 or at least the number of remaining messages to prevent message loss
467414 rosbag2_compression::CompressionOptions compression_options {
468415 DefaultTestCompressor,
469416 rosbag2_compression::CompressionMode::MESSAGE,
470417 kCompressionQueueSize ,
471418 kDefaultCompressionQueueThreads ,
472- wanted_nice_value
419+ wanted_thread_priority
473420 };
474421
422+ #ifndef _WIN32
475423 // nice values are in the range from -20 to +19, so this value will never be read
476- int detected_nice_value = 100 ;
424+ int detected_thread_priority = 100 ;
425+ #else
426+ int detected_thread_priority = THREAD_PRIORITY_ERROR_RETURN;
427+ #endif
477428
478429 initializeFakeFileStorage ();
479- initializeWriter (compression_options, std::make_unique<FakeFactory>(detected_nice_value));
430+ initializeWriter (
431+ compression_options,
432+ std::make_unique<FakeCompressionFactory>(detected_thread_priority));
480433
481434 writer_->open (tmp_dir_storage_options_);
482435 writer_->create_topic ({test_topic_name, test_topic_type, " " , " " , " " });
@@ -490,8 +443,7 @@ TEST_P(SequentialCompressionWriterTest, writer_sets_nice_value)
490443 }
491444 writer_.reset (); // reset will call writer destructor
492445
493- EXPECT_EQ (detected_nice_value, *compression_options.thread_priority );
494-
446+ EXPECT_EQ (detected_thread_priority, *compression_options.thread_priority );
495447 EXPECT_EQ (fake_storage_size_, kNumMessagesToWrite );
496448}
497449
0 commit comments