def METHOD_NAME():
    seq_steps = []
    n_jobs = 10
    jobs = [DummyJob(name=f"job_{i}", duration_secs=0.5, result=i, steps=seq_steps, verbose=True)
            for i in range(n_jobs)]
    runner = SimpleJobRunner(jobs)
    with Timeout(timeout_secs=2, on_timeout=runner.stop):
        results = runner.start()
    print(results)
    assert len(results) < n_jobs
    assert len(seq_steps) < n_jobs * steps_per_job
    cancelled_jobs = [j for j, s in seq_steps if s == 'cancelling']
    assert len(cancelled_jobs) > 1
    first_cancelled = cancelled_jobs[0]
    first_cancelled_idx = int(first_cancelled.split('_')[1])
    last_result = results[-1]
    assert last_result.name == first_cancelled
    assert last_result.result is None
    assert last_result.duration > 0
    assert cancelled_jobs == [f"job_{i}" for i in range(first_cancelled_idx, n_jobs)]
    for state in ['created', 'stopping', 'stopped']:
        assert len(list(filter(lambda s: s[1] == state, seq_steps))) == n_jobs
    assert len(list(filter(lambda s: s[1] == 'starting', seq_steps))) == len(results)
    assert len(list(filter(lambda s: s[1] == 'completing', seq_steps))) + len(cancelled_jobs) == n_jobs