stoe/test/jobs.lisp

48 lines
1.1 KiB
Common Lisp

#|
This file is a part of stoe project.
Copyright (c) 2015 Renaud Casenave-Péré (renaud@casenave-pere.fr)
|#
(uiop:define-package :stoe/test/jobs
(:use :cl :prove
:stoe/core/containers
:stoe/core/thread
:stoe/core/jobs
:stoe/test/job-utils))
(in-package :stoe/test/jobs)
(stoe/core/jobs::initialize)
(defun counter (x)
(dotimes (i 10 x)
(format t "x ~a~%" x)
(incf x)))
(plan 3)
(with-new-job-thread 1
(async-job () (counter 0))
(sleep 1)
(async-job () (counter 0))
(sleep 1)
(async-job () (counter 0))
(sleep 1))
(is (size stoe/core/jobs::*job-queue*) 0 "1 thread, 3 jobs, 1 at a time.")
(async-job () (counter 0))
(async-job () (counter 0))
(async-job () (counter 0))
(with-new-job-thread 1
(sleep 1))
(is (size stoe/core/jobs::*job-queue*) 0 "1 thread, 3 jobs, all at once.")
(with-new-job-thread 3
(async-job () (counter 0))
(async-job () (counter 0))
(async-job () (counter 0))
(sleep 1))
(is (size stoe/core/jobs::*job-queue*) 0 "3 threads, 3 jobs, all at once.")
(finalize)
(stoe/core/jobs::finalize)