From 0fe0b274ec8a943781e63d23ceaa3b7aa0ed8b84 Mon Sep 17 00:00:00 2001 From: Gary Lockyer Date: Mon, 10 Jul 2017 07:45:16 +1200 Subject: [PATCH 1/3] tests auth_log: Modify existing tests to handle NETLOGON messages Modify the existing tests to ignore auth logging for NETLOGON messages. NETLOGON authentication is logged once per session, and is tested separately. Ignoring it in these tests avoids order dependencies. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12865 Signed-off-by: Gary Lockyer --- python/samba/tests/auth_log.py | 11 +++++++++++ python/samba/tests/auth_log_base.py | 17 +++++++++++++++++ python/samba/tests/auth_log_samlogon.py | 1 + 3 files changed, 29 insertions(+) diff --git a/python/samba/tests/auth_log.py b/python/samba/tests/auth_log.py index 65800c9..6b032a8 100644 --- a/python/samba/tests/auth_log.py +++ b/python/samba/tests/auth_log.py @@ -991,6 +991,7 @@ class AuthLogTests(samba.tests.auth_log_base.AuthLogTestBase): call(["bin/rpcclient", "-c", samlogon, "-U%", server]) messages = self.waitForMessages( isLastExpectedMessage) + messages = self.remove_netlogon_messages(messages) received = len(messages) self.assertIs(True, (received == 5 or received == 6), @@ -1020,6 +1021,7 @@ class AuthLogTests(samba.tests.auth_log_base.AuthLogTestBase): call(["bin/rpcclient", "-c", samlogon, "-U%", server]) messages = self.waitForMessages( isLastExpectedMessage) + messages = self.remove_netlogon_messages(messages) received = len(messages) self.assertIs(True, (received == 5 or received == 6), @@ -1049,6 +1051,7 @@ class AuthLogTests(samba.tests.auth_log_base.AuthLogTestBase): call(["bin/rpcclient", "-c", samlogon, "-U%", server]) messages = self.waitForMessages( isLastExpectedMessage) + messages = self.remove_netlogon_messages(messages) received = len(messages) self.assertIs(True, (received == 5 or received == 6), @@ -1077,6 +1080,7 @@ class AuthLogTests(samba.tests.auth_log_base.AuthLogTestBase): call(["bin/rpcclient", "-c", samlogon, "-U%", server]) messages = self.waitForMessages( isLastExpectedMessage) + messages = self.remove_netlogon_messages(messages) received = len(messages) self.assertIs(True, (received == 5 or received == 6), @@ -1106,6 +1110,7 @@ class AuthLogTests(samba.tests.auth_log_base.AuthLogTestBase): call(["bin/rpcclient", "-c", samlogon, "-U%", server]) messages = self.waitForMessages( isLastExpectedMessage) + messages = self.remove_netlogon_messages(messages) received = len(messages) self.assertIs(True, (received == 5 or received == 6), @@ -1135,6 +1140,7 @@ class AuthLogTests(samba.tests.auth_log_base.AuthLogTestBase): call(["bin/rpcclient", "-c", samlogon, "-U%", server]) messages = self.waitForMessages( isLastExpectedMessage) + messages = self.remove_netlogon_messages(messages) received = len(messages) self.assertIs(True, (received == 5 or received == 6), @@ -1164,6 +1170,7 @@ class AuthLogTests(samba.tests.auth_log_base.AuthLogTestBase): call(["bin/rpcclient", "-c", samlogon, "-U%", server]) messages = self.waitForMessages( isLastExpectedMessage) + messages = self.remove_netlogon_messages(messages) received = len(messages) self.assertIs(True, (received == 5 or received == 6), @@ -1194,6 +1201,7 @@ class AuthLogTests(samba.tests.auth_log_base.AuthLogTestBase): call(["bin/rpcclient", "-c", samlogon, "-U%", server]) messages = self.waitForMessages( isLastExpectedMessage) + messages = self.remove_netlogon_messages(messages) received = len(messages) self.assertIs(True, (received == 5 or received == 6), @@ -1224,6 +1232,7 @@ class AuthLogTests(samba.tests.auth_log_base.AuthLogTestBase): call(["bin/rpcclient", "-c", samlogon, "-U%", server]) messages = self.waitForMessages( isLastExpectedMessage) + messages = self.remove_netlogon_messages(messages) received = len(messages) self.assertIs(True, (received == 5 or received == 6), @@ -1252,6 +1261,7 @@ class AuthLogTests(samba.tests.auth_log_base.AuthLogTestBase): call(["bin/rpcclient", "-c", samlogon, "-U%", server]) messages = self.waitForMessages( isLastExpectedMessage) + messages = self.remove_netlogon_messages(messages) received = len(messages) self.assertIs(True, (received == 5 or received == 6), @@ -1290,6 +1300,7 @@ class AuthLogTests(samba.tests.auth_log_base.AuthLogTestBase): call(["bin/rpcclient", "-c", samlogon, "-U%", server]) messages = self.waitForMessages( isLastExpectedMessage) + messages = self.remove_netlogon_messages(messages) received = len(messages) self.assertIs(True, (received == 5 or received == 6), diff --git a/python/samba/tests/auth_log_base.py b/python/samba/tests/auth_log_base.py index e9ae464..aefd57e 100644 --- a/python/samba/tests/auth_log_base.py +++ b/python/samba/tests/auth_log_base.py @@ -62,6 +62,10 @@ class AuthLogTestBase(samba.tests.TestCase): def waitForMessages(self, isLastExpectedMessage, connection=None): + """Wait for all the expected messages to arrive + The connection is passed through to keep the connection alive + until all the logging messages have been received. + """ def completed( messages): for message in messages: @@ -102,3 +106,16 @@ class AuthLogTestBase(samba.tests.TestCase): while len( self.context["messages"]): self.msg_ctx.loop_once(0.001) self.context["messages"] = [] + + # Remove any NETLOGON authentication messages + # NETLOGON is only performed once per session, so to avoid ordering + # dependencies within the tests it's best to strip out NETLOGON messages. + # + def remove_netlogon_messages(self, messages): + def is_not_netlogon(msg): + if "Authentication" not in msg: + return True + sd = msg["Authentication"]["serviceDescription"] + return sd != "NETLOGON" + + return list(filter(is_not_netlogon, messages)) diff --git a/python/samba/tests/auth_log_samlogon.py b/python/samba/tests/auth_log_samlogon.py index d24986b..d865276 100644 --- a/python/samba/tests/auth_log_samlogon.py +++ b/python/samba/tests/auth_log_samlogon.py @@ -157,6 +157,7 @@ class AuthLogTestsSamLogon(samba.tests.auth_log_base.AuthLogTestBase): def samlogon_check(self, messages): + messages = self.remove_netlogon_messages(messages) expected_messages = 5 self.assertEquals(expected_messages, len(messages), -- 2.7.4