summaryrefslogtreecommitdiffstats
path: root/src/vppinfra/vector/test/test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vppinfra/vector/test/test.c')
-rw-r--r--src/vppinfra/vector/test/test.c249
1 files changed, 0 insertions, 249 deletions
diff --git a/src/vppinfra/vector/test/test.c b/src/vppinfra/vector/test/test.c
deleted file mode 100644
index dc5651c47cc..00000000000
--- a/src/vppinfra/vector/test/test.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/* SPDX-License-Identifier: Apache-2.0
- * Copyright(c) 2021 Cisco Systems, Inc.
- */
-
-#include <vppinfra/format.h>
-#include <vppinfra/vector/test/test.h>
-#include <vppinfra/error.h>
-
-test_main_t test_main;
-
-int
-test_march_supported (clib_march_variant_type_t type)
-{
-#define _(s, n) \
- if (CLIB_MARCH_VARIANT_TYPE_##s == type) \
- return clib_cpu_march_priority_##s ();
- foreach_march_variant
-#undef _
- return 0;
-}
-
-clib_error_t *
-test_funct (test_main_t *tm)
-{
- for (int i = 0; i < CLIB_MARCH_TYPE_N_VARIANTS; i++)
- {
- test_registration_t *r = tm->registrations[i];
-
- if (r == 0 || test_march_supported (i) < 0)
- continue;
-
- fformat (stdout, "\nMultiarch Variant: %U\n", format_march_variant, i);
- fformat (stdout,
- "-------------------------------------------------------\n");
- while (r)
- {
- clib_error_t *err;
- if (tm->filter && strstr (r->name, (char *) tm->filter) == 0)
- goto next;
- err = (r->fn) (0);
- fformat (stdout, "%-50s %s\n", r->name, err ? "FAIL" : "PASS");
- if (err)
- {
- clib_error_report (err);
- fformat (stdout, "\n");
- }
- next:
- r = r->next;
- }
- }
-
- fformat (stdout, "\n");
- return 0;
-}
-
-#if 0
-static u8 *
-format_test_perf_bundle_core_power (u8 *s, va_list *args)
-{
- test_perf_event_bundle_t __clib_unused *b =
- va_arg (*args, test_perf_event_bundle_t *);
- test_perf_t __clib_unused *tp = va_arg (*args, test_perf_t *);
- u64 *data = va_arg (*args, u64 *);
-
- if (data)
- s = format (s, "%7.1f %%", (f64) 100 * data[1] / data[0]);
- else
- s = format (s, "%9s", "Level 0");
-
- if (data)
- s = format (s, "%8.1f %%", (f64) 100 * data[2] / data[0]);
- else
- s = format (s, "%9s", "Level 1");
-
- if (data)
- s = format (s, "%7.1f %%", (f64) 100 * data[3] / data[0]);
- else
- s = format (s, "%9s", "Level 2");
-
- return s;
-}
-
-#ifdef __x86_64__
-#define PERF_INTEL_CODE(event, umask) ((event) | (umask) << 8)
- ,
- {
- .name = "core-power",
- .desc =
- "Core cycles where the core was running under specific turbo schedule.",
- .type = PERF_TYPE_RAW,
- .config[0] = PERF_INTEL_CODE (0x3c, 0x00),
- .config[1] = PERF_INTEL_CODE (0x28, 0x07),
- .config[2] = PERF_INTEL_CODE (0x28, 0x18),
- .config[3] = PERF_INTEL_CODE (0x28, 0x20),
- .config[4] = PERF_INTEL_CODE (0x28, 0x40),
- .n_events = 5,
- .format_fn = format_test_perf_bundle_core_power,
- }
-#endif
-};
-#endif
-
-#ifdef __linux__
-clib_error_t *
-test_perf (test_main_t *tm)
-{
- clib_error_t *err = 0;
- clib_perfmon_ctx_t _ctx, *ctx = &_ctx;
-
- if ((err = clib_perfmon_init_by_bundle_name (
- ctx, "%s", tm->bundle ? (char *) tm->bundle : "default")))
- return err;
-
- fformat (stdout, "Warming up...\n");
- clib_perfmon_warmup (ctx);
-
- for (int i = 0; i < CLIB_MARCH_TYPE_N_VARIANTS; i++)
- {
- test_registration_t *r = tm->registrations[i];
-
- if (r == 0 || test_march_supported (i) < 0)
- continue;
-
- fformat (stdout, "\nMultiarch Variant: %U\n", format_march_variant, i);
- fformat (stdout,
- "-------------------------------------------------------\n");
- while (r)
- {
- if (r->perf_tests)
- {
- test_perf_t *pt = r->perf_tests;
- if (tm->filter && strstr (r->name, (char *) tm->filter) == 0)
- goto next;
-
- clib_perfmon_capture_group (ctx, "%s", r->name);
- do
- {
- for (int i = 0; i < tm->repeat; i++)
- {
- pt->fd = ctx->group_fd;
- clib_perfmon_reset (ctx);
- pt->fn (pt);
- clib_perfmon_capture (ctx, pt->n_ops, "%0s", pt->name);
- }
- }
- while ((++pt)->fn);
- }
- next:
- r = r->next;
- }
- fformat (stdout, "%U\n", format_perfmon_bundle, ctx);
- clib_perfmon_clear (ctx);
- }
-
- clib_perfmon_free (ctx);
- return err;
-}
-#endif
-
-int
-main (int argc, char *argv[])
-{
- test_main_t *tm = &test_main;
- unformat_input_t _i = {}, *i = &_i;
- clib_mem_init (0, 64ULL << 20);
- clib_error_t *err;
- int perf = 0;
-
- /* defaults */
- tm->repeat = 3;
-
- unformat_init_command_line (i, argv);
-
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "perf"))
- perf = 1;
- else if (unformat (i, "filter %s", &tm->filter))
- ;
- else if (unformat (i, "bundle %s", &tm->bundle))
- ;
- else if (unformat (i, "repeat %d", &tm->repeat))
- ;
- else
- {
- clib_warning ("unknown input '%U'", format_unformat_error, i);
- exit (1);
- }
- }
-
- if (perf)
- err = test_perf (tm);
- else
- err = test_funct (tm);
-
- if (err)
- {
- clib_error_report (err);
- fformat (stderr, "\n");
- return 1;
- }
- return 0;
-}
-
-void *
-test_mem_alloc (uword size)
-{
- void *rv;
- size = round_pow2 (size, CLIB_CACHE_LINE_BYTES);
- rv = clib_mem_alloc_aligned (size, CLIB_CACHE_LINE_BYTES);
- clib_memset_u8 (rv, 0, size);
- return rv;
-}
-
-void *
-test_mem_alloc_and_fill_inc_u8 (uword size, u8 start, u8 mask)
-{
- u8 *rv;
- mask = mask ? mask : 0xff;
- size = round_pow2 (size, CLIB_CACHE_LINE_BYTES);
- rv = clib_mem_alloc_aligned (size, CLIB_CACHE_LINE_BYTES);
- for (uword i = 0; i < size; i++)
- rv[i] = ((u8) i + start) & mask;
- return rv;
-}
-
-void *
-test_mem_alloc_and_splat (uword elt_size, uword n_elts, void *elt)
-{
- u8 *rv, *e;
- uword data_size = elt_size * n_elts;
- uword alloc_size = round_pow2 (data_size, CLIB_CACHE_LINE_BYTES);
- e = rv = clib_mem_alloc_aligned (alloc_size, CLIB_CACHE_LINE_BYTES);
- while (e - rv < data_size)
- {
- clib_memcpy_fast (e, elt, elt_size);
- e += elt_size;
- }
-
- if (data_size < alloc_size)
- clib_memset_u8 (e, 0, alloc_size - data_size);
- return rv;
-}
-
-void
-test_mem_free (void *p)
-{
- clib_mem_free (p);
-}