void test_class_db_value(void) { char* text = NULL; const char* enum_text = NULL; int ret; db_type_int32_t int32; db_type_uint32_t uint32; db_type_int64_t int64; db_type_uint64_t uint64; CU_ASSERT_PTR_NOT_NULL_FATAL((value2 = db_value_new())); CU_ASSERT_PTR_NOT_NULL_FATAL((value = db_value_new())); CU_ASSERT(!db_value_from_text(value, "test")); CU_ASSERT(db_value_type(value) == DB_TYPE_TEXT); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_text(value)); CU_ASSERT(!strcmp(db_value_text(value), "test")); CU_ASSERT(!db_value_to_text(value, &text)); CU_ASSERT_PTR_NOT_NULL(text); free(text); text = NULL; CU_ASSERT(!db_value_not_empty(value)); CU_ASSERT(!db_value_copy(value2, value)); CU_ASSERT(db_value_type(value2) == DB_TYPE_TEXT); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_text(value2)); CU_ASSERT(!strcmp(db_value_text(value2), "test")); CU_ASSERT(!db_value_cmp(value, value2, &ret)); CU_ASSERT(!ret); CU_ASSERT(!db_value_set_primary_key(value)); CU_ASSERT(db_value_primary_key(value)); db_value_reset(value); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_from_int32(value, -12345)); CU_ASSERT(db_value_type(value) == DB_TYPE_INT32); CU_ASSERT(!db_value_to_int32(value, &int32)); CU_ASSERT(int32 == -12345); CU_ASSERT(!db_value_not_empty(value)); db_value_reset(value2); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_copy(value2, value)); CU_ASSERT(db_value_type(value2) == DB_TYPE_INT32); CU_ASSERT(!db_value_to_int32(value2, &int32)); CU_ASSERT(int32 == -12345); CU_ASSERT(!db_value_cmp(value, value2, &ret)); CU_ASSERT(!ret); CU_ASSERT(!db_value_set_primary_key(value)); CU_ASSERT(db_value_primary_key(value)); db_value_reset(value); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_from_uint32(value, 12345)); CU_ASSERT(db_value_type(value) == DB_TYPE_UINT32); CU_ASSERT(!db_value_to_uint32(value, &uint32)); CU_ASSERT(uint32 == 12345); CU_ASSERT(!db_value_not_empty(value)); db_value_reset(value2); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_copy(value2, value)); CU_ASSERT(db_value_type(value2) == DB_TYPE_UINT32); CU_ASSERT(!db_value_to_uint32(value2, &uint32)); CU_ASSERT(uint32 == 12345); CU_ASSERT(!db_value_cmp(value, value2, &ret)); CU_ASSERT(!ret); CU_ASSERT(!db_value_set_primary_key(value)); CU_ASSERT(db_value_primary_key(value)); db_value_reset(value); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_from_int64(value, -9223372036854775800)); CU_ASSERT(db_value_type(value) == DB_TYPE_INT64); CU_ASSERT(!db_value_to_int64(value, &int64)); CU_ASSERT(int64 == -9223372036854775800); CU_ASSERT(!db_value_not_empty(value)); db_value_reset(value2); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_copy(value2, value)); CU_ASSERT(db_value_type(value2) == DB_TYPE_INT64); CU_ASSERT(!db_value_to_int64(value2, &int64)); CU_ASSERT(int64 == -9223372036854775800); CU_ASSERT(!db_value_cmp(value, value2, &ret)); CU_ASSERT(!ret); CU_ASSERT(!db_value_set_primary_key(value)); CU_ASSERT(db_value_primary_key(value)); db_value_reset(value); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_from_uint64(value, 17446744073709551615UL)); CU_ASSERT(db_value_type(value) == DB_TYPE_UINT64); CU_ASSERT(!db_value_to_uint64(value, &uint64)); CU_ASSERT(uint64 == 17446744073709551615UL); CU_ASSERT(!db_value_not_empty(value)); db_value_reset(value2); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_copy(value2, value)); CU_ASSERT(db_value_type(value2) == DB_TYPE_UINT64); CU_ASSERT(!db_value_to_uint64(value2, &uint64)); CU_ASSERT(uint64 == 17446744073709551615UL); CU_ASSERT(!db_value_cmp(value, value2, &ret)); CU_ASSERT(!ret); CU_ASSERT(!db_value_set_primary_key(value)); CU_ASSERT(db_value_primary_key(value)); db_value_reset(value); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_from_enum_value(value, 2, enum_set)); CU_ASSERT(db_value_type(value) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value, &ret)); CU_ASSERT(ret == 2); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value)); CU_ASSERT(!strcmp(db_value_enum_text(value), "enum2")); CU_ASSERT(!db_value_to_enum_value(value, &ret, enum_set)); CU_ASSERT(ret == 2); CU_ASSERT(!db_value_to_enum_text(value, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum2")); enum_text = NULL; CU_ASSERT(!db_value_not_empty(value)); db_value_reset(value2); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_copy(value2, value)); CU_ASSERT(db_value_type(value2) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value2, &ret)); CU_ASSERT(ret == 2); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value2)); CU_ASSERT(!strcmp(db_value_enum_text(value2), "enum2")); CU_ASSERT(!db_value_to_enum_value(value2, &ret, enum_set)); CU_ASSERT(ret == 2); CU_ASSERT(!db_value_to_enum_text(value2, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum2")); enum_text = NULL; CU_ASSERT(!db_value_cmp(value, value2, &ret)); CU_ASSERT(!ret); CU_ASSERT(db_value_set_primary_key(value)); CU_ASSERT(!db_value_primary_key(value)); db_value_reset(value); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_from_enum_text(value, "enum2", enum_set)); CU_ASSERT(db_value_type(value) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value, &ret)); CU_ASSERT(ret == 2); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value)); CU_ASSERT(!strcmp(db_value_enum_text(value), "enum2")); CU_ASSERT(!db_value_to_enum_value(value, &ret, enum_set)); CU_ASSERT(ret == 2); CU_ASSERT(!db_value_to_enum_text(value, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum2")); enum_text = NULL; CU_ASSERT(!db_value_not_empty(value)); db_value_reset(value2); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_copy(value2, value)); CU_ASSERT(db_value_type(value2) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value2, &ret)); CU_ASSERT(ret == 2); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value2)); CU_ASSERT(!strcmp(db_value_enum_text(value2), "enum2")); CU_ASSERT(!db_value_to_enum_value(value2, &ret, enum_set)); CU_ASSERT(ret == 2); CU_ASSERT(!db_value_to_enum_text(value2, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum2")); enum_text = NULL; CU_ASSERT(!db_value_cmp(value, value2, &ret)); CU_ASSERT(!ret); CU_ASSERT(db_value_set_primary_key(value)); CU_ASSERT(!db_value_primary_key(value)); db_value_reset(value); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_from_enum_value(value, 3, enum_set)); CU_ASSERT(db_value_type(value) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value, &ret)); CU_ASSERT(ret == 3); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value)); CU_ASSERT(!strcmp(db_value_enum_text(value), "enum3")); CU_ASSERT(!db_value_to_enum_value(value, &ret, enum_set)); CU_ASSERT(ret == 3); CU_ASSERT(!db_value_to_enum_text(value, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum3")); enum_text = NULL; CU_ASSERT(!db_value_not_empty(value)); db_value_reset(value2); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_copy(value2, value)); CU_ASSERT(db_value_type(value2) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value2, &ret)); CU_ASSERT(ret == 3); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value2)); CU_ASSERT(!strcmp(db_value_enum_text(value2), "enum3")); CU_ASSERT(!db_value_to_enum_value(value2, &ret, enum_set)); CU_ASSERT(ret == 3); CU_ASSERT(!db_value_to_enum_text(value2, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum3")); enum_text = NULL; CU_ASSERT(!db_value_cmp(value, value2, &ret)); CU_ASSERT(!ret); CU_ASSERT(db_value_set_primary_key(value)); CU_ASSERT(!db_value_primary_key(value)); db_value_reset(value); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_from_enum_text(value, "enum3", enum_set)); CU_ASSERT(db_value_type(value) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value, &ret)); CU_ASSERT(ret == 3); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value)); CU_ASSERT(!strcmp(db_value_enum_text(value), "enum3")); CU_ASSERT(!db_value_to_enum_value(value, &ret, enum_set)); CU_ASSERT(ret == 3); CU_ASSERT(!db_value_to_enum_text(value, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum3")); enum_text = NULL; CU_ASSERT(!db_value_not_empty(value)); db_value_reset(value2); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_copy(value2, value)); CU_ASSERT(db_value_type(value2) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value2, &ret)); CU_ASSERT(ret == 3); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value2)); CU_ASSERT(!strcmp(db_value_enum_text(value2), "enum3")); CU_ASSERT(!db_value_to_enum_value(value2, &ret, enum_set)); CU_ASSERT(ret == 3); CU_ASSERT(!db_value_to_enum_text(value2, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum3")); enum_text = NULL; CU_ASSERT(!db_value_cmp(value, value2, &ret)); CU_ASSERT(!ret); CU_ASSERT(db_value_set_primary_key(value)); CU_ASSERT(!db_value_primary_key(value)); db_value_reset(value); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_from_enum_value(value, 1, enum_set)); CU_ASSERT(db_value_type(value) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value, &ret)); CU_ASSERT(ret == 1); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value)); CU_ASSERT(!strcmp(db_value_enum_text(value), "enum1")); CU_ASSERT(!db_value_to_enum_value(value, &ret, enum_set)); CU_ASSERT(ret == 1); CU_ASSERT(!db_value_to_enum_text(value, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum1")); enum_text = NULL; CU_ASSERT(!db_value_not_empty(value)); db_value_reset(value2); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_copy(value2, value)); CU_ASSERT(db_value_type(value2) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value2, &ret)); CU_ASSERT(ret == 1); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value2)); CU_ASSERT(!strcmp(db_value_enum_text(value2), "enum1")); CU_ASSERT(!db_value_to_enum_value(value2, &ret, enum_set)); CU_ASSERT(ret == 1); CU_ASSERT(!db_value_to_enum_text(value2, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum1")); enum_text = NULL; CU_ASSERT(!db_value_cmp(value, value2, &ret)); CU_ASSERT(!ret); CU_ASSERT(db_value_set_primary_key(value)); CU_ASSERT(!db_value_primary_key(value)); db_value_reset(value); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_from_enum_text(value, "enum1", enum_set)); CU_ASSERT(db_value_type(value) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value, &ret)); CU_ASSERT(ret == 1); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value)); CU_ASSERT(!strcmp(db_value_enum_text(value), "enum1")); CU_ASSERT(!db_value_to_enum_value(value, &ret, enum_set)); CU_ASSERT(ret == 1); CU_ASSERT(!db_value_to_enum_text(value, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum1")); enum_text = NULL; CU_ASSERT(!db_value_not_empty(value)); db_value_reset(value2); CU_PASS("db_value_reset"); CU_ASSERT(!db_value_copy(value2, value)); CU_ASSERT(db_value_type(value2) == DB_TYPE_ENUM); CU_ASSERT(!db_value_enum_value(value2, &ret)); CU_ASSERT(ret == 1); CU_ASSERT_PTR_NOT_NULL_FATAL(db_value_enum_text(value2)); CU_ASSERT(!strcmp(db_value_enum_text(value2), "enum1")); CU_ASSERT(!db_value_to_enum_value(value2, &ret, enum_set)); CU_ASSERT(ret == 1); CU_ASSERT(!db_value_to_enum_text(value2, &enum_text, enum_set)); CU_ASSERT_PTR_NOT_NULL_FATAL(enum_text); CU_ASSERT(!strcmp(enum_text, "enum1")); enum_text = NULL; CU_ASSERT(!db_value_cmp(value, value2, &ret)); CU_ASSERT(!ret); CU_ASSERT(db_value_set_primary_key(value)); CU_ASSERT(!db_value_primary_key(value)); db_value_free(value); value = NULL; CU_PASS("db_value_free"); db_value_free(value2); value2 = NULL; CU_PASS("db_value_free"); }
static int perform_keystate_list(int sockfd, db_connection_t *dbconn, const char* filterZone, char** filterKeytype, char** filterKeystate, void (printheader)(int sockfd), void (printkey)(int sockfd, zone_t* zone, key_data_t* key, char*tchange, hsm_key_t* hsmKey)) { key_data_list_t* key_list; key_data_t* key; zone_t *zone = NULL; char* tchange; hsm_key_t *hsmkey; int cmp; int i, skipPrintKey; if (!(key_list = key_data_list_new_get(dbconn))) { client_printf_err(sockfd, "Unable to get list of keys, memory " "allocation or database error!\n"); return 1; } if (printheader) { (*printheader)(sockfd); } while ((key = key_data_list_get_next(key_list))) { /* only refetches zone if different from previous */ if (zone && (db_value_cmp(zone_id(zone), key_data_zone_id(key), &cmp) || cmp)) { zone_free(zone); zone = NULL; } if (!zone) { zone = key_data_get_zone(key); } hsmkey = key_data_get_hsm_key(key); key_data_cache_key_states(key); tchange = map_keytime(zone, key); /* allocs */ skipPrintKey = 0; if(printkey == NULL) skipPrintKey = 1; if(filterZone != NULL && strcmp(zone_name(zone), filterZone)) skipPrintKey = 1; for(i=0; filterKeytype && filterKeytype[i]; i++) if(!strcasecmp(filterKeytype[i],key_data_role_text(key))) break; if(filterKeytype && filterKeytype[i] == NULL) skipPrintKey = 1; for(i=0; filterKeystate && filterKeystate[i]; i++) if(!strcasecmp(filterKeystate[i],map_keystate(key))) break; if(filterKeystate && filterKeystate[i] == NULL) skipPrintKey = 1; if (!skipPrintKey) { (*printkey)(sockfd, zone, key, tchange, hsmkey); } free(tchange); hsm_key_free(hsmkey); key_data_free(key); } zone_free(zone); key_data_list_free(key_list); return 0; }