2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 06:47:20 +08:00
Files
panel/pkg/queue/queue_test.go
2024-10-12 00:58:55 +08:00

101 lines
2.0 KiB
Go

package queue
import (
"context"
"errors"
"testing"
"time"
"github.com/stretchr/testify/suite"
)
type QueueTestSuite struct {
suite.Suite
}
func TestQueueTestSuite(t *testing.T) {
suite.Run(t, &QueueTestSuite{})
}
func (suite *QueueTestSuite) TestQueueInitialization() {
queue := New(10)
suite.NotNil(queue)
suite.NotNil(queue.jobs)
}
func (suite *QueueTestSuite) TestPushJobToQueue() {
queue := New(10)
job := &MockJob{}
err := queue.Push(job, []any{"arg1", "arg2"})
suite.NoError(err)
}
func (suite *QueueTestSuite) TestBulkJobsToQueue() {
queue := New(10)
jobs := []JobItem{
{Job: &MockJob{}, Args: []any{"arg1"}},
{Job: &MockJob{}, Args: []any{"arg2"}},
}
err := queue.Bulk(jobs)
suite.NoError(err)
}
func (suite *QueueTestSuite) TestLaterJobExecution() {
queue := New(10)
job := &MockJob{}
err := queue.Later(1, job, []any{"arg1"})
suite.NoError(err)
}
func (suite *QueueTestSuite) TestRunQueue() {
queue := New(10)
job := &MockJob{}
suite.NoError(queue.Push(job, []any{"arg1"}))
queue.Run(context.Background())
time.Sleep(1 * time.Second)
suite.True(job.Executed)
}
func (suite *QueueTestSuite) TestRunQueueWithLaterJob() {
queue := New(10)
job := &MockJob{}
suite.NoError(queue.Later(1, job, []any{"arg1"}))
queue.Run(context.Background())
time.Sleep(2 * time.Second)
suite.True(job.Executed)
}
func (suite *QueueTestSuite) TestRunQueueWithBulkJobs() {
queue := New(10)
jobs := []JobItem{
{Job: &MockJob{}, Args: []any{"arg1"}},
{Job: &MockJob{}, Args: []any{"arg2"}},
}
suite.NoError(queue.Bulk(jobs))
queue.Run(context.Background())
time.Sleep(1 * time.Second)
}
func (suite *QueueTestSuite) TestRunQueueWithErrHandle() {
queue := New(10)
job := &MockJob{}
suite.NoError(queue.Push(job, []any{"arg1"}))
queue.Run(context.Background())
time.Sleep(1 * time.Second)
suite.Error(job.Err)
}
type MockJob struct {
Executed bool
Err error
}
func (job *MockJob) Handle(args ...any) error {
job.Executed = true
return errors.New("error")
}
func (job *MockJob) ErrHandle(err error) {
job.Err = err
}