From cabd1347f86a0235ab4b367b1d8a73c0be5ed170 Mon Sep 17 00:00:00 2001 From: liuxueli Date: Mon, 14 Aug 2023 20:10:05 +0800 Subject: err proc for fieldstat_get_cube_version --- include/fieldstat/fieldstat.h | 7 ++++++- src/fieldstat.c | 15 ++++++++++++--- test/test_register_and_reset.cpp | 10 +++++++++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/include/fieldstat/fieldstat.h b/include/fieldstat/fieldstat.h index 1935cdb..acf086c 100644 --- a/include/fieldstat/fieldstat.h +++ b/include/fieldstat/fieldstat.h @@ -64,7 +64,12 @@ int fieldstat_register_cube(struct fieldstat *instance, const struct fieldstat_t * @return 0 if success. -1 if cube_id is invalid. */ int fieldstat_unregister_cube(struct fieldstat *instance, int cube_id); -unsigned long fieldstat_get_cube_version(const struct fieldstat *instance, int cube_id); + +/* + * @brief get the cube_version of the cube of cube_id. + * @return cube_version if success. -1 if instance is NULL. -2 if cube_id is -1. -3 if the cube_id is invalid(never registered for even once) +*/ +long long fieldstat_get_cube_version(const struct fieldstat *instance, int cube_id); /* * @brief add a metric to the cube of cube_id. One metric may have multiple sub-metric that are associated with different cells. * @param cube_id: cube id, previously returned by fieldstat_register_cube. diff --git a/src/fieldstat.c b/src/fieldstat.c index 5d2603f..f5f2f12 100644 --- a/src/fieldstat.c +++ b/src/fieldstat.c @@ -127,12 +127,21 @@ int fieldstat_unregister_cube(struct fieldstat *instance, int cube_id) return 0; } -unsigned long fieldstat_get_cube_version(const struct fieldstat *instance, int cube_id) +long long fieldstat_get_cube_version(const struct fieldstat *instance, int cube_id) { + if (instance == NULL) { + return -1; + } + if (cube_id < 0) { + return -2; + } if (cube_id >= instance->valid_cube_arr_length) { - //printf("ERR: cube_id is out of range\n"); - return 0; + return -3; + } + if (instance->cube[cube_id] == NULL && instance->cube_version[cube_id] == 0) { + return -3; } + return instance->cube_version[cube_id]; } diff --git a/test/test_register_and_reset.cpp b/test/test_register_and_reset.cpp index 8376f97..28d65a5 100644 --- a/test/test_register_and_reset.cpp +++ b/test/test_register_and_reset.cpp @@ -28,11 +28,19 @@ TEST(test_register, delete_cube_and_version_increase) ret = fieldstat_unregister_cube(instance, cube_id); EXPECT_EQ(ret, -1); EXPECT_EQ(fieldstat_get_cube_version(instance, cube_id), 1); - EXPECT_EQ(fieldstat_get_cube_version(instance, 123), 0); fieldstat_free(instance); } +TEST(test_register, query_on_wrong_version) +{ + EXPECT_EQ(fieldstat_get_cube_version(NULL, 1), -1); + struct fieldstat *instance = fieldstat_new(); + EXPECT_EQ(fieldstat_get_cube_version(instance, 1), -3); + EXPECT_EQ(fieldstat_get_cube_version(instance, -1), -2); + fieldstat_free(instance); +} + TEST(test_register, delete_cube_and_register_and_origin_position) { struct fieldstat *instance = fieldstat_new(); -- cgit v1.2.3