65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
|
// 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)
|
||
|
}
|
||
|
}
|