workflow_test.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package test
  2. import (
  3. "git.sxidc.com/go-tools/argo-api"
  4. "git.sxidc.com/go-tools/argo-api/client"
  5. "github.com/pkg/errors"
  6. "gopkg.in/yaml.v3"
  7. "testing"
  8. )
  9. func TestWorkflowBase(t *testing.T) {
  10. argo.Init(baseUrl, token, client.WithTimeoutSec(10))
  11. defer argo.Destroy()
  12. workflowDefinition := make(map[string]any)
  13. err := yaml.Unmarshal(workflowYamlStr, &workflowDefinition)
  14. if err != nil {
  15. panic(err)
  16. }
  17. err = argo.GetInstance().LintWorkflow(client.LintWorkflowParams{
  18. Namespace: namespace,
  19. WorkflowDefinition: workflowDefinition,
  20. })
  21. if err != nil {
  22. t.Fatalf("%+v\n", err)
  23. }
  24. workflowName, err := argo.GetInstance().CreateWorkflow(client.CreateWorkflowParams{
  25. Namespace: namespace,
  26. WorkflowDefinition: workflowDefinition,
  27. })
  28. if err != nil {
  29. t.Fatalf("%+v\n", err)
  30. }
  31. defer func() {
  32. err := argo.GetInstance().DeleteWorkflow(client.DeleteWorkflowParams{
  33. Namespace: namespace,
  34. Name: workflowName,
  35. })
  36. if err != nil {
  37. t.Fatalf("%+v\n", err)
  38. }
  39. }()
  40. createdWorkflowDefinitions, err := argo.GetInstance().GetWorkflowsInNamespace(client.GetWorkflowsInNamespaceParams{
  41. Namespace: namespace,
  42. })
  43. if err != nil {
  44. t.Fatalf("%+v\n", err)
  45. }
  46. if len(createdWorkflowDefinitions) != 1 {
  47. t.Fatalf("%+v\n", errors.Errorf("数量不一致: %v", len(createdWorkflowDefinitions)))
  48. }
  49. createdWorkflowDefinition, err := argo.GetInstance().GetWorkflow(client.GetWorkflowParams{
  50. Namespace: namespace,
  51. Name: workflowName,
  52. })
  53. if err != nil {
  54. t.Fatalf("%+v\n", err)
  55. }
  56. compareDefinitionMap(t, createdWorkflowDefinition, createdWorkflowDefinitions[0])
  57. compareDefinitionMap(t, createdWorkflowDefinitions[0], createdWorkflowDefinition)
  58. }
  59. func TestSubmitWorkflow(t *testing.T) {
  60. argo.Init(baseUrl, token, client.WithTimeoutSec(10))
  61. defer argo.Destroy()
  62. templateDefinition := make(map[string]any)
  63. err := yaml.Unmarshal(workflowTemplateWithParamsYamlStr, &templateDefinition)
  64. if err != nil {
  65. panic(err)
  66. }
  67. err = argo.GetInstance().CreateWorkflowTemplate(client.CreateWorkflowTemplateParams{
  68. Namespace: namespace,
  69. TemplateDefinition: templateDefinition,
  70. })
  71. if err != nil {
  72. t.Fatalf("%+v\n", err)
  73. }
  74. defer func() {
  75. err := argo.GetInstance().DeleteWorkflowTemplate(client.DeleteWorkflowTemplateParams{
  76. Namespace: namespace,
  77. Name: workflowTemplateWithParamsName,
  78. })
  79. if err != nil {
  80. t.Fatalf("%+v\n", err)
  81. }
  82. }()
  83. submitWorkflowName, err := argo.GetInstance().SubmitWorkflowFromWorkflowTemplate(client.SubmitWorkflowFromWorkflowTemplateParams{
  84. Namespace: namespace,
  85. TemplateName: workflowTemplateWithParamsName,
  86. Parameters: []string{"message=Hello Submit"},
  87. })
  88. if err != nil {
  89. t.Fatalf("%+v\n", err)
  90. }
  91. defer func() {
  92. err := argo.GetInstance().DeleteWorkflow(client.DeleteWorkflowParams{
  93. Namespace: namespace,
  94. Name: submitWorkflowName,
  95. })
  96. if err != nil {
  97. t.Fatalf("%+v\n", err)
  98. }
  99. }()
  100. submittedWorkflowDefinition, err := argo.GetInstance().GetWorkflow(client.GetWorkflowParams{
  101. Namespace: namespace,
  102. Name: submitWorkflowName,
  103. })
  104. if err != nil {
  105. t.Fatalf("%+v\n", err)
  106. }
  107. specMap := submittedWorkflowDefinition["spec"].(map[string]any)
  108. argumentMap := specMap["arguments"].(map[string]any)
  109. parametersMap := argumentMap["parameters"].([]any)
  110. if parametersMap[0].(map[string]any)["name"] != "message" {
  111. t.Fatalf("%+v\n", errors.Errorf("参数名称错误: %v", parametersMap[0].(map[string]any)["name"]))
  112. }
  113. if parametersMap[0].(map[string]any)["value"] != "Hello Submit" {
  114. t.Fatalf("%+v\n", errors.Errorf("参数值错误: %v", parametersMap[0].(map[string]any)["value"]))
  115. }
  116. }