From 85dbfd783ada12d2f2c140d854052e3216594fbf Mon Sep 17 00:00:00 2001
From: Guido Trotter <ultrotter@google.com>
Date: Wed, 19 May 2010 22:54:34 +0100
Subject: [PATCH] TestMainloop: test scheduler priorities as well

By using enterabs we can schedule events at the same time, which will
then be sorted by priority.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>
---
 test/ganeti.daemon_unittest.py | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/test/ganeti.daemon_unittest.py b/test/ganeti.daemon_unittest.py
index 7bf9d813b..ad5a12852 100755
--- a/test/ganeti.daemon_unittest.py
+++ b/test/ganeti.daemon_unittest.py
@@ -117,6 +117,20 @@ class TestMainloop(testutils.GanetiTestCase):
                        signal.SIGCHLD, signal.SIGCHLD, signal.SIGTERM])
     self.assertEquals(self.onsignal_events, self.sendsig_events)
 
+  def testPriority(self):
+    # for events at the same time, the highest priority one executes first
+    now = time.time()
+    self.mainloop.scheduler.enterabs(now + 0.1, 2, self._SendSig,
+                                     [signal.SIGCHLD])
+    self.mainloop.scheduler.enterabs(now + 0.1, 1, self._SendSig,
+                                     [signal.SIGTERM])
+    self.mainloop.Run()
+    self.assertEquals(self.sendsig_events, [signal.SIGTERM])
+    self.mainloop.scheduler.enter(0.2, 1, self._SendSig, [signal.SIGTERM])
+    self.mainloop.Run()
+    self.assertEquals(self.sendsig_events,
+                      [signal.SIGTERM, signal.SIGCHLD, signal.SIGTERM])
+
 
 class _MyAsyncUDPSocket(daemon.AsyncUDPSocket):
 
-- 
GitLab