[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [stem/master] Created proc.py testing code and imported unit tests to run_tests.py.
commit 3fd005a27ca35bf802d3917c992d2626534e87c9
Author: Megan <mchang01@xxxxxxxxxxxx>
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))
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits