Ejemplo n.º 1
0
 def test_reentrant_lock(self):
     '''Test whether retaking a lock fails'''
     p = CMDB()
     p.saveObject(self.cmdbobject, dict())
     p.getObjectWithLock(self.cmdbobject)
     self.assertRaises(DoubleLockException, p.getObjectWithLock,
                       self.cmdbobject)
Ejemplo n.º 2
0
 def test_reentrant_lock(self):
     '''Test whether retaking a lock fails'''
     p = CMDB()
     p.saveObject(self.cmdbobject, dict())
     p.getObjectWithLock(self.cmdbobject)
     self.assertRaises(DoubleLockException, p.getObjectWithLock,
             self.cmdbobject)
Ejemplo n.º 3
0
 def test_multiple_release(self):
     '''Test whether multiple release calls succeeds'''
     p = CMDB()
     p.saveObject(self.cmdbobject, 123)
     p.getObjectWithLock(self.cmdbobject)
     p.releaseObjectLock(self.cmdbobject)
     p.releaseObjectLock(self.cmdbobject)
     p.releaseObjectLock(self.cmdbobject)
Ejemplo n.º 4
0
 def test_multiple_release(self):
     '''Test whether multiple release calls succeeds'''
     p = CMDB()
     p.saveObject(self.cmdbobject, 123)
     p.getObjectWithLock(self.cmdbobject)
     p.releaseObjectLock(self.cmdbobject)
     p.releaseObjectLock(self.cmdbobject)
     p.releaseObjectLock(self.cmdbobject)
Ejemplo n.º 5
0
 def test_store_retrieve_none(self):
     '''Test register-store-retrieve cycle using None as object'''
     p = CMDB()
     p.registerObject(self.cmdbobject, None)
     p.getObjectWithLock(self.cmdbobject)
     p.saveObject(self.cmdbobject, None)
     v = p.getObjectWithLock(self.cmdbobject)
     self.assertEqual(v, None)
Ejemplo n.º 6
0
 def test_store_retrieve_none(self):
     '''Test register-store-retrieve cycle using None as object'''
     p = CMDB()
     p.registerObject(self.cmdbobject, None)
     p.getObjectWithLock(self.cmdbobject)
     p.saveObject(self.cmdbobject, None)
     v = p.getObjectWithLock(self.cmdbobject)
     self.assertEqual(v, None)
Ejemplo n.º 7
0
 def test_store_retrieve_dict(self):
     '''Test register-store-retrieve cycle using dict as object'''
     d = {
         'foo': 'bar',
         'baz': ['bat', '123', ],
     }
     p = CMDB()
     p.registerObject(self.cmdbobject, None)
     v = p.getObjectWithLock(self.cmdbobject)
     p.saveObject(self.cmdbobject, d)
     v = p.getObjectWithLock(self.cmdbobject)
     self.assertEqual(v, d)
Ejemplo n.º 8
0
 def test_generations(self):
     '''Test whether register-store-retrieve-store-retrieve works fine'''
     l = random.randint(0, 100)
     l1 = [random.randint(0, 100) for i in xrange(l)]
     l2 = [random.randint(0, 100) for i in xrange(l / 2)]
     p = CMDB()
     p.registerObject(self.cmdbobject, None)
     p.getObjectWithLock(self.cmdbobject)
     p.saveObject(self.cmdbobject, l1)
     v = p.getObjectWithLock(self.cmdbobject)
     self.assertEqual(v, l1)
     p.saveObject(self.cmdbobject, l2)
     v = p.getObjectWithLock(self.cmdbobject)
     self.assertEqual(v, l2)
Ejemplo n.º 9
0
 def test_generations(self):
     '''Test whether register-store-retrieve-store-retrieve works fine'''
     l = random.randint(0, 100)
     l1 = [random.randint(0, 100) for i in xrange(l)]
     l2 = [random.randint(0, 100) for i in xrange(l / 2)]
     p = CMDB()
     p.registerObject(self.cmdbobject, None)
     p.getObjectWithLock(self.cmdbobject)
     p.saveObject(self.cmdbobject, l1)
     v = p.getObjectWithLock(self.cmdbobject)
     self.assertEqual(v, l1)
     p.saveObject(self.cmdbobject, l2)
     v = p.getObjectWithLock(self.cmdbobject)
     self.assertEqual(v, l2)
Ejemplo n.º 10
0
 def test_store_retrieve_dict(self):
     '''Test register-store-retrieve cycle using dict as object'''
     d = {
         'foo': 'bar',
         'baz': [
             'bat',
             '123',
         ],
     }
     p = CMDB()
     p.registerObject(self.cmdbobject, None)
     v = p.getObjectWithLock(self.cmdbobject)
     p.saveObject(self.cmdbobject, d)
     v = p.getObjectWithLock(self.cmdbobject)
     self.assertEqual(v, d)
Ejemplo n.º 11
0
    def test_release(self):
        p = CMDB()

        events = list()

        def run1():
            try:
                p.saveObject(self.cmdbobject, 123)
            except Exception, e:
                events.append((1, e, ))
                return

            try:
                p.getObjectWithLock(self.cmdbobject)
            except Exception, e:
                events.append((2, e, ))
                return
