@@ -18,6 +18,7 @@ import (
1818 "context"
1919 "fmt"
2020 "log"
21+ "sort"
2122 "strconv"
2223 "sync"
2324 "time"
@@ -26,6 +27,7 @@ import (
2627 "github.com/livekit/livekit-cli/v2/pkg/util"
2728 "github.com/livekit/protocol/auth"
2829 "github.com/livekit/protocol/livekit"
30+ "github.com/livekit/protocol/logger"
2931 "github.com/livekit/protocol/utils"
3032 lksdk "github.com/livekit/server-sdk-go/v2"
3133 "github.com/pion/webrtc/v4"
@@ -100,19 +102,28 @@ func (t *AgentLoadTester) Start(ctx context.Context) error {
100102 }
101103 loadTestRoom .stats .echoTrackPublished = true
102104
103- err = loadTestRoom .dispatchAgent ()
104- if err != nil {
105- log .Printf ("Failed to dispatch agent to room %s: %v" , roomName , err )
106- loadTestRoom .stop ()
107- return err
105+ if t .params .AgentName != "" {
106+ err = loadTestRoom .dispatchAgent ()
107+ if err != nil {
108+ log .Printf ("Failed to dispatch agent to room %s: %v" , roomName , err )
109+ loadTestRoom .stop ()
110+ return err
111+ }
108112 }
109113
110114 <- groupCtx .Done ()
111115 log .Printf ("Context cancelled for room %s, cleaning up" , roomName )
112116 loadTestRoom .stop ()
113117 return nil
114118 })
115- // time.Sleep(1 * time.Second)
119+ for ! loadTestRoom .stats .agentJoined {
120+ select {
121+ case <- groupCtx .Done ():
122+ return nil
123+ default :
124+ time .Sleep (100 * time .Millisecond )
125+ }
126+ }
116127 }
117128 log .Printf ("Agent load tester started successfully, waiting for duration: %s" , t .params .Duration .String ())
118129
@@ -178,7 +189,7 @@ func (r *LoadTestRoom) start(roomName string) error {
178189
179190 meetParticipantToken , _ := newAccessToken (r .params .APIKey , r .params .APISecret , roomName , "meet-participant" )
180191 r .stats .meetLink = fmt .Sprintf ("https://meet.livekit.io/custom?liveKitUrl=%s&token=%s" , r .params .URL , meetParticipantToken )
181- log . Printf ( " \n Inspect the room %s in LiveKit Meet using this url: %s \n " , roomName , r .stats .meetLink )
192+ logger . Debugw ( "Inspect the room in LiveKit Meet using this url" , "room" , roomName , "url" , r .stats .meetLink )
182193 r .running .Store (true )
183194 return nil
184195}
@@ -221,7 +232,6 @@ func (r *LoadTestRoom) dispatchAgent() error {
221232
222233func (r * LoadTestRoom ) onTrackSubscribed (track * webrtc.TrackRemote , pub * lksdk.RemoteTrackPublication , rp * lksdk.RemoteParticipant ) {
223234 if r .echoTrack != nil && r .firstParticipant == nil && track .Kind () == webrtc .RTPCodecTypeAudio {
224- log .Printf ("Subscribing to echo track in room %s, delay: %s" , r .room .Name (), r .params .EchoSpeechDelay .String ())
225235 r .firstParticipant = rp
226236 if rp .Kind () == lksdk .ParticipantAgent {
227237 r .stats .agentTrackSubscribed = true
@@ -296,23 +306,35 @@ func (t *AgentLoadTester) printStats() {
296306 crossStyle := lipgloss .NewStyle ().Foreground (lipgloss .Color ("1" )) // Red
297307
298308 table := util .CreateTable ().
299- Headers ("#" , "Room" , "Agent Dispatched At" , "Agent Joined" , "Agent Joined At " , "Agent Track Subscribed" , "Echo Track Published" )
309+ Headers ("#" , "Room" , "Agent Dispatched At" , "Agent Joined" , "Agent Join Delay " , "Agent Track Subscribed" , "Echo Track Published" )
300310
301- index := 1
311+ rooms := make ([] * LoadTestRoom , 0 , len ( t . testRooms ))
302312 for _ , room := range t .testRooms {
313+ rooms = append (rooms , room )
314+ }
315+ sort .Slice (rooms , func (i , j int ) bool {
316+ return rooms [i ].stats .agentDispatchedAt .Before (rooms [j ].stats .agentDispatchedAt )
317+ })
318+
319+ index := 1
320+ for _ , room := range rooms {
303321 boolToSymbol := func (b bool ) string {
304322 if b {
305323 return checkStyle .Render ("✓" )
306324 }
307325 return crossStyle .Render ("✗" )
308326 }
327+ agentJoinDelay := "-"
328+ if ! room .stats .agentJoinedAt .IsZero () && ! room .stats .agentDispatchedAt .IsZero () {
329+ agentJoinDelay = room .stats .agentJoinedAt .Sub (room .stats .agentDispatchedAt ).String ()
330+ }
309331
310332 table .Row (
311333 strconv .Itoa (index ),
312334 room .room .Name (),
313335 room .stats .agentDispatchedAt .Format (time .RFC3339 ),
314336 boolToSymbol (room .stats .agentJoined ),
315- room . stats . agentJoinedAt . Format ( time . RFC3339 ) ,
337+ agentJoinDelay ,
316338 boolToSymbol (room .stats .agentTrackSubscribed ),
317339 boolToSymbol (room .stats .echoTrackPublished ),
318340 )
0 commit comments