Files
go-cart-actor/pkg/discovery/discovery_test.go
T
mats aa8b2bdedc
Build and Publish / BuildAndDeployAmd64 (push) Failing after 5s
Build and Publish / BuildAndDeployArm64 (push) Failing after 6s
all the refactor
2026-06-28 17:51:52 +02:00

73 lines
1.6 KiB
Go

package discovery
import (
"os"
"path/filepath"
"testing"
"time"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
func kubeConfigPath(t *testing.T) string {
home, err := os.UserHomeDir()
if err != nil {
t.Skip("Skipping test: user home dir not found")
}
path := filepath.Join(home, ".kube", "config")
if _, err := os.Stat(path); os.IsNotExist(err) {
t.Skipf("Skipping test: %s not found", path)
}
return path
}
func TestDiscovery(t *testing.T) {
path := kubeConfigPath(t)
config, err := clientcmd.BuildConfigFromFlags("", path)
if err != nil {
t.Fatalf("Error building config: %v", err)
}
client, err := kubernetes.NewForConfig(config)
if err != nil {
t.Fatalf("Error creating client: %v", err)
}
d := NewK8sDiscovery(client, metav1.ListOptions{
LabelSelector: "app",
})
res, err := d.DiscoverInNamespace("")
if err != nil {
t.Errorf("Error discovering: %v", err)
}
if len(res) == 0 {
t.Errorf("Expected at least one host, got none")
}
}
func TestWatch(t *testing.T) {
path := kubeConfigPath(t)
config, err := clientcmd.BuildConfigFromFlags("", path)
if err != nil {
t.Fatalf("Error building config: %v", err)
}
client, err := kubernetes.NewForConfig(config)
if err != nil {
t.Fatalf("Error creating client: %v", err)
}
d := NewK8sDiscovery(client, metav1.ListOptions{
LabelSelector: "app",
})
ch, err := d.Watch()
if err != nil {
t.Errorf("Error watching: %v", err)
}
select {
case m := <-ch:
t.Logf("Received watch %v", m)
case <-time.After(5 * time.Second):
t.Errorf("Timeout waiting for watch")
}
}