mirror of
https://github.com/Quad4-Software/Reticulum-Go
synced 2026-08-29 23:48:44 -04:00
89 lines
2.5 KiB
Go
89 lines
2.5 KiB
Go
// SPDX-License-Identifier: Apache-2.0
|
|
// Copyright (c) 2024-2026 Quad4.io
|
|
|
|
package node
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"quad4/reticulum-go/pkg/common"
|
|
"quad4/reticulum-go/pkg/link"
|
|
)
|
|
|
|
func TestInterfaceConfigsEqualForReload(t *testing.T) {
|
|
a := &common.InterfaceConfig{Type: "UDPInterface", Address: ":0", TargetPort: 7, Enabled: true}
|
|
b := &common.InterfaceConfig{Type: "UDPInterface", Address: ":0", TargetPort: 7, Enabled: true}
|
|
if !interfaceConfigsEqualForReload(a, b) {
|
|
t.Fatal("expected equal")
|
|
}
|
|
b.Address = ":1"
|
|
if interfaceConfigsEqualForReload(a, b) {
|
|
t.Fatal("expected not equal after address change")
|
|
}
|
|
if !interfaceConfigsEqualForReload(nil, nil) {
|
|
t.Fatal("nil nil")
|
|
}
|
|
if interfaceConfigsEqualForReload(a, nil) || interfaceConfigsEqualForReload(nil, a) {
|
|
t.Fatal("nil vs non-nil")
|
|
}
|
|
|
|
c := &common.InterfaceConfig{Type: "UDPInterface", Address: ":0", Enabled: true, MTU: 500, Bitrate: 1000, PreferIPv6: true}
|
|
d := &common.InterfaceConfig{Type: "UDPInterface", Address: ":0", Enabled: true, MTU: 500, Bitrate: 1000, PreferIPv6: true}
|
|
if !interfaceConfigsEqualForReload(c, d) {
|
|
t.Fatal("expected equal with MTU/bitrate/prefer_ipv6")
|
|
}
|
|
d.MTU = 1000
|
|
if interfaceConfigsEqualForReload(c, d) {
|
|
t.Fatal("expected not equal after MTU change")
|
|
}
|
|
d.MTU = 500
|
|
d.Bitrate = 2000
|
|
if interfaceConfigsEqualForReload(c, d) {
|
|
t.Fatal("expected not equal after bitrate change")
|
|
}
|
|
d.Bitrate = 1000
|
|
d.PreferIPv6 = false
|
|
if interfaceConfigsEqualForReload(c, d) {
|
|
t.Fatal("expected not equal after prefer_ipv6 change")
|
|
}
|
|
d.PreferIPv6 = true
|
|
d.AnnounceCap = 5
|
|
if interfaceConfigsEqualForReload(c, d) {
|
|
t.Fatal("expected not equal after announce_cap change")
|
|
}
|
|
d.AnnounceCap = 0
|
|
d.IngressControl = true
|
|
d.IngressControlSet = true
|
|
if interfaceConfigsEqualForReload(c, d) {
|
|
t.Fatal("expected not equal after ingress_control change")
|
|
}
|
|
d.IngressControl = false
|
|
d.IngressControlSet = false
|
|
d.Outgoing = false
|
|
d.OutgoingSet = true
|
|
if interfaceConfigsEqualForReload(c, d) {
|
|
t.Fatal("expected not equal after outgoing change")
|
|
}
|
|
}
|
|
|
|
func TestOnNetworkLostCancelsReconnects(t *testing.T) {
|
|
cfg := common.DefaultConfig()
|
|
cfg.ShareInstance = false
|
|
n, err := New(cfg)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer func() { _ = n.Stop() }()
|
|
|
|
n.EnableLinkAutoReconnect(LinkReconnectOptions{MaxAttempts: 0, Backoff: time.Millisecond})
|
|
if err := n.OnNetworkLost(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !n.networkPaused {
|
|
t.Fatal("expected paused")
|
|
}
|
|
if !link.GlobalPaused() {
|
|
t.Fatal("expected global pause")
|
|
}
|
|
}
|