|
1 | 1 | namespace DotNet.Testcontainers.Tests.Unit
|
2 | 2 | {
|
3 | 3 | using System;
|
| 4 | + using System.Globalization; |
4 | 5 | using System.IO;
|
5 | 6 | using System.Net;
|
6 | 7 | using System.Net.Sockets;
|
@@ -279,6 +280,42 @@ public async Task HostnameShouldMatchDockerGatewayAddress(string expectedHostnam
|
279 | 280 | Assert.Equal(expectedHostname, container.Hostname);
|
280 | 281 | }
|
281 | 282 |
|
| 283 | + [Fact] |
| 284 | + public async Task OutputConsumer() |
| 285 | + { |
| 286 | + // Given |
| 287 | + using var consumer = Consume.RedirectStdoutAndStderrToStream(new MemoryStream(), new MemoryStream()); |
| 288 | + |
| 289 | + var unixTimeInMilliseconds = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(CultureInfo.InvariantCulture); |
| 290 | + |
| 291 | + // When |
| 292 | + await using var container = new ContainerBuilder() |
| 293 | + .WithImage(CommonImages.Alpine) |
| 294 | + .WithEntrypoint("/bin/sh", "-c") |
| 295 | + .WithCommand($"printf \"%s\" \"{unixTimeInMilliseconds}\" | tee /dev/stderr") |
| 296 | + .WithOutputConsumer(consumer) |
| 297 | + .WithWaitStrategy(Wait.ForUnixContainer().UntilMessageIsLogged(unixTimeInMilliseconds)) |
| 298 | + .Build(); |
| 299 | + |
| 300 | + await container.StartAsync() |
| 301 | + .ConfigureAwait(false); |
| 302 | + |
| 303 | + consumer.Stdout.Seek(0, SeekOrigin.Begin); |
| 304 | + consumer.Stderr.Seek(0, SeekOrigin.Begin); |
| 305 | + |
| 306 | + using var stdoutReader = new StreamReader(consumer.Stdout, leaveOpen: true); |
| 307 | + var stdout = await stdoutReader.ReadToEndAsync() |
| 308 | + .ConfigureAwait(false); |
| 309 | + |
| 310 | + using var stderrReader = new StreamReader(consumer.Stderr, leaveOpen: true); |
| 311 | + var stderr = await stderrReader.ReadToEndAsync() |
| 312 | + .ConfigureAwait(false); |
| 313 | + |
| 314 | + // Then |
| 315 | + Assert.Equal(unixTimeInMilliseconds, stdout); |
| 316 | + Assert.Equal(unixTimeInMilliseconds, stderr); |
| 317 | + } |
| 318 | + |
282 | 319 | [Fact]
|
283 | 320 | public async Task WaitStrategy()
|
284 | 321 | {
|
|
0 commit comments