[pypy-commit] stmgc c8-private-pages: improve test_random
Raemi
noreply at buildbot.pypy.org
Tue Jan 20 15:23:51 CET 2015
Author: Remi Meier <remi.meier at inf.ethz.ch>
Branch: c8-private-pages
Changeset: r1556:080ece9f6963
Date: 2015-01-20 11:11 +0100
http://bitbucket.org/pypy/stmgc/changeset/080ece9f6963/
Log: improve test_random
diff --git a/c8/stm/core.c b/c8/stm/core.c
--- a/c8/stm/core.c
+++ b/c8/stm/core.c
@@ -481,14 +481,6 @@
{
if (!_stm_validate())
stm_abort_transaction();
-
-#if STM_TESTS
- if (STM_PSEGMENT->transaction_state != TS_INEVITABLE
- && STM_PSEGMENT->last_commit_log_entry->next == INEV_RUNNING) {
- /* abort for tests... */
- stm_abort_transaction();
- }
-#endif
}
diff --git a/c8/test/test_gcpage.py b/c8/test/test_gcpage.py
--- a/c8/test/test_gcpage.py
+++ b/c8/test/test_gcpage.py
@@ -300,7 +300,8 @@
self.start_transaction()
self.become_inevitable()
#
- py.test.raises(Conflict, self.switch, 0)
+ self.switch(0)
+ py.test.raises(Conflict, self.commit_transaction)
#
self.switch(1)
diff --git a/c8/test/test_random.py b/c8/test/test_random.py
--- a/c8/test/test_random.py
+++ b/c8/test/test_random.py
@@ -349,7 +349,8 @@
def op_become_inevitable(ex, global_state, thread_state):
trs = thread_state.transaction_state
- global_state.check_if_can_become_inevitable(trs)
+ if not trs.check_must_abort():
+ global_state.check_if_can_become_inevitable(trs)
thread_state.push_roots(ex)
ex.do(raising_call(trs.check_must_abort(),
@@ -426,18 +427,13 @@
v = ord(global_state.rnd.choice("abcdefghijklmnop"))
assert trs.write_root(r, v) is not None
#
- aborts = trs.check_must_abort()
- if aborts:
- thread_state.abort_transaction()
offset = global_state.get_root_size(r) + " - 1"
if is_ref:
- ex.do(raising_call(aborts, "stm_set_ref", r, offset, v, try_cards))
- if not aborts:
- ex.do(raising_call(False, "stm_set_ref", r, "0", v, try_cards))
+ ex.do(raising_call(False, "stm_set_ref", r, offset, v, try_cards))
+ ex.do(raising_call(False, "stm_set_ref", r, "0", v, try_cards))
else:
- ex.do(raising_call(aborts, "stm_set_char", r, repr(chr(v)), offset, try_cards))
- if not aborts:
- ex.do(raising_call(False, "stm_set_char", r, repr(chr(v)), "HDR", try_cards))
+ ex.do(raising_call(False, "stm_set_char", r, repr(chr(v)), offset, try_cards))
+ ex.do(raising_call(False, "stm_set_char", r, repr(chr(v)), "HDR", try_cards))
def op_read(ex, global_state, thread_state):
r = thread_state.get_random_root()
@@ -509,8 +505,6 @@
ex.do('#')
#
trs = new_thread_state.transaction_state
- if trs and not trs.check_must_abort():
- global_state.check_if_can_become_inevitable(trs)
conflicts = trs and trs.check_must_abort()
ex.thread_num = new_thread_state.num
#
@@ -568,28 +562,28 @@
# random steps:
possible_actions = [
- op_allocate,
- op_allocate_ref, op_allocate_ref,
- op_write, op_write, op_write,
- op_read, op_read, op_read, op_read, op_read, op_read, op_read, op_read,
- op_commit_transaction,
- op_abort_transaction,
- op_forget_root,
- op_become_inevitable,
- op_assert_size,
- op_assert_modified,
- op_minor_collect,
- op_major_collect,
+ [op_read,]*100,
+ [op_write,]*70,
+ [op_allocate,]*25,
+ [op_allocate_ref]*30,
+ [op_commit_transaction,]*10,
+ [op_abort_transaction,],
+ [op_forget_root]*10,
+ [op_become_inevitable]*2,
+ [op_assert_size]*20,
+ [op_assert_modified]*10,
+ [op_minor_collect]*5,
+ [op_major_collect],
]
+ possible_actions = [item for sublist in possible_actions for item in sublist]
+ print possible_actions
for _ in range(2000):
# make sure we are in a transaction:
curr_thread = op_switch_thread(ex, global_state, curr_thread)
- if (global_state.is_inevitable_transaction_running()
- and curr_thread.transaction_state is None):
- continue # don't bother trying to start a transaction
-
if curr_thread.transaction_state is None:
+ if global_state.is_inevitable_transaction_running():
+ continue # don't bother trying to start a transaction
op_start_transaction(ex, global_state, curr_thread)
assert curr_thread.transaction_state is not None
More information about the pypy-commit
mailing list