Beacon/server/main.go
2025-06-20 08:22:10 +08:00

62 lines
1.7 KiB
Go

package main
// Go 服务端入口,触发 Workflow
import (
"beacon/server/gen/pb"
"beacon/server/workflow"
"context"
"fmt"
"log"
"github.com/google/uuid"
"go.temporal.io/sdk/client"
)
func main() {
// 创建 Temporal 客户端
c, err := client.Dial(client.Options{
HostPort: "temporal.newai.day:17233", // 根据你的 Temporal Server 配置
Namespace: "default",
})
if err != nil {
log.Fatalf("Unable to create Temporal client: %v", err)
}
defer c.Close()
// 模拟一个触发测试的事件 (例如来自 Web UI 或 CI/CD)
runID := uuid.New().String()
testInput := &pb.TestRunInput{
RunId: runID,
EnvironmentUrl: "https://example.com",
Tags: []string{"smoke", "critical"},
RunApiTests: true,
RunUiTests: true,
}
workflowOptions := client.StartWorkflowOptions{
ID: "test_workflow_" + runID,
TaskQueue: "test-task-queue", // 保持与 Python Worker 一致
}
fmt.Printf("Starting TestRunWorkflow for run ID: %s\n", runID)
we, err := c.ExecuteWorkflow(context.Background(), workflowOptions, workflow.TestRunWorkflow, testInput)
if err != nil {
log.Fatalf("Unable to execute workflow: %v", err)
}
fmt.Printf("Workflow started. Workflow ID: %s, Run ID: %s\n", we.GetID(), we.GetRunID())
// 等待 Workflow 完成并获取结果
var result pb.TestRunOutput
err = we.Get(context.Background(), &result)
if err != nil {
log.Fatalf("Unable to get workflow result: %v", err)
}
fmt.Printf("Workflow finished. Overall Success: %t, Message: %s\n", result.OverallSuccess, result.CompletionMessage)
fmt.Printf("API Test Results: %+v\n", result.ApiResults)
fmt.Printf("UI Test Results: %+v\n", result.UiResults)
// 后续可以根据 result 生成报告、发送通知等
}