84 lines
1.9 KiB
Go
84 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
"time"
|
|
|
|
"git.ourworld.tf/herocode/heroagent/pkg/servers/heroagent"
|
|
)
|
|
|
|
func main() {
|
|
log.Println("Starting job management test...")
|
|
|
|
// Create a configuration for the server factory
|
|
config := heroagent.DefaultConfig()
|
|
|
|
// Customize configuration if needed
|
|
config.Redis.TCPPort = 6379
|
|
config.Redis.UnixSocketPath = "/tmp/redis.sock"
|
|
config.Jobs.OurDBPath = "./data/jobsdb"
|
|
config.Jobs.WorkerCount = 3
|
|
config.Jobs.QueuePollInterval = 200 * time.Millisecond
|
|
|
|
// Only enable Redis and Jobs for this test
|
|
config.EnableRedis = true
|
|
config.EnableWebDAV = false
|
|
config.EnableUI = false
|
|
config.EnableJobs = true
|
|
|
|
// Create server factory
|
|
factory := heroagent.New(config)
|
|
|
|
// Start servers
|
|
if err := factory.Start(); err != nil {
|
|
log.Fatalf("Failed to start servers: %v", err)
|
|
}
|
|
|
|
// Get job manager
|
|
jobManager := factory.GetJobManager()
|
|
if jobManager == nil {
|
|
log.Fatalf("Job manager not initialized")
|
|
}
|
|
|
|
// Create some test jobs
|
|
createTestJobs(jobManager)
|
|
|
|
// Wait for interrupt signal
|
|
sigCh := make(chan os.Signal, 1)
|
|
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
|
|
<-sigCh
|
|
|
|
// Stop servers
|
|
if err := factory.Stop(); err != nil {
|
|
log.Fatalf("Failed to stop servers: %v", err)
|
|
}
|
|
|
|
log.Println("Job management test completed")
|
|
}
|
|
|
|
func createTestJobs(jobManager *heroagent.JobManager) {
|
|
// Create a few test jobs with different topics
|
|
topics := []string{"email", "notification", "report"}
|
|
|
|
for i := 0; i < 5; i++ {
|
|
for _, topic := range topics {
|
|
// Create job
|
|
params := fmt.Sprintf(`{"action": "process", "data": "test data %d for %s"}`, i, topic)
|
|
job, err := jobManager.CreateJob(topic, params)
|
|
if err != nil {
|
|
log.Printf("Failed to create job: %v", err)
|
|
continue
|
|
}
|
|
|
|
log.Printf("Created job %d with topic %s", job.JobID, job.Topic)
|
|
}
|
|
|
|
// Sleep briefly between batches
|
|
time.Sleep(500 * time.Millisecond)
|
|
}
|
|
}
|