| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- package test
- import (
- "git.sxidc.com/go-tools/argo-api"
- "git.sxidc.com/go-tools/argo-api/client"
- "github.com/pkg/errors"
- "gopkg.in/yaml.v3"
- "testing"
- "time"
- )
- func TestWorkflowBase(t *testing.T) {
- argo.Init(baseUrl, token, client.WithTimeoutSec(10))
- defer argo.Destroy()
- workflowDefinition := make(map[string]any)
- err := yaml.Unmarshal(workflowYamlStr, &workflowDefinition)
- if err != nil {
- panic(err)
- }
- err = argo.GetInstance().LintWorkflow(client.LintWorkflowParams{
- Namespace: namespace,
- WorkflowDefinition: workflowDefinition,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- workflowName, err := argo.GetInstance().CreateWorkflow(client.CreateWorkflowParams{
- Namespace: namespace,
- WorkflowDefinition: workflowDefinition,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- defer func() {
- err := argo.GetInstance().DeleteWorkflow(client.DeleteWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- }()
- createdWorkflowDefinitions, err := argo.GetInstance().GetWorkflowsInNamespace(client.GetWorkflowsInNamespaceParams{
- Namespace: namespace,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- if len(createdWorkflowDefinitions) != 1 {
- t.Fatalf("%+v\n", errors.Errorf("数量不一致: %v", len(createdWorkflowDefinitions)))
- }
- createdWorkflowDefinition, err := argo.GetInstance().GetWorkflow(client.GetWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- compareDefinitionMap(t, createdWorkflowDefinition, createdWorkflowDefinitions[0])
- compareDefinitionMap(t, createdWorkflowDefinitions[0], createdWorkflowDefinition)
- }
- func TestSubmitWorkflow(t *testing.T) {
- argo.Init(baseUrl, token, client.WithTimeoutSec(10))
- defer argo.Destroy()
- templateDefinition := make(map[string]any)
- err := yaml.Unmarshal(workflowTemplateWithParamsYamlStr, &templateDefinition)
- if err != nil {
- panic(err)
- }
- err = argo.GetInstance().CreateWorkflowTemplate(client.CreateWorkflowTemplateParams{
- Namespace: namespace,
- TemplateDefinition: templateDefinition,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- defer func() {
- err := argo.GetInstance().DeleteWorkflowTemplate(client.DeleteWorkflowTemplateParams{
- Namespace: namespace,
- Name: workflowTemplateWithParamsName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- }()
- submitWorkflowName, err := argo.GetInstance().SubmitWorkflowFromWorkflowTemplate(client.SubmitWorkflowFromWorkflowTemplateParams{
- Namespace: namespace,
- TemplateName: workflowTemplateWithParamsName,
- Parameters: []string{"message=Hello Submit"},
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- defer func() {
- err := argo.GetInstance().DeleteWorkflow(client.DeleteWorkflowParams{
- Namespace: namespace,
- Name: submitWorkflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- }()
- submittedWorkflowDefinition, err := argo.GetInstance().GetWorkflow(client.GetWorkflowParams{
- Namespace: namespace,
- Name: submitWorkflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- specMap := submittedWorkflowDefinition["spec"].(map[string]any)
- argumentMap := specMap["arguments"].(map[string]any)
- parametersMap := argumentMap["parameters"].([]any)
- if parametersMap[0].(map[string]any)["name"] != "message" {
- t.Fatalf("%+v\n", errors.Errorf("参数名称错误: %v", parametersMap[0].(map[string]any)["name"]))
- }
- if parametersMap[0].(map[string]any)["value"] != "Hello Submit" {
- t.Fatalf("%+v\n", errors.Errorf("参数值错误: %v", parametersMap[0].(map[string]any)["value"]))
- }
- }
- func TestResubmitWorkflow(t *testing.T) {
- argo.Init(baseUrl, token, client.WithTimeoutSec(10))
- defer argo.Destroy()
- workflowDefinition := make(map[string]any)
- err := yaml.Unmarshal(workflowYamlStr, &workflowDefinition)
- if err != nil {
- panic(err)
- }
- workflowName, err := argo.GetInstance().CreateWorkflow(client.CreateWorkflowParams{
- Namespace: namespace,
- WorkflowDefinition: workflowDefinition,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- defer func() {
- err := argo.GetInstance().DeleteWorkflow(client.DeleteWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- }()
- resubmittedWorkflowName, err := argo.GetInstance().ResubmitWorkflow(client.ResubmitWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- defer func() {
- err := argo.GetInstance().DeleteWorkflow(client.DeleteWorkflowParams{
- Namespace: namespace,
- Name: resubmittedWorkflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- }()
- }
- func TestRetryWorkflow(t *testing.T) {
- argo.Init(baseUrl, token, client.WithTimeoutSec(10))
- defer argo.Destroy()
- workflowDefinition := make(map[string]any)
- err := yaml.Unmarshal(workflowYamlStr, &workflowDefinition)
- if err != nil {
- panic(err)
- }
- workflowName, err := argo.GetInstance().CreateWorkflow(client.CreateWorkflowParams{
- Namespace: namespace,
- WorkflowDefinition: workflowDefinition,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- defer func() {
- err := argo.GetInstance().DeleteWorkflow(client.DeleteWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- }()
- err = argo.GetInstance().TerminateWorkflow(client.TerminateWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- for {
- currentWorkflowDefinitions, err := argo.GetInstance().GetWorkflow(client.GetWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- if currentWorkflowDefinitions["status"].(map[string]any)["phase"] != "Running" {
- break
- }
- time.Sleep(1 * time.Second)
- }
- err = argo.GetInstance().RetryWorkflow(client.RetryWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- }
- func TestStopWorkflow(t *testing.T) {
- argo.Init(baseUrl, token, client.WithTimeoutSec(10))
- defer argo.Destroy()
- workflowDefinition := make(map[string]any)
- err := yaml.Unmarshal(workflowYamlStr, &workflowDefinition)
- if err != nil {
- panic(err)
- }
- workflowName, err := argo.GetInstance().CreateWorkflow(client.CreateWorkflowParams{
- Namespace: namespace,
- WorkflowDefinition: workflowDefinition,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- defer func() {
- err := argo.GetInstance().DeleteWorkflow(client.DeleteWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- }()
- err = argo.GetInstance().StopWorkflow(client.StopWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- for {
- currentWorkflowDefinitions, err := argo.GetInstance().GetWorkflow(client.GetWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- if currentWorkflowDefinitions["status"].(map[string]any)["phase"] != "Running" {
- break
- }
- time.Sleep(1 * time.Second)
- }
- }
- func TestTerminateWorkflow(t *testing.T) {
- argo.Init(baseUrl, token, client.WithTimeoutSec(10))
- defer argo.Destroy()
- workflowDefinition := make(map[string]any)
- err := yaml.Unmarshal(workflowYamlStr, &workflowDefinition)
- if err != nil {
- panic(err)
- }
- workflowName, err := argo.GetInstance().CreateWorkflow(client.CreateWorkflowParams{
- Namespace: namespace,
- WorkflowDefinition: workflowDefinition,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- defer func() {
- err := argo.GetInstance().DeleteWorkflow(client.DeleteWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- }()
- err = argo.GetInstance().TerminateWorkflow(client.TerminateWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- for {
- currentWorkflowDefinitions, err := argo.GetInstance().GetWorkflow(client.GetWorkflowParams{
- Namespace: namespace,
- Name: workflowName,
- })
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- if currentWorkflowDefinitions["status"].(map[string]any)["phase"] != "Running" {
- break
- }
- time.Sleep(1 * time.Second)
- }
- }
|