From 1322cc78cb726fafe8e3f3fc7fc92e6592d920e5 Mon Sep 17 00:00:00 2001 From: Muhammad Azeez Date: Mon, 23 Jan 2023 22:47:44 +0300 Subject: [PATCH 01/20] add p/invoke wrappers for new functions/structs/types in extism 0.2 --- dotnet/src/Extism.Sdk/Context.cs | 11 ++- dotnet/src/Extism.Sdk/LibExtism.cs | 142 +++++++++++++++++++++++++---- dotnet/src/Extism.Sdk/Plugin.cs | 8 +- 3 files changed, 133 insertions(+), 28 deletions(-) diff --git a/dotnet/src/Extism.Sdk/Context.cs b/dotnet/src/Extism.Sdk/Context.cs index bfbcc6b0e..54812a451 100644 --- a/dotnet/src/Extism.Sdk/Context.cs +++ b/dotnet/src/Extism.Sdk/Context.cs @@ -6,7 +6,7 @@ namespace Extism.Sdk.Native; /// /// Represents an Extism context through which you can load s. /// -public class Context : IDisposable +public unsafe class Context : IDisposable { private const int DisposedMarker = 1; @@ -17,13 +17,16 @@ public class Context : IDisposable /// public Context() { - NativeHandle = LibExtism.extism_context_new(); + unsafe + { + NativeHandle = LibExtism.extism_context_new(); + } } /// /// Native pointer to the Extism Context. /// - internal IntPtr NativeHandle { get; } + internal LibExtism.ExtismContext* NativeHandle { get; } /// /// Loads an Extism . @@ -62,7 +65,7 @@ public void Reset() { CheckNotDisposed(); - var result = LibExtism.extism_error(NativeHandle, -1); + var result = LibExtism.extism_error(NativeHandle, (LibExtism.ExtismPlugin*)-1); return Marshal.PtrToStringUTF8(result); } diff --git a/dotnet/src/Extism.Sdk/LibExtism.cs b/dotnet/src/Extism.Sdk/LibExtism.cs index 31b471c3d..9711f74b7 100644 --- a/dotnet/src/Extism.Sdk/LibExtism.cs +++ b/dotnet/src/Extism.Sdk/LibExtism.cs @@ -7,19 +7,121 @@ namespace Extism.Sdk.Native; /// internal static class LibExtism { + internal enum ExtismValType + { + /// + /// Signed 32 bit integer. Equivalent of or + /// + I32, + + /// + /// Signed 64 bit integer. Equivalent of or + /// + I64, + + /// + /// Floating point 32 bit integer. Equivalent of + /// + F32, + + /// + /// Floating point 64 bit integer. Equivalent of + /// + F64, + + /// + /// A 128 bit number. + /// + V128, + + /// + /// A reference to opaque data in the Wasm instance. + /// + FuncRef, + + /// + /// A reference to opaque data in the Wasm instance. + /// + ExternRef + } + + /// + /// A `Context` is used to store and manage plugins. + /// + [StructLayout(LayoutKind.Sequential)] + internal struct ExtismContext { } + + /// + /// Wraps host functions + /// + [StructLayout(LayoutKind.Sequential)] + internal struct ExtismFunction { } + + /// + /// + /// + [StructLayout(LayoutKind.Sequential)] + internal struct ExtismPlugin { } + + /// + /// Plugin contains everything needed to execute a WASM function. + /// + [StructLayout(LayoutKind.Sequential)] + internal struct ExtismCurrentPlugin { } + + /// + /// A union type for host function argument/return values. + /// + [StructLayout(LayoutKind.Explicit)] + internal struct ExtismValUnion + { + [FieldOffset(0)] + internal int i32; + + [FieldOffset(0)] + internal long i64; + + [FieldOffset(0)] + internal float f32; + + [FieldOffset(0)] + internal double f64; + } + + /// + /// `ExtismVal` holds the type and value of a function argument/return + /// + [StructLayout(LayoutKind.Sequential)] + internal struct ExtismVal + { + internal ExtismValType t; + internal ExtismValUnion v; + } + + /// + /// Host function signature + /// + /// + /// + /// + /// + /// + /// + internal delegate void ExtismFunctionType(ref ExtismCurrentPlugin plugin, Span inputs, uint n_inputs, Span outputs, uint n_outputs, IntPtr data); + /// /// Create a new context. /// /// A pointer to the newly created context. [DllImport("extism")] - public static extern IntPtr extism_context_new(); + unsafe internal static extern ExtismContext* extism_context_new(); /// /// Remove a context from the registry and free associated memory. /// /// [DllImport("extism")] - public static extern void extism_context_free(IntPtr context); + unsafe internal static extern void extism_context_free(ExtismContext* context); /// /// Load a WASM plugin. @@ -32,7 +134,7 @@ internal static class LibExtism /// Enables/disables WASI. /// [DllImport("extism")] - unsafe public static extern IntPtr extism_plugin_new(IntPtr context, byte* wasm, int wasmSize, IntPtr *functions, int nFunctions, bool withWasi); + unsafe internal static extern ExtismPlugin* extism_plugin_new(ExtismContext* context, byte* wasm, int wasmSize, IntPtr* functions, int nFunctions, bool withWasi); /// /// Update a plugin, keeping the existing ID. @@ -48,7 +150,7 @@ internal static class LibExtism /// Enables/disables WASI. /// [DllImport("extism")] - unsafe public static extern bool extism_plugin_update(IntPtr context, IntPtr plugin, byte* wasm, int wasmLength, IntPtr *functions, int nFunctions, bool withWasi); + unsafe internal static extern bool extism_plugin_update(ExtismContext* context, ExtismPlugin* plugin, byte* wasm, int wasmLength, IntPtr* functions, int nFunctions, bool withWasi); /// /// Remove a plugin from the registry and free associated memory. @@ -56,14 +158,14 @@ internal static class LibExtism /// Pointer to the context the plugin is associated with. /// Pointer to the plugin you want to free. [DllImport("extism")] - public static extern void extism_plugin_free(IntPtr context, IntPtr plugin); + unsafe internal static extern void extism_plugin_free(ExtismContext* context, ExtismPlugin* plugin); /// /// Remove all plugins from the registry. /// /// [DllImport("extism")] - public static extern void extism_context_reset(IntPtr context); + unsafe internal static extern void extism_context_reset(ExtismContext* context); /// /// Update plugin config values, this will merge with the existing values. @@ -74,7 +176,7 @@ internal static class LibExtism /// The length of the `json` parameter. /// [DllImport("extism")] - unsafe public static extern bool extism_plugin_config(IntPtr context, IntPtr plugin, byte* json, int jsonLength); + unsafe internal static extern bool extism_plugin_config(ExtismContext* context, ExtismPlugin* plugin, byte* json, int jsonLength); /// /// Returns true if funcName exists. @@ -84,7 +186,7 @@ internal static class LibExtism /// /// [DllImport("extism")] - public static extern bool extism_plugin_function_exists(IntPtr context, IntPtr plugin, string funcName); + unsafe internal static extern bool extism_plugin_function_exists(ExtismContext* context, ExtismPlugin* plugin, string funcName); /// /// Call a function. @@ -96,7 +198,7 @@ internal static class LibExtism /// The length of the `data` parameter. /// [DllImport("extism")] - unsafe public static extern int extism_plugin_call(IntPtr context, IntPtr plugin, string funcName, byte* data, int dataLen); + unsafe internal static extern int extism_plugin_call(ExtismContext* context, ExtismPlugin* plugin, string funcName, byte* data, int dataLen); /// /// Get the error associated with a Context or Plugin, if plugin is -1 then the context error will be returned. @@ -105,7 +207,7 @@ internal static class LibExtism /// A plugin pointer, or -1 for the context error. /// [DllImport("extism")] - public static extern IntPtr extism_error(IntPtr context, nint plugin); + unsafe internal static extern IntPtr extism_error(ExtismContext* context, ExtismPlugin* plugin); /// /// Get the length of a plugin's output data. @@ -114,7 +216,7 @@ internal static class LibExtism /// /// [DllImport("extism")] - public static extern long extism_plugin_output_length(IntPtr context, IntPtr plugin); + unsafe internal static extern long extism_plugin_output_length(ExtismContext* context, ExtismPlugin* plugin); /// /// Get the plugin's output data. @@ -123,7 +225,7 @@ internal static class LibExtism /// /// [DllImport("extism")] - public static extern IntPtr extism_plugin_output_data(IntPtr context, IntPtr plugin); + unsafe internal static extern IntPtr extism_plugin_output_data(ExtismContext* context, ExtismPlugin* plugin); /// /// Set log file and level. @@ -132,43 +234,43 @@ internal static class LibExtism /// /// [DllImport("extism")] - public static extern bool extism_log_file(string filename, string logLevel); + internal static extern bool extism_log_file(string filename, string logLevel); /// /// Get the Extism version string. /// /// [DllImport("extism", EntryPoint = "extism_version")] - public static extern IntPtr extism_version(); + internal static extern IntPtr extism_version(); /// /// Extism Log Levels /// - public static class LogLevels + internal static class LogLevels { /// /// Designates very serious errors. /// - public const string Error = "Error"; + internal const string Error = "Error"; /// /// Designates hazardous situations. /// - public const string Warn = "Warn"; + internal const string Warn = "Warn"; /// /// Designates useful information. /// - public const string Info = "Info"; + internal const string Info = "Info"; /// /// Designates lower priority information. /// - public const string Debug = "Debug"; + internal const string Debug = "Debug"; /// /// Designates very low priority, often extremely verbose, information. /// - public const string Trace = "Trace"; + internal const string Trace = "Trace"; } } \ No newline at end of file diff --git a/dotnet/src/Extism.Sdk/Plugin.cs b/dotnet/src/Extism.Sdk/Plugin.cs index 9ec9f9a3e..15f4cad77 100644 --- a/dotnet/src/Extism.Sdk/Plugin.cs +++ b/dotnet/src/Extism.Sdk/Plugin.cs @@ -6,14 +6,14 @@ namespace Extism.Sdk.Native; /// /// Represents a WASM Extism plugin. /// -public class Plugin : IDisposable +public unsafe class Plugin : IDisposable { private const int DisposedMarker = 1; private readonly Context _context; private int _disposed; - internal Plugin(Context context, IntPtr handle) + internal Plugin(Context context, LibExtism.ExtismPlugin* handle) { _context = context; NativeHandle = handle; @@ -22,14 +22,14 @@ internal Plugin(Context context, IntPtr handle) /// /// A pointer to the native Plugin struct. /// - internal IntPtr NativeHandle { get; } + internal LibExtism.ExtismPlugin* NativeHandle { get; } /// /// Update a plugin, keeping the existing ID. /// /// The plugin WASM bytes. /// Enable/Disable WASI. - unsafe public bool Update(ReadOnlySpan wasm, bool withWasi) + public bool Update(ReadOnlySpan wasm, bool withWasi) { CheckNotDisposed(); From c2de709b31c19df68f7621f7b7e1b7408e1854f9 Mon Sep 17 00:00:00 2001 From: Muhammad Azeez Date: Mon, 23 Jan 2023 23:05:09 +0300 Subject: [PATCH 02/20] fix: use IntPtr for ExtismPlugin --- dotnet/src/Extism.Sdk/Context.cs | 2 +- dotnet/src/Extism.Sdk/LibExtism.cs | 27 +++++++++++---------------- dotnet/src/Extism.Sdk/Plugin.cs | 30 ++++++++++++++++++------------ 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/dotnet/src/Extism.Sdk/Context.cs b/dotnet/src/Extism.Sdk/Context.cs index 54812a451..5f391ab99 100644 --- a/dotnet/src/Extism.Sdk/Context.cs +++ b/dotnet/src/Extism.Sdk/Context.cs @@ -65,7 +65,7 @@ public void Reset() { CheckNotDisposed(); - var result = LibExtism.extism_error(NativeHandle, (LibExtism.ExtismPlugin*)-1); + var result = LibExtism.extism_error(NativeHandle, -1); return Marshal.PtrToStringUTF8(result); } diff --git a/dotnet/src/Extism.Sdk/LibExtism.cs b/dotnet/src/Extism.Sdk/LibExtism.cs index 9711f74b7..05404e25f 100644 --- a/dotnet/src/Extism.Sdk/LibExtism.cs +++ b/dotnet/src/Extism.Sdk/LibExtism.cs @@ -1,5 +1,4 @@ using System.Runtime.InteropServices; - namespace Extism.Sdk.Native; /// @@ -7,6 +6,8 @@ namespace Extism.Sdk.Native; /// internal static class LibExtism { + + internal enum ExtismValType { /// @@ -57,12 +58,6 @@ internal struct ExtismContext { } [StructLayout(LayoutKind.Sequential)] internal struct ExtismFunction { } - /// - /// - /// - [StructLayout(LayoutKind.Sequential)] - internal struct ExtismPlugin { } - /// /// Plugin contains everything needed to execute a WASM function. /// @@ -134,7 +129,7 @@ internal struct ExtismVal /// Enables/disables WASI. /// [DllImport("extism")] - unsafe internal static extern ExtismPlugin* extism_plugin_new(ExtismContext* context, byte* wasm, int wasmSize, IntPtr* functions, int nFunctions, bool withWasi); + unsafe internal static extern IntPtr extism_plugin_new(ExtismContext* context, byte* wasm, int wasmSize, IntPtr* functions, int nFunctions, bool withWasi); /// /// Update a plugin, keeping the existing ID. @@ -150,7 +145,7 @@ internal struct ExtismVal /// Enables/disables WASI. /// [DllImport("extism")] - unsafe internal static extern bool extism_plugin_update(ExtismContext* context, ExtismPlugin* plugin, byte* wasm, int wasmLength, IntPtr* functions, int nFunctions, bool withWasi); + unsafe internal static extern bool extism_plugin_update(ExtismContext* context, IntPtr plugin, byte* wasm, int wasmLength, IntPtr* functions, int nFunctions, bool withWasi); /// /// Remove a plugin from the registry and free associated memory. @@ -158,7 +153,7 @@ internal struct ExtismVal /// Pointer to the context the plugin is associated with. /// Pointer to the plugin you want to free. [DllImport("extism")] - unsafe internal static extern void extism_plugin_free(ExtismContext* context, ExtismPlugin* plugin); + unsafe internal static extern void extism_plugin_free(ExtismContext* context, IntPtr plugin); /// /// Remove all plugins from the registry. @@ -176,7 +171,7 @@ internal struct ExtismVal /// The length of the `json` parameter. /// [DllImport("extism")] - unsafe internal static extern bool extism_plugin_config(ExtismContext* context, ExtismPlugin* plugin, byte* json, int jsonLength); + unsafe internal static extern bool extism_plugin_config(ExtismContext* context, IntPtr plugin, byte* json, int jsonLength); /// /// Returns true if funcName exists. @@ -186,7 +181,7 @@ internal struct ExtismVal /// /// [DllImport("extism")] - unsafe internal static extern bool extism_plugin_function_exists(ExtismContext* context, ExtismPlugin* plugin, string funcName); + unsafe internal static extern bool extism_plugin_function_exists(ExtismContext* context, IntPtr plugin, string funcName); /// /// Call a function. @@ -198,7 +193,7 @@ internal struct ExtismVal /// The length of the `data` parameter. /// [DllImport("extism")] - unsafe internal static extern int extism_plugin_call(ExtismContext* context, ExtismPlugin* plugin, string funcName, byte* data, int dataLen); + unsafe internal static extern int extism_plugin_call(ExtismContext* context, IntPtr plugin, string funcName, byte* data, int dataLen); /// /// Get the error associated with a Context or Plugin, if plugin is -1 then the context error will be returned. @@ -207,7 +202,7 @@ internal struct ExtismVal /// A plugin pointer, or -1 for the context error. /// [DllImport("extism")] - unsafe internal static extern IntPtr extism_error(ExtismContext* context, ExtismPlugin* plugin); + unsafe internal static extern IntPtr extism_error(ExtismContext* context, nint plugin); /// /// Get the length of a plugin's output data. @@ -216,7 +211,7 @@ internal struct ExtismVal /// /// [DllImport("extism")] - unsafe internal static extern long extism_plugin_output_length(ExtismContext* context, ExtismPlugin* plugin); + unsafe internal static extern long extism_plugin_output_length(ExtismContext* context, IntPtr plugin); /// /// Get the plugin's output data. @@ -225,7 +220,7 @@ internal struct ExtismVal /// /// [DllImport("extism")] - unsafe internal static extern IntPtr extism_plugin_output_data(ExtismContext* context, ExtismPlugin* plugin); + unsafe internal static extern IntPtr extism_plugin_output_data(ExtismContext* context, IntPtr plugin); /// /// Set log file and level. diff --git a/dotnet/src/Extism.Sdk/Plugin.cs b/dotnet/src/Extism.Sdk/Plugin.cs index 15f4cad77..690c74d19 100644 --- a/dotnet/src/Extism.Sdk/Plugin.cs +++ b/dotnet/src/Extism.Sdk/Plugin.cs @@ -6,14 +6,14 @@ namespace Extism.Sdk.Native; /// /// Represents a WASM Extism plugin. /// -public unsafe class Plugin : IDisposable +public class Plugin : IDisposable { private const int DisposedMarker = 1; private readonly Context _context; private int _disposed; - internal Plugin(Context context, LibExtism.ExtismPlugin* handle) + internal Plugin(Context context, IntPtr handle) { _context = context; NativeHandle = handle; @@ -22,14 +22,14 @@ internal Plugin(Context context, LibExtism.ExtismPlugin* handle) /// /// A pointer to the native Plugin struct. /// - internal LibExtism.ExtismPlugin* NativeHandle { get; } + internal IntPtr NativeHandle { get; } /// /// Update a plugin, keeping the existing ID. /// /// The plugin WASM bytes. /// Enable/Disable WASI. - public bool Update(ReadOnlySpan wasm, bool withWasi) + unsafe public bool Update(ReadOnlySpan wasm, bool withWasi) { CheckNotDisposed(); @@ -56,7 +56,7 @@ unsafe public bool SetConfig(ReadOnlySpan json) /// /// Checks if a specific function exists in the current plugin. /// - public bool FunctionExists(string name) + unsafe public bool FunctionExists(string name) { CheckNotDisposed(); @@ -79,13 +79,19 @@ unsafe public ReadOnlySpan CallFunction(string functionName, ReadOnlySpan< fixed (byte* dataPtr = data) { int response = LibExtism.extism_plugin_call(_context.NativeHandle, NativeHandle, functionName, dataPtr, data.Length); - if (response == 0) { + if (response == 0) + { return OutputData(); - } else { + } + else + { var errorMsg = GetError(); - if (errorMsg != null) { + if (errorMsg != null) + { throw new ExtismException(errorMsg); - } else { + } + else + { throw new ExtismException("Call to Extism failed"); } } @@ -96,7 +102,7 @@ unsafe public ReadOnlySpan CallFunction(string functionName, ReadOnlySpan< /// Get the length of a plugin's output data. /// /// - internal int OutputLength() + unsafe internal int OutputLength() { CheckNotDisposed(); @@ -123,7 +129,7 @@ internal ReadOnlySpan OutputData() /// Get the error associated with the current plugin. /// /// - internal string? GetError() + unsafe internal string? GetError() { CheckNotDisposed(); @@ -168,7 +174,7 @@ private static void ThrowDisposedException() /// /// Frees all resources held by this Plugin. /// - protected virtual void Dispose(bool disposing) + unsafe protected virtual void Dispose(bool disposing) { if (disposing) { From 77666bfde1f7e7687b9402fbbd64d7d0f5e4a6f2 Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Sun, 29 Jan 2023 19:04:24 -0800 Subject: [PATCH 03/20] Update description on method to match implementation --- dotnet/src/Extism.Sdk/Plugin.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dotnet/src/Extism.Sdk/Plugin.cs b/dotnet/src/Extism.Sdk/Plugin.cs index 690c74d19..3de36a6b9 100644 --- a/dotnet/src/Extism.Sdk/Plugin.cs +++ b/dotnet/src/Extism.Sdk/Plugin.cs @@ -64,13 +64,11 @@ unsafe public bool FunctionExists(string name) } /// - /// Calls a function in the current plugin and returns a status. - /// If the status represents an error, call to get the error. - /// Othewise, call to get the function's output data. + /// Calls a function in the current plugin and returns the plugin's output bytes. /// /// Name of the function in the plugin to invoke. /// A buffer to provide as input to the function. - /// The exit code of the function. + /// A buffer with the plugin's output bytes. /// unsafe public ReadOnlySpan CallFunction(string functionName, ReadOnlySpan data) { From 71c331be41f228ea4b39a37e01f42d062b0b3516 Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Sun, 29 Jan 2023 19:04:44 -0800 Subject: [PATCH 04/20] Implement async plugin invocation with timeout and cancellation --- dotnet/src/Extism.Sdk/Plugin.cs | 89 ++++++++++++++++++ dotnet/test/Extism.Sdk/BasicTests.cs | 86 ++++++++++++++++- .../test/Extism.Sdk/Extism.Sdk.Tests.csproj | 15 ++- dotnet/test/Extism.Sdk/sleepMs.wasm | Bin 0 -> 939549 bytes 4 files changed, 177 insertions(+), 13 deletions(-) create mode 100644 dotnet/test/Extism.Sdk/sleepMs.wasm diff --git a/dotnet/src/Extism.Sdk/Plugin.cs b/dotnet/src/Extism.Sdk/Plugin.cs index 3de36a6b9..8bc095404 100644 --- a/dotnet/src/Extism.Sdk/Plugin.cs +++ b/dotnet/src/Extism.Sdk/Plugin.cs @@ -1,3 +1,4 @@ +using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; @@ -96,6 +97,94 @@ unsafe public ReadOnlySpan CallFunction(string functionName, ReadOnlySpan< } } + public async Task CallFunctionAsync(string functionName, byte[] data, int? timeoutMs = null, CancellationToken? cancellationToken = null) + { + + // If we don't set a timeout or a cancellation token, our watcher thread will run forever even after it leaves scope. + // A task does not get automatically canceled or garbage collected if it leaves scope. + // we need to make our own internal cancellation to ensure that we cancel this thread when we're done with it before exiting the function. + CancellationTokenSource internalTokenSource = new CancellationTokenSource(); + + + // Create an async function that will run forever or until timeoutMs, + // but will exit early if the external or internal cancellation tokens are canceled. + // Check token for cancellation every 10 ms to minimize CPU utilization. + // Even though the Task.Run gets a cancellation token, it doesn't continually check for cancellation, + // only checks once at the beginning to determine if it should run the task or not, + // so we must also check within this task to ensure the token hasn't been canceled. + var runUntilTimeoutOrCancelled = async () => + { + // If no timeout is set, save the resources of having a stopwatch and just run forever until task is canceled. + if (timeoutMs == null) + { + while (true) + { + if (internalTokenSource.IsCancellationRequested || (cancellationToken?.IsCancellationRequested ?? false)) + { + break; + } + await Task.Delay(10); + } + } + else + { + var executionTime = Stopwatch.StartNew(); + while (executionTime.ElapsedMilliseconds < timeoutMs) + { + if (internalTokenSource.IsCancellationRequested || (cancellationToken?.IsCancellationRequested ?? false)) + { + break; + } + await Task.Delay(10); + } + } + }; + + // Create tasks for invoking called function as well as for running a timeout / cancelled checker. + // Note, we are not awaiting the task here. We will await the tasks later in parallel to determine when they are completed. + + Task cancellableTimeoutTask; + Task executeFunctionInternalTask; + + if (cancellationToken.HasValue) + { + // Pass cancellation token to the task so that it won't run the task if it's already canceled before we get here. + cancellableTimeoutTask = Task.Run(runUntilTimeoutOrCancelled, cancellationToken.Value); + executeFunctionInternalTask = Task.Run(() => + { + return CallFunction(functionName, data).ToArray(); + }, cancellationToken.Value); + } + else + { + cancellableTimeoutTask = Task.Run(runUntilTimeoutOrCancelled); + executeFunctionInternalTask = Task.Run(() => + { + return CallFunction(functionName, data).ToArray(); + }); + } + + // Race the 2 tasks. When they're complete, either executeFunctionInternal + // will have completed with a result, or the cancellableTimeout will have run to completion + // meaning the task was either cancelled or timed out. + await Task.WhenAny(executeFunctionInternalTask, cancellableTimeoutTask); + if (executeFunctionInternalTask.IsCanceled || cancellableTimeoutTask.IsCanceled) + { + internalTokenSource.Cancel(); + throw new TaskCanceledException(); + } + else if (executeFunctionInternalTask.IsCompletedSuccessfully) + { + internalTokenSource.Cancel(); + return await executeFunctionInternalTask; + } + else + { + internalTokenSource.Cancel(); + throw new TaskCanceledException(); + } + } + /// /// Get the length of a plugin's output data. /// diff --git a/dotnet/test/Extism.Sdk/BasicTests.cs b/dotnet/test/Extism.Sdk/BasicTests.cs index 9ff0f1bec..ace353d1f 100644 --- a/dotnet/test/Extism.Sdk/BasicTests.cs +++ b/dotnet/test/Extism.Sdk/BasicTests.cs @@ -9,16 +9,92 @@ namespace Extism.Sdk.Tests; public class BasicTests { + private byte[] count_vowels; + private byte[] sleepMs; + public BasicTests() + { + var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!; + count_vowels = File.ReadAllBytes(Path.Combine(binDirectory, "code.wasm")); + sleepMs = File.ReadAllBytes(Path.Combine(binDirectory, "sleepMs.wasm")); + } + [Fact] - public void CountHelloWorldVowels() + public void SingleInvocation_InvokesMethod_ReturnsExpectedValue() { using var context = new Context(); + // Test multiple plugin invocations to ensure that plugin calls can be repeated + using var plugin = context.CreatePlugin(count_vowels, withWasi: true); + var response = plugin.CallFunction("count_vowels", Encoding.UTF8.GetBytes("Hello World")); + Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); + } - var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!; - var wasm = File.ReadAllBytes(Path.Combine(binDirectory, "code.wasm")); - using var plugin = context.CreatePlugin(wasm, withWasi: true); - + [Fact] + public void PluginWithoutWasi_CanBeInvokedWithoutWasi_ReturnsExpectedValue() + { + using var context = new Context(); + // Test multiple plugin invocations to ensure that plugin calls can be repeated + using var plugin = context.CreatePlugin(count_vowels, withWasi: false); var response = plugin.CallFunction("count_vowels", Encoding.UTF8.GetBytes("Hello World")); Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); } + + + [Fact] + public void MultipleInvocations_InvokesMethod_ReturnsExpectedValues() + { + using var context = new Context(); + // Test multiple plugin invocations to ensure that plugin calls can be repeated + using var plugin = context.CreatePlugin(count_vowels, withWasi: true); + for (int i = 0; i < 1000; i++) + { + var response = plugin.CallFunction("count_vowels", Encoding.UTF8.GetBytes("Hello World")); + Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); + } + } + + // TODO: Test that calls multiple functions on the same plugin + + [Fact] + public async void MultipleInvocations_InvokesAsyncMethod_ReturnsExpectedValues() + { + using var context = new Context(); + + using var plugin = context.CreatePlugin(count_vowels, withWasi: true); + for (int i = 0; i < 1000; i++) + { + var response = await plugin.CallFunctionAsync("count_vowels", Encoding.UTF8.GetBytes("Hello World")); + Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); + } + } + + // TODO: write tests with long running functions and also test pre-cancelling the task + + [Fact] + public async void PrecancelledToken_DoesntInvoke_Throws() + { + using var context = new Context(); + using var plugin = context.CreatePlugin(count_vowels, withWasi: true); + + CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); + var token = cancellationTokenSource.Token; + cancellationTokenSource.Cancel(); + await Assert.ThrowsAsync(async () => + { + await plugin.CallFunctionAsync("count_vowels", Encoding.UTF8.GetBytes("Hello World"), null, token); + }); + } + + [Fact] + public async void LongRunningTask_DoesntComplete_IsCanceled() + { + using var context = new Context(); + using var plugin = context.CreatePlugin(sleepMs, withWasi: true); + + await Assert.ThrowsAsync(async () => + { + // This should throw after ~2500 ms and not complete execution. + var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[5000]"), 1500); + Assert.Fail("This should be unreachable."); + }); + } } \ No newline at end of file diff --git a/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj b/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj index 1f2b092e9..3d273a2d9 100644 --- a/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj +++ b/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj @@ -1,13 +1,11 @@ - - + + net7.0 enable enable - false - @@ -20,16 +18,17 @@ all - PreserveNewest - - - + + + PreserveNewest + + \ No newline at end of file diff --git a/dotnet/test/Extism.Sdk/sleepMs.wasm b/dotnet/test/Extism.Sdk/sleepMs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a325ad30bf0bc4146bcd341a2494efe349c6ce71 GIT binary patch literal 939549 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

