Currently viewing every function pages results in a front-end wikilambda_perform_test request, which runs tests of every combinations of implementations (connected or not) on every tests (connected or not). I have summerized the issues several months before:
Proposed:
- Introduce a cache system to persistently cache the result of a test (i.e. test ID, test revision ID, implementation ID and implementation revision ID).
- Introduce a job system so requests to run the test can be deduplicated. Running the jobs in the job system should not have rate limit itself based on user (i.e. if we want to prevent job system from being misused, we should limit sending of jobs instead of running, and the limit should be large enough so that it can not be hit by viewing one single function page). Currently wikilambda_perform_test request is affected by rate limit.
- wikilambda_perform_test be changed to only send jobs to the job system, and read the (previous, not current) result from cache.
- When viewing a function page, there should be indications that test results may not be instantaneous and may be outdated. Potentially we can provide a button to refresh the test result (of course it should not run tests synchronously either).