cls._remoteLoggerListener.daemon = True
cls._remoteLoggerListener.start()
- def getFirstDnstap(self):
+ def getFirstDnstap(self, messageType=None):
self.assertFalse(self._remoteLoggerQueue.empty())
- data = self._remoteLoggerQueue.get(False)
- self.assertTrue(data)
- dnstap = dnstap_pb2.Dnstap()
- dnstap.ParseFromString(data)
+ unused = []
+ dnstap = None
+ while not self._remoteLoggerQueue.empty():
+ data = self._remoteLoggerQueue.get(False)
+ self.assertTrue(data)
+ dnstap = dnstap_pb2.Dnstap()
+ dnstap.ParseFromString(data)
+ if not messageType or dnstap.message.type == messageType:
+ break
+ unused.append(data)
+
+ # put back non-matching messages for later
+ for msg in reversed(unused):
+ self._remoteLoggerQueue.put(msg)
+
return dnstap
def testDnstap(self):
time.sleep(1)
# check the dnstap message corresponding to the UDP query
- dnstap = self.getFirstDnstap()
+ dnstap = self.getFirstDnstap(dnstap_pb2.Message.CLIENT_QUERY)
checkDnstapQuery(self, dnstap, dnstap_pb2.UDP, query)
checkDnstapNoExtra(self, dnstap)
# check the dnstap message corresponding to the UDP response
- dnstap = self.getFirstDnstap()
+ dnstap = self.getFirstDnstap(dnstap_pb2.Message.CLIENT_RESPONSE)
checkDnstapResponse(self, dnstap, dnstap_pb2.UDP, response)
checkDnstapNoExtra(self, dnstap)
time.sleep(1)
# check the dnstap message corresponding to the TCP query
- dnstap = self.getFirstDnstap()
+ dnstap = self.getFirstDnstap(dnstap_pb2.Message.CLIENT_QUERY)
checkDnstapQuery(self, dnstap, dnstap_pb2.TCP, query)
checkDnstapNoExtra(self, dnstap)
# check the dnstap message corresponding to the TCP response
- dnstap = self.getFirstDnstap()
+ dnstap = self.getFirstDnstap(dnstap_pb2.Message.CLIENT_RESPONSE)
checkDnstapResponse(self, dnstap, dnstap_pb2.TCP, response)
checkDnstapNoExtra(self, dnstap)
time.sleep(1)
# check the dnstap message corresponding to the UDP query
- dnstap = self.getFirstDnstap()
+ dnstap = self.getFirstDnstap(dnstap_pb2.Message.CLIENT_QUERY)
checkDnstapQuery(self, dnstap, dnstap_pb2.UDP, query)
checkDnstapExtra(self, dnstap, b"Type,Query")
# check the dnstap message corresponding to the UDP response
- dnstap = self.getFirstDnstap()
+ dnstap = self.getFirstDnstap(dnstap_pb2.Message.CLIENT_RESPONSE)
checkDnstapResponse(self, dnstap, dnstap_pb2.UDP, response)
checkDnstapExtra(self, dnstap, b"Type,Response")
time.sleep(1)
# check the dnstap message corresponding to the TCP query
- dnstap = self.getFirstDnstap()
+ dnstap = self.getFirstDnstap(dnstap_pb2.Message.CLIENT_QUERY)
checkDnstapQuery(self, dnstap, dnstap_pb2.TCP, query)
checkDnstapExtra(self, dnstap, b"Type,Query")
# check the dnstap message corresponding to the TCP response
- dnstap = self.getFirstDnstap()
+ dnstap = self.getFirstDnstap(dnstap_pb2.Message.CLIENT_RESPONSE)
checkDnstapResponse(self, dnstap, dnstap_pb2.TCP, response)
checkDnstapExtra(self, dnstap, b"Type,Response")