CO;r@_O04k8Nex2PYtH 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 NlHXm4ozCzw-I?9Su{hX0A7K|t;e0+nJx0T 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�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 z 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:MGv-Ut6ac;F6T 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 z zT%Audgn#6?hKe_HTvNrnIIgAQeH_HE$n&vWp zMxFj>C4ah%>zdTP4%x}bbDYu{$w{91rA8QI4L}V+;Akam7&#`l;)Kl~F;)L?r*PzF z1wz&EUj>sJ_8JmIXxv>V88&W5ZZVS@w$p<>g;0nVV@NqpkViFgr0i4#5!VEk4#^ni z?0_dt3w-HD=;h?lKnaZ(Qg${RZun1XQ1k!8lak>TAQG05r{HK)CA8|X6H~?B&RwP+Yp`N z>=X%G+9YRegK^nhN``Z4N~AOFLWZOdc8bJdbl2#}$abwdc8nU_F*>qCtJcnB=^qw} z6F82pPOj~pTzCYSqvE@iQBF8HjE-O1o?k%uBc7>lN&gC4#_#}sJi^T_J#l18L~_$+ z;W#w__9fgON{Db+tkPYGO56>IN9X1KzvUGdxx}R=I3`C8b98Y+c6nZ9W7<@n+3t1h z`5ke%7LK?5E?`5>Zqy$uQ^tcVf$3Hlw;VWAFMzN?I)`Vf#%7wTZI0&_pq3z5ok*`K znJK>_89RDJ<75%ALSJ6YAK>x>JtR_hrPOqm|D@KMl-uCBEvOwx>)sx?1E^y$cQ@cp zAU#MqcriE$ng!g~g!qQVzfq>>jg^rF0yk~6>2@xbUKim1iw4Bv!A}p0Z}Yn8V0?rd zcIemwU1u?bZmEC}1B@Ai zXU}f}?t@<{4RMpOgheNGbAyR8>=E7E@DVY(D^Z+GA}$stnc`X>#gv&&uTWSAGMyzh z6bh{feyiqSGJE3|?MWHYQSouO+mZ%HS`_a?B9=3b7*Q`ej6Bpu9r{-Wats83ly~hlF)C zc=QYjGI)4lltxD+K)EEY>ch@34cE)l_<;-8Nd?un=d*J)#LcXWo;bsVcHUN!tLVv; z6z;%Hilhyv>@ zCWd>+7uC~oP&<%7E9sTTtl0qA(uQ=QRkUv85PV)w-Y{)P z8g!_)I)$Tyn*8V`@0rpy_|fvy6y&L?A1^$6gSvsV?%jcXKs`Xk%by&P7#E4EYudn` z-*R1uG;zismLTys09mw0l0^ugn-M+);VFN|KvhB7@!b>e@dataP+pfizD@ofBr9D57G|%?H-)3!Xx1!*J1xf;hA@T= zh5-oQV8+Gcj10~z;8Gk^B5ZXr&V^}fc+p=an~?umFLZ-{LPAoavlz6vNIxb?^v8I_X@)#e|G`}e7z6Y{W}H`}xj?zImKPL9 z5%`!cBdtRm8drPpODsn5_wmR`{u=yiz&{lIl@`I`;dt9(EXE>i*Q8PUs0`czlbF#( zk5w54g7^d)Z#P5EVGP{`B(0JBP{01508k*P7bpl64AKt85a3WyZ%`jlUr;|#e~|6x zqHDZBdek*Uo#-6!=?Lm0wDiz>6--MLVQpClz)d@44Fnzp zBIc2%r7!RtRxC_7a0Ey$yIOGmkw-ceNEV_rlZf%Bi@^FxUx9Z*9v3#U7ni_eDZO+Q zO~a^V1|zjHYC2+Z;n2-3B7S59J|e->Xxgl0k;KI0y!;rFdD1=)DZ3)Af5{bZ9m<3@ zg+`6-`L*?y$x58|;5Gzk&X!`i)b&L;9nuc9oU|x1DMTXw9$14gD)|>pwG&1Z{6fig zi#~@=9|{S;e3}xFo)!?}$Hz;kdVQ3SsC{EY()C@2T{7Z%OOm37i z7+CI~nt^3Bp%*kC5ni}>52y5_{FBmxqoapW3c;|M!51y*&XztjrT51bzjWhF6v`rJ z%oD4>{OChpcZA{>R)MgAPf8g^FY69vg~*C{l`l@f1R<*dxZRulg{vn&R*9JeFZZHv zR^x*nS~m;mLx+93Qb7&k%4aWr<8#*(I@TT-m#nZV3`XmL@a;vPiU~81MRyyur&p*RZeDXs*Igf;%$T?2T#IF&KxP4ksX)%t( zvW@vdM_(x|rm&NmHnr!Ud-&Hhot&ICCyJb@c2nu_5v7R9))(Y{+ zskqu2_q0bu@}ttw3F5TcLWI{L?El^ScvQa17!kjn=6xw6DM!R^(qv2P88H|b*$89X zOfWgb;?Y11!_hS~HxBfHp@1JP{{NbfB(bCML^!HTcM#R3c6J;CtoV1uGnJoacnX7m zoTBki0rM;aa>qw5%3~h2f!41!SPCDk86|Leyo;>1Bb#w0hyR){nT5NCe9?_3;UIc1 zPV>?iQ?UgUvzMDV!pFbi16Dab+KJ8$fp>4B6IX}%8G?J#*`c6Ne}CNC6@Y!H4kyu| zXT$?+dAT)z9F7g51v&Q)I}@-p;HxFy=7LF~GJYbT3WGpfTij`iT`_07AQqJ4y_WN= zVA?-X9mgO+sy|w3V)6VRY0Jz9?D2+S)2(?)9^OIB2Qj6@SQNSblY)zSks7t2&q%}G zO%C4{&x9>O=-L5%*^xF|(7W>a0B0UU5Rd9ziHA#{I3rf%J*Y*j8Q4Ye;wHxvE=As&W6Lsws~zMfvaL;8kv4el4>1qKC#1kmTp`GbEzaA;s)Ku`!r6c9oE0{Y-i zIZrQxXFzYSAa7s5zW8ugKuAbG{6Pfz8{p9sKSB7C7s5~ufV}(yc@R&ZARvzbe}AOk zFBpFUJzzdZZw?3y@el9|?uI{JFsbwP@kcVglos6x`uiO!yXL@<03o% zATNVQcRU4o;cy*(J&`GYgP#{t#QB+Sexbf0KHUQXk#ew4e=k2u*N-Cm;*CDR$dFGk z<;N$$#~%l|VZ;{X@$Isvh5-lqS!Tc<>Gl_VT1hLs!%(9=rSadU_cAJ@7$q&#s}t{kj@F zkwyIVHu$1Qp8X8n3_kt_Z?zpLb<~}qx53Ako_+k0q`||(E4USM6dX!V!SWH7B;2{| z5rGeD;x={qGBOQT9K4Iew>J~hocMb07{!-+9T_q?g+N-Pi@_?2T~=y_lVv5+(Z(O= zT+`E>XpN$)Y@GbD$xDwMqHt?Y@~W*%#bS?8^7pGma$;4cxO7(wH_|1J!HFNKfYk&h zVDKj5BOWv#r_$7%X7Nsh<0w6Xuh=O9$d1fr* zI9n8jWz?xRiMuSBA+8wO1h8NvEx|zKf(SCkREsLt6>WepF@i-!p>e7KXF+hL6{FY3 zIRK&+ae9}|hwz*rwkGo}>9C&aS9E11VVqoYiW8v#@IXkM3WNh@bn20q4=0tM;Xd3H zn!hRnrK3wFXdgv6l`nXXi{x!grPPFQ3W2GOcqi%j=p874;AEV<)jOE9CE&He#U}hB z3FKK+i=|m8l?a7NqTupmMA9KL?SV`OIfPU|)NL9zDM{(ELv&miL*Y5Yph?2QgNp7X zcKm{~=Gmcs$onk{td?H&k@JUySM_wI9Oc**kGOp`UpOdK^;KuwK4;Ti5a34 zAwbg(4Zg2HY3Sx^!Rk3FF-V1r4(CLSDNWL%v!SOu`JwZG6Snj|Cp8Z=5>t5;swl2z zN2$1M_LISJumU@H61;H}Qn{VcHRh2#KAPOoD8CZ!SyA? zfm5U5YMERW&!U4^am8Cv15TDL2`Z8HBu>g!6O#-Yna}Xl&rvPBgXwtXV$eJ3g83Fv zN8)F6McnCx%hhm8PI@Hm`ANi-;pCN)l9&VoR`4I+y zfVP5u0<8h90xbtE1kD3Y0cC)aK|?`dpn;%1pdgSR$OqH~6hL|=~7rqkMc=npghtq?Il`)C@#I1_N8q=jX)H?If(oyypmUn zN9j;{N*u}qy@T>i@1}e;1|_wD@E7C_Y7c4vvIU)Qjs6B&4f+~19yAQp7vu$M1!@4Y z0o`e3FYN>wob06y_+1Ig0*wX5fr3GuK}|u`LFGYjT zpw^&jpm#3z(j(9r&<@aQ5QUwO-xSaQkO!zGs1oRgv%Pc-v>mh-lnM#}wFQ+0y+YiZ zptGQZpiQ8;pmCsBP=8Pl5WS-%s4l21=nlq0cYGXGmqyGSWD zD(zKh8HD9ImTPR8DC?3xaksiOeB|~YtDqF1F#S9pfY^Q@j@T>lbzRG&sy?#JThcH+ zQt=H6)wQ}Q;W0nKhD(s85-%h)DO3y#pCM_vI>FuYb=VS$t}%p+Hih^C4Ksm=XiX?L zX>%w2W8;YUpV;n6pV*<`6V`lpL5vyIDZWsPJ0PNQ0NGM?>Rz*GV9t6;pWq>-qRfe; z*$+x8hpSffKlX6Nd;qC^RmNE=%128@_s9}$P2>R}I32aB6jmB1Qw2|5lr@sXg%irQ z42S=ddE*z^CrIk9fbU7D`_Lv{-kDI&i*btJjui$_`UE3MF^aIMJP-yS+9Fl-JiEXR&iJiEn?G;X0Dzf*4ZHu`46_P|`L$jUKZY8CE zZaE}hnleZ-$;FYWbO;@3sA2~()HU2UlDBNUrT^MSNdMTvS(5#vG{fRebBd*z)Xb2x z%7^oeSdh}iKgF{1Aw<_!K#-!2g`)2$wjq@itl5bb9c=Q*lsB|mKY7DL?eOW{wDgIc zrs77qQn#O)W>?H)G@BZYuhtcv3QG&`^>l?L=3}mGf(eJvHc5V%wc~~)B}0iylNt6F z(!YwpB*TJ9horKLtIM$tY{Vg|DC;Ly(ROXD=UAVzcC_)e{mX8p^=sQYcBSmLTKBZ8W<3hJ zVZF^0o4;{_dYtVE=_i{EyGGWDRtYu@Z8z9@O7E;TOOtKFrQ22|Z5P^pVcP5ei(8IHK-}smq7@dG9@Le z+NH~ajVoOOdy}$K35rE=4HKszpj8FQFpC~)AkFgR4o=V-2SyO8H0?m({~HeobGzT^ zp&YT5oVS!plL;QV*@8vH^9vpj=6w^VQb6JdZRw9x8g2{7%@+J3p107m70jJ};{l1G z{3BMhR;^l+;VC(mRH2zCP+Bs4KaEnViX`cw9I>dJzm-bEEr;A} z!N%hGIuH1nWVp`*62HosR;e`H-jZ84@U-}6Igc$)a}y^X1-gfAVkHMjS~bl|a_?GE z%KUmU4%fV}!(k(S{KO^p_pkaqbLtE`^25`ST*Exm0GD2&p`qtlme)g^Cp=}cw|dg( z=Ostk$|EIir-vRgNrrq1`Bax@8i{}u^!NuldU(oI?)su7OAvIeS1jBQnOtsoe&5Jv zKa1|%^#`-rWIA@CdDAJwjm$hG+vDMq-KMFzTV73?xRd?ibvnID&<@ke8+iu`+q_~@ z)}4$ACoY=m-)}i|R25*U{Qmr;i>6gO-j)h~`jSa`y{i0G<)UfaoGSI#oCY4%w8Ma1 z7fh$OA1dp!m2hTO=%5RxU&}eS?lvD-sxczh`hw~6t_^Ff91fh7HSO5C^QO!7eq0g| z1RQA7+aut->0qOIKlN@6>^|&3`lUcO+`x|tmp zc%3r^w4A>q_7d=}?2gYLpEcdc8gShBD{%5W&y!!DHI1ru`Dw%o;8lC7*Kn%>*H za_>ywOz(nQ_s^Kl4!e8un@He1mkzZTo-utjVePHP-GFCYnRBSi8PjC15?#&BfwLT% z{dxbi>E@noR~uFYe%-xA!lKiri#OVIoA>NF@b0CthSMhZrZ-M`TmoKPurT*=uIb44 zqjI|J0j_kl#*a&LO|u&39hk5hcvoc5oo>0NHdD?uvYP>1IL)i!!&9cRjx}qaOaRWV zp5CL|DN{&|j%P0i1G`k}?D@kyxH;ud5k$=qUckW~;;hFl~L_ z<;tXzz*&oIt#VG7=6&olXkPv^ynklzX1Wum`@UsYT|Q5E;+NGY9yhhvS1Bia4{+|; z6Gv|yGwr&P-lEZuz*&`@+`W#OtaDfX(eO*)!n#97t~+X~GkVIQ0qMXl-QyC<9W~u* zx5?+^AmALYHM-$POz!9W7H4>qf7R{tF8pq4bliM$pfhmtVEr!r?BV<_`n(+n?EXVm z$n^atQ>VJiejWn6D&zI;XZuWhUd)@kBA9T?#z(^UnL3p^`qR!Xz`9p`CY;PM{o=m9 zg;jI%|LAi~pJQreIPrBxHQ>yi#yx#Zre*KX)YVx5ySsl~s{LM5+3tQm&mTPje$!=f z^*yGz=y^deE&;E)3);rX=AqnXEwciAZNGfms%~$ zS$zwflk&6onq8(n$-j)ro&_vz{MqWuou*%m1&wEoB;3L4N!l-_E3Uq6zl@^z(-SIu zvBPvd%pq%cFW|iIZVc?c-Q;_w)ejXI@T#GHms|gAy7Hz{%IucF;fG#l=(d?$cRXt9 zQVUo&c(Hedt)?w)rd)Yf5?DGjH2&=t)6c{FE9So_M0rN``0~mo)5(?12bK66Sep9x zBjW~BgCAQ)dY%E!sq8-UyY;48i*Joxn?u;Tb>A6lO{d!(p6t8@IP*g67sG!vb*!># z@zoWCqkU!#{N8l)ZqSwubAa8eMg8UTo#|auf9I8B$p7J_oRn`(HRrXRvtuaXpr9wA zOHD1`Jo+)eAK{6o26z72l-2U|A3i?7(ob{VHC;SPk~=*GCtF|BWvQ6;)5 z_aD@@<`h%+)CUfYY7l<3-=^{?)1s|aOW2ko+$f{8ZMdn{+a|B-=M?~FO?g(3#L^x_ z?6313;m&Oh*QPV4B@?qNMFMB;KluI0uh<`(^7StplmE=B`&KSvcdN{|IdVTA*#6|D z?C;oyt;a`YZU)Y=${jH4N4Bioiq*B!fHN<-Pae3Q?O0M~@_aYKeF}y;Y+}8ahL_H> zqVS7vFHX;9i+>w=+v?b3v`_iJUIcGrHuJ}peYyZx>M;Ad({^@p;JcWO1A%k;Oz&6X z7q;TY7eBRhApfClM_j?Y-f~!%#HWwY-gW#vHtc5B8EaQ3>?K_Ox8Fzo#u7@kPiQh5 zSa-Ko6^}j4w(p=l3;UA)jp43kOl;1|-&*fz0_;A&MYY%*#_m4KpZww>=AQ+Vrgq!M z_I-Ud{lh_Emt%h_uEl+`sr6yR#^c{ zE$cj!CUv0GV;(g3_Rs(wtIL@-R{%+TJGjNXaL~OGY%=zRuPo1U$hj%~U_T>qd z-t&k2Uk8%Ecbh%?{$L%t-(7LI4RGG6T~>2WvO7Vs&H?3tv#RHm4n4(ITr|%Ox^oZn zd;QAs6>`~F>BP#DCg9w!D(o7b%PJh$dnIQHaPqWohn>r1@2Y?PlS3N$_iR1A-Dy^8 z>CYRb0O0PQ$Ch7wnuT_WzUR{%IP*lF`SocQZvA|bRSDoBkr%`Iong(s&x>q)>n_&A zs-<0apJAJJTpRiGUf^(#N+~tYvi*&}iT!CAaE(U^O-7z&eM(e+S~3IJWy`yO^JiJP zDi^LE>kXXe{8xUfb8Ofz0aj9_J4`>I>->1@@%lyE{cI$cJIpXh>i)p=rGC`8h2^Ed zJ8b8V7pAS9Fjv1R$-ktOe24iq4jJ~~eT05<#hV|^^X{+@75e!)j2~+>9*Qg}W#3^| zSFUv*vTv60<-URSq})5q{wtpqb=YKmmzQ=A%>{Q@u;Z;-wwdFNncqySAXU1{f-*`E zk1>zYSH2(n-t2srHJZMs$t`J)eyIJ#o92MK?2Ofu#QD~V#;oPB6{Y06ENywnAH(0r z8rvQj|JFS3E}Lxo;@f?DC+hF)*L^f^xyz!XPBg1NKG`T8Wsl9L?y@?w$COIR%ruUu z)#Sdp;4a(zW<^5NoGntjW^5Zh%w(FWKRmOmPD;MV(#P08i#E+R+Gf0XXr6bE^*P>ob)q!Wc+=L{P|Ci? z%Jj_Za8nv*oK?HrZS$#n%x zlah_)XL&t0&%4hG)wTr~lJ4d-{o9wnm6Ti_uo?+1W^LFzN1svmn@UpP z1Ll%3>iV&dGxXh^UeuM6AF!(%E_EJZm}d-X-LH<6^?+3#v44uSX|Aznmw@I{_5&8i z%zE1oamLg2HeWQKdcd|PXH~x2Ws-4}ZLfTD!2|aFjS6{PN(|KxC?9>*T=5~>U8a7A zBPIIl`yBh}quKc(tE>M!t)5ke@!GG8E}H`$vX#xJ4XI?#FfNb&wvm+lkaY=|mg{An zrFZ{q`Wy4ShwROP{a=s#I94BU-1dxl%R_ds#nXHTbEMI0py7=9)I-+bL8ttk=6K`H z(vh#t1rOQ4vQFRF7$zEnN9_31T=5aBIdtd3sC~2bfAx9$#O(ZtJwEL6Wx>ZNW23)K z*USNrSbDcd#vyEq@zw5-$L6F*>``8D;rHXG=+Dnvg7$yJo-BCtWr@kD`lSsTH;}R) zG203?qUL@WVqEUM@VfcbBbM^u_d0vW&()7O_~C)M;1T;cW96ofd*|v~yk7d5ROvAr z-hcPH`Qy^{bzfC1FS$HsSAI{9%i1?nf3RZ419QM*R_dQXH^5$*OOcdSg3vK(~T2n=@+({^uioaz&w7xc+S9P>4*8Qe{W7IVCkb4 z*LiL|*l0NT=1=py0@m~H$mgfWjnt3-D-Z2oz+Ar{yR@cNlJVQWN7j*Y3)t3;Cwt~k z9IkggkoU@5P{8_6Pqu1rmuO53kA7~hSjeuFspGS0{48VN(bJxpoeNpsw)Y3(CVXS8 zUjF?Db3h>*u<&@BkEU<*ll=a$k&+A9@!o&uOqM3;?;U@N{#VFqrMKUE)0|+8zEaLg z$}VINo7~wvfz3B|IQxT@lv~JNt?Zuhc3h_Z!-p$x%>{)lXV`^gJKK@QuRr`+R;u)b z4KAB7ug#~Pu-G{(H?(>a zZIsTwPU<-`5vuk=%1 z8qMZ_r!2+EY5ZNQ5&Fvwn!PY5J!KK)CXD#){RF+GEPV68u9onovK8Cq4! ze#)%tKW#lJbAho_(8q`7Q%~8`YXKd`n`aom-n6T%RQQw~GPnfxGEX&bxi$Kox#Ban zqUjeihD#HT6T&uP{6AyWcJ5?@%=3-CW7m|E0-v!xlV&%ZG+~jx!K-&rFg{}^&X+&< ztCXqV?c5Lb|BUroyUlS0TWIWh=DMwv{fzzDVMOw<2~+ibj&6HlKJ|>bRyI{~vmULl zu{|5(?-|Pu+8UEEVX^-CmR8lIO3zuNsWrpezmC;6o81lb|8wTi>srbktI7Jv?ThZ3 z1D><~Gq>%EGtboLrQ4$aKW8CN_b=O;v&eXNUs8d2-gB1H-0f*;_how9wR>-yw>)QF zxI8>@Gn+>TH%gq znZ9zRJJqGE7c8q_%fv(DXXqDnIcg(izhF7#Ol3+LRvL{ped9Ax?qE!X}%bH6DjzkgHbpL5vjja!E`Z3M|h_8<9SrT;X2cj8RUt3M%0$Q`j~ z;gmentaC0EI)4ZJ`rc*_t31=x_}o^HB1rO3w%wtRH%zY=+b??iIdI<2T9-duH^p0@ z`eDFbk_7x-ZnOECX;(ml{&pLISADSWV0+C}FY&XAkB0;2xwVQdd)3tTb=iKUI|64r z_IIv!#dLjB#Nz-f;PBV|Cp5Th${o{v?yh6BQy-q~=W@xEAJBSx$3?(->)*^YTr|a< z-*WSKIQiGy(IWJMDR}qa{xOcgm6omkeAs!@noD)PR z_V-tuHTC%LOOHBBXs7*U@OQtSG3{8AS8i?`u=_Fh$(K)?w%x5V>2EjSJa@OLZ*xss z_e`x>vplfN-B!!%=9(@J-*&8V9(K0jZ�-deSuMk1D5Zx6{tIbL5e;Crp9I$F|I# z0lccJuT7KVrrUlCBO87JoEP9+XY5ha)@su__ih6$Wio3>0y=Ez@|Sm6^0%wCw)J7t z_3!`qkbjGIntkrSSa{In(y?sc9=`#v%4_uZoBbxK;e;u{3xRV!^zS!#pGkl5d`^i( z;LJVgOP8BW`~TkAEv!5FzZuYHjL~#@s6$?Mo&hD3Pw|svw z&2!5gsk;j7ZnbR```L6kv)_d~JAre$)*9C#+w`UTn2%i+QTQFD79{;-n%wEovBs%{ zM+Ph!{ex*>?ec$r(~EGqL+d_YVOl*`w{N}+;Ze<+44rRkF#hMpl`0Xwcj>imq-ogN zV{gXi(9SS$Yw*WuY|4|DXQMr7=UDO26Lr306DmzvS@Hz!{ASO2@3)cN>;KIXw?4q` zed@LP>1TGQ^Pa*Bx3QDUoSnO>#%}g=2lK>VMgqIrUb&yLmwDXxOW9ElIDA6jnQQx4 zWO{{b+kU`KZPg8%4I>V+UdJ!oo6BftcWb0a$={i8IqQHH*Rj)bUqAcC+@tJRwQwnZ z9B|&5p}WeTVDnl#CAQNMKDnjLl#{GuV6!I4hiGRNyS+?CF1zmPV6;jA&aoO|xA8Qa z{e&6Meg>TP@tplt>^wfk`kdYm&NB0mzjujq%zDY#=YJ;y7rK?+>v*0$HBRdIP6wPD zsLSegfj#N>YP!`~>|_cb{BdUZMV9b#_ru%MfV0L;T|V~`Te!RLFW=~a!~YDmT6dW> ztaR9H_Z&Nw+_Q-__Fh5$tJY|^iFPilHb2e1%I28AeRC}q*xl6mhrDZSZkgScCEXon z_lswV4Yo7&Yufa&mBR0^^{)m$SZ0pUA9~vOfO+K|_G^~@_^I)e^tSzXcaZY#uqI!n z_MTy$q5o^)l00+$yKL*EFbDS!v-FiJ^s6R?-(`l$pKnk9kYYSPAiA=&>Mk46qS4qp zrAF!3-0#;)%Dc;UHhkIS?^1(}XSQvBY_5NgIUoJ8p11WB3;6?O{aA00gSI$8gtF!yd3<+wRX`7#g|_kGp~HWZdCEzadgTg;{%&b*UdK{ zFuhawgCmvu>is&Ge`2oxkS!nOu<82SxyJsVH8^Pwd&t^XK3uc<@nC)0oxscHmFO=g z7aA_VO4V;!x4ep!_mJf*8`R)nnRNYWXc8Sx?u0Hr^O5<$*K4^uuTMtkRA1 zyS=oQbonfAa6xJ3%$fR2YcBSY!t>eNSLOPqmmO~`m-E;`S_RH?u~+HIQ|1`Q9)A%p z<>j;IBdRTO$ed?9F|NfZNmsz;1*fH4o;c4~#;aTtDZGGPGdnm)!`+Ro&(FDMURl7h z*M0c&TJ65ZnbRtsH{UE^iF4;4uk~iSKKAowwvw)pP4sRR{cOTA{g4ZP{bdd-WMdX> zzFz9>G<~17Q_D!J3fcU3XESfy>SH{?!fHu*g{*4fA-mR-<{Mx9y5+UG{u8$U*UXsT z-p)2|n(uep90pGCZu{z$C#*33*={3DuAVUSi_h%JNXzxzyB?`2H2otI@wBj&sggjE2CD zJ+*zQN&1;9aVUD#b9TlUkTvk_Oye_;wut|nH4Co(xUu~xW5o&9C(QLjgg& z>yEoze+9?Ws)Glv%!0;dgvqVbx5lNf%I(?1buKrVK7@2IhuHiU)lY?n{>ZB5{t#<# zKaoj>uYW_#=100JSB*6~ILW-nbdv3OUhZP4VH??rK<_gfwoPVJ-29j2T?|ExlN94< z<3g5bno%pD(=vVA*6-GLep$c(&Nkk7dA->%Y@xJBG z$({Fh(XT#zw$-EW3s~92teI_Wh8k<1{kSD&SploC$GLe>??uL511jfQeT5C%1OGV% znSsU=uJJj0W)-l{o}b_S`O*2tJjeB$mrg2RTS5ok|Lbg~zSrCzk1QTtz`B3+d{jDPrHY>P7f(yD>_U&KI!f}W8KT|8wUCnurCj+@iZjO(qEV} zct$7h0yfU}?`*r#nfkA;C#M_iKHJ!Rd*kJHWqt+S3|eOxLqD+X7Cy z7Oo0E6EmMDe?5$|876t5!Qp4GpU0)j~M!xv-W+QAcHfhr|DfU`MyuKDquZcpB>ck`aHe)v#4#Q-sdyh0dqTL zem~9lWaWaeLof5$kiecN9`{&aJigwo{n{t_Y_4Ok+OJD4F~(f7OW6Df8~Sz&yWBfH z-1utc?KW5M=Cf+GPySr9<`U!WbyW^H{*})Xe4DTBzH+L*VVlanYi{JTS#eEAhgbf} zSSNF%t=E-&HehD;?(^36H8yv8)u7CUd{%p@PwcXmV~yXe3%vZ|G^Wvw`@KMN^~k6^R>Q@RQIvrSU$_J`R@M^_ug?)RzJ1ls&2LSy-2Qc=lWz0%GXfeWPg($58-2K+&XnOSMHumm?CHiWW1EzZYjRlo5lXP3{y8A?JX?HbXZH~sNa=(<< zyO-#tQw4K0QxCY$N^%&iPq}S5$^pYv&X!^OUxy9Q*Do95vuh0&U}k4^ZJepoPhZ;U z%S1e1Y|?Aez=~t_(Sfg?jly&C#CfT0a%SqIr)+4o0?%{*4XEH+W~TmZSkrDV@qFc~ zdB5}Vu|Ar<_d14yfB6mV4`jNI*Uyr@j4BR!hNOmd{r+mHkLyuqSvH;nhF;(H;AMzU z{|*;D-a-DR7kAe`xpubRp=^_`HBer6&qippt zg}x%XkG$!Bb*Vmkar2e8He;GQ*QR$^Qmjv0=-gYUx8`W}yvRLTe_xExorGFVpCsmJ zemp%HAG9|_Kfn1uC0$Wp%>&={oc3|NkH?r2aobU!(;8RURMC8i{?v~}mc3EmH7g9A zw|`4t{gadF$)5YLAax*i!j~#T^|qbQoNsF zo|}Q?r*p&Kq~>U9Tv${)Z^sCq*xYqf7oEt_9E!4d(BSegpDI-zl^Jj*M>C*u|H{gf zv-BZP`i>99wEddP!$&h6=lQtRZS!g+7PLwn(qFlBXpz2ewI;h1*U;Zwa^hXmVtsn- zb}qL1R*q(Ouc(OW;nRImzW)(01pRBzss+o^?@!f_dv_&e2>RbFxATj~l%4OBbfs6^ znrE1%+`80e;rLj6=-!x`ra3v9gWEH^-8vqi|5l>o{=eVlXna3zY;3bWR^PDalbDfT zp#LRFUhl6D(zopQ?d|9vXs>g740)KdNZ-a}t#h*KwI=;;pv4U==w3eBHnsxnP2%#! zU%wq*q&Kf{qxUh`quo|JoVQ0r`NVggad%}I*u(E@`nWz?;4?1cN8mP0gA#k1Us{+o z-KXuP?)Bc(c&!O5+reu``T(DQo|-HjR{ynTP?^O;>kJ9=36Fi9srG!Wx%^Msw9<2R z`me|P23W$rMt=RF>6^4rKVgn(o4PGuYg%s^<+a^9R{wU6wb`tWuQi)Y8*iMkF4||- z`fr(~d%V`zR`yk|UNlv|eA?NPk1*{@TzvGJf3F2TGhFW|{td?h-w;`1&xX@|g7(PX zRl=}dvB@6OO4p|916PiBTQ=df=B#zgMh9xm(bru2p}617*P1J{8wM%&M*Do!%zIid z_O)ij$W@(Qot)+~t=;KwomRZobAlH zqM3TDR)2hfPmNx|Ipq$%*0{dha(rp+=|0O24)Lsg^0g*s#wC|61F-CN6ZYTM0V5If}+V45A_PQ>n~}mXscL zoXnqPQqO6%Xx``(w9)Y|YQEzxmFa$oHZ)O@%Jc`hP14XY*Jrf6<2^bw(Uqz?X(w2V9huF;JqA8DOkX=*<@j|Q%)MZ<4wqX82> z)41gBRI0>NN^RYZ8eP9do2GkF)hg%d`rI+pt7{ePfizqtQLOw{kIEuIxlkGoR7J z9_{JWIae}!RFbkLo~Kf&{`9W=CMuoPo9Y#Fr)duTX<928eOS<&l9DG=h39XnRhwpH z7j}iV-n~iN1Dn#|;0t8ow4ScS?IDwmZ>i6i$+Yg+Gz#{aO>?8h(vJDPDDuW(s=ILj zy-zt$F;iYs^`l`FaIOWNyX8Snn=jL`;23f^JBF0ii<5)jN;=W=1f4nAoZ9bNgdJ7y z=xVbhs@eJpeZPh+Tu1V#!qPMvej$g7HTgiV-soue)8lmdvlA^*Ev2I)novFS-DKI~ z9nE%#r)}!-RPUcP)N=7L8t+=4tOAD7$W5^{gx9tvAOltzqfN-=$1X-$d!q<>;gF)r2UQ?xfZs~pK1 zYxHf+22q`y9@KJcEJZ(+)8Xq?>C?oG6wzuVttt7M7A)OJdlr49OI^{5*3a_>jFQ~3~C6yHj7s@JE1(?*kdBR8^HT9!IB+)Cxw9ituD+o?}= z2O4&)J=Gl-PpRFOkwP<#%yU0dZQuDc%q5Pz_n4BEx&+-k-kUxwK0&9F+ERye8)%bf zI{mxFgSIVRN_U$MqA~;S(dhZFY0$jRly}FIwy)hr_e;3o{=~Ip_3btdY#&P5s(n;5 z#F@HxOQDuO8q(k|2WZrhcjUC>K5f%EQ|SDUqOzE(D&TaU|ADm47IAYgy_TvY9R)-GF0YY^nFybgJ@YG>xC9q&cNV(y5JIC^F(9y?#lw zvP};$j&!qN;U!XtjpoPOC z=ufOBxuo=_={H)D^Zk-^x^6S77Tkc&4!=Oo=l4^}(C@UK{wCGX$JFa?0#%A^N&Ouz z(}6zIaS%ak8qzI`;yTO7KfseJT-!%(Z%$CLh(PM={Fr9c+d}1c9jCRf9%Qy}J-yfo z8}+FYEewB5HGYgCD}@ery)Jc3PayS%INJU96{_FYg7$oAO7^$U)5IegwDQhT+E(f? zo%?$VnGNnk^#V%a;Di90Ts)T^n9ii)mILW8Z4Avia*u9*uSG+u?WOT^+)4HBKRS@I zng$K-NNs9urj93iQQgmay3uPny+8dYS+|cNb;FIczIz}Q*X$&n*PoQ8meGj2GwJNT zy_6F40b8zd(wylKnxC9VyHYc#Q$Q=K@Xdz)9C@79nKYtQ-v(roIi9jwq)~^OU+Ma} zGxY48mL?3mM=J;3q+3T^X#KL|G^WQ@3V(Exa&H%-gAIMiue2Wpj0&X7hd)rn;!~7Z zuP@m&&nCwvO)2=qEUNkaIX%7pjw(+$N0EyfkXhDA`f($MA_hOC@?$bYK57IvBL=SgaQ}n^A^kiZXMc??hn`=Z zPI-H_(CeH_RIkBVs_z|4UX_|txm#ywN}dIMYcrVYJKm%&d!|!|xcStzavIeN$fVR$ z*U7TXUsQJZehU9{AXV=bM4HYyG}+#k-v47ydFMZnyS^@54n6CeMtA!KQP_f&wAk%6 zoh`MWf_to_2i^75Y1%2e*~E_Sj%Y=79q-bP(rc+w9Y5;%?grf&x13gYO{I=Azfw1o zJbLoScA8V!gS?U|Q`nMB3V61ardIc&b5B=NC+qbT=eCo!+_0f=RVxbFl}nRnZ=%`l zmeH3>9#m=ZZW=$e4K2S|iG0^&QfA8ldJx@^!d^C||5n|nepdr&eAs$Am^h9CKK@O$ zXICNZ!2s$RVMdi|%_Q%Z(`e44f9c8UtJM0NFa7BDoE&Y>(aD~3Y3bM6bmiztvORf` z?)2JDElW<0U)k@B~X*-zk%7+#NvS5AM>6rDbSy%|B_-1t&7k-b2mT zsHwy9b2NPF0Gc$R3fUfTrA;3eQ1Nb0snQ!W`Ui8G$Vu&KLzzzW&zEg9_5OAG>uxZW z#L<-}8m^&ff3KyH*~7>?W*kl3zlDal_94F-z41%HY`RQiDDQm$$$GY@tPwiWu6uwL zt@gg(Dt*DH5d2WAd2|zay5)YKec%UmN*mjVpQn|}^@i`Ot~Sn#pDRy&xnFDX9*14Xd>*ncHb_H*4?NoB94TnkHH z{doGnddMLVY9WU}j2-i5;E}5-Sxss#2`{Gvj|&_u7h(uNkmIp=!Bu zSZ0Pgn6z!R{mVSnrIgTKs_!Q@R|ktEfk2q)e{+e)WEjT-0oK0piQ=5iw6$4xNyLNn783!%82xm@>;JZdCjJY5=f3A8_FJfOHO4 zVBsIy5Qx~i(KC;oPg%Hco=b9vGGLJ{5UGs#A`q#%4rkw;O9_ol*9_=zkQ?c9=8?dN zI3{hAA6C>?IhXR{s9)y5`PER8qyof&-y_lmLMP-92>GWHH5k_r$9eve2O z2(^$yATr84wY`2SCG_F0b%P(^_mJ2ZiAa>Jm=N~6iy#4LgG+SK(fCVp&fHvi>j$Sy#9`8^^go8|BoaxiHdn=xV1jntI) zy`RngE8GHQNh&}b_&p+BAk;z*fylb!vglPx%3HT}eY%d~7M8=oat3^5%BD8@(vcJ& z%B@w$y%zFVkYkKr!PGDDNgS%c2RPITleVe77k2HZPcbQ zj!D~J5J>{z%RCMUL{_=KZfJL>+%NVe?RLL9kTksjaqIVpY=KY11LByn)!C;yTkJ?#w7_H9>YjB0*q#qK@OwZy2P^R56}2KE%8a<% zbX!Wh;n$yxo9YM_*#(F%zemKpWge-_BaTViRM(F^qBo`FtbOb5msjU7YNY^i;P;4h zfk+T?NQnOq%v!xJW$S;{KkSo#KyS+~Kz#WmE76@NPd=)J6k~gO=Oo`uk<>Q13 z_c8dzyk{W$xaDsISWHoNHppku%-CT(>~dUR9AYA%0zXwo~Ar)=2* z;me4xg2h>{0a)8)pSKB@My#?UVZEATl1 zLNIAl@9Or@^%|$|het(~!G+Hj2wz5gkq~#& zqs}MdyZ6nOZwHkHBIXlkqGm)KleVcQsV*8Jfz1%;djb*Ucd5~` zotl-at-JMgWowr%5DAR9B@kJcHhnm}TXUnsoellYaPQ0(h#*FM5r~9k?R!1{M^mAE zUmufjE=$a3mcy43aZK8#zOcAL`!ufEtG2{cc!d_borC2<3<2=%*|(qD0nP1}ha2{> zuYyd{1&dVdQqtZMh@hmHGlLIlo(%d_TNhglnPdwD_K83YiHBa+W42y%C9&73OMX1} zjQPT1U}p)$VA57?G0pq*5lvQ$e|HQ@tqUGW0^!Su0|JqC$9vJU6wP;wwH>d!vpOzt zuv~~C0cuQLQ0l1Wt!dp0V_#Q7CfR}owzohGfyk{gsrJ^R8uvJ_<_k8lzGA+z7zvDs zW71YP(<=DVG0oaNQ_c@vr2ryHAasm4AP})7lJi22Yvzn>TV-?oQ_xqsK=?A^mOv!C zO>4a9gl6pC?_K|xCPoN>PzyOE#M;MCYMj)Zo*4e*nVV3@H_99RLvF* zw+j{TKLQcNh_6iAc)#3ny)az6@Bwq|K+yUcJt0B7Y?GaC&PB zDYkQ{TnNFGZPr|$>?P+k;g!1iHyg=@CS7pI!j3WRErH1B-TkJ^dCk@bi5+4Z@I*XY zAW|9eMdH!OYgWd2&0dGDJx{ddnveO;Qec-9l)(oiEoIQgE;$6}#QE2Lz%= z`yj6o8Ja~MvP<5H$D6V?T_6$|aZ4bAg2U>b$k050;Zt&6X`ZQP3xtjlUj*VAH{weg z$J`AAY$}Nk`-5`{VniI1wx1Kv_Zf0YGo|E)Pw6Yf^j08zg&YDgsMmnFluMd@hg){a z-pI{7T_Ds#4uRNjGpt4N%bFJl{SMxn#gnmYfxu2U$RQB1nGpuGWzemNNkyoOGZPV)DM z&j&l1fCnE2#%HSGEVZEjAJ@G6nkCK!tv>))$nXix;B_3l`H-nPIB3_t(6g)I8OH!g zC;o-v6)hM^(i_f76xU4QbR=<{5}$GzrN%KHIIwRJpFPaQM95a~QG?Gp z_*_lV>BPC8wGS2?euM z4q76^p^gIvg+x_q+_>?t=TQeai8DskBg4Z6Mb`|nP@{4}qZ_J&g6ddEflQ0`)fTyx zVL{=u(4*n=L1t48QUrniUzp9nux!jo$aZrMWc#d2LpUoGB@n#0A5Q~49c~7kxG-qE zMIDPeYV~+^y?PcC>)>DYMDYM`qLYPF9gE%~z0nTLM7qAl-Zube&5HhxMp{2&)G#zu zml^gr=o^;?!tsG@&SRaOon4$=o!y+>of|lNID0yKIeWV}ySTWxy12QxyEJg|aPf5U za`AR`c6D)eb#-%fcWvP6;p*w?gML=?$*G~!_Cvp%gx)}+1E-3+?F|vVk-axqdn1`Q zf+Rf}^)L&1m<=}v?zifY4lT!xt0AGmL!&}`XG(e*kKW66$@n}K&)gB6YW~7S+(A3vN0GD*amtXm1A|W+ipI%pQN8QctJhbYP;01Y*tsG$k#h+G zpU2>53I8>GZdXRz&>y$6MW}rmcQuB?h2pV zf{_OsS8*^CpA$b)EsQblv}%MS@Hh&mb7TBetDVFk0sbtKQJ#U|RUN$M!skOi7sKcM zMn>Mhw*Kgm#zX&7fn}Rw3M0n{MgD@t-B^5(e0_2J9-ne2%>iB^T{YnONF1JL7@t}1 ze0U(q6e^X8iQLr0%+%c8!qKvfRat908!KC-ox;JPn0ZNADIBO&Mp4$ZoXk;Pv7}m2 zTT$1tp3GU{B6pQ-l5df3Rc%Hp_8Z1p1b$>$q!Q6JJfV>_iWgxaqBjHr!PR{o`Z)@ox5=H z@e@*7+lbhPjavA%ZqsjI$n-@kSDn3Z(b~Qyf?9X)-KSsRz>t_lTae`B+53;5AUntQm);|eKT#wy!9K8q?|l`@%Eio%MYiYx^S^|hmPHQ_6wY|VByZa`%;dc zI(@^wWU1bLK7RV|hi=%2d-rWBMnpQ651cq@`;N(n^d(DGsOX1N?0fX;({Iw`e@DEzIx$DhmO5^o0{3$)u^BIIwI1u zv8HK@*hO8!Mx8mEap~r*r~myRbztSG_mxwdo0U_V*iT8c(QQ*zG@nvVQN~QBtgm!e znkrtBm-Y(XdNUt|t-{CD%dEC)>JR(UX7%msDk|AlvenI3PF+^U zvc&AAs`{!%rgEFo=DH)5qpft;%Ua<#F)H1CtGBBZp5{~f6xZ!H)16mYly0Q3F!3_; zGqW;@wydD&rR-_0n^xM!@MrZuUcI*zb?Nazb(sBJ&-?DK9lFDbCsXvUlreERy7(m>CkcE>eXw; z&s*}>-@6XZ+-YKJ?$NkOw|5zrl*LPXcy{YPdF%EahZ|%$%$l=cb$(;yw%DQLz>q$B z_my)rHM6iRUdqF};pQzjZ<%|>F4}Br(Wpsi_`=2Zk%1{WuY2`>pZB9n*A*-4)vw_c zuqt8gy7ikjCmqzEFtM~MQNE$3MW>CM($W)5%apBLtqD%|c>Uw#DW$qfwdzi8UJYBd zY3JW1pc}WnpaCJFL!!n`oIH2^)*Z>I8QXV6L>^hvukv`6LRnW4s*u&Mr<+<{;bQBk ztZH6CRa@0uX;VwL)ugJjs?y2K-LgZoDW2vfEzC+cYT>OIU}o-IQdLP&P9^j8Qnppq zS6Y~woBFD2D6Pyr6b)5nO_f%r{;fUTtldoOnORJ!-nngUvsxv~R(C93%De+IXl`A` z)WW2dSq<}1mQ9<~GHIl;FzI9>Q`sq0x_SL8v@)~MZR}UMg{6gwb+Lvf79Mq!rE~{; z26nM(Wp3fuqFgJpF4nD0Ep#9KEXpfdw)Rxmm|2*3n_5iqC}Y}4;n+=P>uNo1W#}kN z-HEyF23Svbwkx@C>(rKO4@~tot)=W^Qr*JO!bw$ZYI5(8wn}ePdtYu6%RZY;zh2Ay z@26ATY-Qz5Y?NkG=Fd?MQCTa@P3;y3wKR|R(S5XtG8dsfQm~QevZMeaf2l8tb%y{xb9GDAJ-5riU;CCJQ2ft_FBv9!!gXgx! zIoVv$d@o!F+}Tn%d>+CDI{)oNoCX>=YItCDWQe#X2eYH1^Sk*-!_)t1N;NG~1ySE( z3FJ^pUC~M%RPlA4gxa;7)pa5_X4R2z4ys$>TTngvPwlb#N07&N*#i%mMJ3Ow)(DAIfb9>1 zyT5u|sb|KswLR5@u#zl^p-cT3I@mu#<(r`pM-oWffV4a=k4Znw!f? zD`n;|7OL6`AG2DeWol0(P@2KYnOexp%NlZWr5PX=^0G3y+#6O!DTh^+Rgf!Wmi(*& zKvrB{5;g~D@HUf~DlFs`WQ~y43Mrky9$XbFm?TrVrQpgUAyYX&JIcKwpD~y6vQ{#s z49sO_vQ9F&sg+rOncUpcw6(k(_{n6RHZtU>vXoUdmxU^2CJ;(qMy^!YDXl@8$ZTcM zy`sFl0{-)r%S_E=a!Yd=Y(0)TtSlR?P|D3^CW<>y0;Dx%j&d^-3%Sg>qKncQ&nlUd zxs_avLgElaL?WT0p_yF1Tp_c@X@$s8AwT6yvg4IV5hDvylL;=JQOYdTa(_8y1(3ar zTqRp3FY90}t8P}tvYx^jWs}Qm$eKa(a=8`CRbS=?u5!5w<*p?+ljX45WOxy?v$Ml% zm+YbJPZcRpN~M!RDcb=4B==YNS-L34%RFprqMQ~A7w|NdHC9wr$;_I_tmN+I=x(w= z1*;NDk*$&`%t{E&%48*FHl_;IaWgJVDb_0Lig7aeOUPydznnb4j6(*qJ`fwCK&7h4 zTqgg3nn#O}#UekYOl{$0B5KM+uBZovV`2q#=aLWwT*jFo1Lz#BjkA&wYS&$*VoGLW zOBeu2rcri6IMtK$<=G0Q%FIk|T0yx~L7qxiGntL7q)KKBuJ(eXYM?9uX&Nh`0n=fo z6r{@~GWKf?=5)NEA;Zjj6K39(>d)BQz-!^=Z%)pmXJ0zF=P@71INZuXOcr_Kh_`Xw zW&kalic~ltt07+PV>t+A)y6X+9|}~mKn+7bj)0rL45%{#g}4kRlzem{xNQNguv?1w z*-SE*rA!Deo0+nSG;moCE+~aIRRAIL8A0GM=g&+iW-}MvR*;rRfkL66>sUMvk|}U` zE)yocQ!(XN<1k7Q3^rLz*g5}HbX)+u4dG5*ar&bp`0-qvvWQYw+S7j9VsxfrG2$|; zh4b3lD*(4!GyaDx@lShVx5wc2D;#M5dYtf$XLe?G4#Hgp&CU#mr?7hrn%$t%#e{ng zn%(m9#e`G-g%<<3&o;$`D-N37nN^aj3Yy)ZK@P&XgJ$RT!9lp@pxGIpyMku-?1F=E z13|OtF+PODFX9xMl$7bCNW4s`Ppj_JI~ zL5fy?gWS6vq>3vDP2mJTn6gTJvACwq>Vl20$w0$7e(@?=> z;mW}|!fgl3K#WF-?ou)wG0Hf;QP~~tG-ruu|5pyA9^)XwcwEbfaG(=tChX3riqU@f zPVth{9@!5L)<}hv!++q=l^-}X^(qIV<7#u6FdYssJMHoVcr0NGunx`{E~u#kWuS07 zNc)&0Yu-oTBe;if58$%kcETmY{R6iLZa3U6^n!!T?SDijbEHa&)TZ%6qbf)SEpQR( zd-KvG_`Rz=E){_%E+}gTpW{hpO{G7gUeM(Huh~;FnvXX25LlSnC7>P9am$;CoDd9Cg5fFumG6Of+T- z$kofQ&MG)oH7ki*7K_3Q$z#EH5Ez0?%ev>@fGsGSSTp3tOia}u?J4yFGM|0~kMbOF zpU0HKKNsW@iF^Zcr9{33xlSVAf!rpM??LXC$PXY7G3ns{kp<^tZ51q9`!}exn;f%B zW~?;;+JPe-!*Zt^Fd#8Z;<8wXT)I>-n!U!JQ@&5gkhFe`U;Pza@b({gWnXvBP&)=c z)!=6te18<5TSqdQ68jkjKiA;ftu=%jYMJwg{CO#mvMxW+Ue>4=W?q>7!Ex3ceg^I6 zrd2U087E4C88(0JNoBPS!h`k*lQ1g6-ly?{HCM_5q~tX*Tl7B;tebqsffUbWG!B7W zD=z`K8zQ5YPLywI*y2<{9K>3F6p8l9)VCy|nWxtZA~j+qgwzIXHas2AoVo{(9EK>m z0NNPO?IiW(z|h6;n+6XZ_6Pi|Lh%Yb$1D45;o*GxXgY|veud(>8&8}R#L1}3n2@2k zSxH_}ZJtAipD9BBMCmE@sZH@aLCOitB|^497Kdv>EmYE(0zX&X@xIbL9yk)s2D_(UCZ$ z0lMfK90set6?woJQ{c$z^HPeN1u4R#aDxD@!tH`98G;9j3mFPhAdhcSidzLKaQb`e z2&}x~3MNd1l3<JTePX1oLg-tdzE6v*Qcr|?O=TaW@b z00?lGkZ3gDJ*X47W{BrHCwnWpdBdK@WLATMPbf>|?g8S16AY_w7-*Z+}_m~4adU7@z7TqG&}7zPHuwKc0(az7C-Hh>A;EmoBt!p z*IknQpt=qs+_$&nlOa6S;Hxhi@CHB2;QL;Y!V?TWT{S#Em3;i#MetQWF@!@N&Of)b z6dnsT@Nn^A%hDA^eph4`}&U9PWA+VxCXugBbu-37!S#VE;vWpYy` z73ndev6@&#mEn;74g+MVq(s$M<@QW zfsvWxOB&<3Do2l#`SKhhJQTB}UsAv5SE(%`33t9B^(&4qYfQ~!+M?oSy_>?9K9?f@ z^FWj`A{2-*nYLKV4GnkkB72T5BA#h_P;dUe5JSZx*qM*aa2en~%apenqn5JAZJiUCDr z`1+#yKqRM7+`@+&-5^5-AU%v?vLbd?)&~oS;g(6J3&;Q6d*DPB@)#J>e^gi)hQdPe z+>a)&`@3In#6wR|(<|m*q>QGg@4-+)O+)cr83J7T88FwU?$}XWh)A>)D1iY*6y1Mf z6{)Y`%Ph3O@kP2q`gi{bejC75zqsieGBBcu8a_8MnY=_G@DXYtOL6&UCQTZj5t(4S zgJ6=#h$02~yKGn|E(mS|;R!(+1G*bE#Vvlz<4=CPw3okQBC0@>JVQ#ZTRR*cdIZLs zP%#V0*R%rR4ZqCNR)iwZp`nH=KNlh(e&3iDh{k0@LvUv$B=`k#?rZD-whH)uG#Zz_ zKotzhZ}%+3j4vl!!UH5ST3n0_+E@r~_pa4VhGcU*?v4r{06DILLlJdpN zD4KirXFo3>rO&{~oe{l_CEx~~vHm6N0Bs&O*5kHMrj7AjO{=?IY0qJ}PA9}LyUUN~ zersZz(x2lE*V{md>pu(Oerk-CA!5yy%`+p4sG$1}t^Zpfpriq?Kd%^2q*3pAccW`O zO3C*OK?64s-;||f)5xWGa^Xk-JTgwrnC9UEN%(pY`cylrIXuL-i^K+%5NQI3_kQM7 zr15X+IWClu;vTS$F!Xs05yEh0+=u(#uHBY(5&{fH<(r5PGOCOlP0w<#Cc+bqCX&Ys z(8hTFNb9okMC( zMa5xykNj^NqgkmOy{OMZ5shniQ0*LDWWY<%$$VP_#-n8#$M!M`$4atwoiZFAemT#5 zD>5(;bm90N`bDBwV4GG5>@hCHDTwEuw{_zY(KAst@y3yO2RRg}N!u=IJaeM{k�~ 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 literal 0 HcmV?d00001 From 08a8dc92383618f3ba5b493fd61c07272e385ac3 Mon Sep 17 00:00:00 2001 From: Muhammad Azeez Date: Fri, 3 Feb 2023 22:10:36 +0300 Subject: [PATCH 05/20] feat: add more p/invoke methods --- dotnet/src/Extism.Sdk/LibExtism.cs | 73 ++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 4 deletions(-) diff --git a/dotnet/src/Extism.Sdk/LibExtism.cs b/dotnet/src/Extism.Sdk/LibExtism.cs index 05404e25f..3a93f9710 100644 --- a/dotnet/src/Extism.Sdk/LibExtism.cs +++ b/dotnet/src/Extism.Sdk/LibExtism.cs @@ -6,8 +6,6 @@ namespace Extism.Sdk.Native; ///

internal static class LibExtism { - - internal enum ExtismValType { /// @@ -104,6 +102,73 @@ internal struct ExtismVal /// internal delegate void ExtismFunctionType(ref ExtismCurrentPlugin plugin, Span inputs, uint n_inputs, Span outputs, uint n_outputs, IntPtr data); + /// + /// Returns a pointer to the memory of the currently running plugin. + /// NOTE: this should only be called from host functions. + /// + /// + /// + [DllImport("extism", EntryPoint = "extism_current_plugin_memory")] + public static extern IntPtr CurrentPluginMemory(ref ExtismCurrentPlugin plugin); + + /// + /// + /// + /// + /// + /// + [DllImport("extism", EntryPoint = "extism_current_plugin_memory_alloc")] + public static extern IntPtr CurrentPluginMemoryAlloc(ref ExtismCurrentPlugin plugin, long n); + + /// + /// Allocate a memory block in the currently running plugin. + /// NOTE: this should only be called from host functions. + /// + /// + /// + /// + [DllImport("extism", EntryPoint = "extism_current_plugin_memory_length")] + public static extern long CurrentPluginMemoryLength(ref ExtismCurrentPlugin plugin, long n); + + /// + /// Get the length of an allocated block. + /// NOTE: this should only be called from host functions. + /// + /// + /// + [DllImport("extism", EntryPoint = "extism_current_plugin_memory_free")] + public static extern void CurrentPluginMemoryFree(ref ExtismCurrentPlugin plugin, IntPtr ptr); + + /// + /// Create a new host function. + /// + /// function name, this should be valid UTF-8 + /// argument types + /// number of argument types + /// return types + /// number of return types + /// the function to call + /// a pointer that will be passed to the function when it's called this value should live as long as the function exists + /// a callback to release the `user_data` value when the resulting `ExtismFunction` is freed. + /// + [DllImport("extism", EntryPoint = "extism_function_new")] + public static extern IntPtr FunctionNew(string name, IntPtr inputs, long nInputs, IntPtr outputs, long nOutputs, ExtismFunctionType func, IntPtr userData, IntPtr freeUserData); + + /// + /// Set the namespace of an + /// + /// + /// + [DllImport("extism", EntryPoint = "extism_function_set_namespace")] + public static extern void FunctionSetNamespace(ref ExtismFunction ptr, string @namespace); + + /// + /// Free an + /// + /// + [DllImport("extism", EntryPoint = "extism_function_free")] + public static extern void FunctionFree(ref ExtismFunction ptr); + /// /// Create a new context. /// @@ -139,13 +204,13 @@ internal struct ExtismVal /// Pointer to the context the plugin is associated with. /// Pointer to the plugin you want to update. /// A WASM module (wat or wasm) or a JSON encoded manifest. - /// The length of the `wasm` parameter. + /// The length of the `wasm` parameter. /// Array of host function pointers. /// Number of host functions. /// Enables/disables WASI. /// [DllImport("extism")] - unsafe internal static extern bool extism_plugin_update(ExtismContext* context, IntPtr plugin, byte* wasm, int wasmLength, IntPtr* functions, int nFunctions, bool withWasi); + unsafe internal static extern bool extism_plugin_update(ExtismContext* context, IntPtr plugin, byte* wasm, long wasmSize, IntPtr functions, long nFunctions, bool withWasi); /// /// Remove a plugin from the registry and free associated memory. From 82f5c47aebef912b6e864e01b47afe7a21e2fca3 Mon Sep 17 00:00:00 2001 From: Muhammad Azeez Date: Fri, 3 Feb 2023 22:23:54 +0300 Subject: [PATCH 06/20] fix: build error --- dotnet/samples/Extism.Sdk.Sample/Extism.Sdk.Sample.csproj | 4 ++++ dotnet/src/Extism.Sdk/LibExtism.cs | 2 +- dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dotnet/samples/Extism.Sdk.Sample/Extism.Sdk.Sample.csproj b/dotnet/samples/Extism.Sdk.Sample/Extism.Sdk.Sample.csproj index f87856c7b..7205d0e8b 100644 --- a/dotnet/samples/Extism.Sdk.Sample/Extism.Sdk.Sample.csproj +++ b/dotnet/samples/Extism.Sdk.Sample/Extism.Sdk.Sample.csproj @@ -13,6 +13,10 @@ + + + + diff --git a/dotnet/src/Extism.Sdk/LibExtism.cs b/dotnet/src/Extism.Sdk/LibExtism.cs index 3a93f9710..2fc19d7ec 100644 --- a/dotnet/src/Extism.Sdk/LibExtism.cs +++ b/dotnet/src/Extism.Sdk/LibExtism.cs @@ -210,7 +210,7 @@ internal struct ExtismVal /// Enables/disables WASI. /// [DllImport("extism")] - unsafe internal static extern bool extism_plugin_update(ExtismContext* context, IntPtr plugin, byte* wasm, long wasmSize, IntPtr functions, long nFunctions, bool withWasi); + unsafe internal static extern bool extism_plugin_update(ExtismContext* context, IntPtr plugin, byte* wasm, long wasmSize, IntPtr* functions, long nFunctions, bool withWasi); /// /// Remove a plugin from the registry and free associated memory. diff --git a/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj b/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj index 1f2b092e9..8925e5546 100644 --- a/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj +++ b/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj @@ -32,4 +32,8 @@ + + + + \ No newline at end of file From 73e72262c99dd3abc4ea91c7b9bde39b7f12da64 Mon Sep 17 00:00:00 2001 From: CandL Development Date: Sat, 11 Feb 2023 14:25:54 -0800 Subject: [PATCH 07/20] Update plugin exception handling to use isCompletedSuccessfuly instead --- dotnet/src/Extism.Sdk/Plugin.cs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/dotnet/src/Extism.Sdk/Plugin.cs b/dotnet/src/Extism.Sdk/Plugin.cs index 8bc095404..27dba1bf3 100644 --- a/dotnet/src/Extism.Sdk/Plugin.cs +++ b/dotnet/src/Extism.Sdk/Plugin.cs @@ -167,22 +167,22 @@ public async Task CallFunctionAsync(string functionName, byte[] data, in // Race the 2 tasks. When they're complete, either executeFunctionInternal // will have completed with a result, or the cancellableTimeout will have run to completion // meaning the task was either cancelled or timed out. - await Task.WhenAny(executeFunctionInternalTask, cancellableTimeoutTask); - if (executeFunctionInternalTask.IsCanceled || cancellableTimeoutTask.IsCanceled) - { - internalTokenSource.Cancel(); - throw new TaskCanceledException(); - } - else if (executeFunctionInternalTask.IsCompletedSuccessfully) + await Task.WhenAny(executeFunctionInternalTask, cancellableTimeoutTask); + + if (executeFunctionInternalTask.IsCompletedSuccessfully) { internalTokenSource.Cancel(); return await executeFunctionInternalTask; - } - else - { - internalTokenSource.Cancel(); - throw new TaskCanceledException(); - } + } + + // TODO: Until we have a way to cancel a task in Extism, + // the plugin is in a bad state. We will dispose it so + // execution will stop, and the caller must handle the + // TaskCanceledException and throw away the plugin reference. + Dispose(); + + internalTokenSource.Cancel(); + throw new TaskCanceledException(); } /// From 8055ddac7ba4ea118cbda11744575a4f341d8d9b Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Sat, 11 Feb 2023 14:42:42 -0800 Subject: [PATCH 08/20] Add test for canceling longrunning task --- dotnet/test/Extism.Sdk/BasicTests.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/dotnet/test/Extism.Sdk/BasicTests.cs b/dotnet/test/Extism.Sdk/BasicTests.cs index ace353d1f..08e0632ea 100644 --- a/dotnet/test/Extism.Sdk/BasicTests.cs +++ b/dotnet/test/Extism.Sdk/BasicTests.cs @@ -68,6 +68,25 @@ public async void MultipleInvocations_InvokesAsyncMethod_ReturnsExpectedValues() } // TODO: write tests with long running functions and also test pre-cancelling the task + + [Fact] + public async void LongRunningtask_WithCancellation_CanBeCanceled() + { + using var context = new Context(); + using var plugin = context.CreatePlugin(sleepMs, withWasi: true); + + CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); + // Schedule token to automatically cancel after 3 seconds. + cancellationTokenSource.CancelAfter(3000); + + await Assert.ThrowsAsync(async () => + { + // This should throw after ~3000 ms and not complete execution. + var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[50000]"), null, cancellationTokenSource.Token); + Assert.Fail("This should be unreachable."); + }); + + } [Fact] public async void PrecancelledToken_DoesntInvoke_Throws() From e38d439c4e7334b4670f24f2c9afefe2942e576c Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Sat, 11 Feb 2023 14:42:51 -0800 Subject: [PATCH 09/20] Create readme to explain test wasm files --- dotnet/test/Extism.Sdk/README.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 dotnet/test/Extism.Sdk/README.md diff --git a/dotnet/test/Extism.Sdk/README.md b/dotnet/test/Extism.Sdk/README.md new file mode 100644 index 000000000..a8e5e3642 --- /dev/null +++ b/dotnet/test/Extism.Sdk/README.md @@ -0,0 +1,6 @@ + +# Test wasm files +## code.wasm +code.wasm is an example Rust wasm application that has an exposed method `count_vowels`. It takes in a string and returns a json object of the form `{"count": 3}`. +## sleepMs.wasm +sleepMs.wasm is a js wasm module that takes in a json array with a single numeric (eg. `[5000]`) and sleeps for that many milliseconds before returning. \ No newline at end of file From b965e19ec4e3342c0f17578390a172903fe7a60e Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Sat, 11 Feb 2023 14:43:12 -0800 Subject: [PATCH 10/20] Troubleshoot async task issues --- dotnet/src/Extism.Sdk/Plugin.cs | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/dotnet/src/Extism.Sdk/Plugin.cs b/dotnet/src/Extism.Sdk/Plugin.cs index 27dba1bf3..31bec56b5 100644 --- a/dotnet/src/Extism.Sdk/Plugin.cs +++ b/dotnet/src/Extism.Sdk/Plugin.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; @@ -123,7 +123,14 @@ public async Task CallFunctionAsync(string functionName, byte[] data, in { break; } - await Task.Delay(10); + + try + { + await Task.Delay(1000, cancellationToken ?? internalTokenSource.Token); + } + catch (Exception e) + { + } } } else @@ -135,7 +142,13 @@ public async Task CallFunctionAsync(string functionName, byte[] data, in { break; } - await Task.Delay(10); + try + { + await Task.Delay(1000, cancellationToken ?? internalTokenSource.Token); + } + catch (Exception e) + { + } } } }; @@ -167,21 +180,23 @@ public async Task CallFunctionAsync(string functionName, byte[] data, in // Race the 2 tasks. When they're complete, either executeFunctionInternal // will have completed with a result, or the cancellableTimeout will have run to completion // meaning the task was either cancelled or timed out. - await Task.WhenAny(executeFunctionInternalTask, cancellableTimeoutTask); - + await Task.WhenAny(executeFunctionInternalTask, cancellableTimeoutTask); + if (executeFunctionInternalTask.IsCompletedSuccessfully) { - internalTokenSource.Cancel(); + internalTokenSource.Cancel(); // Cancel internal token so the background task will terminate. + await cancellableTimeoutTask; return await executeFunctionInternalTask; - } + } // TODO: Until we have a way to cancel a task in Extism, // the plugin is in a bad state. We will dispose it so // execution will stop, and the caller must handle the // TaskCanceledException and throw away the plugin reference. - Dispose(); + // Dispose(); - internalTokenSource.Cancel(); + internalTokenSource.Cancel(); // Cancel internal token so the background task will terminate. + await cancellableTimeoutTask; throw new TaskCanceledException(); } From 3a7ab27f613f7c935ff78245745a920b6abd34be Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Sat, 25 Feb 2023 12:56:24 -0800 Subject: [PATCH 11/20] Implement threadsafe cancellation support into library --- dotnet/src/Extism.Sdk/Context.cs | 3 ++- dotnet/src/Extism.Sdk/LibExtism.cs | 17 +++++++++++++++++ dotnet/src/Extism.Sdk/Plugin.cs | 4 +++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/dotnet/src/Extism.Sdk/Context.cs b/dotnet/src/Extism.Sdk/Context.cs index 5f391ab99..ae5f738fe 100644 --- a/dotnet/src/Extism.Sdk/Context.cs +++ b/dotnet/src/Extism.Sdk/Context.cs @@ -42,7 +42,8 @@ public Plugin CreatePlugin(ReadOnlySpan wasm, bool withWasi) fixed (byte* wasmPtr = wasm) { var plugin = LibExtism.extism_plugin_new(NativeHandle, wasmPtr, wasm.Length, null, 0, withWasi); - return new Plugin(this, plugin); + var cancelHandle = LibExtism.extism_plugin_cancel_handle(NativeHandle, plugin); + return new Plugin(this, plugin, cancelHandle); } } } diff --git a/dotnet/src/Extism.Sdk/LibExtism.cs b/dotnet/src/Extism.Sdk/LibExtism.cs index 05404e25f..dc3e38cf4 100644 --- a/dotnet/src/Extism.Sdk/LibExtism.cs +++ b/dotnet/src/Extism.Sdk/LibExtism.cs @@ -155,6 +155,21 @@ internal struct ExtismVal [DllImport("extism")] unsafe internal static extern void extism_plugin_free(ExtismContext* context, IntPtr plugin); + /// + /// Request cancellation on a currently-executing plugin. Will cancel before executing the next epoch. + /// + /// Pointer to the context the plugin is associated with. + /// Pointer to the plugin you want to cancel. + [DllImport("extism")] + unsafe internal static extern IntPtr extism_plugin_cancel_handle(ExtismContext* context, IntPtr plugin); + + /// + /// Request cancellation on a currently-executing plugin. Will cancel before executing the next epoch. + /// + /// Pointer to the plugin's cancel handle. + [DllImport("extism")] + unsafe internal static extern void extism_plugin_cancel(IntPtr handle); + /// /// Remove all plugins from the registry. /// @@ -194,6 +209,8 @@ internal struct ExtismVal /// [DllImport("extism")] unsafe internal static extern int extism_plugin_call(ExtismContext* context, IntPtr plugin, string funcName, byte* data, int dataLen); + + /// /// Get the error associated with a Context or Plugin, if plugin is -1 then the context error will be returned. diff --git a/dotnet/src/Extism.Sdk/Plugin.cs b/dotnet/src/Extism.Sdk/Plugin.cs index 31bec56b5..a5fbc39e5 100644 --- a/dotnet/src/Extism.Sdk/Plugin.cs +++ b/dotnet/src/Extism.Sdk/Plugin.cs @@ -13,11 +13,13 @@ public class Plugin : IDisposable private readonly Context _context; private int _disposed; + private readonly IntPtr _cancelHandle; - internal Plugin(Context context, IntPtr handle) + internal Plugin(Context context, IntPtr handle, IntPtr cancelHandle) { _context = context; NativeHandle = handle; + _cancelHandle = cancelHandle; } /// From 63222d88c3f5ea7a36194bf3c895c60439bca05f Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Sat, 25 Feb 2023 12:57:37 -0800 Subject: [PATCH 12/20] Add working test case for canceling function early --- dotnet/src/Extism.Sdk/Plugin.cs | 39 +++++++------ dotnet/test/Extism.Sdk/BasicTests.cs | 87 ++++++++++++++++++++-------- 2 files changed, 84 insertions(+), 42 deletions(-) diff --git a/dotnet/src/Extism.Sdk/Plugin.cs b/dotnet/src/Extism.Sdk/Plugin.cs index a5fbc39e5..31bbd5e7f 100644 --- a/dotnet/src/Extism.Sdk/Plugin.cs +++ b/dotnet/src/Extism.Sdk/Plugin.cs @@ -41,6 +41,17 @@ unsafe public bool Update(ReadOnlySpan wasm, bool withWasi) return LibExtism.extism_plugin_update(_context.NativeHandle, NativeHandle, wasmPtr, wasm.Length, null, 0, withWasi); } } + + /// + /// Request to cancel a currently-executing plugin at the next epoch. + /// + /// The plugin WASM bytes. + /// Enable/Disable WASI. + unsafe public void Cancel() + { + CheckNotDisposed(); + LibExtism.extism_plugin_cancel(_cancelHandle); + } /// /// Update plugin config values, this will merge with the existing values. @@ -161,24 +172,15 @@ public async Task CallFunctionAsync(string functionName, byte[] data, in Task cancellableTimeoutTask; Task executeFunctionInternalTask; - if (cancellationToken.HasValue) + // If cancellation token has already been canceled, don't execute any code. + if (cancellationToken?.IsCancellationRequested ?? false) { - // Pass cancellation token to the task so that it won't run the task if it's already canceled before we get here. - cancellableTimeoutTask = Task.Run(runUntilTimeoutOrCancelled, cancellationToken.Value); - executeFunctionInternalTask = Task.Run(() => - { - return CallFunction(functionName, data).ToArray(); - }, cancellationToken.Value); - } - else - { - cancellableTimeoutTask = Task.Run(runUntilTimeoutOrCancelled); - executeFunctionInternalTask = Task.Run(() => - { - return CallFunction(functionName, data).ToArray(); - }); + throw new TaskCanceledException(); } + cancellableTimeoutTask = Task.Run(runUntilTimeoutOrCancelled); + executeFunctionInternalTask = Task.Run(() => { return CallFunction(functionName, data).ToArray(); }); + // Race the 2 tasks. When they're complete, either executeFunctionInternal // will have completed with a result, or the cancellableTimeout will have run to completion // meaning the task was either cancelled or timed out. @@ -187,7 +189,7 @@ public async Task CallFunctionAsync(string functionName, byte[] data, in if (executeFunctionInternalTask.IsCompletedSuccessfully) { internalTokenSource.Cancel(); // Cancel internal token so the background task will terminate. - await cancellableTimeoutTask; + await cancellableTimeoutTask; // Wait for the cancellation monitor task to exit gracefully return await executeFunctionInternalTask; } @@ -198,7 +200,10 @@ public async Task CallFunctionAsync(string functionName, byte[] data, in // Dispose(); internalTokenSource.Cancel(); // Cancel internal token so the background task will terminate. - await cancellableTimeoutTask; + await cancellableTimeoutTask; // Wait for the task to exit gracefully + Cancel(); // Cancel the plugin so Extism can free it when we exit. + // Dispose(); + // Throw an exception so the caller knows that something timed out and the plugin can no longer be used. throw new TaskCanceledException(); } diff --git a/dotnet/test/Extism.Sdk/BasicTests.cs b/dotnet/test/Extism.Sdk/BasicTests.cs index 08e0632ea..414b11fc6 100644 --- a/dotnet/test/Extism.Sdk/BasicTests.cs +++ b/dotnet/test/Extism.Sdk/BasicTests.cs @@ -1,9 +1,11 @@ +using System.Diagnostics; using Extism.Sdk.Native; using System.Reflection; using System.Text; using Xunit; +using Xunit.Abstractions; namespace Extism.Sdk.Tests; @@ -66,28 +68,28 @@ public async void MultipleInvocations_InvokesAsyncMethod_ReturnsExpectedValues() Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); } } - - // TODO: write tests with long running functions and also test pre-cancelling the task - [Fact] - public async void LongRunningtask_WithCancellation_CanBeCanceled() - { - using var context = new Context(); - using var plugin = context.CreatePlugin(sleepMs, withWasi: true); - - CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); - // Schedule token to automatically cancel after 3 seconds. - cancellationTokenSource.CancelAfter(3000); - - await Assert.ThrowsAsync(async () => - { - // This should throw after ~3000 ms and not complete execution. - var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[50000]"), null, cancellationTokenSource.Token); - Assert.Fail("This should be unreachable."); - }); - - } - + // // TODO: write tests with long running functions and also test pre-cancelling the task + // + // [Fact] + // public async void LongRunningtask_WithCancellation_CanBeCanceled() + // { + // using var context = new Context(); + // using var plugin = context.CreatePlugin(sleepMs, withWasi: true); + // + // CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); + // // Schedule token to automatically cancel after 3 seconds. + // cancellationTokenSource.CancelAfter(3000); + // + // await Assert.ThrowsAsync(async () => + // { + // // This should throw after ~3000 ms and not complete execution. + // var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[50000]"), null, cancellationTokenSource.Token); + // Assert.Fail("This should be unreachable."); + // }); + // + // } + // [Fact] public async void PrecancelledToken_DoesntInvoke_Throws() { @@ -104,16 +106,51 @@ await Assert.ThrowsAsync(async () => } [Fact] - public async void LongRunningTask_DoesntComplete_IsCanceled() + public async void ExecutingPlugin_IsCanceled_StopsExecuting() { using var context = new Context(); using var plugin = context.CreatePlugin(sleepMs, withWasi: true); + + // Register a WASM function that will take 50 seconds to complete. + // NOTE: Purposely not awaited so plugin can run asynchronously in a parallel with our cancellation request. + var functionInvocationTask = plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[50000]")); + // Cancel the plugin after 1 second + Stopwatch sw = new Stopwatch(); + await Task.Run(async () => + { + sw.Start(); + await Task.Delay(1000); + + plugin.Cancel(); + }); + + // Verify that the task throws a TaskCanceledException await Assert.ThrowsAsync(async () => { - // This should throw after ~2500 ms and not complete execution. - var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[5000]"), 1500); - Assert.Fail("This should be unreachable."); + var response = await functionInvocationTask; }); + + sw.Stop(); + + // Verify that the time that has passed is less than 1.5 seconds (should be very close to 1 second). + output.WriteLine($"Expected: 1000 ms. Actual: {sw.ElapsedMilliseconds}."); + Assert.True(sw.ElapsedMilliseconds < 1500); + } + + // + // [Fact] + // public async void LongRunningTask_DoesntComplete_IsCanceled() + // { + // using var context = new Context(); + // using var plugin = context.CreatePlugin(sleepMs, withWasi: true); + // + // await Assert.ThrowsAsync(async () => + // { + // // This should throw after ~2500 ms and not complete execution. + // var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[5000]"), 1500); + // Assert.Fail("This should be unreachable."); + // }); + // } } \ No newline at end of file From 851042b7ef1f261584d1fe83844608369be54c32 Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Sat, 25 Feb 2023 14:14:33 -0800 Subject: [PATCH 13/20] Split async tests into a separate file --- dotnet/test/Extism.Sdk/AsyncTests.cs | 125 +++++++++++++++++++++++++++ dotnet/test/Extism.Sdk/BasicTests.cs | 108 +---------------------- 2 files changed, 128 insertions(+), 105 deletions(-) create mode 100644 dotnet/test/Extism.Sdk/AsyncTests.cs diff --git a/dotnet/test/Extism.Sdk/AsyncTests.cs b/dotnet/test/Extism.Sdk/AsyncTests.cs new file mode 100644 index 000000000..fc0b0db43 --- /dev/null +++ b/dotnet/test/Extism.Sdk/AsyncTests.cs @@ -0,0 +1,125 @@ +using System.Diagnostics; +using Extism.Sdk.Native; + +using System.Reflection; +using System.Text; + +using Xunit; +using Xunit.Abstractions; + +namespace Extism.Sdk.Tests; + +public class AsyncTests +{ + private readonly ITestOutputHelper output; + private byte[] count_vowels; + private byte[] sleepMs; + public AsyncTests(ITestOutputHelper output) + { + this.output = output; + var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!; + count_vowels = File.ReadAllBytes(Path.Combine(binDirectory, "code.wasm")); + sleepMs = File.ReadAllBytes(Path.Combine(binDirectory, "sleepMs.wasm")); + } + + [Fact] + public async void MultipleInvocations_InvokesAsyncMethod_ReturnsExpectedValues() + { + using var context = new Context(); + + + using var plugin = context.CreatePlugin(count_vowels, withWasi: true); + for (int i = 0; i < 1000; i++) + { + var response = await plugin.CallFunctionAsync("count_vowels", Encoding.UTF8.GetBytes("Hello World")); + Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); + } + } + + // // TODO: write tests with long running functions and also test pre-cancelling the task + // + // [Fact] + // public async void LongRunningtask_WithCancellation_CanBeCanceled() + // { + // using var context = new Context(); + // using var plugin = context.CreatePlugin(sleepMs, withWasi: true); + // + // CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); + // // Schedule token to automatically cancel after 3 seconds. + // cancellationTokenSource.CancelAfter(3000); + // + // await Assert.ThrowsAsync(async () => + // { + // // This should throw after ~3000 ms and not complete execution. + // var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[50000]"), null, cancellationTokenSource.Token); + // Assert.Fail("This should be unreachable."); + // }); + // + // } + // + + [Fact] + public async void PrecancelledToken_DoesntInvoke_Throws() + { + using var context = new Context(); + using var plugin = context.CreatePlugin(count_vowels, withWasi: true); + + CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); + var token = cancellationTokenSource.Token; + cancellationTokenSource.Cancel(); + await Assert.ThrowsAsync(async () => + { + await plugin.CallFunctionAsync("count_vowels", Encoding.UTF8.GetBytes("Hello World"), null, token); + }); + // TODO: once Host Functions are implemented, we can verify that a host function is not called to verify the WASM isn't actually executing. + } + + [Fact] + public async void ExecutingPlugin_IsCanceledEarly_StopsExecutingWithin500ms() + { + using var context = new Context(); + using var plugin = context.CreatePlugin(sleepMs, withWasi: true); + + // Register a WASM function that will take 50 seconds to complete. + // NOTE: Purposely not awaited so plugin can run asynchronously in a parallel with our cancellation request. + var functionInvocationTask = plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[50000]")); + + // Cancel the plugin after 1 second + Stopwatch sw = new Stopwatch(); + await Task.Run(async () => + { + sw.Start(); + await Task.Delay(1000); + + plugin.Cancel(); + }); + + // Verify that the task throws a TaskCanceledException + await Assert.ThrowsAsync(async () => + { + var response = await functionInvocationTask; + }); + + sw.Stop(); + + // Verify that the time that has passed is less than 1.5 seconds (should be very close to 1 second). + output.WriteLine($"Expected: 1000 ms. Actual: {sw.ElapsedMilliseconds}."); + Assert.True(sw.ElapsedMilliseconds < 1500); + + } + + // + // [Fact] + // public async void LongRunningTask_DoesntComplete_IsCanceled() + // { + // using var context = new Context(); + // using var plugin = context.CreatePlugin(sleepMs, withWasi: true); + // + // await Assert.ThrowsAsync(async () => + // { + // // This should throw after ~2500 ms and not complete execution. + // var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[5000]"), 1500); + // Assert.Fail("This should be unreachable."); + // }); + // } +} \ No newline at end of file diff --git a/dotnet/test/Extism.Sdk/BasicTests.cs b/dotnet/test/Extism.Sdk/BasicTests.cs index 414b11fc6..557868ec2 100644 --- a/dotnet/test/Extism.Sdk/BasicTests.cs +++ b/dotnet/test/Extism.Sdk/BasicTests.cs @@ -12,14 +12,12 @@ namespace Extism.Sdk.Tests; public class BasicTests { private byte[] count_vowels; - private byte[] sleepMs; - public BasicTests() + public BasicTests(ITestOutputHelper output) { var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!; count_vowels = File.ReadAllBytes(Path.Combine(binDirectory, "code.wasm")); - sleepMs = File.ReadAllBytes(Path.Combine(binDirectory, "sleepMs.wasm")); } - + [Fact] public void SingleInvocation_InvokesMethod_ReturnsExpectedValue() { @@ -29,7 +27,7 @@ public void SingleInvocation_InvokesMethod_ReturnsExpectedValue() var response = plugin.CallFunction("count_vowels", Encoding.UTF8.GetBytes("Hello World")); Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); } - + [Fact] public void PluginWithoutWasi_CanBeInvokedWithoutWasi_ReturnsExpectedValue() { @@ -53,104 +51,4 @@ public void MultipleInvocations_InvokesMethod_ReturnsExpectedValues() Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); } } - - // TODO: Test that calls multiple functions on the same plugin - - [Fact] - public async void MultipleInvocations_InvokesAsyncMethod_ReturnsExpectedValues() - { - using var context = new Context(); - - using var plugin = context.CreatePlugin(count_vowels, withWasi: true); - for (int i = 0; i < 1000; i++) - { - var response = await plugin.CallFunctionAsync("count_vowels", Encoding.UTF8.GetBytes("Hello World")); - Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); - } - } - - // // TODO: write tests with long running functions and also test pre-cancelling the task - // - // [Fact] - // public async void LongRunningtask_WithCancellation_CanBeCanceled() - // { - // using var context = new Context(); - // using var plugin = context.CreatePlugin(sleepMs, withWasi: true); - // - // CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); - // // Schedule token to automatically cancel after 3 seconds. - // cancellationTokenSource.CancelAfter(3000); - // - // await Assert.ThrowsAsync(async () => - // { - // // This should throw after ~3000 ms and not complete execution. - // var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[50000]"), null, cancellationTokenSource.Token); - // Assert.Fail("This should be unreachable."); - // }); - // - // } - // - [Fact] - public async void PrecancelledToken_DoesntInvoke_Throws() - { - using var context = new Context(); - using var plugin = context.CreatePlugin(count_vowels, withWasi: true); - - CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); - var token = cancellationTokenSource.Token; - cancellationTokenSource.Cancel(); - await Assert.ThrowsAsync(async () => - { - await plugin.CallFunctionAsync("count_vowels", Encoding.UTF8.GetBytes("Hello World"), null, token); - }); - } - - [Fact] - public async void ExecutingPlugin_IsCanceled_StopsExecuting() - { - using var context = new Context(); - using var plugin = context.CreatePlugin(sleepMs, withWasi: true); - - // Register a WASM function that will take 50 seconds to complete. - // NOTE: Purposely not awaited so plugin can run asynchronously in a parallel with our cancellation request. - var functionInvocationTask = plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[50000]")); - - // Cancel the plugin after 1 second - Stopwatch sw = new Stopwatch(); - await Task.Run(async () => - { - sw.Start(); - await Task.Delay(1000); - - plugin.Cancel(); - }); - - // Verify that the task throws a TaskCanceledException - await Assert.ThrowsAsync(async () => - { - var response = await functionInvocationTask; - }); - - sw.Stop(); - - // Verify that the time that has passed is less than 1.5 seconds (should be very close to 1 second). - output.WriteLine($"Expected: 1000 ms. Actual: {sw.ElapsedMilliseconds}."); - Assert.True(sw.ElapsedMilliseconds < 1500); - - } - - // - // [Fact] - // public async void LongRunningTask_DoesntComplete_IsCanceled() - // { - // using var context = new Context(); - // using var plugin = context.CreatePlugin(sleepMs, withWasi: true); - // - // await Assert.ThrowsAsync(async () => - // { - // // This should throw after ~2500 ms and not complete execution. - // var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[5000]"), 1500); - // Assert.Fail("This should be unreachable."); - // }); - // } } \ No newline at end of file From d1436d48a964ba2dbdc7ad772b1be053cd6a2638 Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Sun, 26 Feb 2023 13:49:41 -0800 Subject: [PATCH 14/20] Add test case for auto-cancellation of plugin with cancellationToken --- dotnet/test/Extism.Sdk/AsyncTests.cs | 69 +++++++++++++--------------- 1 file changed, 32 insertions(+), 37 deletions(-) diff --git a/dotnet/test/Extism.Sdk/AsyncTests.cs b/dotnet/test/Extism.Sdk/AsyncTests.cs index fc0b0db43..93ece872e 100644 --- a/dotnet/test/Extism.Sdk/AsyncTests.cs +++ b/dotnet/test/Extism.Sdk/AsyncTests.cs @@ -36,30 +36,39 @@ public async void MultipleInvocations_InvokesAsyncMethod_ReturnsExpectedValues() } } - // // TODO: write tests with long running functions and also test pre-cancelling the task - // - // [Fact] - // public async void LongRunningtask_WithCancellation_CanBeCanceled() - // { - // using var context = new Context(); - // using var plugin = context.CreatePlugin(sleepMs, withWasi: true); - // - // CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); - // // Schedule token to automatically cancel after 3 seconds. - // cancellationTokenSource.CancelAfter(3000); - // - // await Assert.ThrowsAsync(async () => - // { - // // This should throw after ~3000 ms and not complete execution. - // var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[50000]"), null, cancellationTokenSource.Token); - // Assert.Fail("This should be unreachable."); - // }); - // - // } - // + [Fact] + public async void LongRunningtask_WithScheduledCancellation_ThrowsTaskCanceledException() + { + using var context = new Context(); + using var plugin = context.CreatePlugin(sleepMs, withWasi: true); + + CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); + + // Schedule token to automatically cancel after 1 second. + cancellationTokenSource.CancelAfter(1000); + + var sw = Stopwatch.StartNew(); + await Assert.ThrowsAsync(async () => + { + // This should throw after ~1000 ms and not complete execution. + var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[50000]"), null, cancellationTokenSource.Token); + Assert.Fail("This should be unreachable."); + }); + + + // Verify that the time that has passed is less than 1.5 seconds (should be very close to 1 second). + output.WriteLine($"Expected: 1000 ms. Actual: {sw.ElapsedMilliseconds}."); + Assert.True(sw.ElapsedMilliseconds < 1500); + + } + + // TODO: No cancellation of multiple parallel plugins (should make the wasm return the # of ms slept or something) + // TODO: Cancel a plugin early and try running it again several times + // TODO: Test native timeout support in Extism Context + [Fact] - public async void PrecancelledToken_DoesntInvoke_Throws() + public async void PrecancelledToken_DoesntRunWASMModule_ThrowsTaskCanceledException() { using var context = new Context(); using var plugin = context.CreatePlugin(count_vowels, withWasi: true); @@ -75,7 +84,7 @@ await Assert.ThrowsAsync(async () => } [Fact] - public async void ExecutingPlugin_IsCanceledEarly_StopsExecutingWithin500ms() + public async void ExecutingPlugin_IsCanceledEarlyWhenCallingCancelMethod_StopsExecutingWithin500ms() { using var context = new Context(); using var plugin = context.CreatePlugin(sleepMs, withWasi: true); @@ -108,18 +117,4 @@ await Assert.ThrowsAsync(async () => } - // - // [Fact] - // public async void LongRunningTask_DoesntComplete_IsCanceled() - // { - // using var context = new Context(); - // using var plugin = context.CreatePlugin(sleepMs, withWasi: true); - // - // await Assert.ThrowsAsync(async () => - // { - // // This should throw after ~2500 ms and not complete execution. - // var response = await plugin.CallFunctionAsync("sleepMs", Encoding.UTF8.GetBytes("[5000]"), 1500); - // Assert.Fail("This should be unreachable."); - // }); - // } } \ No newline at end of file From 18b0fb69079cbc7a813ac75112b75cac7b7e0142 Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Sun, 26 Feb 2023 15:41:23 -0800 Subject: [PATCH 15/20] Add Host Function unit test and fix error handling the call to extism_plugin_new wasn't properly handling the exception case where a -1 pointer was returned to indicate an issue creating the plugin --- dotnet/src/Extism.Sdk/Context.cs | 8 +++++ .../test/Extism.Sdk/Extism.Sdk.Tests.csproj | 3 ++ dotnet/test/Extism.Sdk/HostFunctionTests.cs | 30 ++++++++++++++++++ dotnet/test/Extism.Sdk/code-functions.wasm | Bin 0 -> 22644 bytes 4 files changed, 41 insertions(+) create mode 100644 dotnet/test/Extism.Sdk/HostFunctionTests.cs create mode 100644 dotnet/test/Extism.Sdk/code-functions.wasm diff --git a/dotnet/src/Extism.Sdk/Context.cs b/dotnet/src/Extism.Sdk/Context.cs index ae5f738fe..0b8e3402a 100644 --- a/dotnet/src/Extism.Sdk/Context.cs +++ b/dotnet/src/Extism.Sdk/Context.cs @@ -41,7 +41,15 @@ public Plugin CreatePlugin(ReadOnlySpan wasm, bool withWasi) { fixed (byte* wasmPtr = wasm) { + // TODO: figure out if this is a valid use case where the native failed pointer might be 64 bit + // but the Extism failed pointer is 32 bit. + var failedPointerNative = new IntPtr(-1); + var failedPointer32Bit = new IntPtr(0xffffffff); var plugin = LibExtism.extism_plugin_new(NativeHandle, wasmPtr, wasm.Length, null, 0, withWasi); + if (plugin == failedPointer32Bit || plugin == failedPointerNative) + { + throw new ExtismException(GetError() ?? "Unknown exception when calling extism_plugin_new"); + } var cancelHandle = LibExtism.extism_plugin_cancel_handle(NativeHandle, plugin); return new Plugin(this, plugin, cancelHandle); } diff --git a/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj b/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj index 3d273a2d9..f11417c11 100644 --- a/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj +++ b/dotnet/test/Extism.Sdk/Extism.Sdk.Tests.csproj @@ -22,6 +22,9 @@ PreserveNewest + + PreserveNewest + diff --git a/dotnet/test/Extism.Sdk/HostFunctionTests.cs b/dotnet/test/Extism.Sdk/HostFunctionTests.cs new file mode 100644 index 000000000..5b50b976d --- /dev/null +++ b/dotnet/test/Extism.Sdk/HostFunctionTests.cs @@ -0,0 +1,30 @@ +using System.Diagnostics; +using Extism.Sdk.Native; + +using System.Reflection; +using System.Text; + +using Xunit; +using Xunit.Abstractions; + +namespace Extism.Sdk.Tests; + +public class HostFunctionTests +{ + private byte[] code_functions; + public HostFunctionTests(ITestOutputHelper output) + { + var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!; + code_functions = File.ReadAllBytes(Path.Combine(binDirectory, "code-functions.wasm")); + } + + [Fact] + public void InvokeCodeThatDependsOnHostFunction_WithNoHostFunctionDefined_ThrowsException() + { + using var context = new Context(); + + var exception = Assert.Throws(() => context.CreatePlugin(code_functions, withWasi: true)); + Assert.Equal("unknown import: `env::hello_world` has not been defined", exception.Message); + } + +} \ No newline at end of file diff --git a/dotnet/test/Extism.Sdk/code-functions.wasm b/dotnet/test/Extism.Sdk/code-functions.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8301227b6bf1260cb4721cf21df440ad4d0ca4e5 GIT binary patch literal 22644 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 literal 0 HcmV?d00001 From 78506b6867e74bc472ce52c546ef8ed1b8985058 Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Tue, 28 Feb 2023 18:49:13 -0800 Subject: [PATCH 16/20] Add Rider settings to consider `extism` as a word for spell check --- dotnet/Extism.sln.DotSettings | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 dotnet/Extism.sln.DotSettings diff --git a/dotnet/Extism.sln.DotSettings b/dotnet/Extism.sln.DotSettings new file mode 100644 index 000000000..4940646b8 --- /dev/null +++ b/dotnet/Extism.sln.DotSettings @@ -0,0 +1,2 @@ + + True \ No newline at end of file From f9443b532b1f4d31137de7d3271725372cbce2db Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Tue, 28 Feb 2023 18:54:39 -0800 Subject: [PATCH 17/20] Update plugin reference datatype Changed plugin reference to be a 32-bit signed integer, since it is the index of the plugin in an array of plugins within that context, not a pointer. --- dotnet/src/Extism.Sdk/Context.cs | 6 +---- dotnet/src/Extism.Sdk/LibExtism.cs | 36 +++++++++++++++--------------- dotnet/src/Extism.Sdk/Plugin.cs | 24 ++++++++++---------- 3 files changed, 31 insertions(+), 35 deletions(-) diff --git a/dotnet/src/Extism.Sdk/Context.cs b/dotnet/src/Extism.Sdk/Context.cs index 0b8e3402a..00f3a8bb0 100644 --- a/dotnet/src/Extism.Sdk/Context.cs +++ b/dotnet/src/Extism.Sdk/Context.cs @@ -41,12 +41,8 @@ public Plugin CreatePlugin(ReadOnlySpan wasm, bool withWasi) { fixed (byte* wasmPtr = wasm) { - // TODO: figure out if this is a valid use case where the native failed pointer might be 64 bit - // but the Extism failed pointer is 32 bit. - var failedPointerNative = new IntPtr(-1); - var failedPointer32Bit = new IntPtr(0xffffffff); var plugin = LibExtism.extism_plugin_new(NativeHandle, wasmPtr, wasm.Length, null, 0, withWasi); - if (plugin == failedPointer32Bit || plugin == failedPointerNative) + if (plugin == -1) { throw new ExtismException(GetError() ?? "Unknown exception when calling extism_plugin_new"); } diff --git a/dotnet/src/Extism.Sdk/LibExtism.cs b/dotnet/src/Extism.Sdk/LibExtism.cs index dc3e38cf4..9ad99b201 100644 --- a/dotnet/src/Extism.Sdk/LibExtism.cs +++ b/dotnet/src/Extism.Sdk/LibExtism.cs @@ -127,9 +127,9 @@ internal struct ExtismVal /// Array of host function pointers. /// Number of host functions. /// Enables/disables WASI. - /// + /// The plugin's index in the Extism context, or -1 if the plugin could not be successfully created. [DllImport("extism")] - unsafe internal static extern IntPtr extism_plugin_new(ExtismContext* context, byte* wasm, int wasmSize, IntPtr* functions, int nFunctions, bool withWasi); + unsafe internal static extern Int32 extism_plugin_new(ExtismContext* context, byte* wasm, int wasmSize, IntPtr* functions, int nFunctions, bool withWasi); /// /// Update a plugin, keeping the existing ID. @@ -145,7 +145,7 @@ internal struct ExtismVal /// Enables/disables WASI. /// [DllImport("extism")] - unsafe internal static extern bool extism_plugin_update(ExtismContext* context, IntPtr plugin, byte* wasm, int wasmLength, IntPtr* functions, int nFunctions, bool withWasi); + unsafe internal static extern bool extism_plugin_update(ExtismContext* context, Int32 plugin, byte* wasm, int wasmLength, IntPtr* functions, int nFunctions, bool withWasi); /// /// Remove a plugin from the registry and free associated memory. @@ -153,15 +153,15 @@ internal struct ExtismVal /// Pointer to the context the plugin is associated with. /// Pointer to the plugin you want to free. [DllImport("extism")] - unsafe internal static extern void extism_plugin_free(ExtismContext* context, IntPtr plugin); + unsafe internal static extern void extism_plugin_free(ExtismContext* context, Int32 plugin); /// /// Request cancellation on a currently-executing plugin. Will cancel before executing the next epoch. /// /// Pointer to the context the plugin is associated with. - /// Pointer to the plugin you want to cancel. + /// Index of the plugin you want to cancel. [DllImport("extism")] - unsafe internal static extern IntPtr extism_plugin_cancel_handle(ExtismContext* context, IntPtr plugin); + unsafe internal static extern IntPtr extism_plugin_cancel_handle(ExtismContext* context, Int32 pluginIndex); /// /// Request cancellation on a currently-executing plugin. Will cancel before executing the next epoch. @@ -181,34 +181,34 @@ internal struct ExtismVal /// Update plugin config values, this will merge with the existing values. /// /// Pointer to the context the plugin is associated with. - /// Pointer to the plugin you want to update the configurations for. + /// Index of the plugin you want to update the configurations for. /// The configuration JSON encoded in UTF8. /// The length of the `json` parameter. /// [DllImport("extism")] - unsafe internal static extern bool extism_plugin_config(ExtismContext* context, IntPtr plugin, byte* json, int jsonLength); + unsafe internal static extern bool extism_plugin_config(ExtismContext* context, Int32 pluginIndex, byte* json, int jsonLength); /// /// Returns true if funcName exists. /// /// - /// + /// /// /// [DllImport("extism")] - unsafe internal static extern bool extism_plugin_function_exists(ExtismContext* context, IntPtr plugin, string funcName); + unsafe internal static extern bool extism_plugin_function_exists(ExtismContext* context, Int32 pluginIndex, string funcName); /// /// Call a function. /// /// - /// + /// /// The function to call. /// Input data. /// The length of the `data` parameter. /// [DllImport("extism")] - unsafe internal static extern int extism_plugin_call(ExtismContext* context, IntPtr plugin, string funcName, byte* data, int dataLen); + unsafe internal static extern int extism_plugin_call(ExtismContext* context, Int32 pluginIndex, string funcName, byte* data, int dataLen); @@ -216,28 +216,28 @@ internal struct ExtismVal /// Get the error associated with a Context or Plugin, if plugin is -1 then the context error will be returned. /// /// - /// A plugin pointer, or -1 for the context error. + /// A plugin index, or -1 for the context error. /// [DllImport("extism")] - unsafe internal static extern IntPtr extism_error(ExtismContext* context, nint plugin); + unsafe internal static extern IntPtr extism_error(ExtismContext* context, Int32 pluginIndex); /// /// Get the length of a plugin's output data. /// /// - /// + /// /// [DllImport("extism")] - unsafe internal static extern long extism_plugin_output_length(ExtismContext* context, IntPtr plugin); + unsafe internal static extern long extism_plugin_output_length(ExtismContext* context, Int32 pluginIndex); /// /// Get the plugin's output data. /// /// - /// + /// /// [DllImport("extism")] - unsafe internal static extern IntPtr extism_plugin_output_data(ExtismContext* context, IntPtr plugin); + unsafe internal static extern IntPtr extism_plugin_output_data(ExtismContext* context, Int32 pluginIndex); /// /// Set log file and level. diff --git a/dotnet/src/Extism.Sdk/Plugin.cs b/dotnet/src/Extism.Sdk/Plugin.cs index 31bbd5e7f..5f6aa2a9f 100644 --- a/dotnet/src/Extism.Sdk/Plugin.cs +++ b/dotnet/src/Extism.Sdk/Plugin.cs @@ -15,17 +15,17 @@ public class Plugin : IDisposable private int _disposed; private readonly IntPtr _cancelHandle; - internal Plugin(Context context, IntPtr handle, IntPtr cancelHandle) + internal Plugin(Context context, int pluginIndex, IntPtr cancelHandle) { _context = context; - NativeHandle = handle; + PluginIndex = pluginIndex; _cancelHandle = cancelHandle; } /// - /// A pointer to the native Plugin struct. + /// This plugin's current index in the Context /// - internal IntPtr NativeHandle { get; } + internal Int32 PluginIndex { get; } /// /// Update a plugin, keeping the existing ID. @@ -38,7 +38,7 @@ unsafe public bool Update(ReadOnlySpan wasm, bool withWasi) fixed (byte* wasmPtr = wasm) { - return LibExtism.extism_plugin_update(_context.NativeHandle, NativeHandle, wasmPtr, wasm.Length, null, 0, withWasi); + return LibExtism.extism_plugin_update(_context.NativeHandle, PluginIndex, wasmPtr, wasm.Length, null, 0, withWasi); } } @@ -63,7 +63,7 @@ unsafe public bool SetConfig(ReadOnlySpan json) fixed (byte* jsonPtr = json) { - return LibExtism.extism_plugin_config(_context.NativeHandle, NativeHandle, jsonPtr, json.Length); + return LibExtism.extism_plugin_config(_context.NativeHandle, PluginIndex, jsonPtr, json.Length); } } @@ -74,7 +74,7 @@ unsafe public bool FunctionExists(string name) { CheckNotDisposed(); - return LibExtism.extism_plugin_function_exists(_context.NativeHandle, NativeHandle, name); + return LibExtism.extism_plugin_function_exists(_context.NativeHandle, PluginIndex, name); } /// @@ -90,7 +90,7 @@ unsafe public ReadOnlySpan CallFunction(string functionName, ReadOnlySpan< fixed (byte* dataPtr = data) { - int response = LibExtism.extism_plugin_call(_context.NativeHandle, NativeHandle, functionName, dataPtr, data.Length); + int response = LibExtism.extism_plugin_call(_context.NativeHandle, PluginIndex, functionName, dataPtr, data.Length); if (response == 0) { return OutputData(); @@ -215,7 +215,7 @@ unsafe internal int OutputLength() { CheckNotDisposed(); - return (int)LibExtism.extism_plugin_output_length(_context.NativeHandle, NativeHandle); + return (int)LibExtism.extism_plugin_output_length(_context.NativeHandle, PluginIndex); } /// @@ -229,7 +229,7 @@ internal ReadOnlySpan OutputData() unsafe { - var ptr = LibExtism.extism_plugin_output_data(_context.NativeHandle, NativeHandle).ToPointer(); + var ptr = LibExtism.extism_plugin_output_data(_context.NativeHandle, PluginIndex).ToPointer(); return new Span(ptr, length); } } @@ -242,7 +242,7 @@ internal ReadOnlySpan OutputData() { CheckNotDisposed(); - var result = LibExtism.extism_error(_context.NativeHandle, NativeHandle); + var result = LibExtism.extism_error(_context.NativeHandle, PluginIndex); return Marshal.PtrToStringUTF8(result); } @@ -291,7 +291,7 @@ unsafe protected virtual void Dispose(bool disposing) } // Free up unmanaged resources - LibExtism.extism_plugin_free(_context.NativeHandle, NativeHandle); + LibExtism.extism_plugin_free(_context.NativeHandle, PluginIndex); } /// From 8aacf6ce9194f583f3d097af68a83decf898fa65 Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Tue, 28 Feb 2023 19:11:07 -0800 Subject: [PATCH 18/20] Add tests to call unknown function and verify exception is thrown --- dotnet/test/Extism.Sdk/AsyncTests.cs | 10 ++++++++++ dotnet/test/Extism.Sdk/BasicTests.cs | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/dotnet/test/Extism.Sdk/AsyncTests.cs b/dotnet/test/Extism.Sdk/AsyncTests.cs index 93ece872e..3571b4ee8 100644 --- a/dotnet/test/Extism.Sdk/AsyncTests.cs +++ b/dotnet/test/Extism.Sdk/AsyncTests.cs @@ -36,6 +36,16 @@ public async void MultipleInvocations_InvokesAsyncMethod_ReturnsExpectedValues() } } + [Fact] + public async void InvokingUnknownFunctionAsync_DoesntWork_ThrowsException() { + using var context = new Context(); + // Test multiple plugin invocations to ensure that plugin calls can be repeated + using var plugin = context.CreatePlugin(count_vowels, withWasi: true); + var exception = await Assert.ThrowsAsync( + async () => { await plugin.CallFunctionAsync("unknown_function_name", Encoding.UTF8.GetBytes("Hello World")); }); + Assert.Equal("Function not found: unknown_function_name", exception.Message); + } + [Fact] public async void LongRunningtask_WithScheduledCancellation_ThrowsTaskCanceledException() { diff --git a/dotnet/test/Extism.Sdk/BasicTests.cs b/dotnet/test/Extism.Sdk/BasicTests.cs index 557868ec2..3809b204a 100644 --- a/dotnet/test/Extism.Sdk/BasicTests.cs +++ b/dotnet/test/Extism.Sdk/BasicTests.cs @@ -51,4 +51,14 @@ public void MultipleInvocations_InvokesMethod_ReturnsExpectedValues() Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); } } + + [Fact] + public void InvokingUnknownFunction_DoesntWork_ThrowsException() { + using var context = new Context(); + // Test multiple plugin invocations to ensure that plugin calls can be repeated + using var plugin = context.CreatePlugin(count_vowels, withWasi: true); + var exception = Assert.Throws( + () => { plugin.CallFunction("unknown_function_name", Encoding.UTF8.GetBytes("Hello World")); }); + Assert.Equal("Function not found: unknown_function_name", exception.Message); + } } \ No newline at end of file From e4d04886d4c82742504e1b6545d162947c377159 Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Tue, 28 Feb 2023 19:12:25 -0800 Subject: [PATCH 19/20] Fix implementation of async exception handling Determine if task had an exception, and if so, rethrow it, instead of always throwing TaskCanceledException --- dotnet/src/Extism.Sdk/Plugin.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/dotnet/src/Extism.Sdk/Plugin.cs b/dotnet/src/Extism.Sdk/Plugin.cs index 5f6aa2a9f..ade3d2759 100644 --- a/dotnet/src/Extism.Sdk/Plugin.cs +++ b/dotnet/src/Extism.Sdk/Plugin.cs @@ -192,18 +192,18 @@ public async Task CallFunctionAsync(string functionName, byte[] data, in await cancellableTimeoutTask; // Wait for the cancellation monitor task to exit gracefully return await executeFunctionInternalTask; } - - // TODO: Until we have a way to cancel a task in Extism, - // the plugin is in a bad state. We will dispose it so - // execution will stop, and the caller must handle the - // TaskCanceledException and throw away the plugin reference. - // Dispose(); - + internalTokenSource.Cancel(); // Cancel internal token so the background task will terminate. await cancellableTimeoutTask; // Wait for the task to exit gracefully - Cancel(); // Cancel the plugin so Extism can free it when we exit. + Cancel(); // Cancel the plugin so Extism can free it when we exit + + // If an exception was thrown by the task, rethrow it. + if (executeFunctionInternalTask.Exception.InnerException != null) + { + throw executeFunctionInternalTask.Exception.InnerException; + } // Dispose(); - // Throw an exception so the caller knows that something timed out and the plugin can no longer be used. + // Throw an exception so the caller knows that something timed out. throw new TaskCanceledException(); } From facef77d14686405d187c1ea83993de3a8aa4b9b Mon Sep 17 00:00:00 2001 From: ubiquitous-dev <96382050+ubiquitous-dev@users.noreply.github.com> Date: Wed, 1 Mar 2023 16:35:56 -0800 Subject: [PATCH 20/20] Add some temporary notes --- dotnet/src/Extism.Sdk/Context.cs | 3 +++ dotnet/src/Extism.Sdk/LibExtism.cs | 40 ++++++++++++++++++++++++++++ dotnet/test/Extism.Sdk/BasicTests.cs | 20 ++++++++++++++ 3 files changed, 63 insertions(+) diff --git a/dotnet/src/Extism.Sdk/Context.cs b/dotnet/src/Extism.Sdk/Context.cs index 00f3a8bb0..fc140bd98 100644 --- a/dotnet/src/Extism.Sdk/Context.cs +++ b/dotnet/src/Extism.Sdk/Context.cs @@ -37,6 +37,7 @@ public Plugin CreatePlugin(ReadOnlySpan wasm, bool withWasi) { CheckNotDisposed(); + unsafe { fixed (byte* wasmPtr = wasm) @@ -139,6 +140,7 @@ public static string GetExtismVersion() return Marshal.PtrToStringUTF8(pointer); } + // TODO: this should not be within the context, neither should the version. /// /// Set Extism's log file and level. This is applied for all s. /// @@ -160,6 +162,7 @@ public static bool SetExtismLogFile(string logPath, LogLevel level) } } +// TODO: check if the enums are correctly set /// /// Extism Log Levels /// diff --git a/dotnet/src/Extism.Sdk/LibExtism.cs b/dotnet/src/Extism.Sdk/LibExtism.cs index 9ad99b201..bf823fc0e 100644 --- a/dotnet/src/Extism.Sdk/LibExtism.cs +++ b/dotnet/src/Extism.Sdk/LibExtism.cs @@ -285,4 +285,44 @@ internal static class LogLevels /// internal const string Trace = "Trace"; } + + + + // TODO: I think this should be refactored to have host functions in their own file, as well as enums, etc. + /* + Pointer extism_function_new(String name, + int[] inputs, + int nInputs, + int[] outputs, + int nOutputs, + InternalExtismFunction func, + Pointer userData, + Pointer freeUserData); + + + /** + * Get the length of an allocated block + * NOTE: this should only be called from host functions. + * + int extism_current_plugin_memory_length(Pointer plugin, long n); + + /** + * Returns a pointer to the memory of the currently running plugin + * NOTE: this should only be called from host functions. + * + Pointer extism_current_plugin_memory(Pointer plugin); + + /** + * Allocate a memory block in the currently running plugin + * NOTE: this should only be called from host functions. + * + int extism_current_plugin_memory_alloc(Pointer plugin, long n); + + /** + * Free an allocated memory block + * NOTE: this should only be called from host functions. + * + void extism_current_plugin_memory_free(Pointer plugin, long ptr); + + */ } \ No newline at end of file diff --git a/dotnet/test/Extism.Sdk/BasicTests.cs b/dotnet/test/Extism.Sdk/BasicTests.cs index 3809b204a..70bcd50af 100644 --- a/dotnet/test/Extism.Sdk/BasicTests.cs +++ b/dotnet/test/Extism.Sdk/BasicTests.cs @@ -61,4 +61,24 @@ public void InvokingUnknownFunction_DoesntWork_ThrowsException() { () => { plugin.CallFunction("unknown_function_name", Encoding.UTF8.GetBytes("Hello World")); }); Assert.Equal("Function not found: unknown_function_name", exception.Message); } + // TODO: implement these from Java SDK + /* + @Test + public void shouldInvokeFunctionWithMemoryOptions() { + //FIXME check whether memory options are effective + var manifest = new Manifest(List.of(CODE.pathWasmSource()), new MemoryOptions(0)); + var output = Extism.invokeFunction(manifest, "count_vowels", "Hello World"); + assertThat(output).isEqualTo("{\"count\": 3}"); + } + + @Test + public void shouldInvokeFunctionWithConfig() { + //FIXME check if config options are available in wasm call + var config = Map.of("key1", "value1"); + var manifest = new Manifest(List.of(CODE.pathWasmSource()), null, config); + var output = Extism.invokeFunction(manifest, "count_vowels", "Hello World"); + assertThat(output).isEqualTo("{\"count\": 3}"); + } + */ + } \ No newline at end of file