mirror of
https://github.com/netbirdio/netbird.git
synced 2025-08-02 04:33:01 +02:00
This PR introduces a new inactivity package responsible for monitoring peer activity and notifying when peers become inactive. Introduces a new Signal message type to close the peer connection after the idle timeout is reached. Periodically checks the last activity of registered peers via a Bind interface. Notifies via a channel when peers exceed a configurable inactivity threshold. Default settings DefaultInactivityThreshold is set to 15 minutes, with a minimum allowed threshold of 1 minute. Limitations This inactivity check does not support kernel WireGuard integration. In kernel–user space communication, the user space side will always be responsible for closing the connection.
28 lines
598 B
Go
28 lines
598 B
Go
package bind
|
|
|
|
import (
|
|
"net/netip"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestActivityRecorder_GetLastActivities(t *testing.T) {
|
|
peer := "peer1"
|
|
ar := NewActivityRecorder()
|
|
ar.UpsertAddress("peer1", netip.MustParseAddrPort("192.168.0.5:51820"))
|
|
activities := ar.GetLastActivities()
|
|
|
|
p, ok := activities[peer]
|
|
if !ok {
|
|
t.Fatalf("Expected activity for peer %s, but got none", peer)
|
|
}
|
|
|
|
if p.IsZero() {
|
|
t.Fatalf("Expected activity for peer %s, but got zero", peer)
|
|
}
|
|
|
|
if p.Before(time.Now().Add(-2 * time.Minute)) {
|
|
t.Fatalf("Expected activity for peer %s to be recent, but got %v", peer, p)
|
|
}
|
|
}
|