// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 package http import ( "encoding/json" "testing" "github.com/hashicorp/vault/helper/hostutil" "github.com/hashicorp/vault/vault" ) func TestSysHostInfo(t *testing.T) { cluster := vault.NewTestCluster(t, &vault.CoreConfig{}, &vault.TestClusterOptions{ HandlerFunc: Handler, }) cluster.Start() defer cluster.Cleanup() cores := cluster.Cores vault.TestWaitActive(t, cores[0].Core) // Query against the active node, should get host information back secret, err := cores[0].Client.Logical().Read("sys/host-info") if err != nil { t.Fatal(err) } if secret == nil || secret.Data == nil { t.Fatal("expected data in the response") } dataBytes, err := json.Marshal(secret.Data) if err != nil { t.Fatal(err) } var info hostutil.HostInfo if err := json.Unmarshal(dataBytes, &info); err != nil { t.Fatal(err) } if info.Timestamp.IsZero() { t.Fatal("expected non-zero Timestamp") } if info.CPU == nil { t.Fatal("expected non-nil CPU value") } if info.Disk == nil { t.Fatal("expected disk info") } if info.Host == nil { t.Fatal("expected host info") } if info.Memory == nil { t.Fatal("expected memory info") } // Query against a standby, should error secret, err = cores[1].Client.Logical().Read("sys/host-info") if err == nil || secret != nil { t.Fatalf("expected error on standby node, HostInfo: %v", secret) } }