feat: publish sanitized custom.97 source
This commit is contained in:
1022 files changed
+69903
-19207
No files matched your search
@@ -24,6 +24,7 @@ import (
|
||||
|
||||
type taskPollingFetchAdaptor struct {
|
||||
mu sync.Mutex
|
||||
initInfo *relaycommon.RelayInfo
|
||||
taskIDs []string
|
||||
fetched chan string
|
||||
blockTaskID string
|
||||
@@ -59,7 +60,19 @@ func (a *batchPollingAdaptor) ParseBatchResult(_ []*model.Task, _ *http.Response
|
||||
return results, nil
|
||||
}
|
||||
|
||||
func (a *taskPollingFetchAdaptor) Init(_ *relaycommon.RelayInfo) {}
|
||||
func (a *taskPollingFetchAdaptor) Init(info *relaycommon.RelayInfo) {
|
||||
a.mu.Lock()
|
||||
defer a.mu.Unlock()
|
||||
a.initInfo = info
|
||||
}
|
||||
func (a *taskPollingFetchAdaptor) initChannelMeta() *relaycommon.ChannelMeta {
|
||||
a.mu.Lock()
|
||||
defer a.mu.Unlock()
|
||||
if a.initInfo == nil {
|
||||
return nil
|
||||
}
|
||||
return a.initInfo.ChannelMeta
|
||||
}
|
||||
|
||||
func (a *taskPollingFetchAdaptor) FetchTask(_ string, _ string, task *model.Task, _ string) (*http.Response, error) {
|
||||
taskID := ""
|
||||
@@ -225,6 +238,37 @@ func TestUpdateVideoTasksDefaultSleepWaitsBetweenTasks(t *testing.T) {
|
||||
assert.Equal(t, 1, adaptor.fetchCount())
|
||||
}
|
||||
|
||||
func TestPollingPassesExecutingChannelTypeToAdaptor(t *testing.T) {
|
||||
truncate(t)
|
||||
const channelID = 112
|
||||
baseURL := "https://gateway.example"
|
||||
gateway := &model.Channel{Id: channelID, Type: constant.ChannelTypeNewAPI, Name: "gateway", Key: "sk-gateway", Status: common.ChannelStatusEnabled, BaseURL: &baseURL}
|
||||
gateway.SetOtherSettings(dto.ChannelOtherSettings{DisableTaskPollingSleep: true})
|
||||
require.NoError(t, model.DB.Create(gateway).Error)
|
||||
task := seedPollingTask(t, channelID, "task_gateway", "upstream_gateway")
|
||||
taskChannels := map[int][]string{channelID: {task.GetUpstreamTaskID()}}
|
||||
tasks := map[string]*model.Task{task.GetUpstreamTaskID(): task}
|
||||
|
||||
perTask := &taskPollingFetchAdaptor{}
|
||||
previousFactory := GetTaskAdaptorFunc
|
||||
GetTaskAdaptorFunc = func(constant.TaskPlatform) TaskPollingAdaptor { return perTask }
|
||||
t.Cleanup(func() { GetTaskAdaptorFunc = previousFactory })
|
||||
require.NoError(t, UpdateVideoTasks(context.Background(), constant.TaskPlatform("kling"), taskChannels, tasks))
|
||||
meta := perTask.initChannelMeta()
|
||||
require.NotNil(t, meta, "per-task polling initializes the adaptor with channel metadata")
|
||||
assert.Equal(t, constant.ChannelTypeNewAPI, meta.ChannelType, "the adaptor derives the upstream kind from the channel type")
|
||||
assert.Equal(t, channelID, meta.ChannelId)
|
||||
assert.Equal(t, baseURL, meta.ChannelBaseUrl)
|
||||
|
||||
batch := &batchPollingAdaptor{}
|
||||
require.NoError(t, UpdateBatchTasks(context.Background(), batch, taskChannels, tasks))
|
||||
meta = batch.initChannelMeta()
|
||||
require.NotNil(t, meta, "batch polling initializes the adaptor with channel metadata")
|
||||
assert.Equal(t, constant.ChannelTypeNewAPI, meta.ChannelType)
|
||||
assert.Equal(t, channelID, meta.ChannelId)
|
||||
assert.Equal(t, baseURL, meta.ChannelBaseUrl)
|
||||
}
|
||||
|
||||
func TestDispatchPlatformUpdateUsesFetchMode(t *testing.T) {
|
||||
truncate(t)
|
||||
const channelID = 109
|
||||
@@ -722,8 +766,8 @@ func TestSweepTimedOutTasksHonorsRefundRolloutBoundary(t *testing.T) {
|
||||
assert.EqualValues(t, model.TaskStatusFailure, reloadedModern.Status)
|
||||
assert.Zero(t, reloadedLegacy.Quota)
|
||||
assert.Zero(t, reloadedModern.Quota)
|
||||
assert.Contains(t, reloadedLegacy.FailReason, "旧系统遗留任务")
|
||||
assert.Contains(t, reloadedModern.FailReason, "任务超时")
|
||||
assert.Contains(t, reloadedLegacy.FailReason, "old system")
|
||||
assert.Equal(t, "Task timed out", reloadedModern.FailReason)
|
||||
assert.Equal(t, initialQuota+modernTaskQuota, getUserQuota(t, userID))
|
||||
assert.Equal(t, int64(1), countLogs(t))
|
||||
}
|
||||
@@ -802,7 +846,7 @@ func TestUpdateVideoSingleTaskPollClassification(t *testing.T) {
|
||||
statusCode: http.StatusNotFound,
|
||||
wantStatus: model.TaskStatusFailure,
|
||||
wantRefund: true,
|
||||
wantReason: "upstream task not found (HTTP 404)",
|
||||
wantReason: "Upstream task not found",
|
||||
wantUnchanged: false,
|
||||
},
|
||||
{
|
||||
@@ -820,7 +864,7 @@ func TestUpdateVideoSingleTaskPollClassification(t *testing.T) {
|
||||
wantStatus: model.TaskStatusFailure,
|
||||
wantFailures: 3,
|
||||
wantRefund: true,
|
||||
wantReason: "poll failed: transient (HTTP 429)",
|
||||
wantReason: "Failed to query the upstream task status",
|
||||
},
|
||||
{
|
||||
name: "UNKNOWN increments",
|
||||
@@ -904,7 +948,7 @@ func TestUpdateVideoSingleTaskPollClassification(t *testing.T) {
|
||||
assert.Empty(t, persisted.FailReason)
|
||||
}
|
||||
if testCase.wantReason != "" {
|
||||
assert.Contains(t, persisted.FailReason, testCase.wantReason)
|
||||
assert.Equal(t, testCase.wantReason, persisted.FailReason)
|
||||
}
|
||||
if testCase.wantState != "" {
|
||||
assert.JSONEq(t, testCase.wantState, string(persisted.PrivateData.PluginState))
|
||||
@@ -939,7 +983,7 @@ func TestUpdateBatchTasksPollClassification(t *testing.T) {
|
||||
statusCode: http.StatusNotFound,
|
||||
wantStatus: model.TaskStatusFailure,
|
||||
wantRefund: true,
|
||||
wantReason: "upstream task not found (HTTP 404)",
|
||||
wantReason: "Upstream task not found",
|
||||
},
|
||||
{
|
||||
name: "401 increments every task",
|
||||
@@ -986,7 +1030,7 @@ func TestUpdateBatchTasksPollClassification(t *testing.T) {
|
||||
assert.EqualValues(t, testCase.wantStatus, persisted.Status)
|
||||
assert.Equal(t, testCase.wantFailures, persisted.PrivateData.PollFailures)
|
||||
if testCase.wantReason != "" {
|
||||
assert.Contains(t, persisted.FailReason, testCase.wantReason)
|
||||
assert.Equal(t, testCase.wantReason, persisted.FailReason)
|
||||
}
|
||||
if testCase.wantRefund {
|
||||
assert.Equal(t, initialQuota+preConsumed, getUserQuota(t, userID))
|
||||
|
||||
Reference in new issue
Block a user