1*a5db7817SDavid Vernet /* SPDX-License-Identifier: GPL-2.0 */ 2*a5db7817SDavid Vernet /* 3*a5db7817SDavid Vernet * Copyright (c) 2024 Meta Platforms, Inc. and affiliates. 4*a5db7817SDavid Vernet * Copyright (c) 2024 Tejun Heo <[email protected]> 5*a5db7817SDavid Vernet * Copyright (c) 2024 David Vernet <[email protected]> 6*a5db7817SDavid Vernet */ 7*a5db7817SDavid Vernet #include <bpf/bpf.h> 8*a5db7817SDavid Vernet #include <scx/common.h> 9*a5db7817SDavid Vernet #include "scx_test.h" 10*a5db7817SDavid Vernet 11*a5db7817SDavid Vernet static bool setup_called = false; 12*a5db7817SDavid Vernet static bool run_called = false; 13*a5db7817SDavid Vernet static bool cleanup_called = false; 14*a5db7817SDavid Vernet 15*a5db7817SDavid Vernet static int context = 10; 16*a5db7817SDavid Vernet setup(void ** ctx)17*a5db7817SDavid Vernetstatic enum scx_test_status setup(void **ctx) 18*a5db7817SDavid Vernet { 19*a5db7817SDavid Vernet setup_called = true; 20*a5db7817SDavid Vernet *ctx = &context; 21*a5db7817SDavid Vernet 22*a5db7817SDavid Vernet return SCX_TEST_PASS; 23*a5db7817SDavid Vernet } 24*a5db7817SDavid Vernet run(void * ctx)25*a5db7817SDavid Vernetstatic enum scx_test_status run(void *ctx) 26*a5db7817SDavid Vernet { 27*a5db7817SDavid Vernet int *arg = ctx; 28*a5db7817SDavid Vernet 29*a5db7817SDavid Vernet SCX_ASSERT(setup_called); 30*a5db7817SDavid Vernet SCX_ASSERT(!run_called && !cleanup_called); 31*a5db7817SDavid Vernet SCX_EQ(*arg, context); 32*a5db7817SDavid Vernet 33*a5db7817SDavid Vernet run_called = true; 34*a5db7817SDavid Vernet return SCX_TEST_PASS; 35*a5db7817SDavid Vernet } 36*a5db7817SDavid Vernet cleanup(void * ctx)37*a5db7817SDavid Vernetstatic void cleanup (void *ctx) 38*a5db7817SDavid Vernet { 39*a5db7817SDavid Vernet SCX_BUG_ON(!run_called || cleanup_called, "Wrong callbacks invoked"); 40*a5db7817SDavid Vernet } 41*a5db7817SDavid Vernet 42*a5db7817SDavid Vernet struct scx_test example = { 43*a5db7817SDavid Vernet .name = "example", 44*a5db7817SDavid Vernet .description = "Validate the basic function of the test suite itself", 45*a5db7817SDavid Vernet .setup = setup, 46*a5db7817SDavid Vernet .run = run, 47*a5db7817SDavid Vernet .cleanup = cleanup, 48*a5db7817SDavid Vernet }; 49*a5db7817SDavid Vernet REGISTER_SCX_TEST(&example) 50