Something went wrong on our end
Select Git revision
-
Volker Schukai authoredVolker Schukai authored
issue-1_test.go 1.71 KiB
//go:build !runOnTask
package jobqueue
import (
"github.com/robfig/cron/v3"
"github.com/stretchr/testify/assert"
"go.uber.org/zap"
"strings"
"testing"
"time"
)
// TestRoundTrip tests the round trip of jobs from yaml to the manager and back to yaml
// This test runs forever and must be stopped manually
// Use the following command to run this test:
// go test -timeout 6h -run TestRoundTrip -v
func TestRoundTrip(t *testing.T) {
// define test data with jobs in yaml format
testData := []byte(`
- id: job1
priority: 1
timeout: 1s
maxRetries: 3
retryDelay: 1s
runnable:
type: shell
data:
script: echo "~1~ $(date "+%M:%S")" >> /tmp/job1.log
scheduler:
type: cron
spec: "*/10 * * * * *"
- id: job2
priority: 1
timeout: 1s
maxRetries: 3
retryDelay: 1s
runnable:
type: shell
data:
script: echo "~~~~2~ $(date "+%M:%S")" >> /tmp/job1.log
scheduler:
type: cron
spec: "*/5 * * * * *"
- id: job3
priority: 1
timeout: 1s
maxRetries: 3
retryDelay: 1s
runnable:
type: shell
data:
script: echo "~~~~~~3~ $(date "+%M:%S")" >> /tmp/job1.log
scheduler:
type: interval
interval: 20s
`)
var err error
cronInstance := cron.New(cron.WithSeconds())
cronInstance.Start()
zapLogger, _ := zap.NewDevelopment()
_ = zapLogger
manager := NewManager()
manager.SetLogger(&ZapAdapter{logger: zapLogger})
manager.SetCronInstance(cronInstance)
worker := NewLocalWorker(10)
worker.SetManager(manager)
err = manager.AddWorker(worker)
assert.Nil(t, err)
err = manager.Start()
assert.Nil(t, err)
reader := strings.NewReader(string(testData))
err = ImportJobsAndSchedule(reader, "yaml", manager)
assert.Nil(t, err)
for {
time.Sleep(1 * time.Second)
}
}