[pypy-commit] stmgc c7-refactor: fixing some more tests

arigo noreply at buildbot.pypy.org
Mon Feb 10 19:50:18 CET 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: c7-refactor
Changeset: r724:efd9d37da8af
Date: 2014-02-10 19:50 +0100
http://bitbucket.org/pypy/stmgc/changeset/efd9d37da8af/

Log:	fixing some more tests

diff --git a/c7/stm/core.c b/c7/stm/core.c
--- a/c7/stm/core.c
+++ b/c7/stm/core.c
@@ -51,7 +51,6 @@
 {
     stm_thread_local_t *tl = STM_SEGMENT->running_thread;
     release_thread_segment(tl);
-    abort();
 }
 
 void stm_abort_transaction(void)
diff --git a/c7/test/test_basic.py b/c7/test/test_basic.py
--- a/c7/test/test_basic.py
+++ b/c7/test/test_basic.py
@@ -28,29 +28,29 @@
         assert stm_get_real_address(lp4) - p3 == 16
 
     def test_transaction_start_stop(self):
-        stm_start_transaction()
+        self.start_transaction()
         
         self.switch(1)
-        stm_start_transaction()
-        stm_stop_transaction()
+        self.start_transaction()
+        self.commit_transaction()
         self.switch(0)
         
-        stm_stop_transaction()
+        self.commit_transaction()
 
     def test_simple_read(self):
-        stm_start_transaction()
+        self.start_transaction()
         lp1 = stm_allocate(16)
         stm_read(lp1)
         assert stm_was_read(lp1)
-        stm_stop_transaction()
+        self.commit_transaction()
 
     def test_simple_write(self):
-        stm_start_transaction()
+        self.start_transaction()
         lp1  = stm_allocate(16)
         assert stm_was_written(lp1)
         stm_write(lp1)
         assert stm_was_written(lp1)
-        stm_stop_transaction()
+        self.commit_transaction()
 
     def test_allocate_old(self):
         lp1 = stm_allocate_old(16)
@@ -60,66 +60,66 @@
         
     def test_write_on_old(self):
         lp1 = stm_allocate_old(16)
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(lp1)
         assert stm_was_written(lp1)
         stm_set_char(lp1, 'a')
         
         self.switch(1)
-        stm_start_transaction()
+        self.start_transaction()
         stm_read(lp1)
         assert stm_was_read(lp1)
         assert stm_get_char(lp1) == '\0'
-        stm_stop_transaction()
+        self.commit_transaction()
         
         
     def test_read_write_1(self):
         lp1 = stm_allocate_old(16)
         stm_get_real_address(lp1)[HDR] = 'a' #setchar
-        stm_start_transaction()
-        stm_stop_transaction()
+        self.start_transaction()
+        self.commit_transaction()
         #
         self.switch(1)
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(lp1)
         assert stm_get_char(lp1) == 'a'
         stm_set_char(lp1, 'b')
         #
         self.switch(0)
-        stm_start_transaction()
+        self.start_transaction()
         stm_read(lp1)
         assert stm_get_char(lp1) == 'a'
         #
         self.switch(1)
-        stm_stop_transaction()
+        self.commit_transaction()
         #
         py.test.raises(Conflict, self.switch, 0) # detects rw conflict
         
     def test_commit_fresh_objects(self):
-        stm_start_transaction()
+        self.start_transaction()
         lp = stm_allocate(16)
         stm_set_char(lp, 'u')
         p = stm_get_real_address(lp)
         stm_push_root(lp)
-        stm_stop_transaction()
+        self.commit_transaction()
         lp = stm_pop_root()
         p1 = stm_get_real_address(lp)
         assert p != p1
         
         self.switch(1)
         
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(lp) # privatize page
         p_ = stm_get_real_address(lp)
         assert p != p_
         assert p1 != p_
         assert stm_get_char(lp) == 'u'
-        stm_stop_transaction()
+        self.commit_transaction()
 
         
     def test_commit_fresh_objects2(self):
         self.switch(1)
-        stm_start_transaction()
+        self.start_transaction()
         lp = stm_allocate(16)
         stm_set_char(lp, 'u')
         lp2 = stm_allocate(16)
@@ -131,31 +131,31 @@
         stm_read(lp2) # test not crash
         stm_push_root(lp)
         stm_push_root(lp2)
-        stm_stop_transaction()
+        self.commit_transaction()
         lp2 = stm_pop_root()
         lp = stm_pop_root()
         
         self.switch(0)
         
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(lp) # privatize page
         assert stm_get_char(lp) == 'u'
         stm_set_char(lp, 'x')
         stm_write(lp2)
         assert stm_get_char(lp2) == 'v'
         stm_set_char(lp2, 'y')
-        stm_stop_transaction()
+        self.commit_transaction()
 
         self.switch(1)
 
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(lp)
         assert stm_get_char(lp) == 'x'
         assert stm_get_char(lp2) == 'y'
-        stm_stop_transaction()
+        self.commit_transaction()
 
     def test_simple_refs(self):
-        stm_start_transaction()
+        self.start_transaction()
         lp = stm_allocate_refs(3)
         lq = stm_allocate(16)
         lr = stm_allocate(16)
@@ -164,12 +164,12 @@
         stm_set_ref(lp, 0, lq)
         stm_set_ref(lp, 1, lr)
         stm_push_root(lp)
-        stm_stop_transaction()
+        self.commit_transaction()
         lp = stm_pop_root()
 
         self.switch(1)
 
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(lp)
         lq = stm_get_ref(lp, 0)
         lr = stm_get_ref(lp, 1)
@@ -177,60 +177,60 @@
         stm_read(lr)
         assert stm_get_char(lq) == 'x'
         assert stm_get_char(lr) == 'y'
-        stm_stop_transaction()
+        self.commit_transaction()
 
 
         
     def test_start_transaction_updates(self):
-        stm_start_transaction()
+        self.start_transaction()
         lp1 = stm_allocate(16)
         stm_set_char(lp1, 'a')
         stm_push_root(lp1)
-        stm_stop_transaction()
+        self.commit_transaction()
         lp1 = stm_pop_root()
         #
         self.switch(1)
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(lp1)
         assert stm_get_char(lp1) == 'a'
         stm_set_char(lp1, 'b')
-        stm_stop_transaction()
+        self.commit_transaction()
         #
         self.switch(0)
-        stm_start_transaction()
+        self.start_transaction()
         assert stm_get_char(lp1) == 'b'
         
 
     def test_resolve_no_conflict_empty(self):
-        stm_start_transaction()
+        self.start_transaction()
         #
         self.switch(1)
-        stm_start_transaction()
-        stm_stop_transaction()
+        self.start_transaction()
+        self.commit_transaction()
         #
         self.switch(0)
-        stm_stop_transaction()
+        self.commit_transaction()
 
     def test_resolve_no_conflict_write_only_in_already_committed(self):
-        stm_start_transaction()
+        self.start_transaction()
         lp1 = stm_allocate(16)
         p1 = stm_get_real_address(lp1)
         p1[HDR] = 'a'
         stm_push_root(lp1)
-        stm_stop_transaction()
+        self.commit_transaction()
         lp1 = stm_pop_root()
         # 'a' in SHARED_PAGE
         
-        stm_start_transaction()
+        self.start_transaction()
         
         self.switch(1)
         
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(lp1) # privatize page
         p1 = stm_get_real_address(lp1)
         assert p1[HDR] == 'a'
         p1[HDR] = 'b'
-        stm_stop_transaction()
+        self.commit_transaction()
         # 'b' both private pages
         #
         self.switch(0)
@@ -238,84 +238,84 @@
         assert p1[HDR] == 'b'
         p1 = stm_get_real_address(lp1)
         assert p1[HDR] == 'b'
-        stm_stop_transaction()
+        self.commit_transaction()
         assert p1[HDR] == 'b'
 
     def test_not_resolve_write_read_conflict(self):
-        stm_start_transaction()
+        self.start_transaction()
         lp1 = stm_allocate(16)
         stm_set_char(lp1, 'a')
         stm_push_root(lp1)
-        stm_stop_transaction()
+        self.commit_transaction()
         lp1 = stm_pop_root()
         
-        stm_start_transaction()
+        self.start_transaction()
         stm_read(lp1)
         #
         self.switch(1)
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(lp1)
         stm_set_char(lp1, 'b')
-        stm_stop_transaction()
+        self.commit_transaction()
         #
         py.test.raises(Conflict, self.switch, 0)
