histograms: add unit tests for histogram merge
Signed-off-by: Piotr Pelplinski <piotr.pelplinski@intel.com> Change-Id: I36eed5fdd593eb3df15859a3e29c600be0913899 Reviewed-on: https://review.gerrithub.io/432559 Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
a3f7d8aa4d
commit
8fb123553a
@ -47,6 +47,7 @@ uint64_t g_values[] = {
|
|||||||
|
|
||||||
uint64_t *g_values_end = &g_values[SPDK_COUNTOF(g_values)];
|
uint64_t *g_values_end = &g_values[SPDK_COUNTOF(g_values)];
|
||||||
uint64_t g_total;
|
uint64_t g_total;
|
||||||
|
uint64_t g_number_of_merged_histograms;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
check_values(void *ctx, uint64_t start, uint64_t end, uint64_t count,
|
check_values(void *ctx, uint64_t start, uint64_t end, uint64_t count,
|
||||||
@ -74,14 +75,13 @@ check_values(void *ctx, uint64_t start, uint64_t end, uint64_t count,
|
|||||||
* **values to equal end.
|
* **values to equal end.
|
||||||
*/
|
*/
|
||||||
CU_ASSERT(**values <= end);
|
CU_ASSERT(**values <= end);
|
||||||
g_total++;
|
g_total += g_number_of_merged_histograms;
|
||||||
count--;
|
count -= g_number_of_merged_histograms;
|
||||||
(*values)++;
|
(*values)++;
|
||||||
if (*values == g_values_end || **values > end) {
|
if (*values == g_values_end || **values > end) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CU_ASSERT(count == 0);
|
CU_ASSERT(count == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,13 +97,38 @@ histogram_test(void)
|
|||||||
for (i = 0; i < SPDK_COUNTOF(g_values); i++) {
|
for (i = 0; i < SPDK_COUNTOF(g_values); i++) {
|
||||||
spdk_histogram_data_tally(h, g_values[i]);
|
spdk_histogram_data_tally(h, g_values[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_total = 0;
|
g_total = 0;
|
||||||
|
g_number_of_merged_histograms = 1;
|
||||||
spdk_histogram_data_iterate(h, check_values, &values);
|
spdk_histogram_data_iterate(h, check_values, &values);
|
||||||
|
|
||||||
spdk_histogram_data_free(h);
|
spdk_histogram_data_free(h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
histogram_merge(void)
|
||||||
|
{
|
||||||
|
struct spdk_histogram_data *h1, *h2;
|
||||||
|
uint64_t *values = g_values;
|
||||||
|
uint32_t i;
|
||||||
|
|
||||||
|
h1 = spdk_histogram_data_alloc();
|
||||||
|
h2 = spdk_histogram_data_alloc();
|
||||||
|
|
||||||
|
for (i = 0; i < SPDK_COUNTOF(g_values); i++) {
|
||||||
|
spdk_histogram_data_tally(h1, g_values[i]);
|
||||||
|
spdk_histogram_data_tally(h2, g_values[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
spdk_histogram_data_merge(h1, h2);
|
||||||
|
|
||||||
|
g_total = 0;
|
||||||
|
g_number_of_merged_histograms = 2;
|
||||||
|
spdk_histogram_data_iterate(h1, check_values, &values);
|
||||||
|
|
||||||
|
spdk_histogram_data_free(h1);
|
||||||
|
spdk_histogram_data_free(h2);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -121,7 +146,8 @@ main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
CU_add_test(suite, "histogram_test", histogram_test) == NULL
|
CU_add_test(suite, "histogram_test", histogram_test) == NULL ||
|
||||||
|
CU_add_test(suite, "histogram_merge", histogram_merge) == NULL
|
||||||
) {
|
) {
|
||||||
CU_cleanup_registry();
|
CU_cleanup_registry();
|
||||||
return CU_get_error();
|
return CU_get_error();
|
||||||
|
Loading…
Reference in New Issue
Block a user