43 lines
1.2 KiB
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)
|
|
}
|
|
}
|
|
}
|