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 Vernet static 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 Vernet static 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 Vernet static 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