mirror of
https://github.com/traefik/mesh.git
synced 2026-05-02 18:32:32 +00:00
144 lines
3.4 KiB
Go
144 lines
3.4 KiB
Go
package controller
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/stretchr/testify/assert"
|
|
corev1 "k8s.io/api/core/v1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/client-go/util/workqueue"
|
|
)
|
|
|
|
func TestEnqueueWorkHandler_OnAdd(t *testing.T) {
|
|
logger := logrus.New()
|
|
logger.SetOutput(os.Stdout)
|
|
logger.SetLevel(logrus.DebugLevel)
|
|
|
|
workQueue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
|
|
|
|
handler := &enqueueWorkHandler{logger: logger, workQueue: workQueue}
|
|
handler.OnAdd(&corev1.Pod{})
|
|
|
|
assert.Equal(t, 1, workQueue.Len())
|
|
|
|
currentKey, _ := workQueue.Get()
|
|
|
|
assert.Equal(t, configRefreshKey, currentKey)
|
|
}
|
|
|
|
func TestEnqueueWorkHandler_OnDelete(t *testing.T) {
|
|
logger := logrus.New()
|
|
logger.SetOutput(os.Stdout)
|
|
logger.SetLevel(logrus.DebugLevel)
|
|
|
|
workQueue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
|
|
|
|
handler := &enqueueWorkHandler{logger: logger, workQueue: workQueue}
|
|
handler.OnDelete(&corev1.Pod{})
|
|
|
|
assert.Equal(t, 1, workQueue.Len())
|
|
|
|
currentKey, _ := workQueue.Get()
|
|
|
|
assert.Equal(t, configRefreshKey, currentKey)
|
|
}
|
|
|
|
func TestEnqueueWorkHandler_OnUpdate(t *testing.T) {
|
|
tests := []struct {
|
|
desc string
|
|
oldObj interface{}
|
|
newObj interface{}
|
|
expectedLen int
|
|
}{
|
|
{
|
|
desc: "should not enqueue if this is a re-sync event",
|
|
oldObj: &corev1.Service{
|
|
ObjectMeta: metav1.ObjectMeta{ResourceVersion: "foo"},
|
|
},
|
|
newObj: &corev1.Service{
|
|
ObjectMeta: metav1.ObjectMeta{ResourceVersion: "foo"},
|
|
},
|
|
expectedLen: 0,
|
|
},
|
|
{
|
|
desc: "should enqueue if this is not a re-sync event",
|
|
oldObj: &corev1.Service{
|
|
ObjectMeta: metav1.ObjectMeta{ResourceVersion: "foo"},
|
|
},
|
|
newObj: &corev1.Service{
|
|
ObjectMeta: metav1.ObjectMeta{ResourceVersion: "bar"},
|
|
},
|
|
expectedLen: 1,
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
test := test
|
|
t.Run(test.desc, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
logger := logrus.New()
|
|
logger.SetOutput(os.Stdout)
|
|
logger.SetLevel(logrus.DebugLevel)
|
|
|
|
workQueue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
|
|
|
|
handler := &enqueueWorkHandler{logger: logger, workQueue: workQueue}
|
|
handler.OnUpdate(test.oldObj, test.newObj)
|
|
|
|
assert.Equal(t, test.expectedLen, workQueue.Len())
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestEnqueueWorkHandler_enqueueWork(t *testing.T) {
|
|
tests := []struct {
|
|
desc string
|
|
obj interface{}
|
|
expectedLen int
|
|
expectedKey string
|
|
}{
|
|
{
|
|
desc: "should enqueue a refresh key if obj is not a service",
|
|
obj: &corev1.Endpoints{},
|
|
expectedLen: 1,
|
|
expectedKey: configRefreshKey,
|
|
},
|
|
{
|
|
desc: "should enqueue a meta namespace key if the obj is a service",
|
|
obj: &corev1.Service{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: "foo",
|
|
Namespace: "bar",
|
|
},
|
|
},
|
|
expectedLen: 1,
|
|
expectedKey: "bar/foo",
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
test := test
|
|
t.Run(test.desc, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
logger := logrus.New()
|
|
logger.SetOutput(os.Stdout)
|
|
logger.SetLevel(logrus.DebugLevel)
|
|
|
|
workQueue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
|
|
|
|
handler := &enqueueWorkHandler{logger: logger, workQueue: workQueue}
|
|
handler.enqueueWork(test.obj)
|
|
|
|
assert.Equal(t, test.expectedLen, workQueue.Len())
|
|
|
|
currentKey, _ := workQueue.Get()
|
|
|
|
assert.Equal(t, test.expectedKey, currentKey)
|
|
})
|
|
}
|
|
}
|