[tor-commits] [stem/master] Created proc.py testing code and imported unit tests to run_tests.py.

atagar at torproject.org atagar at torproject.org
Sun Jul 1 02:49:59 UTC 2012


commit 3fd005a27ca35bf802d3917c992d2626534e87c9
Author: Megan <mchang01 at wesleyan.edu>
Date:   Thu Jun 14 16:17:32 2012 -0400

    Created proc.py testing code and imported unit tests to run_tests.py.
    
    Wrote mock_get_lines to mock the proc module's _get_lines
    function. Completed unit testing code for proc utilities such as
    get_system_start_time, get_physical_memory, and get_memory_usage.
    The test_get_memory_usage function was written to test the functionality
    of mock_get_lines as it is the only function that takes in multiple
    line prefixes.
---
 run_tests.py           |    2 +
 test/unit/util/proc.py |   70 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/run_tests.py b/run_tests.py
index bcd7e12..670947a 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -44,6 +44,7 @@ import test.integ.util.conf
 import test.integ.util.system
 import test.integ.process
 import test.integ.version
+import test.unit.util.proc
 
 import stem.prereq
 import stem.util.conf
@@ -110,6 +111,7 @@ UNIT_TESTS = (
   test.unit.response.protocolinfo.TestProtocolInfoResponse,
   test.unit.response.authchallenge.TestAuthChallengeResponse,
   test.unit.connection.authentication.TestAuthenticate,
+  test.unit.util.proc.TestProc,
 )
 
 INTEG_TESTS = (
diff --git a/test/unit/util/proc.py b/test/unit/util/proc.py
new file mode 100644
index 0000000..a474800
--- /dev/null
+++ b/test/unit/util/proc.py
@@ -0,0 +1,70 @@
+"""
+Unit testing code for proc utilities located in /stem/util/proc.py
+"""
+import os
+import time
+import unittest
+import functools
+
+import test.mocking as mocking
+import stem.util.proc as proc
+
+def mock_get_lines(file_path, line_prefixes, return_values):
+  """
+  Provides mocking for the proc module's _get_line function.
+  """
+  if isinstance(line_prefixes, tuple):
+      prefix_list = sorted(list(line_prefixes))
+  else:
+      # Only one line prefix given.
+      prefix_list = line_prefixes
+  def _mock_get_lines(path, prefixes, return_values, caller_path,
+  caller_prefixes, caller_parameter):
+      if isinstance(caller_prefixes, tuple):
+          caller_prefix_list = sorted(list(caller_prefixes))
+      else:
+          #Only one line prefix given.
+          caller_prefix_list = caller_prefixes
+      if path == caller_path and prefixes == caller_prefix_list:
+          return return_values
+      else:
+          return None
+  
+  return functools.partial(_mock_get_lines, file_path, prefix_list,
+  return_values)
+
+class TestProc(unittest.TestCase):
+  def tearDown(self):
+      mocking.revert_mocking()
+  
+  def test_get_system_start_time(self):
+      """
+      Tests the get_system_start_time function.
+      """
+      mocking.mock(proc._get_line, mock_get_lines("/proc/stat", "btime",
+      "btime 1001001"))
+      
+      self.assertEquals(1001001, proc.get_system_start_time())
+  
+  def test_get_physical_memory(self):
+      """
+      Tests the get_physical_memory function.
+      """
+      mocking.mock(proc._get_line, mock_get_lines("/proc/meminfo",
+      "MemTotal:", "MemTotal:       12345 kB"))
+      
+      self.assertEquals((12345*1024), proc.get_physical_memory())
+  
+  def test_get_memory_usage(self):
+      """
+      Tests the get_memory_usage function.
+      
+      This is the only function in proc.py that utilizes
+      _get_lines explicitly.
+      """
+      
+      mocking.mock(proc._get_lines, mock_get_lines("/proc/1111/status",
+      ("VmRSS:", "VmSize:"), {"VmRSS:": "VmRSS: 100 kB",
+      "VmSize:":"VmSize: 1800 kB"}))
+      
+      self.assertEqual((100*1024, 1800*1024), proc.get_memory_usage(1111))





More information about the tor-commits mailing list