61 lines
1.7 KiB
Go
61 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 配置
|
|
})
|
|
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 生成报告、发送通知等
|
|
}
|