mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 05:03:09 +00:00
Merge pull request #126056 from googs1025/refactor_namespace
use ktesting.NewTestContext(t) ctx instead of context.TODO() for namespace integration
This commit is contained in:
commit
233bc735b5
@ -42,10 +42,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestNamespaceCondition(t *testing.T) {
|
func TestNamespaceCondition(t *testing.T) {
|
||||||
closeFn, nsController, informers, kubeClient, dynamicClient := namespaceLifecycleSetup(t)
|
ctx, closeFn, nsController, informers, kubeClient, dynamicClient := namespaceLifecycleSetup(t)
|
||||||
defer closeFn()
|
defer closeFn()
|
||||||
nsName := "test-namespace-conditions"
|
nsName := "test-namespace-conditions"
|
||||||
_, err := kubeClient.CoreV1().Namespaces().Create(context.TODO(), &corev1.Namespace{
|
_, err := kubeClient.CoreV1().Namespaces().Create(ctx, &corev1.Namespace{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: nsName,
|
Name: nsName,
|
||||||
},
|
},
|
||||||
@ -55,11 +55,11 @@ func TestNamespaceCondition(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Start informer and controllers
|
// Start informer and controllers
|
||||||
_, ctx := ktesting.NewTestContext(t)
|
|
||||||
ctx, cancel := context.WithCancel(ctx)
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
informers.Start(ctx.Done())
|
informers.Start(ctx.Done())
|
||||||
|
informers.WaitForCacheSync(ctx.Done())
|
||||||
go nsController.Run(ctx, 5)
|
go nsController.Run(ctx, 5)
|
||||||
|
|
||||||
data := etcd.GetEtcdStorageDataForNamespace(nsName)
|
data := etcd.GetEtcdStorageDataForNamespace(nsName)
|
||||||
@ -67,7 +67,7 @@ func TestNamespaceCondition(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
_, err = dynamicClient.Resource(corev1.SchemeGroupVersion.WithResource("pods")).Namespace(nsName).Create(context.TODO(), podJSON, metav1.CreateOptions{})
|
_, err = dynamicClient.Resource(corev1.SchemeGroupVersion.WithResource("pods")).Namespace(nsName).Create(ctx, podJSON, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -77,17 +77,17 @@ func TestNamespaceCondition(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
deploymentJSON.SetFinalizers([]string{"custom.io/finalizer"})
|
deploymentJSON.SetFinalizers([]string{"custom.io/finalizer"})
|
||||||
_, err = dynamicClient.Resource(appsv1.SchemeGroupVersion.WithResource("deployments")).Namespace(nsName).Create(context.TODO(), deploymentJSON, metav1.CreateOptions{})
|
_, err = dynamicClient.Resource(appsv1.SchemeGroupVersion.WithResource("deployments")).Namespace(nsName).Create(ctx, deploymentJSON, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = kubeClient.CoreV1().Namespaces().Delete(context.TODO(), nsName, metav1.DeleteOptions{}); err != nil {
|
if err = kubeClient.CoreV1().Namespaces().Delete(ctx, nsName, metav1.DeleteOptions{}); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = wait.PollImmediate(1*time.Second, 60*time.Second, func() (bool, error) {
|
err = wait.PollUntilContextTimeout(ctx, 1*time.Second, 60*time.Second, true, func(ctx context.Context) (bool, error) {
|
||||||
curr, err := kubeClient.CoreV1().Namespaces().Get(context.TODO(), nsName, metav1.GetOptions{})
|
curr, err := kubeClient.CoreV1().Namespaces().Get(ctx, nsName, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
@ -121,19 +121,18 @@ func TestNamespaceCondition(t *testing.T) {
|
|||||||
|
|
||||||
// TestNamespaceLabels tests for default labels added in https://github.com/kubernetes/kubernetes/pull/96968
|
// TestNamespaceLabels tests for default labels added in https://github.com/kubernetes/kubernetes/pull/96968
|
||||||
func TestNamespaceLabels(t *testing.T) {
|
func TestNamespaceLabels(t *testing.T) {
|
||||||
closeFn, nsController, _, kubeClient, _ := namespaceLifecycleSetup(t)
|
ctx, closeFn, nsController, _, kubeClient, _ := namespaceLifecycleSetup(t)
|
||||||
defer closeFn()
|
defer closeFn()
|
||||||
|
|
||||||
// Even though nscontroller isn't used in this test, its creation is already
|
// Even though nscontroller isn't used in this test, its creation is already
|
||||||
// spawning some goroutines. So we need to run it to ensure they won't leak.
|
// spawning some goroutines. So we need to run it to ensure they won't leak.
|
||||||
_, ctx := ktesting.NewTestContext(t)
|
|
||||||
ctx, cancel := context.WithCancel(ctx)
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
go nsController.Run(ctx, 5)
|
go nsController.Run(ctx, 5)
|
||||||
|
|
||||||
nsName := "test-namespace-labels-generated"
|
nsName := "test-namespace-labels-generated"
|
||||||
// Create a new namespace w/ no name
|
// Create a new namespace w/ no name
|
||||||
ns, err := kubeClient.CoreV1().Namespaces().Create(context.TODO(), &corev1.Namespace{
|
ns, err := kubeClient.CoreV1().Namespaces().Create(ctx, &corev1.Namespace{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
GenerateName: nsName,
|
GenerateName: nsName,
|
||||||
},
|
},
|
||||||
@ -147,7 +146,7 @@ func TestNamespaceLabels(t *testing.T) {
|
|||||||
t.Fatal(fmt.Errorf("expected %q, got %q", ns.Name, ns.Labels[corev1.LabelMetadataName]))
|
t.Fatal(fmt.Errorf("expected %q, got %q", ns.Name, ns.Labels[corev1.LabelMetadataName]))
|
||||||
}
|
}
|
||||||
|
|
||||||
nsList, err := kubeClient.CoreV1().Namespaces().List(context.TODO(), metav1.ListOptions{})
|
nsList, err := kubeClient.CoreV1().Namespaces().List(ctx, metav1.ListOptions{})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
@ -175,7 +174,7 @@ func jsonToUnstructured(stub, version, kind string) (*unstructured.Unstructured,
|
|||||||
return &unstructured.Unstructured{Object: typeMetaAdder}, nil
|
return &unstructured.Unstructured{Object: typeMetaAdder}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func namespaceLifecycleSetup(t *testing.T) (kubeapiservertesting.TearDownFunc, *namespace.NamespaceController, informers.SharedInformerFactory, clientset.Interface, dynamic.Interface) {
|
func namespaceLifecycleSetup(t *testing.T) (context.Context, kubeapiservertesting.TearDownFunc, *namespace.NamespaceController, informers.SharedInformerFactory, clientset.Interface, dynamic.Interface) {
|
||||||
// Disable ServiceAccount admission plugin as we don't have serviceaccount controller running.
|
// Disable ServiceAccount admission plugin as we don't have serviceaccount controller running.
|
||||||
server := kubeapiservertesting.StartTestServerOrDie(t, nil, framework.DefaultTestServerFlags(), framework.SharedEtcd())
|
server := kubeapiservertesting.StartTestServerOrDie(t, nil, framework.DefaultTestServerFlags(), framework.SharedEtcd())
|
||||||
|
|
||||||
@ -191,7 +190,7 @@ func namespaceLifecycleSetup(t *testing.T) (kubeapiservertesting.TearDownFunc, *
|
|||||||
|
|
||||||
metadataClient, err := metadata.NewForConfig(config)
|
metadataClient, err := metadata.NewForConfig(config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
discoverResourcesFn := clientSet.Discovery().ServerPreferredNamespacedResources
|
discoverResourcesFn := clientSet.Discovery().ServerPreferredNamespacedResources
|
||||||
@ -205,5 +204,5 @@ func namespaceLifecycleSetup(t *testing.T) (kubeapiservertesting.TearDownFunc, *
|
|||||||
10*time.Hour,
|
10*time.Hour,
|
||||||
corev1.FinalizerKubernetes)
|
corev1.FinalizerKubernetes)
|
||||||
|
|
||||||
return server.TearDownFn, controller, informers, clientSet, dynamic.NewForConfigOrDie(config)
|
return ctx, server.TearDownFn, controller, informers, clientSet, dynamic.NewForConfigOrDie(config)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user