[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [arm/master] Test Daemon's general functionality



commit 2269d007c5ba9ba1207a49d1440e33284e57581d
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date:   Sun Jan 5 15:09:27 2014 -0800

    Test Daemon's general functionality
    
    Check that the Daemon's pause method and that it executes the given task at a
    set rate.
---
 arm/util/tracker.py         |   12 ++++++++++--
 test/util/tracker/daemon.py |   33 +++++++++++++++++++++++++++++++--
 2 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/arm/util/tracker.py b/arm/util/tracker.py
index 8febb12..1a716d3 100644
--- a/arm/util/tracker.py
+++ b/arm/util/tracker.py
@@ -218,7 +218,7 @@ class Daemon(threading.Thread):
       time_since_last_ran = time.time() - self._last_ran
 
       if self._is_paused or time_since_last_ran < self._rate:
-        sleep_duration = max(0.2, self._rate - time_since_last_ran)
+        sleep_duration = max(0.02, self._rate - time_since_last_ran)
 
         with self._pause_condition:
           if not self._halt:
@@ -248,7 +248,7 @@ class Daemon(threading.Thread):
     :returns: **bool** indicating if our run was successful or not
     """
 
-    pass
+    return True
 
   def run_counter(self):
     """
@@ -306,6 +306,14 @@ class Daemon(threading.Thread):
         self._process_pid = tor_pid
         self._process_name = tor_cmd if tor_cmd else 'tor'
 
+  def __enter__(self):
+    self.start()
+    return self
+
+  def __exit__(self, exit_type, value, traceback):
+    self.stop()
+    self.join()
+
 
 class ConnectionTracker(Daemon):
   """
diff --git a/test/util/tracker/daemon.py b/test/util/tracker/daemon.py
index 9bde71f..9d409e2 100644
--- a/test/util/tracker/daemon.py
+++ b/test/util/tracker/daemon.py
@@ -1,8 +1,9 @@
+import time
 import unittest
 
 from arm.util.tracker import Daemon
 
-from mock import patch
+from mock import Mock, patch
 
 
 class TestDaemon(unittest.TestCase):
@@ -17,7 +18,7 @@ class TestDaemon(unittest.TestCase):
 
     daemon = Daemon(0.05)
 
-    self.assertEqual(0.05, daemon._rate)
+    self.assertEqual(0.05, daemon.get_rate())
     self.assertEqual(12345, daemon._process_pid)
     self.assertEqual('local_tor', daemon._process_name)
 
@@ -45,3 +46,31 @@ class TestDaemon(unittest.TestCase):
     daemon = Daemon(0.05)
     self.assertEqual(None, daemon._process_pid)
     self.assertEqual('tor', daemon._process_name)
+    self.assertEqual(0, system_mock.call_count)
+
+  @patch('arm.util.tracker.tor_controller', Mock(return_value = Mock()))
+  @patch('arm.util.tracker.system', Mock(return_value = Mock()))
+  def test_daemon_calls_task(self):
+    # Check that our Daemon calls the task method at the given rate.
+
+    with Daemon(0.01) as daemon:
+      time.sleep(0.05)
+      self.assertTrue(2 < daemon.run_counter())
+
+  @patch('arm.util.tracker.tor_controller', Mock(return_value = Mock()))
+  @patch('arm.util.tracker.system', Mock(return_value = Mock()))
+  def test_pausing_daemon(self):
+    # Check that we can pause and unpause daemon.
+
+    with Daemon(0.01) as daemon:
+      time.sleep(0.05)
+      self.assertTrue(2 < daemon.run_counter())
+
+      daemon.set_paused(True)
+      daemon._run_counter = 0
+      time.sleep(0.05)
+      self.assertEqual(0, daemon.run_counter())
+
+      daemon.set_paused(False)
+      time.sleep(0.05)
+      self.assertTrue(2 < daemon.run_counter())



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits