[pypy-commit] stmgc default: Some tests for 903f2a6c1ed9
arigo
noreply at buildbot.pypy.org
Sun Oct 5 12:07:10 CEST 2014
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r1457:f89f44ca1dc9
Date: 2014-10-05 12:07 +0200
http://bitbucket.org/pypy/stmgc/changeset/f89f44ca1dc9/
Log: Some tests for 903f2a6c1ed9
diff --git a/c7/test/test_marker.py b/c7/test/test_marker.py
--- a/c7/test/test_marker.py
+++ b/c7/test/test_marker.py
@@ -4,37 +4,38 @@
class TestMarker(BaseTest):
- def recording(self, kind):
+ def recording(self, *kinds):
seen = []
@ffi.callback("stmcb_timing_event_fn")
def timing_event(tl, event, markers):
- if kind == "ALL":
- seen.append(event)
- elif event != kind:
+ if len(kinds) > 0 and event not in kinds:
return
- seen.append(tl)
if markers:
- seen.append(markers[0].tl)
- seen.append(markers[0].segment_base)
- seen.append(markers[0].odd_number)
- seen.append(markers[0].object)
- seen.append(markers[1].tl)
- seen.append(markers[1].segment_base)
- seen.append(markers[1].odd_number)
- seen.append(markers[1].object)
+ expanded = []
+ for i in range(2):
+ expanded.append((markers[i].tl,
+ markers[i].segment_base,
+ markers[i].odd_number,
+ markers[i].object))
else:
- seen.append(None)
+ expanded = None
+ seen.append((tl, event, expanded))
lib.stmcb_timing_event = timing_event
self.timing_event_keepalive = timing_event
self.seen = seen
- def check_recording(self, i1, o1, i2, o2):
+ def check_recording(self, i1, o1, i2, o2, extra=None):
seen = self.seen
- assert seen[0] == self.tls[1]
+ tl, event, markers = seen[0]
+ assert tl == self.tls[1]
segbase = lib._stm_get_segment_base
- assert seen[1:5] == [self.tls[1], segbase(2), i1, o1]
- assert seen[5:9] == [self.tls[0], segbase(1), i2, o2]
- assert len(seen) == 9
+ assert markers[0] == (self.tls[1], segbase(2), i1, o1)
+ assert markers[1] == (self.tls[0], segbase(1), i2, o2)
+ if extra is None:
+ assert len(seen) == 1
+ else:
+ assert seen[1] == (self.tls[1], extra, None)
+ assert len(seen) == 2
def test_marker_odd_simple(self):
self.start_transaction()
@@ -46,7 +47,9 @@
assert int(ffi.cast("uintptr_t", x)) == 29
def test_abort_marker_no_shadowstack(self):
- self.recording(lib.STM_CONTENTION_WRITE_WRITE)
+ self.recording(lib.STM_CONTENTION_WRITE_WRITE,
+ lib.STM_WAIT_CONTENTION,
+ lib.STM_ABORTING_OTHER_CONTENTION)
p = stm_allocate_old(16)
#
self.start_transaction()
@@ -160,7 +163,8 @@
self.check_recording(19, ffi.NULL, 0, ffi.NULL)
def test_double_remote_markers_cb_write_write(self):
- self.recording(lib.STM_CONTENTION_WRITE_WRITE)
+ self.recording(lib.STM_CONTENTION_WRITE_WRITE,
+ lib.STM_ABORTING_OTHER_CONTENTION)
p = stm_allocate_old(16)
#
self.start_transaction()
@@ -186,10 +190,12 @@
#
py.test.raises(Conflict, self.switch, 0)
#
- self.check_recording(21, ffi.NULL, 19, ffi.NULL)
+ self.check_recording(21, ffi.NULL, 19, ffi.NULL,
+ extra=lib.STM_ABORTING_OTHER_CONTENTION)
def test_double_remote_markers_cb_write_read(self):
- self.recording(lib.STM_CONTENTION_WRITE_READ)
+ self.recording(lib.STM_CONTENTION_WRITE_READ,
+ lib.STM_ABORTING_OTHER_CONTENTION)
p = stm_allocate_old(16)
#
self.start_transaction()
@@ -210,24 +216,25 @@
#
py.test.raises(Conflict, self.switch, 0)
#
- self.check_recording(21, ffi.NULL, 0, ffi.NULL)
+ self.check_recording(21, ffi.NULL, 0, ffi.NULL,
+ extra=lib.STM_ABORTING_OTHER_CONTENTION)
def test_all(self):
- self.recording("ALL")
+ self.recording() # all events
self.start_transaction()
self.commit_transaction()
self.start_transaction()
stm_major_collect()
self.abort_transaction()
assert self.seen == [
- lib.STM_TRANSACTION_START, self.tls[0], None,
- lib.STM_GC_MINOR_START, self.tls[0], None,
- lib.STM_GC_MINOR_DONE, self.tls[0], None,
- lib.STM_TRANSACTION_COMMIT, self.tls[0], None,
- lib.STM_TRANSACTION_START, self.tls[0], None,
- lib.STM_GC_MINOR_START, self.tls[0], None,
- lib.STM_GC_MINOR_DONE, self.tls[0], None,
- lib.STM_GC_MAJOR_START, self.tls[0], None,
- lib.STM_GC_MAJOR_DONE, self.tls[0], None,
- lib.STM_TRANSACTION_ABORT, self.tls[0], None,
+ (self.tls[0], lib.STM_TRANSACTION_START, None),
+ (self.tls[0], lib.STM_GC_MINOR_START, None),
+ (self.tls[0], lib.STM_GC_MINOR_DONE, None),
+ (self.tls[0], lib.STM_TRANSACTION_COMMIT, None),
+ (self.tls[0], lib.STM_TRANSACTION_START, None),
+ (self.tls[0], lib.STM_GC_MINOR_START, None),
+ (self.tls[0], lib.STM_GC_MINOR_DONE, None),
+ (self.tls[0], lib.STM_GC_MAJOR_START, None),
+ (self.tls[0], lib.STM_GC_MAJOR_DONE, None),
+ (self.tls[0], lib.STM_TRANSACTION_ABORT, None),
]
More information about the pypy-commit
mailing list