deploy_test.go 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package protocol
  2. import (
  3. "encoding/base64"
  4. "testing"
  5. )
  6. func TestPack_DeployCmd_EnCodeCmd_DeCode(t *testing.T) {
  7. var obj Pack_DeployCmd
  8. str, err := obj.EnCodeCmd("gid1", "gid1", 100, "1.5.0", "ipole", "abc123def", 320, 65536)
  9. if err != nil {
  10. t.Fatalf("EnCodeCmd failed: %v", err)
  11. }
  12. if str == "" {
  13. t.Fatal("EnCodeCmd returned empty string")
  14. }
  15. var obj2 Pack_DeployCmd
  16. if err := obj2.DeCode(str); err != nil {
  17. t.Fatalf("DeCode failed: %v", err)
  18. }
  19. if obj2.Data.Version != "1.5.0" {
  20. t.Errorf("Version mismatch: got %s, want 1.5.0", obj2.Data.Version)
  21. }
  22. if obj2.Data.Action != "start" {
  23. t.Errorf("Action mismatch: got %s, want start", obj2.Data.Action)
  24. }
  25. if obj2.Data.TotalChunks != 320 {
  26. t.Errorf("TotalChunks mismatch: got %d, want 320", obj2.Data.TotalChunks)
  27. }
  28. }
  29. func TestPack_DeployCmd_EnCodeChunk_DeCode(t *testing.T) {
  30. var obj Pack_DeployCmd
  31. testData := base64.StdEncoding.EncodeToString([]byte("hello world test chunk data"))
  32. str, err := obj.EnCodeChunk("gid1", "gid1", 101, "1.5.0", 5, testData)
  33. if err != nil {
  34. t.Fatalf("EnCodeChunk failed: %v", err)
  35. }
  36. var obj2 Pack_DeployCmd
  37. if err := obj2.DeCode(str); err != nil {
  38. t.Fatalf("DeCode failed: %v", err)
  39. }
  40. if obj2.Data.ChunkIndex != 5 {
  41. t.Errorf("ChunkIndex mismatch: got %d, want 5", obj2.Data.ChunkIndex)
  42. }
  43. if obj2.Data.Action != "chunk" {
  44. t.Errorf("Action mismatch: got %s, want chunk", obj2.Data.Action)
  45. }
  46. }
  47. func TestPack_DeployAck_EnCode_DeCode(t *testing.T) {
  48. var obj Pack_DeployAck
  49. str, err := obj.EnCode("gid1", "gid1", 200, "1.5.0", true, "")
  50. if err != nil {
  51. t.Fatalf("EnCode failed: %v", err)
  52. }
  53. var obj2 Pack_DeployAck
  54. if err := obj2.DeCode(str); err != nil {
  55. t.Fatalf("DeCode failed: %v", err)
  56. }
  57. if !obj2.Data.Success {
  58. t.Error("Expected Success=true")
  59. }
  60. }
  61. func TestPack_HealthCheck_EnCode_DeCode(t *testing.T) {
  62. var obj Pack_HealthCheck
  63. checks := []HealthCheck{
  64. {Name: "mqtt", Status: "ok", Detail: "connected", DurationMs: 150},
  65. {Name: "redis", Status: "ok", Detail: "PING ok", DurationMs: 10},
  66. }
  67. str, err := obj.EnCode("gid1", "gid1", 300, "1.5.0", 1, true, checks)
  68. if err != nil {
  69. t.Fatalf("EnCode failed: %v", err)
  70. }
  71. var obj2 Pack_HealthCheck
  72. if err := obj2.DeCode(str); err != nil {
  73. t.Fatalf("DeCode failed: %v", err)
  74. }
  75. if obj2.Data.Phase != 1 {
  76. t.Errorf("Phase mismatch: got %d, want 1", obj2.Data.Phase)
  77. }
  78. if len(obj2.Data.Checks) != 2 {
  79. t.Errorf("Checks count: got %d, want 2", len(obj2.Data.Checks))
  80. }
  81. }