def test_write(self): sessRec = DepiMcastSessionRecord() sessRec.LocalLcceIpAddr = "0.0.0.0" sessRec.write() sessRec.LocalLcceIpAddr = "134.123.123.213" sessRec.write() sessRec.read() self.assertEquals(sessRec.LocalLcceIpAddr, "134.123.123.213")
def test_updateDepiMcastSessionKey(self): sessRec = DepiMcastSessionRecord() self.assertIsInstance(sessRec, DepiMcastSessionRecord) sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.79.31.1", SessionId=1) self.assertEquals(sessRec.index.IpAddrType, 1) self.assertEquals(sessRec.index.SrcIpAddr, "10.79.31.1") self.assertEquals(sessRec.index.SessionId, 1)
def test_gpb_array_read_read_all(self): test_count = 1000 self.assertTrue(self.create_ipv4_ipv6_record(test_count)) data = config() gpb = data.RpdInfo.DepiMcastSession item = gpb.add() record = DepiMcastSessionRecord() mcast_array = ArrayTLVRead(gpb, C100_DepiMcastSession_5) mcast_array.array_read(record) self.assertTrue(len(data.RpdInfo.DepiMcastSession), test_count * 2)
def test_invalid_key(self): sessRec = DepiMcastSessionRecord() sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="test", SrcIpAddr="10.90.31.1", SessionId=0x80010001) sessRec.updateDepiMcastSessionData("10.1.1.1", "1.1.1.1", time.time()) sessRec.write() data = config() gpb = data.RpdInfo.DepiMcastSession item = gpb.add() record = DepiMcastSessionRecord() mcast_array = ArrayTLVRead(gpb, C100_DepiMcastSession_5) mcast_array.array_read(record) print gpb[0] self.assertEqual(len(data.RpdInfo.DepiMcastSession), 1)
def test_gpb_array_read_read_with_keys(self): test_count = 10 self.assertTrue(self.create_ipv4_ipv6_record(test_count)) print "============ 1: key is in db===============" data = config() gpb = data.RpdInfo.DepiMcastSession item = gpb.add() item.IpAddrType = 2 item.GroupIpAddr = "2001::1" item.SrcIpAddr = "2001::2" item.SessionId = 1 record = DepiMcastSessionRecord() mcast_array = ArrayTLVRead(gpb, C100_DepiMcastSession_5) mcast_array.array_read(record) self.assertTrue(len(data.RpdInfo.DepiMcastSession), 1) self.assertTrue(len(data.RpdInfo.DepiMcastSession[0].ListFields()), 6) print "============ 2: key is not in db===============" data = config() gpb = data.RpdInfo.DepiMcastSession item = gpb.add() item.IpAddrType = 2 item.GroupIpAddr = "2001:1::1" item.SrcIpAddr = "2001::2" item.SessionId = 1 record = DepiMcastSessionRecord() mcast_array = ArrayTLVRead(gpb, C100_DepiMcastSession_5) mcast_array.array_read(record) self.assertTrue(len(data.RpdInfo.DepiMcastSession), 1) self.assertEqual(len(data.RpdInfo.DepiMcastSession[0].ListFields()), 5) print "============ 3: request keys is in db===============" data = config() gpb = data.RpdInfo.DepiMcastSession for ses in (0, test_count): item = gpb.add() item.IpAddrType = 2 item.GroupIpAddr = "2001::1" item.SrcIpAddr = "2001::2" item.SessionId = ses + 1 record = DepiMcastSessionRecord() mcast_array = ArrayTLVRead(gpb, C100_DepiMcastSession_5) mcast_array.array_read(record) self.assertTrue(len(data.RpdInfo.DepiMcastSession), test_count)
def test_gpb_array_read_read_with_partial_leaf(self): test_count = 1000 self.assertTrue(self.create_ipv4_ipv6_record(test_count)) print "============ 1: request partial leaf is in db===============" data = config() gpb = data.RpdInfo.DepiMcastSession item = gpb.add() item.LocalLcceIpAddr = "10.1.1.1" record = DepiMcastSessionRecord() mcast_array = ArrayTLVRead(gpb, C100_DepiMcastSession_5) mcast_array.array_read(record) self.assertEqual(len(data.RpdInfo.DepiMcastSession), test_count * 2)
def test_get_all_ipv6(self): sessRec = DepiMcastSessionRecord() sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="2001::1", SrcIpAddr="2001::1", SessionId=1) sessRec.write() ret = [] for ses in sessRec.get_all(): ret.append(ses) self.assertEquals(len(ret), 1)
def test_gpb_array_read_read_with_partial_keys(self): test_count = 1000 self.assertTrue(self.create_ipv4_ipv6_record(test_count)) print "============ 1: request partial keys is in db===============" data = config() gpb = data.RpdInfo.DepiMcastSession for ses in range(0, test_count): item = gpb.add() item.SessionId = ses + 1 record = DepiMcastSessionRecord() mcast_array = ArrayTLVRead(gpb, C100_DepiMcastSession_5) mcast_array.array_read(record) self.assertEqual(len(data.RpdInfo.DepiMcastSession), test_count * 2)
def test_gpb_array_read_read_with_partial_two_keys(self): test_count = 1000 self.assertTrue(self.create_ipv4_ipv6_record(test_count)) print "============ 1: request partial keys is in db===============" data = config() gpb = data.RpdInfo.DepiMcastSession item = gpb.add() item.IpAddrType = 1 item.GroupIpAddr = "10.79.31.1" record = DepiMcastSessionRecord() mcast_array = ArrayTLVRead(gpb, C100_DepiMcastSession_5) mcast_array.array_read(record) self.assertEqual(len(data.RpdInfo.DepiMcastSession), test_count)
def test_gpb_array_read_readcout_without_key(self): self.assertTrue(self.create_ipv4_ipv6_record()) data = config() readCount = 3 gpb = data.RpdInfo.DepiMcastSession gpb.add() record = DepiMcastSessionRecord() mcast_array = ArrayTLVRead(gpb, C100_DepiMcastSession_5) mcast_array.array_read(record, readCount) for item in gpb: print item self.assertEqual(len(item.ListFields()), 6) self.assertFalse(item.HasField("JoinTime")) self.assertTrue(len(data.RpdInfo.DepiMcastSession), readCount)
def test_gpb_array_read_readcout_with_leaf(self): self.assertTrue(self.create_ipv4_ipv6_record()) data = config() readCount = 10 gpb = data.RpdInfo.DepiMcastSession item = gpb.add() item.IpAddrType = 2 value = getattr(item, "LocalLcceIpAddr") setattr(item, "LocalLcceIpAddr", value) record = DepiMcastSessionRecord() mcast_array = ArrayTLVRead(gpb, C100_DepiMcastSession_5) mcast_array.array_read(record, readCount) for item in gpb: self.assertEqual(len(item.ListFields()), 5) self.assertEqual(item.IpAddrType, 2) self.assertFalse(item.HasField("JoinTime")) self.assertTrue(len(data.RpdInfo.DepiMcastSession), readCount)
def test_updateDepiMcastSessionData(self): sessRec = DepiMcastSessionRecord() sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.79.31.1", SessionId=1) self.assertEquals(sessRec.index.IpAddrType, 1) self.assertEquals(sessRec.index.SrcIpAddr, "10.79.31.1") self.assertEquals(sessRec.index.SessionId, 1) testIP1 = "127.0.0.1" testIP2 = "127.0.0.2" testTime = Convert.pack_timestamp_to_string(time.time()) sessRec.updateDepiMcastSessionData(LocalLcceIpAddr=testIP1, RemoteLcceIpAddr=testIP2, JoinTime=testTime) self.assertEquals(sessRec.LocalLcceIpAddr, testIP1) self.assertEquals(sessRec.RemoteLcceIpAddr, testIP2) self.assertEquals(sessRec.JoinTime, testTime)
def tearDownClass(cls): # clear db records sessRec = DepiMcastSessionRecord() sessRec.delete_all() stop_test_redis()
def setUp(self): sessRec = DepiMcastSessionRecord() sessRec.delete_all()
def test_recvRpdInfo(self): # db support # clear db records sessRec = DepiMcastSessionRecord() sessRec.delete_all() sessRec = DepiMcastSessionRecord() test_count = 2 for test_session in range(0, test_count): sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.90.31.1", SessionId=test_session) sessRec.JoinTime = time.time() sessRec.write() print("######test_recvRpdInfo######") rcp_msg = t_RcpMessage() rcp_msg.RcpDataResult = t_RcpMessage.RCP_RESULT_OK rcp_msg.RcpMessageType = t_RcpMessage.RPD_CONFIGURATION print("=====test case1: payload operation read, # no read count, no key=====") data = config() data.RpdInfo.DepiMcastSession.add() rcp_msg.RpdDataMessage.RpdData.CopyFrom(data) rcp_msg.RpdDataMessage.RpdDataOperation = 2 payload = rcp_msg.SerializeToString() msg = HalMessage("HalConfig", SrcClientID="testRpdFM", SeqNum=322, CfgMsgType=MsgTypeRpdInfo, CfgMsgPayload=payload) return_str = self.hal_client.recvRpdInfo(msg.msg) config_data = t_RcpMessage() config_data.ParseFromString(msg.msg.CfgMsgPayload) recv_rcp_msg = config_data.RpdDataMessage.RpdData self.assertEqual(len(recv_rcp_msg.RpdInfo.DepiMcastSession), 2) self.assertEqual(config_data.RcpDataResult, t_RcpMessage.RCP_RESULT_OK) print("=====test case2: payload operation read, # read with keylist=====") data = config() for sessionId in range(0, 3): req = data.RpdInfo.DepiMcastSession.add() req.IpAddrType = 1 req.GroupIpAddr = "10.79.31.1" req.SrcIpAddr = "10.90.31.1" req.SessionId = sessionId + 1 rcp_msg.RpdDataMessage.RpdData.CopyFrom(data) rcp_msg.RpdDataMessage.RpdDataOperation = 2 payload = rcp_msg.SerializeToString() msg = HalMessage("HalConfig", SrcClientID="testRpdFM", SeqNum=322, CfgMsgType=MsgTypeRpdInfo, CfgMsgPayload=payload) return_str = self.hal_client.recvRpdInfo(msg.msg) config_data = t_RcpMessage() config_data.ParseFromString(msg.msg.CfgMsgPayload) recv_rcp_msg = config_data.RpdDataMessage.RpdData for item in recv_rcp_msg.RpdInfo.DepiMcastSession: print item self.assertEqual(len(recv_rcp_msg.RpdInfo.DepiMcastSession), 3) self.assertEquals(config_data.RcpDataResult, t_RcpMessage.RCP_RESULT_OK) print("=====test case3: payload operation read, # read with readcount=====") data = config() data.ReadCount = 3 req = data.RpdInfo.DepiMcastSession.add() req.IpAddrType = 1 req.GroupIpAddr = "10.79.31.1" req.SrcIpAddr = "10.90.31.1" req.SessionId = 0 rcp_msg.RpdDataMessage.RpdData.CopyFrom(data) rcp_msg.RpdDataMessage.RpdDataOperation = 2 payload = rcp_msg.SerializeToString() msg = HalMessage("HalConfig", SrcClientID="testRpdFM", SeqNum=322, CfgMsgType=MsgTypeRpdInfo, CfgMsgPayload=payload) return_str = self.hal_client.recvRpdInfo(msg.msg) config_data = t_RcpMessage() config_data.ParseFromString(msg.msg.CfgMsgPayload) recv_rcp_msg = config_data.RpdDataMessage.RpdData for item in recv_rcp_msg.RpdInfo.DepiMcastSession: print item self.assertEqual(len(recv_rcp_msg.RpdInfo.DepiMcastSession), 2) self.assertEquals(config_data.RcpDataResult, t_RcpMessage.RCP_RESULT_OK)
def setUpClass(cls): setup_logging("GCP", "gcp.log") setup_test_redis() # clear db records sessRec = DepiMcastSessionRecord() sessRec.delete_all()
def create_ipv4_ipv6_mcast(self, test_count): # create test_count records for ipv4 and test_count records for ipv6 sessRec = DepiMcastSessionRecord() for test_session in range(0, test_count): sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.79.31.1", SessionId=test_session) sessRec.LocalLcceIpAddr = "10.79.31.2" sessRec.RemoteLcceIpAddr = "10.79.31.1" sessRec.JoinTime = time.time() sessRec.write() sessRec.updateDepiMcastSessionKey(IpAddrType=2, GroupIpAddr="ff15:7079:7468:6f6e:6465:6d6f:6d63:6173", SrcIpAddr="2001::1", SessionId=test_session) sessRec.LocalLcceIpAddr = "2001::2" sessRec.RemoteLcceIpAddr = "2001::1" sessRec.JoinTime = time.time() sessRec.write()
def test_recvRpdInfo_empty(self): # nothing in db sessRec = DepiMcastSessionRecord() ret = [] for record in sessRec.get_next_n(count=100): ret.append(record) self.assertEquals(len(ret), 0) print("######test_recvRpdInfo with empty database######") rcp_msg = t_RcpMessage() rcp_msg.RcpDataResult = t_RcpMessage.RCP_RESULT_OK rcp_msg.RcpMessageType = t_RcpMessage.RPD_CONFIGURATION print("=====test case1: payload operation read, # no read count, no key=====") data = config() data.RpdInfo.DepiMcastSession.add() rcp_msg.RpdDataMessage.RpdData.CopyFrom(data) rcp_msg.RpdDataMessage.RpdDataOperation = 2 payload = rcp_msg.SerializeToString() msg = HalMessage("HalConfig", SrcClientID="testRpdFM", SeqNum=322, CfgMsgType=MsgTypeRpdInfo, CfgMsgPayload=payload) return_str = self.hal_client.recvRpdInfo(msg.msg) config_data = t_RcpMessage() config_data.ParseFromString(msg.msg.CfgMsgPayload) recv_rcp_msg = config_data.RpdDataMessage.RpdData self.assertEqual(len(recv_rcp_msg.RpdInfo.DepiMcastSession), 1) self.assertEqual(config_data.RcpDataResult, t_RcpMessage.RCP_RESULT_OK) print("=====test case2: payload operation read, # read with keylist=====") data = config() for sessionId in range(0, 3): req = data.RpdInfo.DepiMcastSession.add() req.IpAddrType = 1 req.SessionId = sessionId + 1 rcp_msg.RpdDataMessage.RpdData.CopyFrom(data) rcp_msg.RpdDataMessage.RpdDataOperation = 2 payload = rcp_msg.SerializeToString() msg = HalMessage("HalConfig", SrcClientID="testRpdFM", SeqNum=322, CfgMsgType=MsgTypeRpdInfo, CfgMsgPayload=payload) return_str = self.hal_client.recvRpdInfo(msg.msg) config_data = t_RcpMessage() config_data.ParseFromString(msg.msg.CfgMsgPayload) recv_rcp_msg = config_data.RpdDataMessage.RpdData for item in recv_rcp_msg.RpdInfo.DepiMcastSession: print item self.assertEqual(len(recv_rcp_msg.RpdInfo.DepiMcastSession), 3) self.assertEquals(config_data.RcpDataResult, t_RcpMessage.RCP_RESULT_OK) print("=====test case3: payload operation read, # read with readcount=====") data = config() data.ReadCount = 3 req = data.RpdInfo.DepiMcastSession.add() req.IpAddrType = 1 req.SessionId = 0 rcp_msg.RpdDataMessage.RpdData.CopyFrom(data) rcp_msg.RpdDataMessage.RpdDataOperation = 2 payload = rcp_msg.SerializeToString() msg = HalMessage("HalConfig", SrcClientID="testRpdFM", SeqNum=322, CfgMsgType=MsgTypeRpdInfo, CfgMsgPayload=payload) return_str = self.hal_client.recvRpdInfo(msg.msg) config_data = t_RcpMessage() config_data.ParseFromString(msg.msg.CfgMsgPayload) recv_rcp_msg = config_data.RpdDataMessage.RpdData for item in recv_rcp_msg.RpdInfo.DepiMcastSession: print item self.assertEqual(len(recv_rcp_msg.RpdInfo.DepiMcastSession), 1) self.assertEquals(config_data.RcpDataResult, t_RcpMessage.RCP_RESULT_OK)
def test_readwrite(self): sessRec = DepiMcastSessionRecord() sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.79.31.1", SessionId=1) self.assertEquals(sessRec.index.IpAddrType, 1) self.assertEquals(sessRec.index.SrcIpAddr, "10.79.31.1") self.assertEquals(sessRec.index.SessionId, 1) sessRec.write() # get_all ret = [] for ses in sessRec.get_all(): ret.append(ses) self.assertEquals(len(ret), 1) sessRec = None sessRec = DepiMcastSessionRecord() sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.79.31.1", SessionId=1) sessRec.read() self.assertEquals(sessRec.index.IpAddrType, 1) self.assertEquals(sessRec.index.GroupIpAddr, "10.79.31.1") self.assertEquals(sessRec.index.SrcIpAddr, "10.79.31.1") self.assertEquals(sessRec.index.SessionId, 1) self.assertEquals(sessRec.JoinTime, "") self.assertEquals(sessRec.LocalLcceIpAddr, "") self.assertEquals(sessRec.RemoteLcceIpAddr, "") # modify the property currtime = Convert.pack_timestamp_to_string(time.time()) sessRec.JoinTime = currtime sessRec.write() sessRec.read() self.assertEquals(sessRec.index.IpAddrType, 1) self.assertEquals(sessRec.index.GroupIpAddr, "10.79.31.1") self.assertEquals(sessRec.index.SrcIpAddr, "10.79.31.1") self.assertEquals(sessRec.index.SessionId, 1) self.assertEquals(sessRec.JoinTime, currtime) self.assertEquals(sessRec.LocalLcceIpAddr, "") self.assertEquals(sessRec.RemoteLcceIpAddr, "") # get_all ret = [] for ses in sessRec.get_all(): ret.append(ses) self.assertEquals(len(ret), 1)
def test_no_dup_record(self): sessRec = DepiMcastSessionRecord() sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.79.31.1", SessionId=1) sessRec.write() sessRec = None sessRec = DepiMcastSessionRecord() sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.79.31.1", SessionId=1) sessRec.write() ret = [] for ses in sessRec.get_all(): ret.append(ses) self.assertEquals(len(ret), 1)
def test_get_next_n(self): sessRec = DepiMcastSessionRecord() sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.79.31.1", SessionId=1) sessRec.write() sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.79.31.1", SessionId=2) sessRec.write() sessRec = DepiMcastSessionRecord() sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.78.31.1", SessionId=1) sessRec.write() sessRec = DepiMcastSessionRecord() sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.78.31.1", SessionId=2) sessRec.write() print "#########step 1: None key query, return value from the very first record" ret = [] for record in sessRec.get_next_n(key=None, count=2): ret.append(record) self.assertEquals(len(ret), 2) print "#########step 2: key query, request count is larger than db have" record = DepiMcastSessionRecord() record.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.79.31.1", SessionId=2) test_key = record.index ret = [] for record in sessRec.get_next_n(key=None, count=2): ret.append(record) self.assertEquals(len(ret), 2) print "#########step 3: key query, request key is larger than db have" record = DepiMcastSessionRecord() record.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.90.31.1", SessionId=1) ret = [] for record in sessRec.get_next_n(key=None, count=2): ret.append(record) self.assertEquals(len(ret), 2)
def test_performance(self): sessRec = DepiMcastSessionRecord() test_count = 1000 print "#########: perfermance test about %s session in store" % test_count current_time = time.time() print "current time is: " + str( datetime.datetime.fromtimestamp(current_time)) for test_session in range(0, test_count): sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.90.31.1", SessionId=test_session) test_time = Convert.pack_timestamp_to_string(time.time()) sessRec.updateDepiMcastSessionData("10.1.1.1", "1.1.1.1", test_time) sessRec.write() print "Write " + str(test_count) + " records need : " + str( time.time() - current_time) current_time = time.time() ret = [] for record in sessRec.get_next_n(count=test_count): ret.append(record) self.assertEquals(len(ret), test_count) print "get_next_n " + str(test_count) + " records need : " + str( time.time() - current_time) print "current time is: " + str( datetime.datetime.fromtimestamp(time.time())) current_time = time.time() ret = [] for record in sessRec.get_next_n(count=20): ret.append(record) self.assertEquals(len(ret), 20) end_time = time.time() print "get_next_n " + str(20) + " records need : " + str(end_time - current_time) print "End time is: " + str(datetime.datetime.fromtimestamp(end_time)) self.assertEquals(len(ret), 20) current_time = time.time() ret = [] for ses in sessRec.get_all(): ret.append(ses) print "get_next_all " + str(test_count) + " records need : " + str( time.time() - current_time) self.assertEquals(len(ret), test_count)
def setUp(self): setup_test_redis() # clear db records sessRec = DepiMcastSessionRecord() sessRec.delete_all()
def tearDown(self): # clear db records sessRec = DepiMcastSessionRecord() sessRec.delete_all()
def tearDown(self): sessRec = DepiMcastSessionRecord() sessRec.delete_all()
def create_ipv4_ipv6_record(self, test_count=1000): sessRec = DepiMcastSessionRecord() print "#########: write %s session in db." % (test_count * 2) current_time = time.time() print "current time is: " + str( datetime.datetime.fromtimestamp(current_time)) for test_session in range(0, test_count): sessRec.updateDepiMcastSessionKey(IpAddrType=1, GroupIpAddr="10.79.31.1", SrcIpAddr="10.90.31.1", SessionId=test_session + 1) test_time = Convert.pack_timestamp_to_string(time.time()) sessRec.updateDepiMcastSessionData("10.1.1.1", "1.1.1.1", time.time()) sessRec.write() sessRec.updateDepiMcastSessionKey(IpAddrType=2, GroupIpAddr="2001::1", SrcIpAddr="2001::2", SessionId=test_session + 1) sessRec.updateDepiMcastSessionData("2001::1", "2001::1", test_time) sessRec.write() current_time = time.time() print "end time is: " + str( datetime.datetime.fromtimestamp(current_time)) return True
def setUp(self): # clear db records sessRec = DepiMcastSessionRecord() sessRec.delete_all()