示例#1
0
def simple_cortex_test():
    # make some initial values
    child = CortexNode(value=["a","b","c"])
    parent = CortexNode(value=["z","x"], children=[child])
    server = Server(parent)

    buf = ConcurrentBuffer()
    
    client_1 = new_test_client(server, buf)
    client_1.apply_local_change(
        operation.Insert,
        [],
        1,
        "q")
    client_1.apply_local_change(
        operation.Create,
        [0])
    client_1.apply_local_change(
        operation.Insert,
        [0],
        0,
        "w")

    client_2 = new_test_client(server, buf)

    print server.value
    print client_1._value
    print client_2._value
    print
    
    buf.resolve_events()

    print server.value
    print client_1._value
    print client_2._value
    print

    client_1.apply_local_change(
        operation.Create,
        [1])
    client_2.apply_local_change(
        operation.Remove,
        [0])
    
    print server.value
    print client_1._value
    print client_2._value
    print

    buf.resolve_events()

    print server.value
    print client_1._value
    print client_2._value
示例#2
0
def monte_carlo_test(seed):
    random.seed(seed)

    server = Server()
    buf = ConcurrentBuffer()
    
    num_clients = random.randint(1, 5)
    clients = [ new_test_client(server, buf) for _ in xrange(num_clients) ]

    num_cycles = random.randint(1, 10)
    for i in xrange(num_cycles):
        for client in clients:
            num_ops = random.randint(0, 10)
            for _ in xrange(num_ops):
                rc.do_random_op(client)
        buf.resolve_events()

    reference_val = clients[0].value
    for client in clients[1:]:
        if not client.value.is_equal(reference_val):
            raise Exception("Client did not converge, seed: " + str(seed))
    print seed, "worked with", len(clients), "clients"