diff --git a/control/controlclient/auto_test.go b/control/controlclient/auto_test.go index 7ebcfb302..d4a090a37 100644 --- a/control/controlclient/auto_test.go +++ b/control/controlclient/auto_test.go @@ -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 {