mirror of
https://github.com/livekit/livekit.git
synced 2026-03-29 09:19:53 +00:00
Standardize twirp hooks during server init (#2959)
This commit is contained in:
@@ -107,18 +107,17 @@ func NewLivekitServer(conf *config.Config,
|
||||
middlewares = append(middlewares, NewAPIKeyAuthMiddleware(keyProvider))
|
||||
}
|
||||
|
||||
twirpLoggingHook := TwirpLogger()
|
||||
twirpRequestStatusHook := TwirpRequestStatusReporter()
|
||||
roomServer := livekit.NewRoomServiceServer(roomService, twirpLoggingHook)
|
||||
agentDispatchServer := livekit.NewAgentDispatchServiceServer(agentDispatchService, twirpLoggingHook)
|
||||
egressServer := livekit.NewEgressServer(egressService, twirp.WithServerHooks(
|
||||
twirp.ChainHooks(
|
||||
twirpLoggingHook,
|
||||
twirpRequestStatusHook,
|
||||
),
|
||||
))
|
||||
ingressServer := livekit.NewIngressServer(ingressService, twirpLoggingHook)
|
||||
sipServer := livekit.NewSIPServer(sipService, twirpLoggingHook)
|
||||
serverOptions := []interface{}{
|
||||
twirp.WithServerHooks(twirp.ChainHooks(
|
||||
TwirpLogger(),
|
||||
TwirpRequestStatusReporter(),
|
||||
)),
|
||||
}
|
||||
roomServer := livekit.NewRoomServiceServer(roomService, serverOptions...)
|
||||
agentDispatchServer := livekit.NewAgentDispatchServiceServer(agentDispatchService, serverOptions...)
|
||||
egressServer := livekit.NewEgressServer(egressService, serverOptions...)
|
||||
ingressServer := livekit.NewIngressServer(ingressService, serverOptions...)
|
||||
sipServer := livekit.NewSIPServer(sipService, serverOptions...)
|
||||
|
||||
mux := http.NewServeMux()
|
||||
if conf.Development {
|
||||
|
||||
34
pkg/service/twirp_test.go
Normal file
34
pkg/service/twirp_test.go
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright 2024 LiveKit, Inc
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package service
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/twitchtv/twirp"
|
||||
)
|
||||
|
||||
func TestConvertErrToTwirp(t *testing.T) {
|
||||
t.Run("handles not found", func(t *testing.T) {
|
||||
err := ErrRoomNotFound
|
||||
var tErr twirp.Error
|
||||
require.True(t, errors.As(err, &tErr))
|
||||
require.Equal(t, twirp.NotFound, tErr.Code())
|
||||
})
|
||||
}
|
||||
@@ -16,6 +16,7 @@ package test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
@@ -26,6 +27,7 @@ import (
|
||||
"github.com/pion/webrtc/v3"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/thoas/go-funk"
|
||||
"github.com/twitchtv/twirp"
|
||||
|
||||
"github.com/livekit/protocol/auth"
|
||||
"github.com/livekit/protocol/livekit"
|
||||
@@ -330,6 +332,32 @@ func TestSingleNodeRoomList(t *testing.T) {
|
||||
roomServiceListRoom(t)
|
||||
}
|
||||
|
||||
func TestSingleNodeUpdateParticipant(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.SkipNow()
|
||||
return
|
||||
}
|
||||
_, finish := setupSingleNodeTest("TestSingleNodeRoomList")
|
||||
defer finish()
|
||||
|
||||
adminCtx := contextWithToken(adminRoomToken(testRoom))
|
||||
t.Run("update nonexistent participant", func(t *testing.T) {
|
||||
_, err := roomClient.UpdateParticipant(adminCtx, &livekit.UpdateParticipantRequest{
|
||||
Room: testRoom,
|
||||
Identity: "nonexistent",
|
||||
Permission: &livekit.ParticipantPermission{
|
||||
CanPublish: true,
|
||||
},
|
||||
})
|
||||
require.Error(t, err)
|
||||
var twErr twirp.Error
|
||||
require.True(t, errors.As(err, &twErr))
|
||||
// Note: for Cloud this would return 404, currently we are not able to differentiate between
|
||||
// non-existent participant vs server being unavailable in OSS
|
||||
require.Equal(t, twirp.Unavailable, twErr.Code())
|
||||
})
|
||||
}
|
||||
|
||||
// Ensure that CORS headers are returned
|
||||
func TestSingleNodeCORS(t *testing.T) {
|
||||
if testing.Short() {
|
||||
|
||||
Reference in New Issue
Block a user