Commit 8fb12355 authored by Piotr Pelplinski's avatar Piotr Pelplinski Committed by Jim Harris
Browse files

histograms: add unit tests for histogram merge



Signed-off-by: default avatarPiotr 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: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent a3f7d8aa
Loading
Loading
Loading
Loading
+31 −5
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ uint64_t g_values[] = {

uint64_t *g_values_end = &g_values[SPDK_COUNTOF(g_values)];
uint64_t g_total;
uint64_t g_number_of_merged_histograms;

static void
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.
		 */
		CU_ASSERT(**values <= end);
		g_total++;
		count--;
		g_total += g_number_of_merged_histograms;
		count -= g_number_of_merged_histograms;
		(*values)++;
		if (*values == g_values_end || **values > end) {
			break;
		}
	}

	CU_ASSERT(count == 0);
}

@@ -97,13 +97,38 @@ histogram_test(void)
	for (i = 0; i < SPDK_COUNTOF(g_values); i++) {
		spdk_histogram_data_tally(h, g_values[i]);
	}

	g_total = 0;
	g_number_of_merged_histograms = 1;
	spdk_histogram_data_iterate(h, check_values, &values);

	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
main(int argc, char **argv)
{
@@ -121,7 +146,8 @@ main(int argc, char **argv)
	}

	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();
		return CU_get_error();