Files
tia-love/internal/docker/client_test.go
T

51 lines
1.2 KiB
Go

package docker
import (
"context"
"os"
"testing"
"time"
)
// TestIntegrationInfo dijalankan hanya bila docker socket tersedia —
// di CI runner tanpa socket, test di-skip otomatis.
func TestIntegrationInfo(t *testing.T) {
if _, err := os.Stat("/var/run/docker.sock"); err != nil {
t.Skip("docker socket tidak ada — skip tes integrasi")
}
c, err := New()
if err != nil {
t.Fatalf("New: %v", err)
}
defer c.Close()
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := c.Ping(ctx); err != nil {
t.Fatalf("Ping: %v", err)
}
info, err := c.Info(ctx)
if err != nil {
t.Fatalf("Info: %v", err)
}
if info.ServerVersion == "" {
t.Fatal("ServerVersion kosong")
}
t.Logf("engine %s (API %s) · %d/%d kontainer berjalan · %d image · %d CPU · %d MB RAM",
info.ServerVersion, info.APIVersion, info.Running, info.Containers,
info.Images, info.CPUs, info.MemoryTotal/1024/1024)
items, err := c.ListContainers(ctx)
if err != nil {
t.Fatalf("ListContainers: %v", err)
}
t.Logf("ListContainers: %d kontainer", len(items))
for i, ct := range items {
if i >= 5 {
break
}
t.Logf(" - %-20s %-10s %s", ct.Name, ct.State, ct.Image)
}
}