36
36
#include " mock_storage_factory.hpp"
37
37
38
38
#include " mock_compression_factory.hpp"
39
+ #include " fake_compression_factory.hpp"
39
40
40
41
#ifdef _WIN32
41
42
#include < windows.h>
42
- #else
43
- #include < unistd.h>
44
- #include < sys/resource.h>
45
43
#endif
46
44
47
45
using namespace testing ; // NOLINT
@@ -401,82 +399,37 @@ TEST_P(SequentialCompressionWriterTest, writer_writes_with_compression_queue_siz
401
399
EXPECT_EQ (fake_storage_size_, kNumMessagesToWrite );
402
400
}
403
401
404
-
405
- TEST_P (SequentialCompressionWriterTest, writer_sets_nice_value)
402
+ TEST_P (SequentialCompressionWriterTest, writer_sets_threads_priority)
406
403
{
407
404
const std::string test_topic_name = " test_topic" ;
408
405
const std::string test_topic_type = " test_msgs/BasicTypes" ;
409
406
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 ;
434
409
#else
435
- // FIXME implement windows version
410
+ const int wanted_thread_priority = THREAD_MODE_BACKGROUND_BEGIN;
436
411
#endif
437
412
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
-
466
413
// queue size should be 0 or at least the number of remaining messages to prevent message loss
467
414
rosbag2_compression::CompressionOptions compression_options {
468
415
DefaultTestCompressor,
469
416
rosbag2_compression::CompressionMode::MESSAGE,
470
417
kCompressionQueueSize ,
471
418
kDefaultCompressionQueueThreads ,
472
- wanted_nice_value
419
+ wanted_thread_priority
473
420
};
474
421
422
+ #ifndef _WIN32
475
423
// 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
477
428
478
429
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));
480
433
481
434
writer_->open (tmp_dir_storage_options_);
482
435
writer_->create_topic ({test_topic_name, test_topic_type, " " , " " , " " });
@@ -490,8 +443,7 @@ TEST_P(SequentialCompressionWriterTest, writer_sets_nice_value)
490
443
}
491
444
writer_.reset (); // reset will call writer destructor
492
445
493
- EXPECT_EQ (detected_nice_value, *compression_options.thread_nice_value );
494
-
446
+ EXPECT_EQ (detected_thread_priority, *compression_options.thread_nice_value );
495
447
EXPECT_EQ (fake_storage_size_, kNumMessagesToWrite );
496
448
}
497
449
0 commit comments