Revision 2fe690f1 test/py/ganeti.block.bdev_unittest.py
b/test/py/ganeti.block.bdev_unittest.py | ||
---|---|---|
71 | 71 |
} |
72 | 72 |
] |
73 | 73 |
for d,r in zip(data, result): |
74 |
self.assertEqual(drbd.DRBD8._GetVersion(d), r) |
|
74 |
info = drbd.DRBD8Info.CreateFromLines(d) |
|
75 |
self.assertEqual(info.GetVersion(), r) |
|
75 | 76 |
|
76 | 77 |
|
77 | 78 |
class TestDRBD8Runner(testutils.GanetiTestCase): |
... | ... | |
244 | 245 |
proc83_sync_data = testutils.TestDataFilename("proc_drbd83_sync.txt") |
245 | 246 |
proc83_sync_krnl_data = \ |
246 | 247 |
testutils.TestDataFilename("proc_drbd83_sync_krnl2.6.39.txt") |
247 |
self.proc_data = drbd.DRBD8._GetProcData(filename=proc_data) |
|
248 |
self.proc80e_data = drbd.DRBD8._GetProcData(filename=proc80e_data) |
|
249 |
self.proc83_data = drbd.DRBD8._GetProcData(filename=proc83_data) |
|
250 |
self.proc83_sync_data = drbd.DRBD8._GetProcData(filename=proc83_sync_data) |
|
251 |
self.proc83_sync_krnl_data = \ |
|
252 |
drbd.DRBD8._GetProcData(filename=proc83_sync_krnl_data) |
|
253 |
self.mass_data = drbd.DRBD8._JoinProcDataPerMinor(self.proc_data) |
|
254 |
self.mass80e_data = drbd.DRBD8._JoinProcDataPerMinor(self.proc80e_data) |
|
255 |
self.mass83_data = drbd.DRBD8._JoinProcDataPerMinor(self.proc83_data) |
|
256 |
self.mass83_sync_data = \ |
|
257 |
drbd.DRBD8._JoinProcDataPerMinor(self.proc83_sync_data) |
|
258 |
self.mass83_sync_krnl_data = \ |
|
259 |
drbd.DRBD8._JoinProcDataPerMinor(self.proc83_sync_krnl_data) |
|
248 |
|
|
249 |
self.drbd_info = drbd.DRBD8Info.CreateFromFile(filename=proc_data) |
|
250 |
self.drbd_info80e = drbd.DRBD8Info.CreateFromFile(filename=proc80e_data) |
|
251 |
self.drbd_info83 = drbd.DRBD8Info.CreateFromFile(filename=proc83_data) |
|
252 |
self.drbd_info83_sync = \ |
|
253 |
drbd.DRBD8Info.CreateFromFile(filename=proc83_sync_data) |
|
254 |
self.drbd_info83_sync_krnl = \ |
|
255 |
drbd.DRBD8Info.CreateFromFile(filename=proc83_sync_krnl_data) |
|
260 | 256 |
|
261 | 257 |
def testIOErrors(self): |
262 | 258 |
"""Test handling of errors while reading the proc file.""" |
263 | 259 |
temp_file = self._CreateTempFile() |
264 | 260 |
os.unlink(temp_file) |
265 | 261 |
self.failUnlessRaises(errors.BlockDeviceError, |
266 |
drbd.DRBD8._GetProcData, filename=temp_file)
|
|
262 |
drbd.DRBD8Info.CreateFromFile, filename=temp_file)
|
|
267 | 263 |
|
268 | 264 |
def testHelper(self): |
269 | 265 |
"""Test reading usermode_helper in /sys.""" |
... | ... | |
280 | 276 |
|
281 | 277 |
def testMinorNotFound(self): |
282 | 278 |
"""Test not-found-minor in /proc""" |
283 |
self.failUnless(9 not in self.mass_data)
|
|
284 |
self.failUnless(9 not in self.mass83_data)
|
|
285 |
self.failUnless(3 not in self.mass80e_data)
|
|
279 |
self.failUnless(not self.drbd_info.HasMinorStatus(9))
|
|
280 |
self.failUnless(not self.drbd_info83.HasMinorStatus(9))
|
|
281 |
self.failUnless(not self.drbd_info80e.HasMinorStatus(3))
|
|
286 | 282 |
|
287 | 283 |
def testLineNotMatch(self): |
288 | 284 |
"""Test wrong line passed to drbd.DRBD8Status""" |
... | ... | |
290 | 286 |
|
291 | 287 |
def testMinor0(self): |
292 | 288 |
"""Test connected, primary device""" |
293 |
for data in [self.mass_data, self.mass83_data]:
|
|
294 |
stats = drbd.DRBD8Status(data[0])
|
|
289 |
for info in [self.drbd_info, self.drbd_info83]:
|
|
290 |
stats = info.GetMinorStatus(0)
|
|
295 | 291 |
self.failUnless(stats.is_in_use) |
296 | 292 |
self.failUnless(stats.is_connected and stats.is_primary and |
297 | 293 |
stats.peer_secondary and stats.is_disk_uptodate) |
298 | 294 |
|
299 | 295 |
def testMinor1(self): |
300 | 296 |
"""Test connected, secondary device""" |
301 |
for data in [self.mass_data, self.mass83_data]:
|
|
302 |
stats = drbd.DRBD8Status(data[1])
|
|
297 |
for info in [self.drbd_info, self.drbd_info83]:
|
|
298 |
stats = info.GetMinorStatus(1)
|
|
303 | 299 |
self.failUnless(stats.is_in_use) |
304 | 300 |
self.failUnless(stats.is_connected and stats.is_secondary and |
305 | 301 |
stats.peer_primary and stats.is_disk_uptodate) |
306 | 302 |
|
307 | 303 |
def testMinor2(self): |
308 | 304 |
"""Test unconfigured device""" |
309 |
for data in [self.mass_data, self.mass83_data, self.mass80e_data]:
|
|
310 |
stats = drbd.DRBD8Status(data[2])
|
|
305 |
for info in [self.drbd_info, self.drbd_info83, self.drbd_info80e]:
|
|
306 |
stats = info.GetMinorStatus(2)
|
|
311 | 307 |
self.failIf(stats.is_in_use) |
312 | 308 |
|
313 | 309 |
def testMinor4(self): |
314 | 310 |
"""Test WFconn device""" |
315 |
for data in [self.mass_data, self.mass83_data]:
|
|
316 |
stats = drbd.DRBD8Status(data[4])
|
|
311 |
for info in [self.drbd_info, self.drbd_info83]:
|
|
312 |
stats = info.GetMinorStatus(4)
|
|
317 | 313 |
self.failUnless(stats.is_in_use) |
318 | 314 |
self.failUnless(stats.is_wfconn and stats.is_primary and |
319 | 315 |
stats.rrole == "Unknown" and |
... | ... | |
321 | 317 |
|
322 | 318 |
def testMinor6(self): |
323 | 319 |
"""Test diskless device""" |
324 |
for data in [self.mass_data, self.mass83_data]:
|
|
325 |
stats = drbd.DRBD8Status(data[6])
|
|
320 |
for info in [self.drbd_info, self.drbd_info83]:
|
|
321 |
stats = info.GetMinorStatus(6)
|
|
326 | 322 |
self.failUnless(stats.is_in_use) |
327 | 323 |
self.failUnless(stats.is_connected and stats.is_secondary and |
328 | 324 |
stats.peer_primary and stats.is_diskless) |
329 | 325 |
|
330 | 326 |
def testMinor8(self): |
331 | 327 |
"""Test standalone device""" |
332 |
for data in [self.mass_data, self.mass83_data]:
|
|
333 |
stats = drbd.DRBD8Status(data[8])
|
|
328 |
for info in [self.drbd_info, self.drbd_info83]:
|
|
329 |
stats = info.GetMinorStatus(8)
|
|
334 | 330 |
self.failUnless(stats.is_in_use) |
335 | 331 |
self.failUnless(stats.is_standalone and |
336 | 332 |
stats.rrole == "Unknown" and |
337 | 333 |
stats.is_disk_uptodate) |
338 | 334 |
|
339 | 335 |
def testDRBD83SyncFine(self): |
340 |
stats = drbd.DRBD8Status(self.mass83_sync_data[3])
|
|
336 |
stats = self.drbd_info83_sync.GetMinorStatus(3)
|
|
341 | 337 |
self.failUnless(stats.is_in_resync) |
342 | 338 |
self.failUnless(stats.sync_percent is not None) |
343 | 339 |
|
344 | 340 |
def testDRBD83SyncBroken(self): |
345 |
stats = drbd.DRBD8Status(self.mass83_sync_krnl_data[3])
|
|
341 |
stats = self.drbd_info83_sync_krnl.GetMinorStatus(3)
|
|
346 | 342 |
self.failUnless(stats.is_in_resync) |
347 | 343 |
self.failUnless(stats.sync_percent is not None) |
348 | 344 |
|
Also available in: Unified diff