controlclient: test peer keepalive directive
@@ -348,6 +348,53 @@ func TestControl(t *testing.T) {
c3.checkNoStatus(t)
c4.checkNoStatus(t)
})
+
+ t.Run("set hostinfo", func(t *testing.T) {
+ c1.SetHostinfo(&tailcfg.Hostinfo{
+ BackendLogID: "set-hostinfo-test",
+ OS: "linux",
+ })
+ c1.waitStatus(t, stateSynchronized)
+ c2NetMap := c2.status(t).New.NetMap
+ if len(c2NetMap.Peers) != 1 {
+ t.Fatalf("wrong number of peers: %v", c2NetMap.Peers)
+ }
+ peer := c2NetMap.Peers[0]
+ if !peer.KeepAlive {
+ t.Errorf("peer KeepAlive=false, want true")
+ }
+ if peer.Hostinfo.OS != "linux" {
+ t.Errorf("peer hostinfo does not have OS: %v", peer.Hostinfo)
+ }
+
+ c2.SetHostinfo(&tailcfg.Hostinfo{
+ BackendLogID: "set-hostinfo-test",
+ OS: "iOS",
+ })
+ c1NetMap = c1.status(t).New.NetMap
+ c2NetMap = c2.status(t).New.NetMap
+ if len(c1NetMap.Peers) != 1 {
+ t.Fatalf("wrong number of peers: %v", c1NetMap.Peers)
+ }
+ if len(c2NetMap.Peers) != 1 {
+ t.Fatalf("wrong number of peers: %v", c2NetMap.Peers)
+ }
+ peer = c1NetMap.Peers[0]
+ if peer.KeepAlive {
+ t.Errorf("peer KeepAlive=true, want false")
+ }
+ if peer.Hostinfo.OS != "iOS" {
+ t.Errorf("peer hostinfo does not have OS: %v", peer.Hostinfo)
+ }
+ peer = c2NetMap.Peers[0]
+ if peer.KeepAlive {
+ t.Errorf("peer KeepAlive=true, want false")
+ }
+ if peer.Hostinfo.OS != "linux" {
+ t.Errorf("peer hostinfo does not have OS: %v", peer.Hostinfo)
+ }
+
+ })
}
func hasStringsSuffix(list, suffix []string) bool {
