| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package service
- import (
- "net/http/httptest"
- "testing"
- "github.com/gin-gonic/gin"
- "github.com/stretchr/testify/require"
- )
- func buildChannelAffinityTemplateContextForTest(meta channelAffinityMeta) *gin.Context {
- rec := httptest.NewRecorder()
- ctx, _ := gin.CreateTestContext(rec)
- setChannelAffinityContext(ctx, meta)
- return ctx
- }
- func TestApplyChannelAffinityOverrideTemplate_NoTemplate(t *testing.T) {
- ctx := buildChannelAffinityTemplateContextForTest(channelAffinityMeta{
- RuleName: "rule-no-template",
- })
- base := map[string]interface{}{
- "temperature": 0.7,
- }
- merged, applied := ApplyChannelAffinityOverrideTemplate(ctx, base)
- require.False(t, applied)
- require.Equal(t, base, merged)
- }
- func TestApplyChannelAffinityOverrideTemplate_MergeTemplate(t *testing.T) {
- ctx := buildChannelAffinityTemplateContextForTest(channelAffinityMeta{
- RuleName: "rule-with-template",
- ParamTemplate: map[string]interface{}{
- "temperature": 0.2,
- "top_p": 0.95,
- },
- UsingGroup: "default",
- ModelName: "gpt-4.1",
- RequestPath: "/v1/responses",
- KeySourceType: "gjson",
- KeySourcePath: "prompt_cache_key",
- KeyHint: "abcd...wxyz",
- KeyFingerprint: "abcd1234",
- })
- base := map[string]interface{}{
- "temperature": 0.7,
- "max_tokens": 2000,
- }
- merged, applied := ApplyChannelAffinityOverrideTemplate(ctx, base)
- require.True(t, applied)
- require.Equal(t, 0.2, merged["temperature"])
- require.Equal(t, 0.95, merged["top_p"])
- require.Equal(t, 2000, merged["max_tokens"])
- require.Equal(t, 0.7, base["temperature"])
- anyInfo, ok := ctx.Get(ginKeyChannelAffinityLogInfo)
- require.True(t, ok)
- info, ok := anyInfo.(map[string]interface{})
- require.True(t, ok)
- overrideInfoAny, ok := info["override_template"]
- require.True(t, ok)
- overrideInfo, ok := overrideInfoAny.(map[string]interface{})
- require.True(t, ok)
- require.Equal(t, true, overrideInfo["applied"])
- require.Equal(t, "rule-with-template", overrideInfo["rule_name"])
- require.EqualValues(t, 2, overrideInfo["param_override_keys"])
- }
|