@@ -351,6 +351,7 @@ def setUp(self):
351351 self .addCleanup (self ._clean_up )
352352 self .dev_file = create_sparse_tempfile ("lvm_test" , self ._sparse_size )
353353 self .dev_file2 = create_sparse_tempfile ("lvm_test" , self ._sparse_size )
354+ self .dev_file3 = create_sparse_tempfile ("lvm_test" , self ._sparse_size )
354355 try :
355356 self .loop_dev = create_lio_device (self .dev_file )
356357 except RuntimeError as e :
@@ -359,9 +360,13 @@ def setUp(self):
359360 self .loop_dev2 = create_lio_device (self .dev_file2 )
360361 except RuntimeError as e :
361362 raise RuntimeError ("Failed to setup loop device for testing: %s" % e )
363+ try :
364+ self .loop_dev3 = create_lio_device (self .dev_file3 )
365+ except RuntimeError as e :
366+ raise RuntimeError ("Failed to setup loop device for testing: %s" % e )
362367
363368 def _clean_up (self ):
364- for dev in (self .loop_dev , self .loop_dev2 ):
369+ for dev in (self .loop_dev , self .loop_dev2 , self . loop_dev3 ):
365370 try :
366371 BlockDev .lvm_pvremove (dev )
367372 except :
@@ -386,6 +391,13 @@ def _clean_up(self):
386391 pass
387392 os .unlink (self .dev_file2 )
388393
394+ try :
395+ delete_lio_device (self .loop_dev3 )
396+ except RuntimeError :
397+ # just move on, we can do no better here
398+ pass
399+ os .unlink (self .dev_file3 )
400+
389401@unittest .skipUnless (lvm_dbus_running , "LVM DBus not running" )
390402class LvmTestPVcreateRemove (LvmPVonlyTestCase ):
391403 @tag_test (TestTags .CORE )
@@ -1306,7 +1318,10 @@ def test_lvpartial(self):
13061318 succ = BlockDev .lvm_pvcreate (self .loop_dev2 , 0 , 0 , None )
13071319 self .assertTrue (succ )
13081320
1309- succ = BlockDev .lvm_vgcreate ("testVG" , [self .loop_dev , self .loop_dev2 ], 0 , None )
1321+ succ = BlockDev .lvm_pvcreate (self .loop_dev3 , 0 , 0 , None )
1322+ self .assertTrue (succ )
1323+
1324+ succ = BlockDev .lvm_vgcreate ("testVG" , [self .loop_dev , self .loop_dev2 , self .loop_dev3 ], 0 , None )
13101325 self .assertTrue (succ )
13111326
13121327 info = BlockDev .lvm_pvinfo (self .loop_dev2 )
@@ -1390,6 +1405,16 @@ def assert_raid1_structure(pv1, pv2):
13901405 # lvs_tree should still report the second stripe to be missing
13911406 assert_raid1_structure (self .loop_dev , None )
13921407
1408+ # repair testLV with the third PV
1409+ with wait_for_sync ("testVG" , "testLV" ):
1410+ succ = BlockDev .lvm_lvrepair ("testVG" , "testLV" , [self .loop_dev3 ])
1411+ self .assertTrue (succ )
1412+
1413+ info = BlockDev .lvm_lvinfo ("testVG" , "testLV" )
1414+ self .assertEqual (info .attr [8 ], "-" )
1415+
1416+ assert_raid1_structure (self .loop_dev , self .loop_dev3 )
1417+
13931418@unittest .skipUnless (lvm_dbus_running , "LVM DBus not running" )
13941419class LvmTestLVsAll (LvmPVVGthpoolTestCase ):
13951420 def test_lvs_all (self ):
0 commit comments