github.com/grahambrereton-form3/tilt@v0.10.18/internal/k8s/registry_test.go (about)

     1  package k8s
     2  
     3  import (
     4  	"bytes"
     5  	"context"
     6  	goruntime "runtime"
     7  	"testing"
     8  
     9  	"github.com/windmilleng/tilt/internal/container"
    10  	"github.com/windmilleng/tilt/pkg/logger"
    11  
    12  	"github.com/stretchr/testify/assert"
    13  	v1 "k8s.io/api/core/v1"
    14  	"k8s.io/apimachinery/pkg/api/errors"
    15  	"k8s.io/apimachinery/pkg/runtime"
    16  	"k8s.io/apimachinery/pkg/runtime/schema"
    17  	"k8s.io/client-go/kubernetes/fake"
    18  	ktesting "k8s.io/client-go/testing"
    19  )
    20  
    21  func TestRegistryFound(t *testing.T) {
    22  	// microk8s is linux-only
    23  	if goruntime.GOOS != "linux" {
    24  		t.SkipNow()
    25  	}
    26  
    27  	cs := &fake.Clientset{}
    28  	cs.AddReactor("*", "*", func(action ktesting.Action) (handled bool, ret runtime.Object, err error) {
    29  		return true, &v1.Service{
    30  			Spec: v1.ServiceSpec{
    31  				Ports: []v1.ServicePort{
    32  					v1.ServicePort{NodePort: 32000},
    33  				},
    34  			},
    35  		}, nil
    36  	})
    37  
    38  	core := cs.CoreV1()
    39  	registryAsync := newRegistryAsync(EnvMicroK8s, core, NewNaiveRuntimeSource(container.RuntimeContainerd))
    40  
    41  	out := &bytes.Buffer{}
    42  	l := logger.NewLogger(logger.InfoLvl, out)
    43  	ctx := logger.WithLogger(context.Background(), l)
    44  	registry := registryAsync.Registry(ctx)
    45  	assert.Equal(t, "localhost:32000", string(registry))
    46  }
    47  
    48  func TestRegistryNotFound(t *testing.T) {
    49  	// microk8s is linux-only
    50  	if goruntime.GOOS != "linux" {
    51  		t.SkipNow()
    52  	}
    53  
    54  	cs := &fake.Clientset{}
    55  	cs.AddReactor("*", "*", func(action ktesting.Action) (handled bool, ret runtime.Object, err error) {
    56  		return true, nil, errors.NewNotFound(schema.GroupResource{Group: "core/v1", Resource: "service"}, "registry")
    57  	})
    58  
    59  	core := cs.CoreV1()
    60  	registryAsync := newRegistryAsync(EnvMicroK8s, core, NewNaiveRuntimeSource(container.RuntimeContainerd))
    61  
    62  	out := &bytes.Buffer{}
    63  	l := logger.NewLogger(logger.InfoLvl, out)
    64  	ctx := logger.WithLogger(context.Background(), l)
    65  	registry := registryAsync.Registry(ctx)
    66  	assert.Equal(t, "", string(registry))
    67  	assert.Contains(t, out.String(), "microk8s.enable registry")
    68  }