2025-03-23 23:09:47 +01:00
|
|
|
package domain
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestPeerStatus_IsConnected(t *testing.T) {
|
|
|
|
now := time.Now()
|
|
|
|
past := now.Add(-3 * time.Minute)
|
|
|
|
recent := now.Add(-1 * time.Minute)
|
|
|
|
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
status PeerStatus
|
|
|
|
want bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "Pingable and recent handshake",
|
|
|
|
status: PeerStatus{
|
|
|
|
IsPingable: true,
|
|
|
|
LastHandshake: &recent,
|
|
|
|
},
|
|
|
|
want: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "Not pingable but recent handshake",
|
|
|
|
status: PeerStatus{
|
|
|
|
IsPingable: false,
|
|
|
|
LastHandshake: &recent,
|
|
|
|
},
|
|
|
|
want: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "Pingable but old handshake",
|
|
|
|
status: PeerStatus{
|
|
|
|
IsPingable: true,
|
|
|
|
LastHandshake: &past,
|
|
|
|
},
|
|
|
|
want: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "Not pingable and old handshake",
|
|
|
|
status: PeerStatus{
|
|
|
|
IsPingable: false,
|
|
|
|
LastHandshake: &past,
|
|
|
|
},
|
|
|
|
want: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "Pingable and no handshake",
|
|
|
|
status: PeerStatus{
|
|
|
|
IsPingable: true,
|
|
|
|
LastHandshake: nil,
|
|
|
|
},
|
|
|
|
want: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "Not pingable and no handshake",
|
|
|
|
status: PeerStatus{
|
|
|
|
IsPingable: false,
|
|
|
|
LastHandshake: nil,
|
|
|
|
},
|
|
|
|
want: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
add webhook event for peer state change (#444)
new event types: connect and disconnect
example payload:
```json
{
"event": "connect",
"entity": "peer",
"identifier": "Fb5TaziAs1WrPBjC/MFbWsIelVXvi0hDKZ3YQM9wmU8=",
"payload": {
"PeerId": "Fb5TaziAs1WrPBjC/MFbWsIelVXvi0hDKZ3YQM9wmU8=",
"IsConnected": true,
"IsPingable": false,
"LastPing": null,
"BytesReceived": 1860,
"BytesTransmitted": 10824,
"LastHandshake": "2025-06-26T23:04:33.325216659+02:00",
"Endpoint": "10.55.66.77:33874",
"LastSessionStart": "2025-06-26T22:50:40.10221606+02:00"
}
}
```
2025-06-26 23:25:53 +02:00
|
|
|
tt.status.CalcConnected()
|
|
|
|
if got := tt.status.IsConnected; got != tt.want {
|
|
|
|
t.Errorf("IsConnected = %v, want %v", got, tt.want)
|
2025-03-23 23:09:47 +01:00
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|