From 222a27475b30c97b3e7e7f8e2676d876df3d01b4 Mon Sep 17 00:00:00 2001 From: Boshi Lian Date: Mon, 23 Nov 2020 03:54:40 -0800 Subject: [PATCH 1/2] move integrate test to minikube proj --- tests/E2E.Tests/E2E.Tests.csproj | 2 + tests/E2E.Tests/MnikubeTests.cs | 71 ++++++++++++++++++++++ tests/KubernetesClient.Tests/WatchTests.cs | 71 +--------------------- 3 files changed, 74 insertions(+), 70 deletions(-) diff --git a/tests/E2E.Tests/E2E.Tests.csproj b/tests/E2E.Tests/E2E.Tests.csproj index 324ae30f7..cd8ac7522 100644 --- a/tests/E2E.Tests/E2E.Tests.csproj +++ b/tests/E2E.Tests/E2E.Tests.csproj @@ -12,6 +12,8 @@ + + all diff --git a/tests/E2E.Tests/MnikubeTests.cs b/tests/E2E.Tests/MnikubeTests.cs index ee5988dfe..051ebd29b 100644 --- a/tests/E2E.Tests/MnikubeTests.cs +++ b/tests/E2E.Tests/MnikubeTests.cs @@ -1,10 +1,14 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; using System.Linq; using System.Threading; +using System.Threading.Tasks; using k8s.Models; using Microsoft.AspNetCore.JsonPatch; using Microsoft.Rest; +using Nito.AsyncEx; using Xunit; namespace k8s.E2E @@ -155,6 +159,73 @@ void Cleanup() } } + [MinikubeFact] + public async Task WatcherIntegrationTest() + { + var kubernetes = CreateClient(); + + var job = await kubernetes.CreateNamespacedJobAsync( + new V1Job() + { + ApiVersion = "batch/v1", + Kind = V1Job.KubeKind, + Metadata = new V1ObjectMeta() { Name = nameof(WatcherIntegrationTest).ToLowerInvariant() }, + Spec = new V1JobSpec() + { + Template = new V1PodTemplateSpec() + { + Spec = new V1PodSpec() + { + Containers = new List() + { + new V1Container() + { + Image = "ubuntu", + Name = "runner", + Command = new List() { "/bin/bash", "-c", "--" }, + Args = new List() + { + "trap : TERM INT; sleep infinity & wait", + }, + }, + }, + RestartPolicy = "Never", + }, + }, + }, + }, + "default").ConfigureAwait(false); + + var events = new Collection>(); + + var started = new AsyncManualResetEvent(); + var connectionClosed = new AsyncManualResetEvent(); + + var watcher = await kubernetes.WatchNamespacedJobAsync( + job.Metadata.Name, + job.Metadata.NamespaceProperty, + resourceVersion: job.Metadata.ResourceVersion, + timeoutSeconds: 30, + onEvent: + (type, source) => + { + Debug.WriteLine($"Watcher 1: {type}, {source}"); + events.Add(new Tuple(type, source)); + job = source; + started.Set(); + }, + onClosed: connectionClosed.Set).ConfigureAwait(false); + + await started.WaitAsync().ConfigureAwait(false); + + await Task.WhenAny(connectionClosed.WaitAsync(), Task.Delay(TimeSpan.FromMinutes(3))).ConfigureAwait(false); + Assert.True(connectionClosed.IsSet); + + await kubernetes.DeleteNamespacedJobAsync( + job.Metadata.Name, + job.Metadata.NamespaceProperty, + new V1DeleteOptions() { PropagationPolicy = "Foreground" }).ConfigureAwait(false); + } private static IKubernetes CreateClient() diff --git a/tests/KubernetesClient.Tests/WatchTests.cs b/tests/KubernetesClient.Tests/WatchTests.cs index bab525fa4..97fbe5e9d 100644 --- a/tests/KubernetesClient.Tests/WatchTests.cs +++ b/tests/KubernetesClient.Tests/WatchTests.cs @@ -557,76 +557,7 @@ public async Task DirectWatchAllEvents() } } - [Fact(Skip = "Integration Test")] - public async Task WatcherIntegrationTest() - { - var kubernetesConfig = - KubernetesClientConfiguration.BuildConfigFromConfigFile( - @"C:\Users\frede\Source\Repos\cloud\minikube.config"); - var kubernetes = new Kubernetes(kubernetesConfig); - - var job = await kubernetes.CreateNamespacedJobAsync( - new V1Job() - { - ApiVersion = "batch/v1", - Kind = V1Job.KubeKind, - Metadata = new V1ObjectMeta() { Name = nameof(WatcherIntegrationTest).ToLowerInvariant() }, - Spec = new V1JobSpec() - { - Template = new V1PodTemplateSpec() - { - Spec = new V1PodSpec() - { - Containers = new List() - { - new V1Container() - { - Image = "ubuntu/xenial", - Name = "runner", - Command = new List() { "/bin/bash", "-c", "--" }, - Args = new List() - { - "trap : TERM INT; sleep infinity & wait", - }, - }, - }, - RestartPolicy = "Never", - }, - }, - }, - }, - "default").ConfigureAwait(false); - - var events = new Collection>(); - - var started = new AsyncManualResetEvent(); - var connectionClosed = new AsyncManualResetEvent(); - - var watcher = await kubernetes.WatchNamespacedJobAsync( - job.Metadata.Name, - job.Metadata.NamespaceProperty, - resourceVersion: job.Metadata.ResourceVersion, - timeoutSeconds: 30, - onEvent: - (type, source) => - { - Debug.WriteLine($"Watcher 1: {type}, {source}"); - events.Add(new Tuple(type, source)); - job = source; - started.Set(); - }, - onClosed: connectionClosed.Set).ConfigureAwait(false); - - await started.WaitAsync().ConfigureAwait(false); - - await Task.WhenAny(connectionClosed.WaitAsync(), Task.Delay(TimeSpan.FromMinutes(3))).ConfigureAwait(false); - Assert.True(connectionClosed.IsSet); - - await kubernetes.DeleteNamespacedJobAsync( - job.Metadata.Name, - job.Metadata.NamespaceProperty, - new V1DeleteOptions()).ConfigureAwait(false); - } + [Fact(Skip = "https://github.com/kubernetes-client/csharp/issues/165")] public async Task DirectWatchEventsWithTimeout() From 560e2ce61329d55fc86a199a3af3604f516fa77e Mon Sep 17 00:00:00 2001 From: Boshi LIAN Date: Wed, 25 Nov 2020 04:56:50 -0800 Subject: [PATCH 2/2] fix format --- tests/KubernetesClient.Tests/WatchTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/KubernetesClient.Tests/WatchTests.cs b/tests/KubernetesClient.Tests/WatchTests.cs index 97fbe5e9d..82c1fca3d 100644 --- a/tests/KubernetesClient.Tests/WatchTests.cs +++ b/tests/KubernetesClient.Tests/WatchTests.cs @@ -557,7 +557,7 @@ public async Task DirectWatchAllEvents() } } - + [Fact(Skip = "https://github.com/kubernetes-client/csharp/issues/165")] public async Task DirectWatchEventsWithTimeout()