[.Net] Dispose kernel after running dotnet interactive tests (#3378)

* dispose kernel after running test

* add timeout
This commit is contained in:
Xiaoyun Zhang 2024-08-19 19:33:52 -07:00 committed by GitHub
parent d5068d9b6c
commit a638a08f81
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 78 additions and 70 deletions

View File

@ -54,6 +54,7 @@ jobs:
os: [ ubuntu-latest, macos-latest, windows-latest ]
python-version: ["3.11"]
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:

View File

@ -1,82 +1,83 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// DotnetInteractiveServiceTest.cs
//using FluentAssertions;
//using Xunit;
//using Xunit.Abstractions;
using FluentAssertions;
using Xunit;
using Xunit.Abstractions;
//namespace AutoGen.DotnetInteractive.Tests;
namespace AutoGen.DotnetInteractive.Tests;
//public class DotnetInteractiveServiceTest : IDisposable
//{
// private ITestOutputHelper _output;
// private InteractiveService _interactiveService;
// private string _workingDir;
[Collection("Sequential")]
public class DotnetInteractiveServiceTest : IDisposable
{
private ITestOutputHelper _output;
private InteractiveService _interactiveService;
private string _workingDir;
// public DotnetInteractiveServiceTest(ITestOutputHelper output)
// {
// _output = output;
// _workingDir = Path.Combine(Path.GetTempPath(), "test", Path.GetRandomFileName());
// if (!Directory.Exists(_workingDir))
// {
// Directory.CreateDirectory(_workingDir);
// }
public DotnetInteractiveServiceTest(ITestOutputHelper output)
{
_output = output;
_workingDir = Path.Combine(Path.GetTempPath(), "test", Path.GetRandomFileName());
if (!Directory.Exists(_workingDir))
{
Directory.CreateDirectory(_workingDir);
}
// _interactiveService = new InteractiveService(_workingDir);
// _interactiveService.StartAsync(_workingDir, default).Wait();
// }
_interactiveService = new InteractiveService(_workingDir);
_interactiveService.StartAsync(_workingDir, default).Wait();
}
// public void Dispose()
// {
// _interactiveService.Dispose();
// }
public void Dispose()
{
_interactiveService.Dispose();
}
// [Fact]
// public async Task ItRunCSharpCodeSnippetTestsAsync()
// {
// var cts = new CancellationTokenSource();
// var isRunning = await _interactiveService.StartAsync(_workingDir, cts.Token);
[Fact]
public async Task ItRunCSharpCodeSnippetTestsAsync()
{
var cts = new CancellationTokenSource();
var isRunning = await _interactiveService.StartAsync(_workingDir, cts.Token);
// isRunning.Should().BeTrue();
isRunning.Should().BeTrue();
// _interactiveService.IsRunning().Should().BeTrue();
_interactiveService.IsRunning().Should().BeTrue();
// // test code snippet
// var hello_world = @"
//Console.WriteLine(""hello world"");
//";
// test code snippet
var hello_world = @"
Console.WriteLine(""hello world"");
";
// await this.TestCSharpCodeSnippet(_interactiveService, hello_world, "hello world");
// await this.TestCSharpCodeSnippet(
// _interactiveService,
// code: @"
//Console.WriteLine(""hello world""
//",
// expectedOutput: "Error: (2,32): error CS1026: ) expected");
await this.TestCSharpCodeSnippet(_interactiveService, hello_world, "hello world");
await this.TestCSharpCodeSnippet(
_interactiveService,
code: @"
Console.WriteLine(""hello world""
",
expectedOutput: "Error: (2,32): error CS1026: ) expected");
// await this.TestCSharpCodeSnippet(
// service: _interactiveService,
// code: "throw new Exception();",
// expectedOutput: "Error: System.Exception: Exception of type 'System.Exception' was thrown");
// }
await this.TestCSharpCodeSnippet(
service: _interactiveService,
code: "throw new Exception();",
expectedOutput: "Error: System.Exception: Exception of type 'System.Exception' was thrown");
}
// [Fact]
// public async Task ItRunPowershellScriptTestsAsync()
// {
// // test power shell
// var ps = @"Write-Output ""hello world""";
// await this.TestPowershellCodeSnippet(_interactiveService, ps, "hello world");
// }
[Fact]
public async Task ItRunPowershellScriptTestsAsync()
{
// test power shell
var ps = @"Write-Output ""hello world""";
await this.TestPowershellCodeSnippet(_interactiveService, ps, "hello world");
}
// private async Task TestPowershellCodeSnippet(InteractiveService service, string code, string expectedOutput)
// {
// var result = await service.SubmitPowershellCodeAsync(code, CancellationToken.None);
// result.Should().StartWith(expectedOutput);
// }
private async Task TestPowershellCodeSnippet(InteractiveService service, string code, string expectedOutput)
{
var result = await service.SubmitPowershellCodeAsync(code, CancellationToken.None);
result.Should().StartWith(expectedOutput);
}
// private async Task TestCSharpCodeSnippet(InteractiveService service, string code, string expectedOutput)
// {
// var result = await service.SubmitCSharpCodeAsync(code, CancellationToken.None);
// result.Should().StartWith(expectedOutput);
// }
//}
private async Task TestCSharpCodeSnippet(InteractiveService service, string code, string expectedOutput)
{
var result = await service.SubmitCSharpCodeAsync(code, CancellationToken.None);
result.Should().StartWith(expectedOutput);
}
}

View File

@ -10,7 +10,7 @@ using Xunit.Abstractions;
namespace AutoGen.DotnetInteractive.Tests;
[Collection("Sequential")]
public class DotnetInteractiveStdioKernelConnectorTests
public class DotnetInteractiveStdioKernelConnectorTests : IDisposable
{
private string _workingDir;
private Kernel kernel;
@ -77,4 +77,9 @@ public class DotnetInteractiveStdioKernelConnectorTests
var result = await this.kernel.RunSubmitCodeCommandAsync(pythonCode, "python");
result.Should().Contain("Hello, World!");
}
public void Dispose()
{
this.kernel.Dispose();
}
}

View File

@ -7,12 +7,13 @@ using Xunit;
namespace AutoGen.DotnetInteractive.Tests;
[Collection("Sequential")]
public class InProcessDotnetInteractiveKernelBuilderTest
{
[Fact]
public async Task ItAddCSharpKernelTestAsync()
{
var kernel = DotnetInteractiveKernelBuilder
using var kernel = DotnetInteractiveKernelBuilder
.CreateEmptyInProcessKernelBuilder()
.AddCSharpKernel()
.Build();
@ -29,7 +30,7 @@ public class InProcessDotnetInteractiveKernelBuilderTest
[Fact]
public async Task ItAddPowershellKernelTestAsync()
{
var kernel = DotnetInteractiveKernelBuilder
using var kernel = DotnetInteractiveKernelBuilder
.CreateEmptyInProcessKernelBuilder()
.AddPowershellKernel()
.Build();
@ -45,7 +46,7 @@ public class InProcessDotnetInteractiveKernelBuilderTest
[Fact]
public async Task ItAddFSharpKernelTestAsync()
{
var kernel = DotnetInteractiveKernelBuilder
using var kernel = DotnetInteractiveKernelBuilder
.CreateEmptyInProcessKernelBuilder()
.AddFSharpKernel()
.Build();
@ -62,7 +63,7 @@ public class InProcessDotnetInteractiveKernelBuilderTest
[Fact]
public async Task ItAddPythonKernelTestAsync()
{
var kernel = DotnetInteractiveKernelBuilder
using var kernel = DotnetInteractiveKernelBuilder
.CreateEmptyInProcessKernelBuilder()
.AddPythonKernel("python3")
.Build();