X-Git-Url: https://pd.if.org/git/?p=nbds;a=blobdiff_plain;f=test%2Fmap_test2.c;h=b321a683b1daabee11595940143ec2312f328e0a;hp=7d31c87ff1b35e9beb9c0679d873beef22081bb7;hb=fa60fb1fb78136edc9e5863c0b86222f572963ef;hpb=df360b20f11476e53534a53c9ce11493d7c7a764 diff --git a/test/map_test2.c b/test/map_test2.c index 7d31c87..b321a68 100644 --- a/test/map_test2.c +++ b/test/map_test2.c @@ -4,11 +4,12 @@ */ #include #include -#include "runtime.h" + #include "CuTest.h" + #include "common.h" +#include "runtime.h" #include "map.h" -#include "mem.h" #include "lwt.h" #define ASSERT_EQUAL(x, y) CuAssertIntEquals(tc, x, y) @@ -16,7 +17,7 @@ typedef struct worker_data { int id; CuTest *tc; - map_t *ht; + map_t *map; int *wait; } worker_data_t; @@ -25,56 +26,56 @@ static map_type_t map_type_; // Test some basic stuff; add a few keys, remove a few keys void basic_test (CuTest* tc) { - map_t *ht = map_alloc(map_type_); - - ASSERT_EQUAL( 0, map_count(ht) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_add(ht,"a",2,10) ); - ASSERT_EQUAL( 1, map_count(ht) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_add(ht,"b",2,20) ); - ASSERT_EQUAL( 2, map_count(ht) ); - ASSERT_EQUAL( 20, map_get(ht,"b",2) ); - ASSERT_EQUAL( 10, map_set(ht,"a",2,11) ); - ASSERT_EQUAL( 20, map_set(ht,"b",2,21) ); - ASSERT_EQUAL( 2, map_count(ht) ); - ASSERT_EQUAL( 21, map_add(ht,"b",2,22) ); - ASSERT_EQUAL( 11, map_remove(ht,"a",2) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_get(ht,"a",2) ); - ASSERT_EQUAL( 1, map_count(ht) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_remove(ht,"a",2) ); - ASSERT_EQUAL( 21, map_remove(ht,"b",2) ); - ASSERT_EQUAL( 0, map_count(ht) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_remove(ht,"b",2) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_remove(ht,"c",2) ); - ASSERT_EQUAL( 0, map_count(ht) ); + map_t *map = map_alloc(map_type_); + + ASSERT_EQUAL( 0, map_count(map) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_add(map,"a",2,10) ); + ASSERT_EQUAL( 1, map_count(map) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_add(map,"b",2,20) ); + ASSERT_EQUAL( 2, map_count(map) ); + ASSERT_EQUAL( 20, map_get(map,"b",2) ); + ASSERT_EQUAL( 10, map_set(map,"a",2,11) ); + ASSERT_EQUAL( 20, map_set(map,"b",2,21) ); + ASSERT_EQUAL( 2, map_count(map) ); + ASSERT_EQUAL( 21, map_add(map,"b",2,22) ); + ASSERT_EQUAL( 11, map_remove(map,"a",2) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_get(map,"a",2) ); + ASSERT_EQUAL( 1, map_count(map) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_remove(map,"a",2) ); + ASSERT_EQUAL( 21, map_remove(map,"b",2) ); + ASSERT_EQUAL( 0, map_count(map) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_remove(map,"b",2) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_remove(map,"c",2) ); + ASSERT_EQUAL( 0, map_count(map) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_add(ht,"d",2,40) ); - ASSERT_EQUAL( 40, map_get(ht,"d",2) ); - ASSERT_EQUAL( 1, map_count(ht) ); - ASSERT_EQUAL( 40, map_remove(ht,"d",2) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_get(ht,"d",2) ); - ASSERT_EQUAL( 0, map_count(ht) ); - - ASSERT_EQUAL( DOES_NOT_EXIST, map_replace(ht,"d",2,10) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_get(ht,"d",2) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_set(ht,"d",2,40) ); - ASSERT_EQUAL( 40, map_replace(ht,"d",2,41) ); - ASSERT_EQUAL( 41, map_get(ht,"d",2) ); - ASSERT_EQUAL( 41, map_remove(ht,"d",2) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_get(ht,"d",2) ); - ASSERT_EQUAL( 0, map_count(ht) ); - - ASSERT_EQUAL( DOES_NOT_EXIST, map_replace(ht,"b",2,20) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_get(ht,"b",2) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_add(map,"d",2,40) ); + ASSERT_EQUAL( 40, map_get(map,"d",2) ); + ASSERT_EQUAL( 1, map_count(map) ); + ASSERT_EQUAL( 40, map_remove(map,"d",2) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_get(map,"d",2) ); + ASSERT_EQUAL( 0, map_count(map) ); + + ASSERT_EQUAL( DOES_NOT_EXIST, map_replace(map,"d",2,10) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_get(map,"d",2) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_set(map,"d",2,40) ); + ASSERT_EQUAL( 40, map_replace(map,"d",2,41) ); + ASSERT_EQUAL( 41, map_get(map,"d",2) ); + ASSERT_EQUAL( 41, map_remove(map,"d",2) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_get(map,"d",2) ); + ASSERT_EQUAL( 0, map_count(map) ); + + ASSERT_EQUAL( DOES_NOT_EXIST, map_replace(map,"b",2,20) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_get(map,"b",2) ); // In the end, all entries should be removed - ASSERT_EQUAL( DOES_NOT_EXIST, map_set(ht,"b",2,20) ); - ASSERT_EQUAL( 20, map_replace(ht,"b",2,21) ); - ASSERT_EQUAL( 21, map_get(ht,"b",2) ); - ASSERT_EQUAL( 21, map_remove(ht,"b",2) ); - ASSERT_EQUAL( DOES_NOT_EXIST, map_get(ht,"b",2) ); - ASSERT_EQUAL( 0, map_count(ht) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_set(map,"b",2,20) ); + ASSERT_EQUAL( 20, map_replace(map,"b",2,21) ); + ASSERT_EQUAL( 21, map_get(map,"b",2) ); + ASSERT_EQUAL( 21, map_remove(map,"b",2) ); + ASSERT_EQUAL( DOES_NOT_EXIST, map_get(map,"b",2) ); + ASSERT_EQUAL( 0, map_count(map) ); - map_free(ht); + map_free(map); // In a quiecent state; it is safe to free. rcu_update(); @@ -82,7 +83,7 @@ void basic_test (CuTest* tc) { void *simple_worker (void *arg) { worker_data_t *wd = (worker_data_t *)arg; - map_t *ht = wd->ht; + map_t *map = wd->map; CuTest* tc = wd->tc; uint64_t d = wd->id; int iters = map_type_ == MAP_TYPE_LIST ? 100 : 1000000; @@ -95,14 +96,14 @@ void *simple_worker (void *arg) { char key[10]; sprintf(key, "k%u", i); TRACE("t0", "test map_add() iteration (%llu, %llu)", j, i); - CuAssertIntEquals_Msg(tc, key, DOES_NOT_EXIST, map_add(ht, key, strlen(key)+1, d+1) ); + CuAssertIntEquals_Msg(tc, key, DOES_NOT_EXIST, map_add(map, key, strlen(key)+1, d+1) ); rcu_update(); } for (int i = d; i < iters; i+=2) { char key[10]; sprintf(key, "k%u", i); TRACE("t0", "test map_remove() iteration (%llu, %llu)", j, i); - CuAssertIntEquals_Msg(tc, key, d+1, map_remove(ht, key, strlen(key)+1) ); + CuAssertIntEquals_Msg(tc, key, d+1, map_remove(map, key, strlen(key)+1) ); rcu_update(); } } @@ -115,14 +116,14 @@ void simple_add_remove (CuTest* tc) { pthread_t thread[2]; worker_data_t wd[2]; int wait = 2; - map_t *ht = map_alloc(map_type_); + map_t *map = map_alloc(map_type_); // In 2 threads, add & remove even & odd elements concurrently int i; for (i = 0; i < 2; ++i) { wd[i].id = i; wd[i].tc = tc; - wd[i].ht = ht; + wd[i].map = map; wd[i].wait = &wait; int rc = nbd_thread_create(thread + i, i, simple_worker, wd + i); if (rc != 0) { perror("nbd_thread_create"); return; } @@ -132,17 +133,17 @@ void simple_add_remove (CuTest* tc) { } // In the end, all members should be removed - ASSERT_EQUAL( 0, map_count(ht) ); + ASSERT_EQUAL( 0, map_count(map) ); // In a quiecent state; it is safe to free. - map_free(ht); + map_free(map); } void *inserter_worker (void *arg) { //pthread_t thread[NUM_THREADS]; - //map_t *ht = map_alloc(MAP_TYPE_HASHTABLE); + //map_t *map = map_alloc(map_type_); return NULL; } @@ -167,7 +168,6 @@ int main (void) { SUITE_ADD_TEST(suite, simple_add_remove); CuSuiteRun(suite); - CuSuiteSummary(suite, output); CuSuiteDetails(suite, output); printf("%s\n", output->buffer); }