Something went wrong on our end
Select Git revision
queue_test.go
-
Volker Schukai authoredVolker Schukai authored
queue_test.go 9.40 KiB
package jobqueue
import (
"errors"
"fmt"
"math/rand"
"testing"
"time"
)
func TestEnqueueJobAlreadyExists(t *testing.T) {
runner := &DummyRunnable{}
job := NewJob[DummyResult](JobID("1"), runner)
q := NewQueue(nil)
_ = q.Enqueue(job)
err := q.Enqueue(job)
if err != ErrJobAlreadyExists {
t.Fatalf("Expected ErrJobAlreadyExists, got %v", err)
}
}
func TestEnqueueAndDequeue(t *testing.T) {
runner := &DummyRunnable{}
q := NewQueue(nil)
job1 := NewJob[DummyResult](JobID("1"), runner)
job1.SetPriority(PriorityHigh)
job2 := NewJob[DummyResult](JobID("2"), runner)
_ = q.Enqueue(job1)
_ = q.Enqueue(job2)
dequeuedJob, err := q.Dequeue()
if err != nil || dequeuedJob.GetID() != JobID("1") {
t.Fatalf("Unexpected dequeue result: jobID %s, err %v", dequeuedJob.GetID(), err)
}
}
func TestEnqueueAndDequeue2(t *testing.T) {
runner := &DummyRunnable{}
q := NewQueue(nil)
job1 := NewJob[DummyResult](JobID("1"), runner)
job2 := NewJob[DummyResult](JobID("2"), runner)
job2.AddDependency(JobID("1"))
_ = q.Enqueue(job1)
_ = q.Enqueue(job2)
dequeuedJob, err := q.Dequeue()
if err != nil {
t.Fatalf("Unexpected error: %v", err)
}
if dequeuedJob.GetID() != JobID("1") {
t.Fatalf("Unexpected dequeue result: jobID %s", dequeuedJob.GetID())
}
}
func TestDependencyResolution(t *testing.T) {
runner := &DummyRunnable{}
q := NewQueue(nil)
job1 := NewJob[DummyResult](JobID("1"), runner)
job2 := NewJob[DummyResult](JobID("2"), runner)
job3 := NewJob[DummyResult](JobID("3"), runner)
_ = q.Enqueue(job3)
_ = q.Enqueue(job2)
_ = q.Enqueue(job1)