openai_ws_turn_pricing_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package handler
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestOpenAIWSTurnPricingCurrentOr(t *testing.T) {
  8. fallback := time.Date(2024, time.January, 2, 2, 0, 0, 0, time.UTC)
  9. t.Run("frozen time takes precedence", func(t *testing.T) {
  10. frozen := fallback.Add(time.Minute)
  11. var p openAIWSTurnPricing
  12. p.freeze(frozen)
  13. require.Equal(t, frozen, p.currentOr(fallback))
  14. })
  15. t.Run("zero value falls back to turn start", func(t *testing.T) {
  16. var p openAIWSTurnPricing
  17. require.Equal(t, fallback, p.currentOr(fallback))
  18. })
  19. }
  20. // TestOpenAIWSTurnPricingFreezePerTurn 钉死每个 turn 的 BeforeTurn 都会覆盖
  21. // 上一个 turn 的定价时刻:长连接跨峰谷时后续 turn 不得沿用旧时刻。
  22. func TestOpenAIWSTurnPricingFreezePerTurn(t *testing.T) {
  23. var p openAIWSTurnPricing
  24. turn1 := time.Now().Add(-time.Hour)
  25. turn2 := time.Now()
  26. p.freeze(turn1)
  27. require.Equal(t, turn1, p.currentOr(time.Time{}))
  28. p.freeze(turn2)
  29. require.Equal(t, turn2, p.currentOr(time.Time{}), "后续 turn 必须使用自己的定价时刻")
  30. }