def test_ignore_garbage(kresd_sock, garbage_lengths, single_buffer, query_before): """Send chunk of garbage, prefixed by garbage length. It should be ignored.""" buff = b'' if query_before: # optionally send initial query msg_buff_before, msgid_before = utils.get_msgbuff() if single_buffer: buff += msg_buff_before else: kresd_sock.sendall(msg_buff_before) for glength in garbage_lengths: # prepare garbage data if glength is None: continue garbage_buff = utils.get_prefixed_garbage(glength) if single_buffer: buff += garbage_buff else: kresd_sock.sendall(garbage_buff) msg_buff, msgid = utils.get_msgbuff() # final query buff += msg_buff kresd_sock.sendall(buff) if query_before: answer_before = utils.receive_parse_answer(kresd_sock) assert answer_before.id == msgid_before answer = utils.receive_parse_answer(kresd_sock) assert answer.id == msgid
def test_query_flood_garbage(make_kresd_sock, glength, gcount, delay, query_before): """Flood resolver with prefixed garbage.""" sock1 = make_kresd_sock() if query_before: utils.ping_alive(sock1) gbuff = utils.get_prefixed_garbage(glength) buff = gbuff * gcount end_time = time.time() + utils.MAX_TIMEOUT with utils.expect_kresd_close(rst_ok=True): # connection must be closed while time.time() < end_time: sock1.sendall(buff) time.sleep(delay) sock2 = make_kresd_sock() utils.ping_alive(sock2) # resolver must stay alive