Ejemplo n.º 12
0
    def test_timeout_relock(self):
        p = CMDB()
        p.saveObject(self.cmdbobject, None)

        from pylabs.cmdb.cmdb import DEFAULT_LOCK_TIMEOUT, isLocked, isSafe

        p.getObjectWithLock(self.cmdbobject)
        self.assert_(isLocked(self.cmdbobject))
        self.assert_(isSafe(self.cmdbobject))

        time.sleep(DEFAULT_LOCK_TIMEOUT + 1.0)

        self.assert_(not isLocked(self.cmdbobject))
        self.assert_(isSafe(self.cmdbobject))

        p.getObjectWithLock(self.cmdbobject)
        self.assert_(isLocked(self.cmdbobject))
        self.assert_(isSafe(self.cmdbobject))
Ejemplo n.º 13
0
    def test_timeout_but_lock_kept(self):
        p = CMDB()
        p.saveObject(self.cmdbobject, None)

        o = p.getObjectWithLock(self.cmdbobject, locktimeout=1)
        
        time.sleep(2)

        p.saveObject('test-test', 123)
Ejemplo n.º 14
0
    def test_timeout_but_lock_kept(self):
        p = CMDB()
        p.saveObject(self.cmdbobject, None)

        o = p.getObjectWithLock(self.cmdbobject, locktimeout=1)

        time.sleep(2)

        p.saveObject('test-test', 123)
Ejemplo n.º 15
0
    def test_timeout_relock(self):
        p = CMDB()
        p.saveObject(self.cmdbobject, None)

        from pylabs.cmdb.cmdb import DEFAULT_LOCK_TIMEOUT, isLocked, isSafe

        p.getObjectWithLock(self.cmdbobject)
        self.assert_(isLocked(self.cmdbobject))
        self.assert_(isSafe(self.cmdbobject))

        time.sleep(DEFAULT_LOCK_TIMEOUT + 1.0)

        self.assert_(not isLocked(self.cmdbobject))
        self.assert_(isSafe(self.cmdbobject))

        p.getObjectWithLock(self.cmdbobject)
        self.assert_(isLocked(self.cmdbobject))
        self.assert_(isSafe(self.cmdbobject))
Ejemplo n.º 16
0
    def test_timeout(self):
        p = CMDB()

        p.saveObject(self.cmdbobject, 123)

        def run():
            p.getObjectWithLock(self.cmdbobject, locktimeout=3)
            time.sleep(3)

        t1 = threading.Thread(target=run)

        t1.start()
        time.sleep(1)

        self.assert_(p.pm_isLocked(self.cmdbobject))

        start = time.time()
        p.getObjectWithLock(self.cmdbobject)
        end = time.time()

        #end - start must be somewhere close to 3
        self.assert_(end - start > 2)
        self.assert_(end - start < 4)
Ejemplo n.º 17
0
    def test_release(self):
        p = CMDB()

        events = list()

        def run1():
            try:
                p.saveObject(self.cmdbobject, 123)
            except Exception, e:
                events.append((
                    1,
                    e,
                ))
                return

            try:
                p.getObjectWithLock(self.cmdbobject)
            except Exception, e:
                events.append((
                    2,
                    e,
                ))
                return
Ejemplo n.º 18
0
    def test_timeout(self):
        p = CMDB()

        p.saveObject(self.cmdbobject, 123)

        def run():
            p.getObjectWithLock(self.cmdbobject, locktimeout=3)
            time.sleep(3)

        t1 = threading.Thread(target=run)

        t1.start()
        time.sleep(1)

        self.assert_(p.pm_isLocked(self.cmdbobject))

        start = time.time()
        p.getObjectWithLock(self.cmdbobject)
        end = time.time()

        #end - start must be somewhere close to 3
        self.assert_(end - start > 2)
        self.assert_(end - start < 4)
Ejemplo n.º 19
0
    def test_timeout_lock_lost(self):
        p = CMDB()
        p.saveObject(self.cmdbobject, None)

        def run():
            o = p.getObjectWithLock(self.cmdbobject)
        t = threading.Thread(target=run)

        o = p.getObjectWithLock(self.cmdbobject, locktimeout=2)

        t.start()
        t.join()
        #Object has been owned by another thread by now

        self.assertRaises(ObjectNotOwnedException,
                p.saveObject, self.cmdbobject, 123)
Ejemplo n.º 20
0
    def test_timeout_lock_lost(self):
        p = CMDB()
        p.saveObject(self.cmdbobject, None)

        def run():
            o = p.getObjectWithLock(self.cmdbobject)

        t = threading.Thread(target=run)

        o = p.getObjectWithLock(self.cmdbobject, locktimeout=2)

        t.start()
        t.join()
        #Object has been owned by another thread by now

        self.assertRaises(ObjectNotOwnedException, p.saveObject,
                          self.cmdbobject, 123)
Ejemplo n.º 21
0
 def test_storage(self):
     '''Test whether we can store an object in CMDB'''
     p = CMDB()
     p.registerObject(self.cmdbobject, None)
     p.getObjectWithLock(self.cmdbobject)
     p.saveObject(self.cmdbobject, None)
Ejemplo n.º 22
0
 def test_storage(self):
     '''Test whether we can store an object in CMDB'''
     p = CMDB()
     p.registerObject(self.cmdbobject, None)
     p.getObjectWithLock(self.cmdbobject)
     p.saveObject(self.cmdbobject, None)