Ejemplo n.º 1
0
//suite
int main(void) {

    arena = Arena_new();

    store = OeBdb_new(1, "data", true);
    assert(store);

    testTxnCommitPut();
    testBogusTxnPut();
    testCommitTake();
    testCommitRMW();
    testRollback();

    for (int i = 0; i < 100; i++) {
        testCommitRMW();
    }
    testDetectDeadlock();

    OeStore_stats(store);
    int close_ret = OeStore_free(&store);
    assert(close_ret == 0);

    //test_update_of_expired_txn();
    //test_commit_of_expired_txn();

    Arena_free(arena);
    Arena_dispose(&arena);

    return 0;
}
Ejemplo n.º 2
0
void testPutOne(void *n) {

    char *name = (char *) n;

    Arena_T arena = Arena_new();
    printf("putting name: %s\n", (char *) name);

    OeStoreHolder holder = OeStoreHolder_new(arena);
    DataObject data = OeStoreHolder_get_data(holder);
    OeStoreHolder_set_txn_id( holder, 0 ); //unlocked
    OeStoreHolder_set_lease_expire_time( holder, oec_get_time_milliseconds() + 600000);
    OeStoreHolder_set_lock( holder, OESTORE_UNLOCKED );

    DataObject_set_nbytes( data, strlen(bytes) + 1 );
    DataObject_set_bytes( data, bytes );
    DataObject_add_attr( data, "key1" );
    DataObject_add_attr( data, (char *) name );
    DataObject_add_attr( data, "key2" );
    DataObject_add_attr( data, "seeme2three" );
    DataObject_add_attr( data, morenonse);
    DataObject_add_attr( data, "somebadvalue" );

    int ret;
    while ( (ret = OeStore_put( store, holder, arena)) ) {
        if (ret == OE_STORE_PLEASE_RETRY) {
            if (ret == OE_STORE_PLEASE_RETRY) {
                printf("put one retry for deadlock\n");
                continue;
            }
        }
    }
    assert(!ret);
    printf("put name: %s\n", (char *) name);
    Arena_dispose(&arena);
}
Ejemplo n.º 3
0
int main() {

    arena = Arena_new();

    start_socket_server();
    start_socket_client();
    test_unconnected_put(); //fatal, reconnect

    start_socket_client();
    test_con();
    test_con_2(); //fatal, reconnect

    start_socket_client();
    test_con();
    test_put();
    test_read();
    test_take();
    test_upt(); //fatal, reconnect

    start_socket_client();
    test_con();
    test_upl();

    stop_socket_server();

    return 0;
}
Ejemplo n.º 4
0
//arena per thread -  //the arena gets cleared between tasks.  if your
// task is not short lived, consider calling free once in a while
Arena_T Oed_get_arena(void) {
	init_arena_once();
    Arena_T arena = ThreadData_get(arena_td);
    if (!arena) {
        arena = Arena_new();
        ThreadData_set(arena_td, arena);
    }
	return arena;
}
Ejemplo n.º 5
0
OEK_Context *(OEK_Context_new)(void) {

    Arena_T arena = Arena_new();
    OEK_Context *context;
    context = Arena_calloc(arena, 1, sizeof *context, __FILE__, __LINE__);
    context->arena = arena;

    return context;
}
Ejemplo n.º 6
0
void testTakeOne(void *dummy) {

    Arena_T arena = Arena_new();
    const int MAX_RESULTS = 1;

    DataObjectList keylists = DataObjectList_new(arena);
    DataObject keys = DataObjectList_new_data_object(keylists);
    DataObject_add_attr(keys, "key2");
    DataObject_add_attr(keys, "seeme2three");

    OeStoreHolder results[MAX_RESULTS + 1];
    memset(results, 0, sizeof *results);
    size_t result_count = 0;

    OeStoreQuery query = OeStoreQuery_new(arena, MAX_RESULTS);
    OeStoreQuery_set_take(query, true);
    OeStoreQuery_set_tuple(query, false);
    OeStoreQuery_set_ifexists(query, false);
    OeStoreQuery_set_value_lists(query, keylists);

    int ret;
    while ( (
             ret = OeStore_get(store, query)
             ) ) {

        if (ret == OE_STORE_PLEASE_RETRY) {
            printf("take one retry for deadlock\n");
            OeStoreQuery_reset_nitems_found(query);
            continue;
        }
        if (ret == OE_STORE_ITEM_NOTFOUND) continue;
        result_count = OeStoreQuery_get_nitems_found(query);
        if (result_count == 0) continue;
    }
    assert(!ret);
    assert(result_count = 1);

    OeStoreHolder result = OeStoreQuery_get_store_holder(query, 0);
    DataObject data = OeStoreHolder_get_data(result);
    Iterator iter = DataObject_iterator(data, true);
    //Iterator iter = DataObject_iterator(data, false);
    printf("take result key1: %s\n", (char *) Iterator_next(iter)); //0
    printf("take result val1: %s\n", (char *) Iterator_next(iter)); //1
    printf("take result key2: %s\n", (char *) Iterator_next(iter)); //0
    assert(strcmp(Iterator_next(iter), "seeme2three") == 0);
    assert(strcmp(DataObject_get_bytes(data), "nonesense") == 0);
    assert(OeStoreHolder_get_lock(result) == OESTORE_TAKE_LOCK);
    Arena_dispose(&arena);
}
Ejemplo n.º 7
0
Archivo: arena.c Proyecto: lucabol/llib
static unsigned test_arena_resize() {
    
    Arena_T arena   = Arena_new();
    char * aChar;

    
    Mem_set_arena(arena);
    
    aChar           = ALLOC(sizeof(char));
    *aChar          = 'a';
    test_assert(*aChar == 'a');

    REALLOC(aChar, 100);
    strcpy(aChar + 1, "bcdefghilmnopqrstuvz");
    test_assert_str(aChar, "abcdefghilmnopqrstuvz");

    REALLOC(aChar, 10);
    aChar[9]        = '\0';
    test_assert_str(aChar, "abcdefghi");

    REALLOC(aChar, 100000);
    test_assert_str(aChar, "abcdefghi");

    REALLOC(aChar, 1);
    aChar[1] = '\0';
    test_assert_str(aChar, "a");

    REALLOC(aChar, 100);
    strcpy(aChar, "abcd");
    REALLOC(aChar, 2);
    aChar[2] = '\0';
    test_assert_str(aChar, "ab");

    Mem_set_default();

    Arena_dispose(&arena);
    Arena_remove_free_blocks();
    

    return TEST_SUCCESS;
}
Ejemplo n.º 8
0
T OepClient_new(Oed_Dispatcher dispatcher,
                OeNet net, oe_scalar username,
                oe_scalar pwd, char *spec) {

    assert(dispatcher);
    Arena_T arena = Arena_new();
    T _this_;
    _this_ = Arena_calloc(arena, 1, sizeof *_this_, __FILE__, __LINE__);
    _this_->arena = arena;
    _this_->dispatcher = dispatcher;
    _this_->pending = Table_new(100, cidcmp, cidhash);
    _this_->spec = spec;
    Subject s = Subject_new(arena);
    _this_->subject = s;
    Subject_set_username(s, username);
    Subject_set_pwd(s, pwd);

    OeNet_set_read_handler(net, _buffered_on_read);
    _this_->net = net;
    OeNet_set_proto(net, _this_);
    assert(_this_->net);

    return _this_;
}