Revision d2aff862 test/ganeti.locking_unittest.py

b/test/ganeti.locking_unittest.py
354 354
    self.assert_('five' not in self.ls._names())
355 355
    self.assert_('six' not in self.ls._names())
356 356
    self.assertEquals(self.ls._list_owned(), set(['seven']))
357
    self.ls.add('eight', acquired=1, shared=1)
358
    self.assert_('eight' in self.ls._names())
359
    self.assertEquals(self.ls._list_owned(), set(['seven', 'eight']))
357
    self.assertRaises(AssertionError, self.ls.add, 'eight', acquired=1)
360 358
    self.ls.remove('seven')
361 359
    self.assert_('seven' not in self.ls._names())
362
    self.assertEquals(self.ls._list_owned(), set(['eight']))
360
    self.assertEquals(self.ls._list_owned(), set([]))
361
    self.ls.acquire(None, shared=1)
362
    self.assertRaises(AssertionError, self.ls.add, 'eight')
363
    self.ls.release()
364
    self.ls.acquire(None)
365
    self.ls.add('eight', acquired=1)
366
    self.assert_('eight' in self.ls._names())
367
    self.assert_('eight' in self.ls._list_owned())
368
    self.ls.add('nine')
369
    self.assert_('nine' in self.ls._names())
370
    self.assert_('nine' not in self.ls._list_owned())
363 371
    self.ls.release()
364 372
    self.ls.remove(['two'])
365 373
    self.assert_('two' not in self.ls._names())
......
550 558
    self.assertEqual(self.done.get(True, 1), 'DONE')
551 559
    self.assertEqual(self.done.get(True, 1), 'DONE')
552 560

  
561
  def testConcurrentSetLockAdd(self):
562
    self.ls.acquire('one')
563
    # Another thread wants the whole SetLock
564
    Thread(target=self._doLockSet, args=(None, 0)).start()
565
    Thread(target=self._doLockSet, args=(None, 1)).start()
566
    self.assertRaises(Queue.Empty, self.done.get, True, 0.2)
567
    self.assertRaises(AssertionError, self.ls.add, 'four')
568
    self.ls.release()
569
    self.assertEqual(self.done.get(True, 1), 'DONE')
570
    self.assertEqual(self.done.get(True, 1), 'DONE')
571
    self.ls.acquire(None)
572
    Thread(target=self._doLockSet, args=(None, 0)).start()
573
    Thread(target=self._doLockSet, args=(None, 1)).start()
574
    self.assertRaises(Queue.Empty, self.done.get, True, 0.2)
575
    self.ls.add('four')
576
    self.ls.add('five', acquired=1)
577
    self.ls.add('six', acquired=1, shared=1)
578
    self.assertEquals(self.ls._list_owned(),
579
      set(['one', 'two', 'three', 'five', 'six']))
580
    self.assertEquals(self.ls._is_owned(), True)
581
    self.assertEquals(self.ls._names(),
582
      set(['one', 'two', 'three', 'four', 'five', 'six']))
583
    self.ls.release()
584
    self.assertEqual(self.done.get(True, 1), 'DONE')
585
    self.assertEqual(self.done.get(True, 1), 'DONE')
586

  
553 587
  def testEmptyLockSet(self):
554 588
    # get the set-lock
555 589
    self.assertEqual(self.ls.acquire(None), set(['one', 'two', 'three']))

Also available in: Unified diff