Files
ttstd-infinite-canvas/backend/internal/app/provider_task_recovery_test.go

43 lines
1.2 KiB
Go

package app
import (
"context"
"errors"
"testing"
)
func TestProviderTaskRecoveryContextSurvivesClientCancellation(t *testing.T) {
type contextKey string
parent, cancelParent := context.WithCancel(context.WithValue(context.Background(), contextKey("trace"), "trace-1"))
cancelParent()
recovery, cancelRecovery := providerTaskRecoveryContext(parent)
defer cancelRecovery()
if recovery.Err() != nil {
t.Fatalf("recovery context inherited cancellation: %v", recovery.Err())
}
if recovery.Value(contextKey("trace")) != "trace-1" {
t.Fatal("recovery context did not preserve request values")
}
if _, ok := recovery.Deadline(); !ok {
t.Fatal("recovery context has no bounded deadline")
}
}
func TestRetryableProtocolMediaDownload(t *testing.T) {
for _, err := range []error{
errors.New("net/http: TLS handshake timeout"),
errors.New("read: connection reset by peer"),
errors.New("unexpected EOF"),
} {
if !retryableProtocolMediaDownload(err) {
t.Fatalf("retryableProtocolMediaDownload(%v) = false", err)
}
}
for _, err := range []error{context.Canceled, context.DeadlineExceeded, errors.New("HTTP 404")} {
if retryableProtocolMediaDownload(err) {
t.Fatalf("retryableProtocolMediaDownload(%v) = true", err)
}
}
}