102 lines
2.8 KiB
Go
102 lines
2.8 KiB
Go
package resource_test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/derailed/k9s/internal/k8s"
|
|
"github.com/derailed/k9s/internal/resource"
|
|
m "github.com/petergtz/pegomock"
|
|
"github.com/stretchr/testify/assert"
|
|
v1 "k8s.io/api/core/v1"
|
|
mv1beta1 "k8s.io/metrics/pkg/apis/metrics/v1beta1"
|
|
)
|
|
|
|
func TestClusterVersion(t *testing.T) {
|
|
mm, mx := NewMockClusterMeta(), NewMockMetricsServer()
|
|
m.When(mm.Version()).ThenReturn("1.2.3", nil)
|
|
|
|
ci := resource.NewClusterWithArgs(mm, mx)
|
|
assert.Equal(t, "1.2.3", ci.Version())
|
|
}
|
|
|
|
func TestClusterNoVersion(t *testing.T) {
|
|
mm, mx := NewMockClusterMeta(), NewMockMetricsServer()
|
|
m.When(mm.Version()).ThenReturn("bad", fmt.Errorf("No data"))
|
|
|
|
ci := resource.NewClusterWithArgs(mm, mx)
|
|
assert.Equal(t, "n/a", ci.Version())
|
|
}
|
|
|
|
func TestClusterName(t *testing.T) {
|
|
mm, mx := NewMockClusterMeta(), NewMockMetricsServer()
|
|
m.When(mm.ClusterName()).ThenReturn("fred")
|
|
|
|
ci := resource.NewClusterWithArgs(mm, mx)
|
|
assert.Equal(t, "fred", ci.ClusterName())
|
|
}
|
|
|
|
func TestContextName(t *testing.T) {
|
|
mm, mx := NewMockClusterMeta(), NewMockMetricsServer()
|
|
m.When(mm.ContextName()).ThenReturn("fred")
|
|
|
|
ci := resource.NewClusterWithArgs(mm, mx)
|
|
assert.Equal(t, "fred", ci.ContextName())
|
|
}
|
|
|
|
func TestUserName(t *testing.T) {
|
|
mm, mx := NewMockClusterMeta(), NewMockMetricsServer()
|
|
m.When(mm.UserName()).ThenReturn("fred")
|
|
|
|
ci := resource.NewClusterWithArgs(mm, mx)
|
|
assert.Equal(t, "fred", ci.UserName())
|
|
}
|
|
|
|
func TestClusterMetrics(t *testing.T) {
|
|
mm, mx := NewMockClusterMeta(), NewMockMetricsServer()
|
|
m.When(mx.ClusterLoad([]v1.Node{}, []mv1beta1.NodeMetrics{})).ThenReturn(clusterMetric())
|
|
|
|
c := resource.NewClusterWithArgs(mm, mx)
|
|
assert.Equal(t, clusterMetric(), c.Metrics([]v1.Node{}, []mv1beta1.NodeMetrics{}))
|
|
}
|
|
|
|
func TestClusterGetNodes(t *testing.T) {
|
|
mm, mx := NewMockClusterMeta(), NewMockMetricsServer()
|
|
m.When(mm.GetNodes()).ThenReturn([]v1.Node{*k8sNode()}, nil)
|
|
m.When(mx.ClusterLoad([]v1.Node{}, []mv1beta1.NodeMetrics{})).ThenReturn(clusterMetric())
|
|
|
|
c := resource.NewClusterWithArgs(mm, mx)
|
|
nodes, err := c.GetNodes()
|
|
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, 1, len(nodes))
|
|
}
|
|
|
|
func TestClusterFetchNodesMetrics(t *testing.T) {
|
|
mm, mx := NewMockClusterMeta(), NewMockMetricsServer()
|
|
m.When(mm.GetNodes()).ThenReturn([]v1.Node{*k8sNode()}, nil)
|
|
m.When(mx.FetchNodesMetrics()).ThenReturn([]mv1beta1.NodeMetrics{makeMxNode("fred", "100m", "10Mi")}, nil)
|
|
|
|
c := resource.NewClusterWithArgs(mm, mx)
|
|
metrics, err := c.FetchNodesMetrics()
|
|
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, 1, len(metrics))
|
|
}
|
|
|
|
// Helpers...
|
|
|
|
func TestUsingMocks(t *testing.T) {
|
|
m.RegisterMockTestingT(t)
|
|
m.RegisterMockFailHandler(func(m string, i ...int) {
|
|
fmt.Println("Boom!", m, i)
|
|
})
|
|
}
|
|
|
|
func clusterMetric() k8s.ClusterMetrics {
|
|
return k8s.ClusterMetrics{
|
|
PercCPU: 100,
|
|
PercMEM: 1000,
|
|
}
|
|
}
|