mirror of
https://github.com/netbirdio/netbird.git
synced 2026-10-03 12:09:09 +02:00
Remove race reload test
This commit is contained in:
@@ -2914,10 +2914,6 @@ func (s *Server) ResolveTarget(id ipcauth.Identity, handle string) (ipcauth.Targ
|
|||||||
|
|
||||||
match, matchErr := s.profileManager.MatchProfiles(handle)
|
match, matchErr := s.profileManager.MatchProfiles(handle)
|
||||||
|
|
||||||
if afterProfileResolve != nil {
|
|
||||||
afterProfileResolve()
|
|
||||||
}
|
|
||||||
|
|
||||||
if matchErr != nil {
|
if matchErr != nil {
|
||||||
log.Debugf("failed to match profile %q: %v", handle, matchErr)
|
log.Debugf("failed to match profile %q: %v", handle, matchErr)
|
||||||
return ipcauth.Target{}, matchHandleError(handle, matchErr)
|
return ipcauth.Target{}, matchHandleError(handle, matchErr)
|
||||||
@@ -2981,10 +2977,6 @@ func (s *Server) targetProfile(ctx context.Context) (*profilemanager.Profile, er
|
|||||||
return resolved, nil
|
return resolved, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// afterProfileResolve is a seam for tests to run a concurrent profile switch
|
|
||||||
// between the resolution that stamps owners and the reload that publishes them.
|
|
||||||
var afterProfileResolve func()
|
|
||||||
|
|
||||||
// reloadActiveConfig refreshes the daemon's copy of the active profile's config
|
// reloadActiveConfig refreshes the daemon's copy of the active profile's config
|
||||||
// from disk, which is where SessionHolder reads the owner of a live session.
|
// from disk, which is where SessionHolder reads the owner of a live session.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -92,44 +92,6 @@ func TestResolveTarget_UnreadableConfigKeepsTheOneInPlace(t *testing.T) {
|
|||||||
require.True(t, holder.Matches(unprivilegedIdentity()))
|
require.True(t, holder.Matches(unprivilegedIdentity()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// A profile switch can land while the gate is still resolving: the resolution
|
|
||||||
// reads every profile off disk, and SwitchProfile only needs the daemon lock,
|
|
||||||
// which the gate does not hold. The config the reload publishes has to be the
|
|
||||||
// one the daemon is now on, not the one the check started out reading.
|
|
||||||
func TestResolveTarget_ReloadFollowsASwitchThatLandsMidCheck(t *testing.T) {
|
|
||||||
s, _, activeProfile, _, _ := setupServerWithProfile(t)
|
|
||||||
owner := unprivilegedIdentity()
|
|
||||||
|
|
||||||
switchedTo := "switched-to"
|
|
||||||
switchedToURL := "https://switched-to.example:443"
|
|
||||||
_, err := profilemanager.UpdateOrCreateConfig(profilemanager.ConfigInput{
|
|
||||||
ConfigPath: filepath.Join(profilemanager.DefaultConfigPathDir, switchedTo+".json"),
|
|
||||||
ManagementURL: switchedToURL,
|
|
||||||
Owner: &owner,
|
|
||||||
})
|
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
s.config = &profilemanager.Config{}
|
|
||||||
s.clientRunning = true
|
|
||||||
|
|
||||||
// Stand in for a SwitchProfile that lands between the resolution and the
|
|
||||||
// reload, which is the whole window the profile files are being read in.
|
|
||||||
afterProfileResolve = func() {
|
|
||||||
require.NoError(t, s.profileManager.SetActiveProfileState(&profilemanager.ActiveProfileState{
|
|
||||||
ID: profilemanager.ID(switchedTo),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
t.Cleanup(func() { afterProfileResolve = nil })
|
|
||||||
|
|
||||||
target, err := s.ResolveTarget(owner, activeProfile)
|
|
||||||
require.NoError(t, err)
|
|
||||||
require.True(t, target.Owned)
|
|
||||||
|
|
||||||
require.NotNil(t, s.config.ManagementURL)
|
|
||||||
require.Equal(t, switchedToURL, s.config.ManagementURL.String(),
|
|
||||||
"the reload published the config of a profile the daemon had already left")
|
|
||||||
}
|
|
||||||
|
|
||||||
// The handlers that start a session read their config off disk themselves.
|
// The handlers that start a session read their config off disk themselves.
|
||||||
func TestResolveTarget_IdleDaemonKeepsItsConfig(t *testing.T) {
|
func TestResolveTarget_IdleDaemonKeepsItsConfig(t *testing.T) {
|
||||||
s, _, activeProfile, _, _ := setupServerWithProfile(t)
|
s, _, activeProfile, _, _ := setupServerWithProfile(t)
|
||||||
|
|||||||
Reference in New Issue
Block a user