예제 #1
0
class TestHLRCache(unittest.TestCase):
    def setUp(self):
        self.bc = BaseComponent()
        self.dbconn = self.bc.dbconn
        self.cacheconn = self.bc.cacheconn
        cursor = self.dbconn.cursor()
        cursor.execute('DELETE FROM `hlr_cache`')
        cursor.execute('DELETE FROM `hlr`')
        cursor.executemany('INSERT INTO `hlr` VALUES (%s,%s,%s,%s,%s,%s)', [
          ('1', '2', 'DKI Jakarta', '100,101,102,103', '2010-10-22 15:29:52', 'bernard'),
          ('2', '1', 'Meong1', '110,111,112', '0000-00-00 00:00:00', 'test'),
          ('3', '1', 'Meong2', '210,211,212', '0000-00-00 00:00:00', 'test'),
          ('4', '3', 'Guk1', '330,331,332', '0000-00-00 00:00:00', 'test'),
        ])
        cursor.close()
        self.cacheconn.delete(HLR_CACHEKEY)
        self.h1 = HLRCacheForLB(self.dbconn, self.cacheconn)
        self.h2 = HLRCacheForLB(self.dbconn, self.cacheconn)
        self.h1.addDevice('SERVER1.COM1', 2, 1, False)
        self.h1.addDevice('SERVER1.COM1', 2, 1, False)
        self.h1.addDevice('SERVER1.COM3', 2, 1, False)
        self.h1.addDevice('SERVER1.COM3', 2, 1, False)
        self.h1.addDevice('SERVER1.COM3', 2, 1, False)
        self.h1.addDevice('SERVER1.COM4', 2, 1, False)
        self.h1.addDevice('SERVER1.COM4', 2, 1, False)
        self.h1.addDevice('SERVER1.COM5', 2, 1, False)
        self.h1.addDevice('SERVER1.COM6', 1, 2, False)
        self.h1.addDevice('SERVER1.COM6', 1, 2, False)
        self.h1.addDevice('SERVER1.COM1', 2, 1, False)
        self.h1.addDevice('SERVER1.COM7', 1, 2, False)
        self.h1.addDevice('SERVER1.COM8', 1, 2, False)
        self.h1.addDevice('SERVER1.COM1', 2, 1, False)
        self.h1.addDevice('SERVER1.COM8', 1, 2, False)
        self.h1.addDevice('SERVER1.COM9', 1, 0, False)
        self.h1.addDevice('SERVER1.COM9', 1, 0, False)
        self.h1.addDevice('SERVER1.COM9', 1, 0, False)
        self.h1.addDevice('SERVER1.COM10', 2, 0, False)
        self.dbconn.commit()
        # print self.cacheconn.get(HLR_CACHEKEY)
#----------------------
    def runTest(self):
        test_function = [x for x in dir(self) if x[:6] == 'srtest']
        map(lambda x: getattr(self, x)(), sorted(test_function))
#----------------------
    def srtest10(self):
        self.h2.addDevice('SERVER2.COM99', 1, 2)
        tmp = self.h2._getHLRCache()
        self.assertEqual(
          ['SERVER1.COM6', 'SERVER1.COM7', 'SERVER1.COM8', 'SERVER2.COM99'],
          sorted(tmp[HLR_DEVICE][2]))
        self.assertEqual(['SERVER1.COM9',], tmp[HLR_FREE][1])
        tmp = []
        tmp.append(self.h2.nextDeviceByHLRId(1))
        tmp.append(self.h2.nextDeviceSameHLR())
        tmp.append(self.h2.nextDeviceByHLRId(1))
        tmp.append(self.h2.nextDeviceSameHLR())
        self.assertEqual(
          ['SERVER1.COM1', 'SERVER1.COM3', 'SERVER1.COM4', 'SERVER1.COM5'],
          sorted(tmp)
        )
        x = self.h2.nextDeviceSameHLR()
        self.assertTrue(x in tmp)
        ##
        tmp = []
        tmp.append(self.h2.nextDevice(2, '100'))
        tmp.append(self.h2.nextDeviceSameHLR())
        tmp.append(self.h2.nextDevice(2, '103'))
        tmp.append(self.h2.nextDeviceSameHLR())
        self.assertEqual(
          ['SERVER1.COM1', 'SERVER1.COM3', 'SERVER1.COM4', 'SERVER1.COM5'],
          sorted(tmp)
        )
        x = self.h2.nextDevice(2, '102')
        self.assertTrue(x in tmp)
#----------------------
    def srtest20(self):
        self.h2.removeDevice('SERVER1.COM4', 2, 1)
        tmp = self.h2._getHLRCache()
        self.assertEqual(
          ['SERVER1.COM1', 'SERVER1.COM3', 'SERVER1.COM5'],
          sorted(tmp[HLR_DEVICE][1]))
#----------------------
    def srtest30_free_device(self):
        tmp = self.h2.nextFreeDevice(2)
        self.assertEqual(tmp, 'SERVER1.COM10')
        tmp = self.h2.nextFreeDevice(2)
        self.assertEqual(tmp, 'SERVER1.COM10')
        tmp = self.h2.nextDeviceSameHLR()
        self.assertEqual(tmp, 'SERVER1.COM10')