-        stm_start_transaction()
+        self.start_transaction()
         assert stm_get_char(lp1) == 'b'
 
     def test_resolve_write_read_conflict(self):
-        stm_start_transaction()
+        self.start_transaction()
         lp1 = stm_allocate(16)
         stm_set_char(lp1, 'a')
         stm_push_root(lp1)
-        stm_stop_transaction()
+        self.commit_transaction()
         lp1 = stm_pop_root()
         
-        stm_start_transaction()
+        self.start_transaction()
         #
         self.switch(1)
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(lp1)
         stm_set_char(lp1, 'b')
-        stm_stop_transaction()
+        self.commit_transaction()
         #
         self.switch(0)
         assert stm_get_char(lp1) == 'b'
 
     def test_resolve_write_write_conflict(self):
-        stm_start_transaction()
+        self.start_transaction()
         lp1 = stm_allocate(16)
         stm_set_char(lp1, 'a')
         stm_push_root(lp1)
-        stm_stop_transaction()
+        self.commit_transaction()
         lp1 = stm_pop_root()
         
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(lp1) # acquire lock
         #
         self.switch(1)
-        stm_start_transaction()
+        self.start_transaction()
         py.test.raises(Conflict, stm_write, lp1) # write-write conflict
 
     def test_abort_cleanup(self):
-        stm_start_transaction()
+        self.start_transaction()
         lp1 = stm_allocate(16)
         stm_set_char(lp1, 'a')
         stm_push_root(lp1)
-        stm_stop_transaction()
+        self.commit_transaction()
         lp1 = stm_pop_root()
 
-        stm_start_transaction()
+        self.start_transaction()
         stm_set_char(lp1, 'x')
         assert stm_abort_transaction()
 
-        stm_start_transaction()
+        self.start_transaction()
         assert stm_get_char(lp1) == 'a'
 
     def test_many_allocs(self):
         obj_size = 1024
         num = (lib.NB_NURSERY_PAGES * 4096) / obj_size + 100 # more than what fits in the nursery
         
-        stm_start_transaction()
+        self.start_transaction()
         for i in range(num):
             new = stm_allocate(obj_size)
             stm_push_root(new)
@@ -335,7 +335,7 @@
     def test_larger_than_section(self):
         obj_size = lib.NURSERY_SECTION + 16
         
-        stm_start_transaction()
+        self.start_transaction()
         new = stm_allocate(obj_size)
         assert not is_in_nursery(new)
         
@@ -349,7 +349,7 @@
         assert obj_size > 4096 # we want more than 1 page
         assert obj_size < 4096 * 1024 # in the nursery
 
-        stm_start_transaction()
+        self.start_transaction()
         new = stm_allocate(obj_size)
         assert is_in_nursery(new)
         assert len(stm_get_obj_pages(new)) == 2
@@ -373,17 +373,17 @@
         assert obj_size > 4096 # we want more than 1 page
         assert obj_size < 4096 * 1024 # in the nursery
 
-        stm_start_transaction()
+        self.start_transaction()
         new = stm_allocate(obj_size)
         assert is_in_nursery(new)
         stm_push_root(new)
-        stm_stop_transaction()
+        self.commit_transaction()
         new = stm_pop_root()
 
         assert ([stm_get_page_flag(p) for p in stm_get_obj_pages(new)]
                 == [lib.SHARED_PAGE]*2)
 
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(new)
         assert ([stm_get_page_flag(p) for p in stm_get_obj_pages(new)]
                 == [lib.PRIVATE_PAGE]*2)
@@ -393,13 +393,13 @@
         wnew[4097] = 'x'
 
         self.switch(1)
-        stm_start_transaction()
+        self.start_transaction()
         stm_read(new)
         rnew = stm_get_real_address(new)
         assert rnew[4097] == '\0'
         
     def test_partial_alloced_pages(self):
-        stm_start_transaction()
+        self.start_transaction()
         new = stm_allocate(16)
         stm_push_root(new)
         stm_minor_collect()
@@ -407,11 +407,11 @@
         # assert stm_get_page_flag(stm_get_obj_pages(new)[0]) == lib.UNCOMMITTED_SHARED_PAGE
         # assert not (stm_get_flags(new) & lib.GCFLAG_NOT_COMMITTED)
 
