Rev 147: Bring in some fixes to get the test suite clean on Linux. in http://bazaar.launchpad.net/~meliae-dev/meliae/trunk

John Arbash Meinel john at arbash-meinel.com
Wed Jun 30 23:07:45 BST 2010


At http://bazaar.launchpad.net/~meliae-dev/meliae/trunk

------------------------------------------------------------
revno: 147 [merge]
revision-id: john at arbash-meinel.com-20100630220725-hggdvjum3fn1ab2a
parent: john at arbash-meinel.com-20100630214455-2mpjbggxot4vly80
parent: john at arbash-meinel.com-20100630220627-jviz04v4274kr204
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: trunk
timestamp: Wed 2010-06-30 17:07:25 -0500
message:
  Bring in some fixes to get the test suite clean on Linux.
modified:
  meliae/perf_counter.py         perf_counter.py-20091021181737-jkl7qlodmxt0kt55-1
  meliae/tests/test_loader.py    test_loader.py-20090402195228-cw8lxf847wp00s90-2
  meliae/tests/test_perf_counter.py test_perf_counter.py-20091021181737-jkl7qlodmxt0kt55-2
-------------- next part --------------
=== modified file 'meliae/perf_counter.py'
--- a/meliae/perf_counter.py	2009-10-27 16:18:10 +0000
+++ b/meliae/perf_counter.py	2010-06-30 22:02:41 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009 Canonical Ltd
+# Copyright (C) 2009, 2010 Canonical Ltd
 # 
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 3 as
@@ -16,6 +16,7 @@
 
 import ctypes
 import math
+import re
 import sys
 import time
 
@@ -99,6 +100,25 @@
         # This returns wall-clock time
         return time.time
 
+    def get_memory(self, process):
+        pid = process.pid
+        try:
+            f = open('/proc/%s/status' % (process.pid,), 'rb')
+        except (IOError, OSError):
+            return None, None
+        try:
+            content = f.read()
+        finally:
+            f.close()
+        m = re.search(r'(?i)vmpeak:\s*(?P<peak>\d+) kB', content)
+	peak = current = None
+        if m is not None:
+	   peak = int(m.group('peak')) * 1024
+        m = re.search(r'(?i)vmsize:\s*(?P<current>\d+) kB', content)
+        if m is not None:
+	   current = int(m.group('current')) * 1024
+	return current, peak
+
 
 class _Win32PerformanceCounter(PerformanceCounter):
 

=== modified file 'meliae/tests/test_loader.py'
--- a/meliae/tests/test_loader.py	2010-01-08 23:00:40 +0000
+++ b/meliae/tests/test_loader.py	2010-06-30 22:06:27 +0000
@@ -101,11 +101,8 @@
         t_file.seek(0)
         manager = loader.load(t_file, show_prog=False)
         test_dict_id = id(test_dict)
-        if test_dict_id > sys.maxint:
-            # We wrapped around to the negative value, note, this needs to be
-            # re-evaluated for 64-bit versions of python
-            test_dict_id = int(test_dict_id - 2 * (sys.maxint + 1))
-        self.assertTrue(test_dict_id in manager.objs)
+        self.assertTrue(test_dict_id in manager.objs,
+			'%s not found in %s' % (test_dict_id, manager.objs.keys()))
 
     def test_load_one(self):
         objs = loader.load([

=== modified file 'meliae/tests/test_perf_counter.py'
--- a/meliae/tests/test_perf_counter.py	2009-10-27 16:18:10 +0000
+++ b/meliae/tests/test_perf_counter.py	2010-06-30 22:07:25 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009 Canonical Ltd
+# Copyright (C) 2009, 2010 Canonical Ltd
 # 
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 3 as
@@ -86,8 +86,11 @@
         p.stdin.flush()
         p.stdout.read(3)
         cur_mem, peak_mem = perf_counter.perf_counter.get_memory(p)
-        self.assertTrue(isinstance(cur_mem, long))
-        self.assertTrue(isinstance(peak_mem, long))
+	if cur_mem is None or peak_mem is None:
+	    # fail gracefully, though we may want a stronger assertion here
+	    return
+        self.assertTrue(isinstance(cur_mem, (int, long)))
+        self.assertTrue(isinstance(peak_mem, (int, long)))
         p.stdin.write('post')
         p.stdin.flush()
         p.stdout.read()



More information about the bazaar-commits mailing list