Hi Christian,
On Thu, Oct 30, 2025 at 04:49:48PM +0000, Christian Loehle wrote:
> On 10/29/25 19:08, Andrea Righi wrote:
> > Add a selftest to validate the correct behavior of the deadline server
> > for the ext_sched_class.
> >
> > v3: - add a comment to explain the 4% threshold (Emil Tsalapatis)
> > v2: - replaced occurences of CFS in the test with EXT (Joel Fernandes)
> >
> > Reviewed-by: Emil Tsalapatis <[email protected]>
> > Co-developed-by: Joel Fernandes <[email protected]>
> > Signed-off-by: Joel Fernandes <[email protected]>
> > Signed-off-by: Andrea Righi <[email protected]>
> > ---
...
> I'd still prefer something like the below to also test if the
> fair_server stop -> ext_server start -> fair_server start -> ext_server stop
> flow works correctly, but FWIW
> Tested-by: Christian Loehle <[email protected]>
Ack, I'll also run some tests on my side with this applied.
And yes, this definitely improves the selftest. I think we can also apply
it as a follow-up patch later.
Thanks,
-Andrea
>
>
> ------8<------
> @@ -188,19 +188,24 @@ static bool sched_stress_test(void)
> static enum scx_test_status run(void *ctx)
> {
> struct rt_stall *skel = ctx;
> - struct bpf_link *link;
> + struct bpf_link *link = NULL;
> bool res;
>
> - link = bpf_map__attach_struct_ops(skel->maps.rt_stall_ops);
> - SCX_FAIL_IF(!link, "Failed to attach scheduler");
> -
> - res = sched_stress_test();
> -
> - SCX_EQ(skel->data->uei.kind, EXIT_KIND(SCX_EXIT_NONE));
> - bpf_link__destroy(link);
> -
> - if (!res)
> - ksft_exit_fail();
> + for (int i = 0; i < 4; i++) {
> + if (i % 2) {
> + memset(&skel->data->uei, 0, sizeof(skel->data->uei));
> + link =
> bpf_map__attach_struct_ops(skel->maps.rt_stall_ops);
> + SCX_FAIL_IF(!link, "Failed to attach scheduler");
> + }
> + res = sched_stress_test();
> + if (i % 2) {
> + SCX_EQ(skel->data->uei.kind,
> EXIT_KIND(SCX_EXIT_NONE));
> + bpf_link__destroy(link);
> + }
> +
> + if (!res)
> + ksft_exit_fail();
> + }
>
> return SCX_TEST_PASS;
> }
>