Ejemplo n.º 1
0
 def attempt_inc_for_loop_count(successes):
     for _ in range(loop_count):
         oldval = atom.deref()
         newval = oldval + 1
         if atom.compare_and_set(oldval, newval):
             with successes.get_lock():
                 successes.value += 1
Ejemplo n.º 2
0
 def attempt_inc_for_loop_count(successes):
     for _ in range(loop_count):
         oldval = atom.deref()
         newval = oldval + 1
         if atom.compare_and_set(oldval, newval):
             with successes.get_lock():
                 successes.value += 1
Ejemplo n.º 3
0
def test_atom_swap(atom):
    atom, _ = atom
    def update_state(cur_state, k, v):
        cur_state = cur_state.copy()
        cur_state[k] = v
        return cur_state

    atom.swap(update_state, 'foo', 'bar')
    assert atom.deref() == {'foo': 'bar'}
Ejemplo n.º 4
0
def test_atom_swap(atom):
    atom, _ = atom

    def update_state(cur_state, k, v):
        cur_state = cur_state.copy()
        cur_state[k] = v
        return cur_state

    atom.swap(update_state, 'foo', 'bar')
    assert atom.deref() == {'foo': 'bar'}
Ejemplo n.º 5
0
def test_concurrent_swap(atom, proc_count=10, loop_count=1000):
    atom, proc = atom
    atom.reset(0)

    def inc_for_loop_count():
        for _ in range(loop_count):
            atom.swap(lambda n: n + 1)

    processes = []
    for _ in range(proc_count):
        p = proc(target=inc_for_loop_count)
        processes.append(p)
        p.start()

    for p in processes:
        p.join()

    assert atom.deref() == proc_count * loop_count
Ejemplo n.º 6
0
def test_concurrent_swap(atom, proc_count=10, loop_count=1000):
    atom, proc = atom
    atom.reset(0)

    def inc_for_loop_count():
        for _ in range(loop_count):
            atom.swap(lambda n: n + 1)

    processes = []
    for _ in range(proc_count):
        p = proc(target=inc_for_loop_count)
        processes.append(p)
        p.start()

    for p in processes:
        p.join()

    assert atom.deref() == proc_count * loop_count
Ejemplo n.º 7
0
def test_concurrent_compare_and_set(atom, proc_count=10, loop_count=1000):
    atom, proc = atom
    atom.reset(0)

    successes = multiprocessing.Value('i', 0)
    def attempt_inc_for_loop_count(successes):
        for _ in range(loop_count):
            oldval = atom.deref()
            newval = oldval + 1
            if atom.compare_and_set(oldval, newval):
                with successes.get_lock():
                    successes.value += 1

    processes = []
    for _ in range(proc_count):
        p = proc(target=attempt_inc_for_loop_count, args=(successes,))
        processes.append(p)
        p.start()

    for p in processes:
        p.join()

    assert atom.deref() == successes.value
Ejemplo n.º 8
0
def test_concurrent_compare_and_set(atom, proc_count=10, loop_count=1000):
    atom, proc = atom
    atom.reset(0)

    successes = multiprocessing.Value('i', 0)

    def attempt_inc_for_loop_count(successes):
        for _ in range(loop_count):
            oldval = atom.deref()
            newval = oldval + 1
            if atom.compare_and_set(oldval, newval):
                with successes.get_lock():
                    successes.value += 1

    processes = []
    for _ in range(proc_count):
        p = proc(target=attempt_inc_for_loop_count, args=(successes, ))
        processes.append(p)
        p.start()

    for p in processes:
        p.join()

    assert atom.deref() == successes.value
Ejemplo n.º 9
0
def test_atom_reset(atom):
    atom, _ = atom
    assert atom.reset('foo') == 'foo'
    assert atom.deref() == 'foo'
Ejemplo n.º 10
0
def test_atom_deref(atom):
    atom, _ = atom
    assert atom.deref() == {}
Ejemplo n.º 11
0
def test_atom_reset(atom):
    atom, _ = atom
    assert atom.reset('foo') == 'foo'
    assert atom.deref() == 'foo'
Ejemplo n.º 12
0
def test_atom_deref(atom):
    atom, _ = atom
    assert atom.deref() == {}