-        stm_stop_transaction()
+        self.commit_transaction()
         assert stm_get_page_flag(stm_get_obj_pages(new)[0]) == lib.SHARED_PAGE
         assert not (stm_get_flags(new) & lib.GCFLAG_NOT_COMMITTED)
 
-        stm_start_transaction()
+        self.start_transaction()
         newer = stm_allocate(16)
         stm_push_root(newer)
         stm_minor_collect()
@@ -425,13 +425,13 @@
         assert stm_get_flags(newer) & lib.GCFLAG_NOT_COMMITTED
         stm_write(newer) # does not privatize
         assert stm_get_page_flag(stm_get_obj_pages(newer)[0]) == lib.SHARED_PAGE
-        stm_stop_transaction()
+        self.commit_transaction()
         
         assert stm_get_page_flag(stm_get_obj_pages(newer)[0]) == lib.SHARED_PAGE
         assert not (stm_get_flags(newer) & lib.GCFLAG_NOT_COMMITTED)
         
     def test_reset_partial_alloc_pages(self):
-        stm_start_transaction()
+        self.start_transaction()
         new = stm_allocate(16)
         stm_set_char(new, 'a')
         stm_push_root(new)
@@ -439,7 +439,7 @@
         new = stm_pop_root()
         stm_abort_transaction()
 
-        stm_start_transaction()
+        self.start_transaction()
         newer = stm_allocate(16)
         stm_push_root(newer)
         stm_minor_collect()
@@ -448,7 +448,7 @@
         assert stm_get_char(newer) == '\0'
 
     def test_reuse_page(self):
-        stm_start_transaction()
+        self.start_transaction()
         new = stm_allocate(16)
         stm_push_root(new)
         stm_minor_collect()
@@ -456,7 +456,7 @@
         # assert stm_get_page_flag(stm_get_obj_pages(new)[0]) == lib.UNCOMMITTED_SHARED_PAGE
         stm_abort_transaction()
 
-        stm_start_transaction()
+        self.start_transaction()
         newer = stm_allocate(16)
         stm_push_root(newer)
         stm_minor_collect()
@@ -464,106 +464,106 @@
         assert new == newer
 
     def test_write_to_old_after_minor(self):
-        stm_start_transaction()
+        self.start_transaction()
         new = stm_allocate(16)
         stm_push_root(new)
         stm_minor_collect()
         old = stm_pop_root()
-        stm_stop_transaction()
+        self.commit_transaction()
 
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(old) # old objs to trace
         stm_set_char(old, 'x')
         stm_minor_collect()
         stm_write(old) # old objs to trace
         stm_set_char(old, 'y')
-        stm_stop_transaction()
+        self.commit_transaction()
         
 
     def test_inevitable_transaction(self):
