grok_stream_idle_test.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. //go:build unit
  2. package service
  3. import (
  4. "testing"
  5. "time"
  6. "github.com/stretchr/testify/require"
  7. )
  8. func TestResolveGrokStreamIdleTimeout(t *testing.T) {
  9. require.Equal(t, 90*time.Second, resolveGrokStreamIdleTimeout(90))
  10. require.Equal(t, defaultGrokStreamIdleTimeout, resolveGrokStreamIdleTimeout(0))
  11. require.Equal(t, defaultGrokStreamIdleTimeout, resolveGrokStreamIdleTimeout(-1))
  12. }
  13. func TestGrokStreamIdleFailoverError(t *testing.T) {
  14. account := &Account{ID: 1, Platform: PlatformGrok, Type: AccountTypeOAuth}
  15. err := grokStreamIdleFailoverError(account, 180*time.Second)
  16. require.NotNil(t, err)
  17. require.Equal(t, 502, err.StatusCode)
  18. require.True(t, err.SafeToFailoverAfterWrite)
  19. require.True(t, err.RetryableOnSameAccount)
  20. require.True(t, err.RequestScopedTransient)
  21. require.Equal(t, 1, err.SameAccountRetryMax)
  22. require.Contains(t, string(err.ResponseBody), "empty_upstream")
  23. require.WithinDuration(t, time.Now().Add(180*time.Second), err.SameAccountRetryDeadline, 2*time.Second)
  24. }
  25. func TestGrokStreamIdleFailoverErrorRequiresGrokAccount(t *testing.T) {
  26. openAI := &Account{ID: 2, Platform: PlatformOpenAI, Type: AccountTypeOAuth}
  27. err := grokStreamIdleFailoverError(openAI, time.Second)
  28. require.False(t, err.RetryableOnSameAccount)
  29. require.True(t, err.RequestScopedTransient)
  30. }