diff --git a/test/unit/obj/test_replicator.py b/test/unit/obj/test_replicator.py index 60d18b9b66..51c54ca931 100644 --- a/test/unit/obj/test_replicator.py +++ b/test/unit/obj/test_replicator.py @@ -536,9 +536,27 @@ class TestObjectReplicator(unittest.TestCase): self._write_disk_data('sdd', with_json=True) _create_test_rings(self.testdir, devs) - self.replicator.collect_jobs() + self.replicator.collect_jobs(override_partitions=[1]) self.assertEqual(self.replicator.total_stats.failure, 0) + def test_collect_jobs_with_override_parts_and_unexpected_part_dir(self): + self.replicator.collect_jobs(override_partitions=[0, 2]) + self.assertEqual(self.replicator.total_stats.failure, 0) + os.mkdir(os.path.join(self.objects_1, 'foo')) + jobs = self.replicator.collect_jobs(override_partitions=[0, 2]) + found_jobs = set() + for j in jobs: + found_jobs.add((int(j['policy']), int(j['partition']))) + self.assertEqual(found_jobs, { + (0, 0), + (0, 2), + (1, 0), + (1, 2), + }) + num_disks = len(POLICIES[1].object_ring.devs) + # N.B. it's not clear why the UUT increments failure per device + self.assertEqual(self.replicator.total_stats.failure, num_disks) + @mock.patch('swift.obj.replicator.random.shuffle', side_effect=lambda l: l) def test_collect_jobs_multi_disk(self, mock_shuffle): devs = [