mirror of
https://github.com/netbirdio/netbird.git
synced 2025-06-20 09:47:49 +02:00
[client] Ensure status recorder is always initialized (#3588)
* Ensure status recorder is always initialized * Add test * Add subscribe test
This commit is contained in:
parent
a4f04f5570
commit
101cce27f2
@ -84,6 +84,7 @@ func New(ctx context.Context, configPath, logFile string) *Server {
|
|||||||
},
|
},
|
||||||
logFile: logFile,
|
logFile: logFile,
|
||||||
persistNetworkMap: true,
|
persistNetworkMap: true,
|
||||||
|
statusRecorder: peer.NewRecorder(""),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,9 +137,6 @@ func (s *Server) Start() error {
|
|||||||
|
|
||||||
s.config = config
|
s.config = config
|
||||||
|
|
||||||
if s.statusRecorder == nil {
|
|
||||||
s.statusRecorder = peer.NewRecorder(config.ManagementURL.String())
|
|
||||||
}
|
|
||||||
s.statusRecorder.UpdateManagementAddress(config.ManagementURL.String())
|
s.statusRecorder.UpdateManagementAddress(config.ManagementURL.String())
|
||||||
s.statusRecorder.UpdateRosenpass(config.RosenpassEnabled, config.RosenpassPermissive)
|
s.statusRecorder.UpdateRosenpass(config.RosenpassEnabled, config.RosenpassPermissive)
|
||||||
|
|
||||||
@ -622,9 +620,6 @@ func (s *Server) Up(callerCtx context.Context, _ *proto.UpRequest) (*proto.UpRes
|
|||||||
return nil, fmt.Errorf("config is not defined, please call login command first")
|
return nil, fmt.Errorf("config is not defined, please call login command first")
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.statusRecorder == nil {
|
|
||||||
s.statusRecorder = peer.NewRecorder(s.config.ManagementURL.String())
|
|
||||||
}
|
|
||||||
s.statusRecorder.UpdateManagementAddress(s.config.ManagementURL.String())
|
s.statusRecorder.UpdateManagementAddress(s.config.ManagementURL.String())
|
||||||
s.statusRecorder.UpdateRosenpass(s.config.RosenpassEnabled, s.config.RosenpassPermissive)
|
s.statusRecorder.UpdateRosenpass(s.config.RosenpassEnabled, s.config.RosenpassPermissive)
|
||||||
|
|
||||||
@ -692,9 +687,6 @@ func (s *Server) Status(
|
|||||||
|
|
||||||
statusResponse := proto.StatusResponse{Status: string(status), DaemonVersion: version.NetbirdVersion()}
|
statusResponse := proto.StatusResponse{Status: string(status), DaemonVersion: version.NetbirdVersion()}
|
||||||
|
|
||||||
if s.statusRecorder == nil {
|
|
||||||
s.statusRecorder = peer.NewRecorder(s.config.ManagementURL.String())
|
|
||||||
}
|
|
||||||
s.statusRecorder.UpdateManagementAddress(s.config.ManagementURL.String())
|
s.statusRecorder.UpdateManagementAddress(s.config.ManagementURL.String())
|
||||||
s.statusRecorder.UpdateRosenpass(s.config.RosenpassEnabled, s.config.RosenpassPermissive)
|
s.statusRecorder.UpdateRosenpass(s.config.RosenpassEnabled, s.config.RosenpassPermissive)
|
||||||
|
|
||||||
|
@ -3,20 +3,22 @@ package server
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"net"
|
"net"
|
||||||
|
"net/url"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/mock/gomock"
|
"github.com/golang/mock/gomock"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"go.opentelemetry.io/otel"
|
|
||||||
|
|
||||||
"github.com/netbirdio/management-integrations/integrations"
|
"github.com/netbirdio/management-integrations/integrations"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"go.opentelemetry.io/otel"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/keepalive"
|
"google.golang.org/grpc/keepalive"
|
||||||
|
|
||||||
"github.com/netbirdio/netbird/client/internal"
|
"github.com/netbirdio/netbird/client/internal"
|
||||||
"github.com/netbirdio/netbird/client/internal/peer"
|
"github.com/netbirdio/netbird/client/internal/peer"
|
||||||
|
daemonProto "github.com/netbirdio/netbird/client/proto"
|
||||||
mgmtProto "github.com/netbirdio/netbird/management/proto"
|
mgmtProto "github.com/netbirdio/netbird/management/proto"
|
||||||
"github.com/netbirdio/netbird/management/server"
|
"github.com/netbirdio/netbird/management/server"
|
||||||
"github.com/netbirdio/netbird/management/server/activity"
|
"github.com/netbirdio/netbird/management/server/activity"
|
||||||
@ -84,6 +86,72 @@ func TestConnectWithRetryRuns(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestServer_Up(t *testing.T) {
|
||||||
|
ctx := internal.CtxInitState(context.Background())
|
||||||
|
|
||||||
|
s := New(ctx, t.TempDir()+"/config.json", "console")
|
||||||
|
|
||||||
|
err := s.Start()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
u, err := url.Parse("http://non-existent-url-for-testing.invalid:12345")
|
||||||
|
require.NoError(t, err)
|
||||||
|
s.config = &internal.Config{
|
||||||
|
ManagementURL: u,
|
||||||
|
}
|
||||||
|
|
||||||
|
upCtx, cancel := context.WithTimeout(ctx, 1*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
upReq := &daemonProto.UpRequest{}
|
||||||
|
_, err = s.Up(upCtx, upReq)
|
||||||
|
|
||||||
|
assert.Contains(t, err.Error(), "NeedsLogin")
|
||||||
|
}
|
||||||
|
|
||||||
|
type mockSubscribeEventsServer struct {
|
||||||
|
ctx context.Context
|
||||||
|
sentEvents []*daemonProto.SystemEvent
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *mockSubscribeEventsServer) Send(event *daemonProto.SystemEvent) error {
|
||||||
|
m.sentEvents = append(m.sentEvents, event)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *mockSubscribeEventsServer) Context() context.Context {
|
||||||
|
return m.ctx
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestServer_SubcribeEvents(t *testing.T) {
|
||||||
|
ctx := internal.CtxInitState(context.Background())
|
||||||
|
|
||||||
|
s := New(ctx, t.TempDir()+"/config.json", "console")
|
||||||
|
|
||||||
|
err := s.Start()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
u, err := url.Parse("http://non-existent-url-for-testing.invalid:12345")
|
||||||
|
require.NoError(t, err)
|
||||||
|
s.config = &internal.Config{
|
||||||
|
ManagementURL: u,
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx, cancel := context.WithTimeout(ctx, 1*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
upReq := &daemonProto.SubscribeRequest{}
|
||||||
|
mockServer := &mockSubscribeEventsServer{
|
||||||
|
ctx: ctx,
|
||||||
|
sentEvents: make([]*daemonProto.SystemEvent, 0),
|
||||||
|
ServerStream: nil,
|
||||||
|
}
|
||||||
|
err = s.SubscribeEvents(upReq, mockServer)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
type mockServer struct {
|
type mockServer struct {
|
||||||
mgmtProto.ManagementServiceServer
|
mgmtProto.ManagementServiceServer
|
||||||
counter *int
|
counter *int
|
||||||
|
Loading…
x
Reference in New Issue
Block a user