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
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"