summaryrefslogtreecommitdiff
blob: f92639f5be5fb279b04472845e48d4155782c3fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 test/test_win.py | 48 +++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 37 insertions(+), 11 deletions(-)

diff --git a/test/test_win.py b/test/test_win.py
index 6da5c1f..7127e56 100644
--- a/test/test_win.py
+++ b/test/test_win.py
@@ -1,6 +1,30 @@
 import sys
 from mpi4py import MPI
 import mpiunittest as unittest
+try:
+    from sys import getrefcount
+except ImportError:
+    class getrefcount(object):
+        def __init__(self, arg):
+            pass
+        def __eq__(self, other):
+            return True
+        def __add__(self, other):
+            return self
+        def __sub__(self, other):
+            return self
+
+def memzero(m):
+    n = len(m)
+    if n == 0: return
+    try:
+        zero = '\0'.encode('ascii')
+        m[0] = zero
+    except TypeError:
+        zero = 0
+        m[0] = zero
+    for i in range(n):
+        m[i] = zero
 
 class BaseTestWin(object):
 
@@ -11,29 +35,31 @@ class BaseTestWin(object):
         try:
             self.mpi_memory = MPI.Alloc_mem(10)
             self.memory = self.mpi_memory
-            try:
-                zero = bytearray([0])
-            except NameError:
-                zero = str('\0')
-            self.memory[:] = zero * len(self.memory)
+            memzero(self.memory)
         except MPI.Exception:
             from array import array
             self.mpi_memory = None
             self.memory = array('B',[0]*10)
-        refcnt = sys.getrefcount(self.memory)
+        refcnt = getrefcount(self.memory)
         self.WIN = MPI.Win.Create(self.memory, 1, self.INFO, self.COMM)
         if type(self.memory).__name__ == 'buffer':
-            self.assertEqual(sys.getrefcount(self.memory), refcnt+1)
+            self.assertEqual(getrefcount(self.memory), refcnt+1)
         else:
-            self.assertEqual(sys.getrefcount(self.memory), refcnt)
+            if sys.version_info[:3] < (3, 3):
+                self.assertEqual(getrefcount(self.memory), refcnt)
+            else:
+                self.assertEqual(getrefcount(self.memory), refcnt+1)
 
     def tearDown(self):
-        refcnt = sys.getrefcount(self.memory)
+        refcnt = getrefcount(self.memory)
         self.WIN.Free()
         if type(self.memory).__name__ == 'buffer':
-            self.assertEqual(sys.getrefcount(self.memory), refcnt-1)
+            self.assertEqual(getrefcount(self.memory), refcnt-1)
         else:
-            self.assertEqual(sys.getrefcount(self.memory), refcnt)
+            if sys.version_info[:3] < (3, 3):
+                self.assertEqual(getrefcount(self.memory), refcnt)
+            else:
+                self.assertEqual(getrefcount(self.memory), refcnt-1)
         if self.mpi_memory:
             MPI.Free_mem(self.mpi_memory)