-        py.test.skip("stm_write and stm_stop_transaction"
+        py.test.skip("stm_write and self.commit_transaction"
                      " of an inevitable tr. is not testable"
                      " since they wait for the other thread"
                      " to synchronize and possibly abort")
 
         old = stm_allocate_old(16)
-        stm_start_transaction()
+        self.start_transaction()
 
         self.switch(1)
-        stm_start_transaction()
+        self.start_transaction()
         stm_write(old)
 
         self.switch(0)
         stm_become_inevitable()
         stm_write(old) # t1 needs to abort, not us
-        stm_stop_transaction()
+        self.commit_transaction()
 
         py.test.raises(Conflict, self.switch, 1)
         
     # def test_resolve_write_write_no_conflict(self):
-    #     stm_start_transaction()
+    #     self.start_transaction()
     #     p1 = stm_allocate(16)
     #     p2 = stm_allocate(16)
     #     p1[8] = 'a'
     #     p2[8] = 'A'
-    #     stm_stop_transaction(False)
-    #     stm_start_transaction()
+    #     self.commit_transaction(False)
+    #     self.start_transaction()
     #     #
     #     self.switch(1)
-    #     stm_start_transaction()
+    #     self.start_transaction()
     #     stm_write(p1)
     #     p1[8] = 'b'
-    #     stm_stop_transaction(False)
+    #     self.commit_transaction(False)
     #     #
     #     self.switch(0)
     #     stm_write(p2)
     #     p2[8] = 'C'
-    #     stm_stop_transaction(False)
+    #     self.commit_transaction(False)
     #     assert p1[8] == 'b'
     #     assert p2[8] == 'C'
 
     # def test_page_extra_malloc_unchanged_page(self):
-    #     stm_start_transaction()
+    #     self.start_transaction()
     #     p1 = stm_allocate(16)
     #     p2 = stm_allocate(16)
     #     p1[8] = 'A'
     #     p2[8] = 'a'
-    #     stm_stop_transaction(False)
-    #     stm_start_transaction()
+    #     self.commit_transaction(False)
+    #     self.start_transaction()
     #     #
     #     self.switch(1)
-    #     stm_start_transaction()
+    #     self.start_transaction()
     #     stm_write(p1)
     #     assert p1[8] == 'A'
     #     p1[8] = 'B'
-    #     stm_stop_transaction(False)
+    #     self.commit_transaction(False)
     #     #
     #     self.switch(0)
     #     stm_read(p2)
     #     assert p2[8] == 'a'
     #     p3 = stm_allocate(16)   # goes into the same page, which is
     #     p3[8] = ':'             #  not otherwise modified
-    #     stm_stop_transaction(False)
+    #     self.commit_transaction(False)
     #     #
     #     assert p1[8] == 'B'
     #     assert p2[8] == 'a'
     #     assert p3[8] == ':'
 
     # def test_page_extra_malloc_changed_page_before(self):
-    #     stm_start_transaction()
+    #     self.start_transaction()
     #     p1 = stm_allocate(16)
     #     p2 = stm_allocate(16)
     #     p1[8] = 'A'
     #     p2[8] = 'a'
-    #     stm_stop_transaction(False)
-    #     stm_start_transaction()
+    #     self.commit_transaction(False)
+    #     self.start_transaction()
     #     #
     #     self.switch(1)
-    #     stm_start_transaction()
+    #     self.start_transaction()
     #     stm_write(p1)
     #     assert p1[8] == 'A'
     #     p1[8] = 'B'
-    #     stm_stop_transaction(False)
+    #     self.commit_transaction(False)
     #     #
     #     self.switch(0)
     #     stm_write(p2)
@@ -571,27 +571,27 @@
     #     p2[8] = 'b'
     #     p3 = stm_allocate(16)  # goes into the same page, which I already
     #     p3[8] = ':'            #  modified just above
-    #     stm_stop_transaction(False)
+    #     self.commit_transaction(False)
     #     #
     #     assert p1[8] == 'B'
     #     assert p2[8] == 'b'
     #     assert p3[8] == ':'
 
     # def test_page_extra_malloc_changed_page_after(self):
-    #     stm_start_transaction()
+    #     self.start_transaction()
     #     p1 = stm_allocate(16)
     #     p2 = stm_allocate(16)
     #     p1[8] = 'A'
     #     p2[8] = 'a'
-    #     stm_stop_transaction(False)
-    #     stm_start_transaction()
+    #     self.commit_transaction(False)
+    #     self.start_transaction()
     #     #
     #     self.switch(1)
-    #     stm_start_transaction()
+    #     self.start_transaction()
     #     stm_write(p1)
     #     assert p1[8] == 'A'
     #     p1[8] = 'B'
-    #     stm_stop_transaction(False)
+    #     self.commit_transaction(False)
     #     #
     #     self.switch(0)
     #     p3 = stm_allocate(16)  # goes into the same page, which I will
@@ -599,19 +599,19 @@
     #     stm_write(p2)
     #     assert p2[8] == 'a'
     #     p2[8] = 'b'
-    #     stm_stop_transaction(False)
+    #     self.commit_transaction(False)
     #     #
     #     assert p1[8] == 'B'
     #     assert p2[8] == 'b'
     #     assert p3[8] == ':'
 
     # def test_overflow_write_history(self):
-    #     stm_start_transaction()
+    #     self.start_transaction()
     #     plist = [stm_allocate(n) for n in range(16, 256, 8)]
-    #     stm_stop_transaction(False)
+    #     self.commit_transaction(False)
     #     #
     #     for i in range(20):
-    #         stm_start_transaction()
+    #         self.start_transaction()
     #         for p in plist:
     #             stm_write(p)
-    #         stm_stop_transaction(False)
+    #         self.commit_transaction(False)


More information about the pypy-commit mailing list