Skip to content
  • Emma Anholt's avatar
    ci: Use cts_runner for our dEQP runs. · f08c8100
    Emma Anholt authored
    This runner is a little project by Bas, written in C++, that spawns
    threads that then loop grabbing chunks of the (randomly shuffled but
    consistently so) test list and hand it to a dEQP instance.  As the
    remaining list gets shorter, so do the chunks, so hopefully the
    threads all complete effectively at once.  It also handles restarting
    after crashes automatically.  I've extended the runner a bit to do
    what I was doing in the bash scripts before, like the skip list and
    expected failures handling.  This project should also be a good
    baseline for extending to handle retesting of intermittent failures.
    
    By switching to it, we can have the swrast tests just take up one job
    slot on the shared runners and keep their allotment of CPUs busy,
    instead of taking up job slots with single-threaded dEQP jobs.  It
    will also let us (eventually, once I reprovision) switch the freedreno
    runners over to threading within the job instead of running concurrent
    jobs, so that memory scribbles in one pipeline don't affect unrelated
    pipelines, and I can experiment with their parallelism (particularly
    on a306 where we are frequently backed up) without trashing other
    people's jobs.
    
    What we lose in this process is per-test output in the log (not a big
    loss, I think, since we summarize fails at the end and reducing log
    length keeps chrome from choking on our logs so badly).  We also drop
    the renderer sanity checking, since it's not saving qpa files for us
    to go poke through.  Given that all the drivers involved have fail
    lists, if we got the wrong renderer somehow, we'd get a job failure
    anyway.
    
    v2: Rebase on droppong of the autoscale cluster and the arm64
        build/test split.  Use a script to deduplicate the cts-runner
        build.
    v3: Rebase on the amd64 build/test container split.
    
    Acked-by: Daniel Stone <daniels@collabora.com> (v1)
    Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> (v2)
    f08c8100