Skip to content

Commit a614d95

Browse files
authored
move integration test to minikube proj (#526)
* move integrate test to minikube proj * fix format
1 parent 8bbf147 commit a614d95

File tree

3 files changed

+73
-69
lines changed

3 files changed

+73
-69
lines changed

tests/E2E.Tests/E2E.Tests.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
<PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="5.0.0" />
1313

1414
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.0" />
15+
16+
<PackageReference Include="Nito.AsyncEx.Coordination" Version="5.1.0" />
1517
<PackageReference Include="xunit" Version="2.4.1" />
1618
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
1719
<PrivateAssets>all</PrivateAssets>

tests/E2E.Tests/MnikubeTests.cs

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Collections.ObjectModel;
4+
using System.Diagnostics;
35
using System.Linq;
46
using System.Threading;
7+
using System.Threading.Tasks;
58
using k8s.Models;
69
using Microsoft.AspNetCore.JsonPatch;
710
using Microsoft.Rest;
11+
using Nito.AsyncEx;
812
using Xunit;
913

1014
namespace k8s.E2E
@@ -155,6 +159,73 @@ void Cleanup()
155159
}
156160
}
157161

162+
[MinikubeFact]
163+
public async Task WatcherIntegrationTest()
164+
{
165+
var kubernetes = CreateClient();
166+
167+
var job = await kubernetes.CreateNamespacedJobAsync(
168+
new V1Job()
169+
{
170+
ApiVersion = "batch/v1",
171+
Kind = V1Job.KubeKind,
172+
Metadata = new V1ObjectMeta() { Name = nameof(WatcherIntegrationTest).ToLowerInvariant() },
173+
Spec = new V1JobSpec()
174+
{
175+
Template = new V1PodTemplateSpec()
176+
{
177+
Spec = new V1PodSpec()
178+
{
179+
Containers = new List<V1Container>()
180+
{
181+
new V1Container()
182+
{
183+
Image = "ubuntu",
184+
Name = "runner",
185+
Command = new List<string>() { "/bin/bash", "-c", "--" },
186+
Args = new List<string>()
187+
{
188+
"trap : TERM INT; sleep infinity & wait",
189+
},
190+
},
191+
},
192+
RestartPolicy = "Never",
193+
},
194+
},
195+
},
196+
},
197+
"default").ConfigureAwait(false);
198+
199+
var events = new Collection<Tuple<WatchEventType, V1Job>>();
200+
201+
var started = new AsyncManualResetEvent();
202+
var connectionClosed = new AsyncManualResetEvent();
203+
204+
var watcher = await kubernetes.WatchNamespacedJobAsync(
205+
job.Metadata.Name,
206+
job.Metadata.NamespaceProperty,
207+
resourceVersion: job.Metadata.ResourceVersion,
208+
timeoutSeconds: 30,
209+
onEvent:
210+
(type, source) =>
211+
{
212+
Debug.WriteLine($"Watcher 1: {type}, {source}");
213+
events.Add(new Tuple<WatchEventType, V1Job>(type, source));
214+
job = source;
215+
started.Set();
216+
},
217+
onClosed: connectionClosed.Set).ConfigureAwait(false);
218+
219+
await started.WaitAsync().ConfigureAwait(false);
220+
221+
await Task.WhenAny(connectionClosed.WaitAsync(), Task.Delay(TimeSpan.FromMinutes(3))).ConfigureAwait(false);
222+
Assert.True(connectionClosed.IsSet);
223+
224+
await kubernetes.DeleteNamespacedJobAsync(
225+
job.Metadata.Name,
226+
job.Metadata.NamespaceProperty,
227+
new V1DeleteOptions() { PropagationPolicy = "Foreground" }).ConfigureAwait(false);
228+
}
158229

159230

160231
private static IKubernetes CreateClient()

tests/KubernetesClient.Tests/WatchTests.cs

Lines changed: 0 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -557,76 +557,7 @@ public async Task DirectWatchAllEvents()
557557
}
558558
}
559559

560-
[Fact(Skip = "Integration Test")]
561-
public async Task WatcherIntegrationTest()
562-
{
563-
var kubernetesConfig =
564-
KubernetesClientConfiguration.BuildConfigFromConfigFile(
565-
@"C:\Users\frede\Source\Repos\cloud\minikube.config");
566-
var kubernetes = new Kubernetes(kubernetesConfig);
567-
568-
var job = await kubernetes.CreateNamespacedJobAsync(
569-
new V1Job()
570-
{
571-
ApiVersion = "batch/v1",
572-
Kind = V1Job.KubeKind,
573-
Metadata = new V1ObjectMeta() { Name = nameof(WatcherIntegrationTest).ToLowerInvariant() },
574-
Spec = new V1JobSpec()
575-
{
576-
Template = new V1PodTemplateSpec()
577-
{
578-
Spec = new V1PodSpec()
579-
{
580-
Containers = new List<V1Container>()
581-
{
582-
new V1Container()
583-
{
584-
Image = "ubuntu/xenial",
585-
Name = "runner",
586-
Command = new List<string>() { "/bin/bash", "-c", "--" },
587-
Args = new List<string>()
588-
{
589-
"trap : TERM INT; sleep infinity & wait",
590-
},
591-
},
592-
},
593-
RestartPolicy = "Never",
594-
},
595-
},
596-
},
597-
},
598-
"default").ConfigureAwait(false);
599560

600-
var events = new Collection<Tuple<WatchEventType, V1Job>>();
601-
602-
var started = new AsyncManualResetEvent();
603-
var connectionClosed = new AsyncManualResetEvent();
604-
605-
var watcher = await kubernetes.WatchNamespacedJobAsync(
606-
job.Metadata.Name,
607-
job.Metadata.NamespaceProperty,
608-
resourceVersion: job.Metadata.ResourceVersion,
609-
timeoutSeconds: 30,
610-
onEvent:
611-
(type, source) =>
612-
{
613-
Debug.WriteLine($"Watcher 1: {type}, {source}");
614-
events.Add(new Tuple<WatchEventType, V1Job>(type, source));
615-
job = source;
616-
started.Set();
617-
},
618-
onClosed: connectionClosed.Set).ConfigureAwait(false);
619-
620-
await started.WaitAsync().ConfigureAwait(false);
621-
622-
await Task.WhenAny(connectionClosed.WaitAsync(), Task.Delay(TimeSpan.FromMinutes(3))).ConfigureAwait(false);
623-
Assert.True(connectionClosed.IsSet);
624-
625-
await kubernetes.DeleteNamespacedJobAsync(
626-
job.Metadata.Name,
627-
job.Metadata.NamespaceProperty,
628-
new V1DeleteOptions()).ConfigureAwait(false);
629-
}
630561

631562
[Fact(Skip = "https://github.com/kubernetes-client/csharp/issues/165")]
632563
public async Task DirectWatchEventsWithTimeout()

0 commit comments

Comments
 (0)