...
This commit is contained in:
		
							
								
								
									
										83
									
								
								cmd/jobtest/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								cmd/jobtest/main.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| 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) | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user