Skip to content

Commit 1022a79

Browse files
update(agentloadtesting): made review feedback changes (#551)
* feat(agentloadtesting): restructred loadtesting under perf command with backward compatibility * update(agentloadtesting): review feedback update * Revert "feat(agentloadtesting): restructred loadtesting under perf command with backward compatibility" This reverts commit 7c2e448. * added nanpa * slow down room creation and dispatch
1 parent bc6a771 commit 1022a79

File tree

2 files changed

+34
-11
lines changed

2 files changed

+34
-11
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
minor type="added" "Added changes to agent load testing feature based on review"

pkg/loadtester/agentloadtester.go

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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("\nInspect 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

222233
func (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

Comments
 (0)