LightBDD icon indicating copy to clipboard operation
LightBDD copied to clipboard

Implement configurable scenario execution scheduler

Open Suremaker opened this issue 1 year ago • 1 comments

Description

Implement scenario execution scheduler with support for:

  • asynchronous test execution (i.e. starting the next scenario when the current one is blocked on await),
  • parallelization support by scheduling scenario execution on the thread pool, enabling non-async scenarios to execute in parallel),
  • controlling max concurrent scenario tasks that are executed at the same time (defaulting to Environment.ProcessorCount),
  • execution prioritization (High, Normal, Low) impacting the execution order,
  • execution model, being thread pool (default), dedicated single thread, and further options to customize (to enable UI test run),
  • constraint/isolation model, supporting concurrent execution and exclusive execution

Features

  • [x] Asynchronous test execution,
  • [x] Execution model: Thread pool parallelization,
  • [x] Concurrency limits,
  • [x] Execution prioritization,
  • [x] Execution model: Dedicated single thread
  • [ ] Execution model: extensions
  • [x] Isolation model: concurrent execution
  • [x] Isolation model: exclusive execution

Suremaker avatar Aug 23 '23 14:08 Suremaker

Note: consider implementing another constraint attribute, similar to IScenarioExecutionSchedulerAttribute but in the namespace of IScenarioRequireExclusiveRunAttribute, that would allow further customizable constraining of the scenario execution, allowing for example additional throttling of the annotated tests

Suremaker avatar Sep 09 '23 20:09 Suremaker