mirror of
https://github.com/livekit/livekit.git
synced 2026-10-23 06:32:27 +00:00
handle new UpdateParticipant API, enable permission updates
This commit is contained in:
1 parent
6aee50b397
commit
537edda4c3
14 files changed
+387
-423
No files matched your search
@@ -13,7 +13,7 @@ func newMockParticipant(identity string) *typesfakes.FakeParticipant {
|
||||
p.IdentityReturns(identity)
|
||||
p.StateReturns(livekit.ParticipantInfo_JOINED)
|
||||
|
||||
p.SetMetadataStub = func(m map[string]interface{}) error {
|
||||
p.SetMetadataStub = func(m string) {
|
||||
var f func(participant types.Participant)
|
||||
if p.OnMetadataUpdateCallCount() > 0 {
|
||||
f = p.OnMetadataUpdateArgsForCall(p.OnMetadataUpdateCallCount() - 1)
|
||||
@@ -21,7 +21,6 @@ func newMockParticipant(identity string) *typesfakes.FakeParticipant {
|
||||
if f != nil {
|
||||
f(p)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
updateTrack := func() {
|
||||
var f func(participant types.Participant, track types.PublishedTrack)
|
||||
|
||||
+2
-12
@@ -1,7 +1,6 @@
|
||||
package rtc
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"sync"
|
||||
@@ -139,21 +138,12 @@ func (p *ParticipantImpl) IsReady() bool {
|
||||
}
|
||||
|
||||
// attach metadata to the participant
|
||||
func (p *ParticipantImpl) SetMetadata(metadata map[string]interface{}) error {
|
||||
if metadata == nil {
|
||||
p.metadata = ""
|
||||
} else {
|
||||
if data, err := json.Marshal(metadata); err != nil {
|
||||
return err
|
||||
} else {
|
||||
p.metadata = string(data)
|
||||
}
|
||||
}
|
||||
func (p *ParticipantImpl) SetMetadata(metadata string) {
|
||||
p.metadata = metadata
|
||||
|
||||
if p.onMetadataUpdate != nil {
|
||||
p.onMetadataUpdate(p)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ParticipantImpl) SetPermission(permission *livekit.ParticipantPermission) {
|
||||
|
||||
@@ -152,7 +152,7 @@ func TestParticipantUpdate(t *testing.T) {
|
||||
"track metadata updates are sent to everyone",
|
||||
true,
|
||||
func(p types.Participant) {
|
||||
p.SetMetadata(map[string]interface{}{})
|
||||
p.SetMetadata("")
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -285,7 +285,7 @@ func TestActiveSpeakers(t *testing.T) {
|
||||
assert.Equal(t, p2.ID(), speakers[1].Sid)
|
||||
})
|
||||
|
||||
t.Run("participants are getting updates when active", func(t *testing.T) {
|
||||
t.Run("participants are getting audio updates", func(t *testing.T) {
|
||||
rm := newRoomWithParticipants(t, 2)
|
||||
participants := rm.GetParticipants()
|
||||
p := participants[0].(*typesfakes.FakeParticipant)
|
||||
@@ -293,29 +293,29 @@ func TestActiveSpeakers(t *testing.T) {
|
||||
p.GetAudioLevelReturns(30, true)
|
||||
|
||||
speakers := rm.GetActiveSpeakers()
|
||||
assert.NotEmpty(t, speakers)
|
||||
assert.Equal(t, p.ID(), speakers[0].Sid)
|
||||
require.NotEmpty(t, speakers)
|
||||
require.Equal(t, p.ID(), speakers[0].Sid)
|
||||
|
||||
time.Sleep(audioUpdateDuration)
|
||||
|
||||
// everyone should've received updates
|
||||
for _, op := range participants {
|
||||
op := op.(*typesfakes.FakeParticipant)
|
||||
assert.Equal(t, 1, op.SendActiveSpeakersCallCount())
|
||||
require.Equal(t, 1, op.SendActiveSpeakersCallCount())
|
||||
}
|
||||
|
||||
// after another cycle, we are not getting any new updates since unchanged
|
||||
time.Sleep(audioUpdateDuration)
|
||||
for _, op := range participants {
|
||||
op := op.(*typesfakes.FakeParticipant)
|
||||
assert.Equal(t, 1, op.SendActiveSpeakersCallCount())
|
||||
require.Equal(t, 1, op.SendActiveSpeakersCallCount())
|
||||
}
|
||||
|
||||
// no longer speaking, send update with empty items
|
||||
p.GetAudioLevelReturns(127, false)
|
||||
time.Sleep(audioUpdateDuration)
|
||||
assert.Equal(t, 2, p.SendActiveSpeakersCallCount())
|
||||
assert.Empty(t, p.SendActiveSpeakersArgsForCall(1))
|
||||
require.Equal(t, 2, p.SendActiveSpeakersCallCount())
|
||||
require.Empty(t, p.SendActiveSpeakersArgsForCall(1))
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ type Participant interface {
|
||||
IsReady() bool
|
||||
ToProto() *livekit.ParticipantInfo
|
||||
RTCPChan() chan []rtcp.Packet
|
||||
SetMetadata(metadata map[string]interface{}) error
|
||||
SetMetadata(metadata string)
|
||||
SetPermission(permission *livekit.ParticipantPermission)
|
||||
GetResponseSink() routing.MessageSink
|
||||
SetResponseSink(sink routing.MessageSink)
|
||||
|
||||
@@ -255,16 +255,10 @@ type FakeParticipant struct {
|
||||
sendParticipantUpdateReturnsOnCall map[int]struct {
|
||||
result1 error
|
||||
}
|
||||
SetMetadataStub func(map[string]interface{}) error
|
||||
SetMetadataStub func(string)
|
||||
setMetadataMutex sync.RWMutex
|
||||
setMetadataArgsForCall []struct {
|
||||
arg1 map[string]interface{}
|
||||
}
|
||||
setMetadataReturns struct {
|
||||
result1 error
|
||||
}
|
||||
setMetadataReturnsOnCall map[int]struct {
|
||||
result1 error
|
||||
arg1 string
|
||||
}
|
||||
SetPermissionStub func(*livekit.ParticipantPermission)
|
||||
setPermissionMutex sync.RWMutex
|
||||
@@ -1661,23 +1655,17 @@ func (fake *FakeParticipant) SendParticipantUpdateReturnsOnCall(i int, result1 e
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *FakeParticipant) SetMetadata(arg1 map[string]interface{}) error {
|
||||
func (fake *FakeParticipant) SetMetadata(arg1 string) {
|
||||
fake.setMetadataMutex.Lock()
|
||||
ret, specificReturn := fake.setMetadataReturnsOnCall[len(fake.setMetadataArgsForCall)]
|
||||
fake.setMetadataArgsForCall = append(fake.setMetadataArgsForCall, struct {
|
||||
arg1 map[string]interface{}
|
||||
arg1 string
|
||||
}{arg1})
|
||||
stub := fake.SetMetadataStub
|
||||
fakeReturns := fake.setMetadataReturns
|
||||
fake.recordInvocation("SetMetadata", []interface{}{arg1})
|
||||
fake.setMetadataMutex.Unlock()
|
||||
if stub != nil {
|
||||
return stub(arg1)
|
||||
fake.SetMetadataStub(arg1)
|
||||
}
|
||||
if specificReturn {
|
||||
return ret.result1
|
||||
}
|
||||
return fakeReturns.result1
|
||||
}
|
||||
|
||||
func (fake *FakeParticipant) SetMetadataCallCount() int {
|
||||
@@ -1686,42 +1674,19 @@ func (fake *FakeParticipant) SetMetadataCallCount() int {
|
||||
return len(fake.setMetadataArgsForCall)
|
||||
}
|
||||
|
||||
func (fake *FakeParticipant) SetMetadataCalls(stub func(map[string]interface{}) error) {
|
||||
func (fake *FakeParticipant) SetMetadataCalls(stub func(string)) {
|
||||
fake.setMetadataMutex.Lock()
|
||||
defer fake.setMetadataMutex.Unlock()
|
||||
fake.SetMetadataStub = stub
|
||||
}
|
||||
|
||||
func (fake *FakeParticipant) SetMetadataArgsForCall(i int) map[string]interface{} {
|
||||
func (fake *FakeParticipant) SetMetadataArgsForCall(i int) string {
|
||||
fake.setMetadataMutex.RLock()
|
||||
defer fake.setMetadataMutex.RUnlock()
|
||||
argsForCall := fake.setMetadataArgsForCall[i]
|
||||
return argsForCall.arg1
|
||||
}
|
||||
|
||||
func (fake *FakeParticipant) SetMetadataReturns(result1 error) {
|
||||
fake.setMetadataMutex.Lock()
|
||||
defer fake.setMetadataMutex.Unlock()
|
||||
fake.SetMetadataStub = nil
|
||||
fake.setMetadataReturns = struct {
|
||||
result1 error
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *FakeParticipant) SetMetadataReturnsOnCall(i int, result1 error) {
|
||||
fake.setMetadataMutex.Lock()
|
||||
defer fake.setMetadataMutex.Unlock()
|
||||
fake.SetMetadataStub = nil
|
||||
if fake.setMetadataReturnsOnCall == nil {
|
||||
fake.setMetadataReturnsOnCall = make(map[int]struct {
|
||||
result1 error
|
||||
})
|
||||
}
|
||||
fake.setMetadataReturnsOnCall[i] = struct {
|
||||
result1 error
|
||||
}{result1}
|
||||
}
|
||||
|
||||
func (fake *FakeParticipant) SetPermission(arg1 *livekit.ParticipantPermission) {
|
||||
fake.setPermissionMutex.Lock()
|
||||
fake.setPermissionArgsForCall = append(fake.setPermissionArgsForCall, struct {
|
||||
|
||||
Reference in new issue
Block a user