chore: 并入 iotlcm-openapi 历史到 openapi/(原提交 3b05d5a)

This commit is contained in:
MiFaZhan
2026-11-02 13:28:02 +08:00
484 changed files with 34732 additions and 0 deletions
@@ -0,0 +1,81 @@
package workerdiagnostic
import (
"context"
"encoding/json"
"errors"
"fmt"
"strings"
"testing"
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/consts"
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/model"
)
func TestPublish(t *testing.T) {
var (
publishedQueue string
publishedPayload model.WorkerDiagnosticMessage
)
service := New(func(ctx context.Context, queue string, data any) error {
publishedQueue = queue
var ok bool
publishedPayload, ok = data.(model.WorkerDiagnosticMessage)
if !ok {
t.Fatalf("unexpected payload type %T", data)
}
return nil
})
result, err := service.Publish(context.Background(), "worker ping")
if err != nil {
t.Fatalf("Publish() error = %v", err)
}
if publishedQueue != consts.QueueWorkerDiagnostic {
t.Fatalf("queue = %q, want %q", publishedQueue, consts.QueueWorkerDiagnostic)
}
if !strings.HasPrefix(result.TraceID, "worker-test-") {
t.Fatalf("traceId = %q, want worker-test- prefix", result.TraceID)
}
if result.SentAt <= 0 {
t.Fatalf("sentAt = %d, want positive timestamp", result.SentAt)
}
if result.Queue != consts.QueueWorkerDiagnostic {
t.Fatalf("result queue = %q, want %q", result.Queue, consts.QueueWorkerDiagnostic)
}
if publishedPayload.TraceID != result.TraceID || publishedPayload.SentAt != result.SentAt {
t.Fatalf("published identifiers = %+v, result = %+v", publishedPayload, result)
}
if publishedPayload.Message != "worker ping" {
t.Fatalf("message = %q, want worker ping", publishedPayload.Message)
}
body, err := json.Marshal(publishedPayload)
if err != nil {
t.Fatalf("json.Marshal() error = %v", err)
}
wantJSON := `{"traceId":"` + result.TraceID + `","sentAt":` + fmt.Sprint(result.SentAt) + `,"message":"worker ping"}`
if string(body) != wantJSON {
t.Fatalf("JSON = %s, want %s", body, wantJSON)
}
}
func TestPublishWrapsPublisherError(t *testing.T) {
publishErr := errors.New("broker unavailable")
service := New(func(ctx context.Context, queue string, data any) error {
return publishErr
})
result, err := service.Publish(context.Background(), "worker ping")
if result != nil {
t.Fatalf("result = %+v, want nil", result)
}
if err == nil {
t.Fatal("Publish() error = nil, want error")
}
if !errors.Is(err, publishErr) {
t.Fatalf("Publish() error = %v, want wrapped publisher error", err)
}
if !strings.Contains(err.Error(), "publish worker diagnostic message failed") {
t.Fatalf("Publish() error = %v, want context", err)
}
}