public async Task GetOrCreateAsync_ThrowsIfCancelled() { var factory = new PluginFactory(Timeout.InfiniteTimeSpan); await Assert.ThrowsAsync <OperationCanceledException>( () => factory.GetOrCreateAsync( filePath: "a", arguments: PluginConstants.PluginArguments, requestHandlers: new RequestHandlers(), options: ConnectionOptions.CreateDefault(), sessionCancellationToken: new CancellationToken(canceled: true))); }
public async Task GetOrCreateAsync_ThrowsForNullConnectionOptions() { var factory = new PluginFactory(Timeout.InfiniteTimeSpan); var exception = await Assert.ThrowsAsync <ArgumentNullException>( () => factory.GetOrCreateAsync( filePath: "a", arguments: PluginConstants.PluginArguments, requestHandlers: new RequestHandlers(), options: null, sessionCancellationToken: CancellationToken.None)); Assert.Equal("options", exception.ParamName); }
public async Task GetOrCreateAsync_ThrowsForNullOrEmptyFilePath(string filePath) { var factory = new PluginFactory(Timeout.InfiniteTimeSpan); var exception = await Assert.ThrowsAsync <ArgumentException>( () => factory.GetOrCreateAsync( filePath, PluginConstants.PluginArguments, new RequestHandlers(), ConnectionOptions.CreateDefault(), CancellationToken.None)); Assert.Equal("filePath", exception.ParamName); }
internal static async Task <PluginTest> CreateAsync() { var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMinutes(10)); var pluginFactory = new PluginFactory(PluginConstants.IdleTimeout); var options = ConnectionOptions.CreateDefault(); var plugin = await pluginFactory.GetOrCreateAsync( PluginFile.FullName, PluginArguments, new RequestHandlers(), options, cancellationTokenSource.Token); var responseSender = new ResponseSender(PortNumber); return(new PluginTest(pluginFactory, plugin, responseSender, cancellationTokenSource)); }
public async Task GetOrCreateAsync_ThrowsIfDisposed() { var factory = new PluginFactory(Timeout.InfiniteTimeSpan); factory.Dispose(); var exception = await Assert.ThrowsAsync <ObjectDisposedException>( () => factory.GetOrCreateAsync( filePath: "a", arguments: PluginConstants.PluginArguments, requestHandlers: new RequestHandlers(), options: ConnectionOptions.CreateDefault(), sessionCancellationToken: CancellationToken.None)); Assert.Equal(nameof(PluginFactory), exception.ObjectName); }
public async Task GetOrCreateAsync_WhenPluginFreezes_Throws() { using (var cancellationTokenSource = new CancellationTokenSource(TestTimeout)) using (var pluginFactory = new PluginFactory(PluginConstants.IdleTimeout)) { var exception = await Assert.ThrowsAsync <PluginException>(() => pluginFactory.GetOrCreateAsync( PluginFile.FullName, PluginConstants.PluginArguments.Concat(new[] { "-Freeze" }), new RequestHandlers(), ConnectionOptions.CreateDefault(), cancellationTokenSource.Token)); Assert.True( Regex.IsMatch( exception.Message, "^Plugin 'Plugin.Testable' failed within \\d.\\d{3} seconds with exit code -1.$"), exception.Message); } }
public async Task GetOrCreateAsync_WhenPluginCausesProtocolException_Throws() { using (var cancellationTokenSource = new CancellationTokenSource(TestTimeout)) using (var pluginFactory = new PluginFactory(PluginConstants.IdleTimeout)) { var exception = await Assert.ThrowsAsync <ProtocolException>(() => pluginFactory.GetOrCreateAsync( PluginFile.FullName, PluginConstants.PluginArguments.Concat(new[] { "-CauseProtocolException" }), new RequestHandlers(), ConnectionOptions.CreateDefault(), cancellationTokenSource.Token)); Assert.Equal("Plugin 'Plugin.Testable' failed with the exception: The plugin handshake failed.", exception.Message); } }