static void drop_test(void) { void *env = sp_env(); t( env != NULL ); t( sp_setstring(env, "sophia.path", st_r.conf->sophia_dir, 0) == 0 ); t( sp_setint(env, "scheduler.threads", 0) == 0 ); t( sp_setstring(env, "log.path", st_r.conf->log_dir, 0) == 0 ); t( sp_open(env) == 0 ); t( sp_setstring(env, "db", "test", 0) == 0 ); t( sp_setstring(env, "db.test.path", st_r.conf->db_dir, 0) == 0 ); t( sp_setstring(env, "db.test.index.key", "u32", 0) == 0 ); t( sp_setint(env, "db.test.sync", 0) == 0 ); void *db = sp_getobject(env, "db.test"); t( db != NULL ); t( sp_open(db) == 0 ); void *txn = sp_begin(env); t( txn != NULL ); sp_destroy(db); /* unref */ t( sp_drop(db) == 0); /* scheduler drop */ void *dbp = sp_getobject(env, "db.test"); t( dbp == NULL ); t( sp_setint(env, "scheduler.run", 0) == 0 ); t( sp_destroy(txn) == 0 ); t( exists(st_r.conf->db_dir, "") == 1 ); t( sp_setint(env, "scheduler.run", 0) == 1 ); /* proceed drop */ t( exists(st_r.conf->db_dir, "") == 0 ); t( sp_destroy(env) == 0 ); }
static void view_cursor_test0(void) { void *env = sp_env(); t( env != NULL ); t( sp_setstring(env, "sophia.path", st_r.conf->sophia_dir, 0) == 0 ); t( sp_setint(env, "scheduler.threads", 0) == 0 ); t( sp_setstring(env, "log.path", st_r.conf->log_dir, 0) == 0 ); t( sp_setstring(env, "db", "test", 0) == 0 ); t( sp_setstring(env, "db.test.path", st_r.conf->db_dir, 0) == 0 ); t( sp_setstring(env, "db.test.scheme", "key", 0) == 0 ); t( sp_setstring(env, "db.test.scheme.key", "u32,key(0)", 0) == 0 ); t( sp_setstring(env, "db.test.scheme", "value", 0) == 0 ); t( sp_setint(env, "db.test.sync", 0) == 0 ); void *db = sp_getobject(env, "db.test"); t( db != NULL ); t( sp_open(env) == 0 ); t( sp_setstring(env, "view", "test_view", 0) == 0 ); void *view = sp_getobject(env, "view.test_view"); t( view != NULL ); t( sp_drop(db) == 0 ); t( sp_destroy(db) == 0 ); /* unref */ t( sp_setstring(env, "db", "test2", 0) == 0 ); void *db2 = sp_getobject(env, "db.test2"); t( db2 != NULL ); t( sp_open(db2) == 0 ); void *snapcur = sp_getobject(view, "db"); void *o; while ((o = sp_get(snapcur, NULL))) { t( o == db ); } sp_destroy(snapcur); t( sp_setstring(env, "view", "test_view2", 0) == 0 ); void *view2 = sp_getobject(env, "view.test_view2"); t( view != NULL ); snapcur = sp_getobject(view2, "db"); while ((o = sp_get(snapcur, NULL))) { t( o == db2 ); } sp_destroy(snapcur); t( sp_destroy(env) == 0 ); }
static void view_db_test0(void) { void *env = sp_env(); t( env != NULL ); t( sp_setstring(env, "sophia.path", st_r.conf->sophia_dir, 0) == 0 ); t( sp_setint(env, "scheduler.threads", 0) == 0 ); t( sp_setstring(env, "log.path", st_r.conf->log_dir, 0) == 0 ); t( sp_setint(env, "log.rotate_wm", 0) == 0 ); t( sp_setint(env, "log.rotate_sync", 0) == 0 ); t( sp_setstring(env, "db", "test", 0) == 0 ); t( sp_setstring(env, "db.test.path", st_r.conf->db_dir, 0) == 0 ); t( sp_setstring(env, "db.test.index.key", "u32", 0) == 0 ); t( sp_setint(env, "db.test.sync", 0) == 0 ); void *db = sp_getobject(env, "db.test"); t( db != NULL ); t( sp_open(env) == 0 ); void *snapcur = sp_getobject(env, "db"); t( snapcur != NULL ); t( sp_drop(db) == 0 ); t( sp_destroy(db) == 0 ); /* unref */ t( sp_destroy(db) == 0 ); /* shutdown */ t( sp_setstring(env, "db", "test2", 0) == 0 ); void *db2 = sp_getobject(env, "db.test2"); t( db2 != NULL ); t( sp_open(db2) == 0 ); void *o; while ((o = sp_get(snapcur, NULL))) { t( o == db ); } sp_destroy(snapcur); snapcur = sp_getobject(env, "db"); t( snapcur != NULL ); while ((o = sp_get(snapcur, NULL))) { t( o == db2 ); } sp_destroy(snapcur); t( sp_destroy(env) == 0 ); }
jint JNICALL Java_eu_unicredit_sophia_SophiaInterface_sp_1drop (JNIEnv * env, jobject obj, jlongArray args) { jlong* array = (*env)->GetLongArrayElements(env, args,JNI_FALSE); jint size = (*env)->GetArrayLength(env, args); int ret = -1; switch(size) { case 0: printf("Not supported\n"); break; case 1: ret = sp_drop((void*)array[0]); break; default: printf("Not supported\n"); break; }; return (jint)ret; }
static void drop_test_fail_on_drop1(void) { void *env = sp_env(); t( env != NULL ); t( sp_setstring(env, "sophia.path", st_r.conf->sophia_dir, 0) == 0 ); t( sp_setint(env, "scheduler.threads", 0) == 0 ); t( sp_setstring(env, "log.path", st_r.conf->log_dir, 0) == 0 ); t( sp_setint(env, "log.sync", 0) == 0 ); t( sp_setint(env, "log.rotate_sync", 0) == 0 ); t( sp_open(env) == 0 ); t( sp_setstring(env, "db", "test", 0) == 0 ); t( sp_setstring(env, "db.test.path", st_r.conf->db_dir, 0) == 0 ); t( sp_setstring(env, "db.test.index.key", "u32", 0) == 0 ); t( sp_setint(env, "db.test.sync", 0) == 0 ); void *db = sp_getobject(env, "db.test"); t( db != NULL ); t( sp_open(db) == 0 ); sp_destroy(db); /* unref */ t( sp_drop(db) == 0); /* scheduler drop */ t( exists(st_r.conf->db_dir, "") == 1 ); t( sp_destroy(env) == 0 ); env = sp_env(); t( env != NULL ); t( sp_setstring(env, "sophia.path", st_r.conf->sophia_dir, 0) == 0 ); t( sp_setint(env, "scheduler.threads", 0) == 0 ); t( sp_setstring(env, "log.path", st_r.conf->log_dir, 0) == 0 ); t( sp_setstring(env, "db", "test", 0) == 0 ); t( sp_setstring(env, "db.test.path", st_r.conf->db_dir, 0) == 0 ); t( sp_setstring(env, "db.test.index.key", "u32", 0) == 0 ); t( sp_setint(env, "db.test.sync", 0) == 0 ); t( sp_setint(env, "log.sync", 0) == 0 ); t( sp_setint(env, "log.rotate_sync", 0) == 0 ); t( sp_setint(env, "db.test.path_fail_on_drop", 1) == 0 ); db = sp_getobject(env, "db.test"); t( db != NULL ); t( sp_open(env) == -1 ); /* fail on database dropped */ t( sp_destroy(env) == 0 ); }