fix: normalize Bailian TTS streaming audio

This commit is contained in:
2026-10-13 07:32:51 +08:00
parent c2db4b3a0a
commit 9bf20cfbba
13 changed files with 257 additions and 36 deletions
+11 -22
View File
@@ -107,6 +107,12 @@ func rejected(r *report, err error) {
visit(validation)
}
}
func readProbeTasks(ctx context.Context, client *configread.Client) ([]configread.DiscoveredTask, error) {
tasks, _, err := client.ReadAllTasks(ctx)
return tasks, err
}
func check(in input) (r report) {
ctx, cancel := context.WithTimeout(context.Background(), 90*time.Second)
defer cancel()
@@ -171,28 +177,11 @@ func check(in input) (r report) {
return
}
r.Providers = len(providers)
var tasks []configread.DiscoveredTask
cursor := ""
seen := map[string]bool{}
for {
r.Phase = "tasks"
page, err := client.ReadTasks(ctx, cursor)
if err != nil {
rejected(&r, err)
return
}
for _, task := range page.Tasks {
if seen[task.TaskID] {
rejected(&r, errors.New("duplicate discovery task"))
return
}
seen[task.TaskID] = true
tasks = append(tasks, task)
}
if page.Cursor == "" {
break
}
cursor = page.Cursor
r.Phase = "tasks"
tasks, err := readProbeTasks(ctx, client)
if err != nil {
rejected(&r, err)
return
}
r.Tasks = len(tasks)
for _, task := range tasks {
+40
View File
@@ -1,6 +1,7 @@
package main
import (
"context"
"crypto/tls"
"crypto/x509"
"encoding/json"
@@ -8,13 +9,52 @@ import (
"fmt"
"net"
"net/http"
"net/http/httptest"
"strings"
"sync/atomic"
"syscall"
"testing"
"time"
"git.ipao.vip/rogee/go-sip/internal/configread"
"git.ipao.vip/rogee/go-sip/internal/contract"
)
func TestReadProbeTasksStopsOnEmptyPageWithUnchangedCursor(t *testing.T) {
const dispatcherID = "c046b893-8628-4589-ae50-619d049248a6"
var requests atomic.Int32
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/internal/v1/dispatcher/tasks" {
t.Errorf("unexpected path %q", r.URL.Path)
}
w.Header().Set("Content-Type", "application/json")
switch r.URL.Query().Get("after") {
case "":
requests.Add(1)
_, _ = w.Write([]byte(`{"dispatcher_id":"` + dispatcherID + `","cursor":"115","tasks":[{"task_id":"6","tenant_id":1001,"status":"running","task_revision":1}]}`))
case "115":
requests.Add(1)
_, _ = w.Write([]byte(`{"dispatcher_id":"` + dispatcherID + `","cursor":"115","tasks":[]}`))
default:
t.Errorf("unexpected task cursor %q", r.URL.RawQuery)
}
}))
defer server.Close()
client, err := configread.NewClient(server.URL, dispatcherID, "test-secret", server.Client())
if err != nil {
t.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
tasks, err := readProbeTasks(ctx, client)
if err != nil {
t.Fatal(err)
}
if len(tasks) != 1 || tasks[0].TaskID != "6" || requests.Load() != 2 {
t.Fatalf("tasks=%+v request_count=%d, want one task and two page requests", tasks, requests.Load())
}
}
func TestEnvironmentRejectsMissingConfigurationWithoutNetworking(t *testing.T) {
t.Setenv("DISPATCHER_ID", "")
t.Setenv("AGENT_ID", "")