portainer/pkg/snapshot/kubernetes_test.go

45 lines
1.3 KiB
Go

package snapshot
import (
"context"
"testing"
portainer "github.com/portainer/portainer/api"
"github.com/stretchr/testify/require"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kfake "k8s.io/client-go/kubernetes/fake"
)
func TestCreateKubernetesSnapshot(t *testing.T) {
cli := kfake.NewSimpleClientset()
kubernetesSnapshot := &portainer.KubernetesSnapshot{}
serverInfo, err := cli.Discovery().ServerVersion()
if err != nil {
t.Fatalf("error getting the kubernetesserver version: %v", err)
}
kubernetesSnapshot.KubernetesVersion = serverInfo.GitVersion
require.Equal(t, kubernetesSnapshot.KubernetesVersion, serverInfo.GitVersion)
nodeList, err := cli.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
if err != nil {
t.Fatalf("error listing kubernetes nodes: %v", err)
}
var totalCPUs, totalMemory int64
for _, node := range nodeList.Items {
totalCPUs += node.Status.Capacity.Cpu().Value()
totalMemory += node.Status.Capacity.Memory().Value()
}
kubernetesSnapshot.TotalCPU = totalCPUs
kubernetesSnapshot.TotalMemory = totalMemory
kubernetesSnapshot.NodeCount = len(nodeList.Items)
require.Equal(t, kubernetesSnapshot.TotalCPU, totalCPUs)
require.Equal(t, kubernetesSnapshot.TotalMemory, totalMemory)
require.Equal(t, kubernetesSnapshot.NodeCount, len(nodeList.Items))
t.Logf("Kubernetes snapshot: %+v", kubernetesSnapshot)
}