From 4b53983ff939a7b5a6a4a90ec027117869b5770d Mon Sep 17 00:00:00 2001 From: Neil South <104848880+neildsouth@users.noreply.github.com> Date: Mon, 7 Aug 2023 19:19:15 +0100 Subject: [PATCH 01/25] Release/0.1.24 (#209) +semver: patch * adding new fields to messages for external app executions Signed-off-by: Neil South * added forgot licence header Signed-off-by: Neil South * added export request to export cmplete message event Signed-off-by: Neil South * Update ExportRequestEvent and update dependencies (#210) * Update dependencies * Remove ExportRequestType enum and replace with a list of plug-in assembly names * Update dependencies decisions * Include taskId in WorkflowRequestEvent to support multiple external app executions Signed-off-by: Victor Chang --------- Signed-off-by: Neil South Signed-off-by: Victor Chang Co-authored-by: Victor Chang --- doc/dependency_decisions.yml | 54 ++++---- .../API/IMessageBrokerSubscriberService.cs | 24 ---- src/Messaging/Common/ServiceException.cs | 39 ++++++ src/Messaging/Events/ExportCompleteEvent.cs | 6 +- src/Messaging/Events/ExportRequestEvent.cs | 9 ++ src/Messaging/Events/WorkflowRequestEvent.cs | 16 +++ src/Messaging/Monai.Deploy.Messaging.csproj | 4 +- .../IServiceCollectionExtensionsTests.cs | 3 + .../Tests/Monai.Deploy.Messaging.Tests.csproj | 8 +- .../Tests/WorkflowRequestMessageTest.cs | 4 +- .../Factory/RabbitMqConnectionFactory.cs | 10 +- .../Monai.Deploy.Messaging.RabbitMQ.csproj | 4 +- .../RabbitMqMessagePublisherService.cs | 8 +- .../RabbitMqMessageSubscriberService.cs | 51 +++---- ...nai.Deploy.Messaging.RabbitMQ.Tests.csproj | 12 +- .../RabbitMqMessageSubscriberServiceTest.cs | 10 +- third-party-licenses.md | 124 +++++++++--------- 17 files changed, 212 insertions(+), 174 deletions(-) create mode 100644 src/Messaging/Common/ServiceException.cs mode change 100644 => 100755 src/Messaging/Events/ExportCompleteEvent.cs mode change 100644 => 100755 src/Messaging/Events/ExportRequestEvent.cs mode change 100644 => 100755 src/Messaging/Events/WorkflowRequestEvent.cs diff --git a/doc/dependency_decisions.yml b/doc/dependency_decisions.yml index 4e2afb6..39508bf 100755 --- a/doc/dependency_decisions.yml +++ b/doc/dependency_decisions.yml @@ -4,7 +4,7 @@ - :who: mocsharp :why: MIT (https://github.com/ardalis/GuardClauses.Analyzers/raw/master/LICENSE) :versions: - - 4.0.1 + - 4.1.1 :when: 2022-08-16 21:39:30.077666354 Z - - :approve - Castle.Core @@ -23,10 +23,10 @@ - - :approve - Microsoft.CodeCoverage - :who: woodheadio - :why: MIT (https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) + :why: MIT (https://github.com/microsoft/vstest/raw/v17.7.0/LICENSE) :versions: - - 17.4.1 - - 17.5.0 + - 17.7.0 + - Microsoft.CodeCoverage :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.Extensions.Diagnostics.HealthChecks @@ -34,7 +34,7 @@ :why: MIT (https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) :versions: - 6.0.12 - - 6.0.14 + - 6.0.20 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions @@ -42,7 +42,7 @@ :why: MIT (https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) :versions: - 6.0.12 - - 6.0.14 + - 6.0.20 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.Extensions.Configuration @@ -162,7 +162,7 @@ - :who: mocsharp :why: MIT (https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) :versions: - - 6.0.3 + - 6.0.4 :when: 2022-08-16 21:39:44.471693654 Z - - :approve - Microsoft.Extensions.Logging.Configuration @@ -223,9 +223,9 @@ - - :approve - Microsoft.NET.Test.Sdk - :who: woodheadio - :why: MIT (https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) + :why: MIT (https://github.com/microsoft/vstest/raw/v17.7.0/LICENSE) :versions: - - 17.4.1 + - 17.7.0 - 17.5.0 :when: 2023-08-16 16:49:26.950721112 Z - - :approve @@ -245,17 +245,17 @@ - - :approve - Microsoft.TestPlatform.ObjectModel - :who: woodheadio - :why: MIT (https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) + :why: MIT (https://github.com/microsoft/vstest/raw/v17.7.0/LICENSE) :versions: - - 17.4.1 + - 17.7.0 - 17.5.0 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.TestPlatform.TestHost - :who: woodheadio - :why: MIT (https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) + :why: MIT (https://github.com/microsoft/vstest/raw/v17.7.0/LICENSE) :versions: - - 17.4.1 + - 17.7.0 - 17.5.0 :when: 2023-08-16 16:49:26.950721112 Z - - :approve @@ -292,14 +292,14 @@ - :who: mocsharp :why: Apache-2.0 (https://github.com/NuGet/NuGet.Client/raw/dev/LICENSE.txt) :versions: - - 5.11.0 + - 6.5.0 :when: 2022-08-16 21:39:52.061412838 Z - - :approve - RabbitMQ.Client - :who: mocsharp :why: Apache-2.0 (https://github.com/rabbitmq/rabbitmq-dotnet-client/raw/main/LICENSE-APACHE2) :versions: - - 6.4.0 + - 6.5.0 :when: 2022-08-16 21:39:52.474284611 Z - - :approve - System.AppContext @@ -481,7 +481,7 @@ - :who: mocsharp :why: MIT (https://github.com/dotnet/corefx/raw/master/LICENSE.TXT) :versions: - - 4.5.4 + - 4.5.5 :when: 2022-08-16 21:40:03.543731192 Z - - :approve - System.Net.Http @@ -740,7 +740,7 @@ - :who: mocsharp :why: MIT ( https://github.com/dotnet/corefx/blob/master/LICENSE.TXT) :versions: - - 4.7.1 + - 7.0.0 :when: 2022-08-16 21:40:19.306691187 Z - - :approve - System.Threading.Tasks @@ -782,7 +782,7 @@ - :who: mocsharp :why: MIT (https://github.com/coverlet-coverage/coverlet/raw/master/LICENSE) :versions: - - 3.2.0 + - 6.0.0 :when: 2022-08-16 21:40:21.855388365 Z - - :approve - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl @@ -901,7 +901,7 @@ - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) :versions: - - 2.4.2 + - 2.5.0 :when: 2022-08-16 21:40:29.166018542 Z - - :approve - xunit.abstractions @@ -915,49 +915,49 @@ - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit.analyzers/master/LICENSE) :versions: - - 1.0.0 + - 1.2.0 :when: 2022-08-16 21:40:30.047067134 Z - - :approve - xunit.assert - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) :versions: - - 2.4.2 + - 2.5.0 :when: 2022-08-16 21:40:30.526718458 Z - - :approve - xunit.core - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) :versions: - - 2.4.2 + - 2.5.0 :when: 2022-08-16 21:40:30.973515441 Z - - :approve - xunit.extensibility.core - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) :versions: - - 2.4.2 + - 2.5.0 :when: 2022-08-16 21:40:31.401607230 Z - - :approve - xunit.extensibility.execution - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) :versions: - - 2.4.2 + - 2.5.0 :when: 2022-08-16 21:40:31.845685693 Z - - :approve - xunit.runner.visualstudio - :who: mocsharp :why: MIT ( https://licenses.nuget.org/MIT) :versions: - - 2.4.5 + - 2.5.0 :when: 2022-08-16 21:40:32.294717110 Z - - :approve - Polly - :who: mocsharp :why: MIT ( https://licenses.nuget.org/MIT) :versions: - - 7.2.3 + - 7.2.4 :when: 2022-11-09 18:57:32.294717110 Z - - :approve - Microsoft.AspNetCore.Hosting.Abstractions @@ -993,7 +993,7 @@ :why: MIT (https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) :versions: - 6.0.12 - - 6.0.14 + - 6.0.20 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - System.IO.Pipelines diff --git a/src/Messaging/API/IMessageBrokerSubscriberService.cs b/src/Messaging/API/IMessageBrokerSubscriberService.cs index 49c4613..e43de1e 100755 --- a/src/Messaging/API/IMessageBrokerSubscriberService.cs +++ b/src/Messaging/API/IMessageBrokerSubscriberService.cs @@ -31,30 +31,6 @@ public interface IMessageBrokerSubscriberService : IDisposable /// string Name { get; } - /// - /// Subscribe to a message topic & queue and executes messageReceivedCallback for every message that is received. - /// Either provide a topic, a queue or both. - /// A queue is generated if the name of the queue is not provided. - /// - /// Topic/routing key to bind to - /// Name of the queue to consume - /// Action to be performed when message is received - /// Number of unacknowledged messages to receive at once. Defaults to 0. - [Obsolete("This method is obsolete, use SubscribeAsync instead")] - void Subscribe(string topic, string queue, Action messageReceivedCallback, ushort prefetchCount = 0); - - /// - /// Subscribe to a message topic & queue and executes messageReceivedCallback for every message that is received. - /// Either provide a topic, a queue or both. - /// A queue is generated if the name of the queue is not provided. - /// - /// Topics/routing keys to bind to - /// Name of the queue to consume - /// Action to be performed when message is received - /// Number of unacknowledged messages to receive at once. Defaults to 0. - [Obsolete("This method is obsolete, use SubscribeAsync instead")] - void Subscribe(string[] topics, string queue, Action messageReceivedCallback, ushort prefetchCount = 0); - /// /// Subscribe to a message topic & queue and executes messageReceivedCallback asynchronously for every message that is received. /// Either provide a topic, a queue or both. diff --git a/src/Messaging/Common/ServiceException.cs b/src/Messaging/Common/ServiceException.cs new file mode 100644 index 0000000..6bdaf30 --- /dev/null +++ b/src/Messaging/Common/ServiceException.cs @@ -0,0 +1,39 @@ +/* + * Copyright 2023 MONAI Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System.Runtime.Serialization; + +namespace Monai.Deploy.Messaging.Common +{ + public class ServiceException : Exception + { + public ServiceException() + { + } + + public ServiceException(string? message) : base(message) + { + } + + public ServiceException(string? message, Exception? innerException) : base(message, innerException) + { + } + + protected ServiceException(SerializationInfo info, StreamingContext context) : base(info, context) + { + } + } +} diff --git a/src/Messaging/Events/ExportCompleteEvent.cs b/src/Messaging/Events/ExportCompleteEvent.cs old mode 100644 new mode 100755 index fe0d2e7..1af942e --- a/src/Messaging/Events/ExportCompleteEvent.cs +++ b/src/Messaging/Events/ExportCompleteEvent.cs @@ -66,9 +66,9 @@ public ExportCompleteEvent() public ExportCompleteEvent(ExportRequestEvent exportRequest, ExportStatus exportStatus, Dictionary fileStatuses) { - Guard.Against.Null(exportRequest); - Guard.Against.Null(exportStatus); - Guard.Against.Null(fileStatuses); + Guard.Against.Null(exportRequest, nameof(exportRequest)); + Guard.Against.Null(exportStatus, nameof(exportStatus)); + Guard.Against.Null(fileStatuses, nameof(fileStatuses)); WorkflowInstanceId = exportRequest.WorkflowInstanceId; ExportTaskId = exportRequest.ExportTaskId; diff --git a/src/Messaging/Events/ExportRequestEvent.cs b/src/Messaging/Events/ExportRequestEvent.cs old mode 100644 new mode 100755 index 71388f3..f6bfef9 --- a/src/Messaging/Events/ExportRequestEvent.cs +++ b/src/Messaging/Events/ExportRequestEvent.cs @@ -75,9 +75,18 @@ public class ExportRequestEvent : EventBase /// public List ErrorMessages { get; private set; } + /// + /// A list of data output plug-in type names to be executed by the export services. + /// Each string must be a fully-qualified type name. + /// E.g. MyCompnay.MyProject.MyNamepsace.MyPlugin, MyCompnay.MyProject.MyNamepsace where + /// MyCompnay.MyProject.MyNamepsace is the name of the assembly (DLL). + /// + public List PluginAssemblies { get; private set; } + public ExportRequestEvent() { ErrorMessages = new List(); + PluginAssemblies = new List(); } public void AddErrorMessages(IList errorMessages) diff --git a/src/Messaging/Events/WorkflowRequestEvent.cs b/src/Messaging/Events/WorkflowRequestEvent.cs old mode 100644 new mode 100755 index b437233..1f0be31 --- a/src/Messaging/Events/WorkflowRequestEvent.cs +++ b/src/Messaging/Events/WorkflowRequestEvent.cs @@ -81,6 +81,22 @@ public class WorkflowRequestEvent : EventBase [Required] public DateTime Timestamp { get; set; } + /// + /// Sets the workflow instance ID for the Workflow Manager. + /// This is only applicable to resume events (after external app executions) + /// In standard workflows this will not be set + /// + [JsonProperty(PropertyName = "workflow_instance_id")] + public string? WorkflowInstanceId { get; set; } = default; + + /// + /// Sets the task ID for the Workflow Manager. + /// This is only applicable to resume events (after external app executions) + /// In standard workflows this will not be set + /// + [JsonProperty(PropertyName = "task_id")] + public string? TaskId { get; set; } = default; + /// /// Gets or sets a list of files and metadata files in this request. /// diff --git a/src/Messaging/Monai.Deploy.Messaging.csproj b/src/Messaging/Monai.Deploy.Messaging.csproj index edade87..70325b7 100644 --- a/src/Messaging/Monai.Deploy.Messaging.csproj +++ b/src/Messaging/Monai.Deploy.Messaging.csproj @@ -74,9 +74,9 @@ - + - + diff --git a/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs b/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs index 6c9042a..473ef81 100644 --- a/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs +++ b/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs @@ -203,7 +203,10 @@ internal class GoodSubscriberService : IMessageBrokerSubscriberService { public string Name => throw new NotImplementedException(); +#pragma warning disable CS0067 // The event 'GoodSubscriberService.OnConnectionError' is never used + // event used by users of this library public event ConnectionErrorHandler? OnConnectionError; +#pragma warning restore CS0067 // The event 'GoodSubscriberService.OnConnectionError' is never used public void Acknowledge(MessageBase message) => throw new NotImplementedException(); diff --git a/src/Messaging/Tests/Monai.Deploy.Messaging.Tests.csproj b/src/Messaging/Tests/Monai.Deploy.Messaging.Tests.csproj index 35ddd1f..c1e398d 100644 --- a/src/Messaging/Tests/Monai.Deploy.Messaging.Tests.csproj +++ b/src/Messaging/Tests/Monai.Deploy.Messaging.Tests.csproj @@ -32,14 +32,14 @@ - + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Messaging/Tests/WorkflowRequestMessageTest.cs b/src/Messaging/Tests/WorkflowRequestMessageTest.cs index 09729b6..dcec857 100644 --- a/src/Messaging/Tests/WorkflowRequestMessageTest.cs +++ b/src/Messaging/Tests/WorkflowRequestMessageTest.cs @@ -36,7 +36,9 @@ public void ConvertsJsonMessageToMessage() FileCount = 10, PayloadId = Guid.NewGuid(), Timestamp = DateTime.Now, - Workflows = new List { Guid.NewGuid().ToString() } + Workflows = new List { Guid.NewGuid().ToString() }, + WorkflowInstanceId = Guid.NewGuid().ToString(), + TaskId = Guid.NewGuid().ToString(), }; var files = new List() diff --git a/src/Plugins/RabbitMQ/Factory/RabbitMqConnectionFactory.cs b/src/Plugins/RabbitMQ/Factory/RabbitMqConnectionFactory.cs index 5fcf592..9fa63cd 100755 --- a/src/Plugins/RabbitMQ/Factory/RabbitMqConnectionFactory.cs +++ b/src/Plugins/RabbitMQ/Factory/RabbitMqConnectionFactory.cs @@ -48,10 +48,10 @@ public RabbitMQConnectionFactory(ILogger logger) public IModel CreateChannel(ChannelType type, string hostName, string username, string password, string virtualHost, string useSSL, string portNumber) { - Guard.Against.NullOrWhiteSpace(hostName); - Guard.Against.NullOrWhiteSpace(username); - Guard.Against.NullOrWhiteSpace(password); - Guard.Against.NullOrWhiteSpace(virtualHost); + Guard.Against.NullOrWhiteSpace(hostName, nameof(hostName)); + Guard.Against.NullOrWhiteSpace(username, nameof(username)); + Guard.Against.NullOrWhiteSpace(password, nameof(password)); + Guard.Against.NullOrWhiteSpace(virtualHost, nameof(virtualHost)); var key = $"{type}{hostName}{username}{HashPassword(password)}{virtualHost}"; @@ -154,7 +154,7 @@ private IConnection CreateConnectionOnly(string hostName, string username, strin private static object HashPassword(string password) { - Guard.Against.NullOrWhiteSpace(password); + Guard.Against.NullOrWhiteSpace(password, nameof(password)); var sha256 = SHA256.Create(); var hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(password)); return string.Join("", hash.Select(x => x.ToString("x2", CultureInfo.InvariantCulture))); diff --git a/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj b/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj index 85fa9c6..5451616 100644 --- a/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj +++ b/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj @@ -63,8 +63,8 @@ - - + + diff --git a/src/Plugins/RabbitMQ/Publisher/RabbitMqMessagePublisherService.cs b/src/Plugins/RabbitMQ/Publisher/RabbitMqMessagePublisherService.cs index 5059ec9..cf49876 100755 --- a/src/Plugins/RabbitMQ/Publisher/RabbitMqMessagePublisherService.cs +++ b/src/Plugins/RabbitMQ/Publisher/RabbitMqMessagePublisherService.cs @@ -49,7 +49,7 @@ public RabbitMQMessagePublisherService(IOptions logger, IRabbitMQConnectionFactory rabbitMqConnectionFactory) { - Guard.Against.Null(options); + Guard.Against.Null(options, nameof(options)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _rabbitMqConnectionFactory = rabbitMqConnectionFactory ?? throw new ArgumentNullException(nameof(rabbitMqConnectionFactory)); @@ -83,7 +83,7 @@ public RabbitMQMessagePublisherService(IOptions configuration) { - Guard.Against.Null(configuration); + Guard.Against.Null(configuration, nameof(configuration)); foreach (var key in ConfigurationKeys.PublisherRequiredKeys) { @@ -96,8 +96,8 @@ internal static void ValidateConfiguration(Dictionary configurat public Task Publish(string topic, Message message) { - Guard.Against.NullOrWhiteSpace(topic); - Guard.Against.Null(message); + Guard.Against.NullOrWhiteSpace(topic, nameof(topic)); + Guard.Against.Null(message, nameof(message)); using var loggingScope = _logger.BeginScope(new LoggingDataDictionary { diff --git a/src/Plugins/RabbitMQ/Subscriber/RabbitMqMessageSubscriberService.cs b/src/Plugins/RabbitMQ/Subscriber/RabbitMqMessageSubscriberService.cs index e96603d..cc70e32 100755 --- a/src/Plugins/RabbitMQ/Subscriber/RabbitMqMessageSubscriberService.cs +++ b/src/Plugins/RabbitMQ/Subscriber/RabbitMqMessageSubscriberService.cs @@ -58,7 +58,7 @@ public RabbitMQMessageSubscriberService(IOptions logger, IRabbitMQConnectionFactory rabbitMqConnectionFactory) { - Guard.Against.Null(options); + Guard.Against.Null(options, nameof(options)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _rabbitMqConnectionFactory = rabbitMqConnectionFactory ?? throw new ArgumentNullException(nameof(rabbitMqConnectionFactory)); @@ -109,7 +109,7 @@ private void CreateChannel() .Execute(() => { _logger.ConnectingToRabbitMQ(Name, _endpoint, _virtualHost); - _channel = _rabbitMqConnectionFactory.CreateChannel(ChannelType.Subscriber, _endpoint, _username, _password, _virtualHost, _useSSL, _portNumber); + _channel = _rabbitMqConnectionFactory.CreateChannel(ChannelType.Subscriber, _endpoint, _username, _password, _virtualHost, _useSSL, _portNumber) ?? throw new ServiceException("Failed to create a new channel to RabbitMQ"); _channel.ExchangeDeclare(_exchange, ExchangeType.Topic, durable: true, autoDelete: false); _channel.ExchangeDeclare(_deadLetterExchange, ExchangeType.Topic, durable: true, autoDelete: false); _channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false); @@ -137,7 +137,7 @@ private void Channel_ModelShutdown(object? sender, ShutdownEventArgs e) internal static void ValidateConfiguration(Dictionary configuration) { - Guard.Against.Null(configuration); + Guard.Against.Null(configuration, nameof(configuration)); foreach (var key in ConfigurationKeys.SubscriberRequiredKeys) { @@ -162,23 +162,14 @@ internal static void ValidateConfiguration(Dictionary configurat throw new ConfigurationException($"{ConfigurationKeys.SubscriberServiceName} has int values of less than 1"); } } - [Obsolete("This method is obsolete, use SubscribeAsync instead")] - public void Subscribe(string topic, string queue, Action messageReceivedCallback, ushort prefetchCount = 0) - => Subscribe(new string[] { topic }, queue, messageReceivedCallback, prefetchCount); - - [Obsolete("This method is obsolete, use SubscribeAsync instead")] - public void Subscribe(string[] topics, string queue, Action messageReceivedCallback, ushort prefetchCount = 0) - { - SubscribeAsync(topics, queue, new Func((args) => { messageReceivedCallback.Invoke(args); return Task.FromResult(0); })); - } public void SubscribeAsync(string topic, string queue, Func messageReceivedCallback, ushort prefetchCount = 0) => SubscribeAsync(new string[] { topic }, queue, messageReceivedCallback, prefetchCount); public void SubscribeAsync(string[] topics, string queue, Func messageReceivedCallback, ushort prefetchCount = 0) { - Guard.Against.Null(topics); - Guard.Against.Null(messageReceivedCallback); + Guard.Against.Null(topics, nameof(topics)); + Guard.Against.Null(messageReceivedCallback, nameof(messageReceivedCallback)); var queueDeclareResult = DeclareQueues(topics, queue, prefetchCount); var consumer = CreateConsumer(messageReceivedCallback, queueDeclareResult); @@ -212,7 +203,7 @@ private EventingBasicConsumer CreateConsumer(Func - + - + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs b/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs index 72a369c..7e3412a 100755 --- a/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs +++ b/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs @@ -133,7 +133,7 @@ public void SubscribesToATopic() var service = new RabbitMQMessageSubscriberService(_options, _logger.Object, _connectionFactory.Object); - service.Subscribe("topic", "queue", (args) => + service.SubscribeAsync("topic", "queue", async (args) => { Assert.Equal(message.ApplicationId, args.Message.ApplicationId); Assert.Equal(message.ContentType, args.Message.ContentType); @@ -143,6 +143,7 @@ public void SubscribesToATopic() Assert.Equal("topic", args.Message.MessageDescription); Assert.Equal(message.MessageId, args.Message.MessageId); Assert.Equal(message.Body, args.Message.Body); + await Task.CompletedTask.ConfigureAwait(false); }); service.SubscribeAsync("topic", "queue", async (args) => @@ -240,7 +241,7 @@ public void SubscribesToATopicAndDeadLetterQueueIsDown() var service = new RabbitMQMessageSubscriberService(_options, _logger.Object, _connectionFactory.Object); - service.Subscribe("topic", "queue", (args) => + service.SubscribeAsync("topic", "queue", async (args) => { Assert.Equal(message.ApplicationId, args.Message.ApplicationId); Assert.Equal(message.ContentType, args.Message.ContentType); @@ -250,6 +251,7 @@ public void SubscribesToATopicAndDeadLetterQueueIsDown() Assert.Equal("topic", args.Message.MessageDescription); Assert.Equal(message.MessageId, args.Message.MessageId); Assert.Equal(message.Body, args.Message.Body); + await Task.CompletedTask; }); service.SubscribeAsync("topic", "queue", async (args) => @@ -349,7 +351,7 @@ public void SubscribesToATopicAndDeadLetterQueueSubscriptionFailsWithGenericExce var act = () => { - service.Subscribe("topic", "queue", (args) => + service.SubscribeAsync("topic", "queue", async (args) => { Assert.Equal(message.ApplicationId, args.Message.ApplicationId); Assert.Equal(message.ContentType, args.Message.ContentType); @@ -359,7 +361,7 @@ public void SubscribesToATopicAndDeadLetterQueueSubscriptionFailsWithGenericExce Assert.Equal("topic", args.Message.MessageDescription); Assert.Equal(message.MessageId, args.Message.MessageId); Assert.Equal(message.Body, args.Message.Body); - + await Task.CompletedTask; }); }; Assert.Throws(act); diff --git a/third-party-licenses.md b/third-party-licenses.md index 83f195d..5b4ad43 100644 --- a/third-party-licenses.md +++ b/third-party-licenses.md @@ -61,14 +61,14 @@ SOFTWARE.
-Ardalis.GuardClauses 4.0.1 +Ardalis.GuardClauses 4.1.1 ## Ardalis.GuardClauses -- Version: 4.0.1 +- Version: 4.1.1 - Authors: Steve Smith (@ardalis) - Project URL: https://github.com/ardalis/guardclauses -- Source: [NuGet](https://www.nuget.org/packages/Ardalis.GuardClauses/4.0.1) +- Source: [NuGet](https://www.nuget.org/packages/Ardalis.GuardClauses/4.1.1) - License: [MIT](https://github.com/ardalis/GuardClauses.Analyzers/raw/master/LICENSE) @@ -171,15 +171,15 @@ SOFTWARE.
-Microsoft.CodeCoverage 17.4.0 +Microsoft.CodeCoverage 17.7.0 ## Microsoft.CodeCoverage -- Version: 17.4.0 +- Version: 17.7.0 - Authors: Microsoft - Owners: Microsoft - Project URL: https://github.com/microsoft/vstest/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.CodeCoverage/17.4.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.CodeCoverage/17.7.0) - License: [MIT](https://github.com/microsoft/vstest/raw/v17.3.0/LICENSE) @@ -619,14 +619,14 @@ SOFTWARE.
-Microsoft.Extensions.Diagnostics.HealthChecks 6.0.11 +Microsoft.Extensions.Diagnostics.HealthChecks 6.0.20 ## Microsoft.Extensions.Diagnostics.HealthChecks -- Version: 6.0.11 +- Version: 6.0.20 - Authors: Microsoft - Project URL: https://asp.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Diagnostics.HealthChecks/6.0.11) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Diagnostics.HealthChecks/6.0.20) - License: [MIT](https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) @@ -660,14 +660,14 @@ SOFTWARE.
-Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions 6.0.11 +Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions 6.0.20 ## Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions -- Version: 6.0.11 +- Version: 6.0.20 - Authors: Microsoft - Project URL: https://asp.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/6.0.11) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/6.0.20) - License: [MIT](https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) @@ -947,14 +947,14 @@ SOFTWARE.
-Microsoft.Extensions.Logging.Abstractions 6.0.3 +Microsoft.Extensions.Logging.Abstractions 6.0.4 ## Microsoft.Extensions.Logging.Abstractions -- Version: 6.0.3 +- Version: 6.0.4 - Authors: Microsoft - Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Logging.Abstractions/6.0.3) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Logging.Abstractions/6.0.4) - License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) @@ -1316,15 +1316,15 @@ SOFTWARE.
-Microsoft.NET.Test.Sdk 17.4.0 +Microsoft.NET.Test.Sdk 17.7.0 ## Microsoft.NET.Test.Sdk -- Version: 17.4.0 +- Version: 17.7.0 - Authors: Microsoft - Owners: Microsoft - Project URL: https://github.com/microsoft/vstest/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.NET.Test.Sdk/17.4.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.NET.Test.Sdk/17.7.0) - License: [MIT](https://github.com/microsoft/vstest/raw/v17.3.1/LICENSE) @@ -1754,15 +1754,15 @@ consequential or other damages.
-Microsoft.TestPlatform.ObjectModel 17.4.0 +Microsoft.TestPlatform.ObjectModel 17.7.0 ## Microsoft.TestPlatform.ObjectModel -- Version: 17.4.0 +- Version: 17.7.0 - Authors: Microsoft - Owners: Microsoft - Project URL: https://github.com/microsoft/vstest/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.4.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.7.0) - License: [MIT](https://github.com/microsoft/vstest/raw/v17.3.1/LICENSE) @@ -1792,15 +1792,15 @@ SOFTWARE.
-Microsoft.TestPlatform.TestHost 17.4.0 +Microsoft.TestPlatform.TestHost 17.7.0 ## Microsoft.TestPlatform.TestHost -- Version: 17.4.0 +- Version: 17.7.0 - Authors: Microsoft - Owners: Microsoft - Project URL: https://github.com/microsoft/vstest/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.TestPlatform.TestHost/17.4.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.TestPlatform.TestHost/17.7.0) - License: [MIT](https://github.com/microsoft/vstest/raw/v17.3.1/LICENSE) @@ -2315,14 +2315,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-NuGet.Frameworks 5.11.0 +NuGet.Frameworks 6.5.0 ## NuGet.Frameworks -- Version: 5.11.0 +- Version: 6.5.0 - Authors: Microsoft - Project URL: https://aka.ms/nugetprj -- Source: [NuGet](https://www.nuget.org/packages/NuGet.Frameworks/5.11.0) +- Source: [NuGet](https://www.nuget.org/packages/NuGet.Frameworks/6.5.0) - License: [Apache-2.0](https://github.com/NuGet/NuGet.Client/raw/dev/LICENSE.txt) @@ -2348,14 +2348,14 @@ specific language governing permissions and limitations under the License.
-Polly 7.2.3 +Polly 7.2.4 ## Polly -- Version: 7.2.3 +- Version: 7.2.4 - Authors: Michael Wolfenden, App vNext - Project URL: https://github.com/App-vNext/Polly -- Source: [NuGet](https://www.nuget.org/packages/Polly/7.2.3) +- Source: [NuGet](https://www.nuget.org/packages/Polly/7.2.4) - License: [MIT]( https://licenses.nuget.org/MIT) @@ -2380,14 +2380,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
-RabbitMQ.Client 6.4.0 +RabbitMQ.Client 6.5.0 ## RabbitMQ.Client -- Version: 6.4.0 +- Version: 6.5.0 - Authors: VMware - Project URL: https://www.rabbitmq.com/dotnet.html -- Source: [NuGet](https://www.nuget.org/packages/RabbitMQ.Client/6.4.0) +- Source: [NuGet](https://www.nuget.org/packages/RabbitMQ.Client/6.5.0) - License: [Apache-2.0](https://github.com/rabbitmq/rabbitmq-dotnet-client/raw/main/LICENSE-APACHE2) @@ -6489,15 +6489,15 @@ consequential or other damages.
-System.Memory 4.5.4 +System.Memory 4.5.5 ## System.Memory -- Version: 4.5.4 +- Version: 4.5.5 - Authors: Microsoft - Owners: microsoft,dotnetframework - Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/System.Memory/4.5.4) +- Source: [NuGet](https://www.nuget.org/packages/System.Memory/4.5.5) - License: [MIT](https://github.com/dotnet/corefx/raw/master/LICENSE.TXT) @@ -12613,15 +12613,15 @@ consequential or other damages.
-System.Threading.Channels 4.7.1 +System.Threading.Channels 7.0.0 ## System.Threading.Channels -- Version: 4.7.1 +- Version: 7.0.0 - Authors: Microsoft - Owners: microsoft,dotnetframework - Project URL: https://github.com/dotnet/corefx -- Source: [NuGet](https://www.nuget.org/packages/System.Threading.Channels/4.7.1) +- Source: [NuGet](https://www.nuget.org/packages/System.Threading.Channels/7.0.0) - License: [MIT]( https://github.com/dotnet/corefx/blob/master/LICENSE.TXT) @@ -14740,14 +14740,14 @@ consequential or other damages.
-coverlet.collector 3.2.0 +coverlet.collector 6.0.0 ## coverlet.collector -- Version: 3.2.0 +- Version: 6.0.0 - Authors: tonerdo - Project URL: https://github.com/coverlet-coverage/coverlet -- Source: [NuGet](https://www.nuget.org/packages/coverlet.collector/3.2.0) +- Source: [NuGet](https://www.nuget.org/packages/coverlet.collector/6.0.0) - License: [MIT](https://github.com/coverlet-coverage/coverlet/raw/master/LICENSE) @@ -17983,9 +17983,9 @@ consequential or other damages. ## xunit -- Version: 2.4.2 +- Version: 2.5.0 - Authors: jnewkirk,bradwilson -- Source: [NuGet](https://www.nuget.org/packages/xunit/2.4.2) +- Source: [NuGet](https://www.nuget.org/packages/xunit/2.5.0) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) @@ -18111,13 +18111,13 @@ Both sets of code are covered by the following license:
-xunit.analyzers 1.0.0 +xunit.analyzers 1.2.0 ## xunit.analyzers -- Version: 1.0.0 +- Version: 1.2.0 - Authors: jnewkirk,bradwilson,marcind -- Source: [NuGet](https://www.nuget.org/packages/xunit.analyzers/1.0.0) +- Source: [NuGet](https://www.nuget.org/packages/xunit.analyzers/1.2.0) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit.analyzers/master/LICENSE) @@ -18142,13 +18142,13 @@ limitations under the License.
-xunit.assert 2.4.2 +xunit.assert 2.5.0 ## xunit.assert -- Version: 2.4.2 +- Version: 2.5.0 - Authors: jnewkirk,bradwilson -- Source: [NuGet](https://www.nuget.org/packages/xunit.assert/2.4.2) +- Source: [NuGet](https://www.nuget.org/packages/xunit.assert/2.5.0) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) @@ -18207,13 +18207,13 @@ Both sets of code are covered by the following license:
-xunit.core 2.4.2 +xunit.core 2.5.0 ## xunit.core -- Version: 2.4.2 +- Version: 2.5.0 - Authors: jnewkirk,bradwilson -- Source: [NuGet](https://www.nuget.org/packages/xunit.core/2.4.2) +- Source: [NuGet](https://www.nuget.org/packages/xunit.core/2.5.0) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) @@ -18272,13 +18272,13 @@ Both sets of code are covered by the following license:
-xunit.extensibility.core 2.4.2 +xunit.extensibility.core 2.5.0 ## xunit.extensibility.core -- Version: 2.4.2 +- Version: 2.5.0 - Authors: jnewkirk,bradwilson -- Source: [NuGet](https://www.nuget.org/packages/xunit.extensibility.core/2.4.2) +- Source: [NuGet](https://www.nuget.org/packages/xunit.extensibility.core/2.5.0) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) @@ -18337,13 +18337,13 @@ Both sets of code are covered by the following license:
-xunit.extensibility.execution 2.4.2 +xunit.extensibility.execution 2.5.0 ## xunit.extensibility.execution -- Version: 2.4.2 +- Version: 2.5.0 - Authors: jnewkirk,bradwilson -- Source: [NuGet](https://www.nuget.org/packages/xunit.extensibility.execution/2.4.2) +- Source: [NuGet](https://www.nuget.org/packages/xunit.extensibility.execution/2.5.0) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) @@ -18402,14 +18402,14 @@ Both sets of code are covered by the following license:
-xunit.runner.visualstudio 2.4.5 +xunit.runner.visualstudio 2.5.0 ## xunit.runner.visualstudio -- Version: 2.4.5 +- Version: 2.5.0 - Authors: .NET Foundation and Contributors - Project URL: https://github.com/xunit/visualstudio.xunit -- Source: [NuGet](https://www.nuget.org/packages/xunit.runner.visualstudio/2.4.5) +- Source: [NuGet](https://www.nuget.org/packages/xunit.runner.visualstudio/2.5.0) - License: [MIT]( https://licenses.nuget.org/MIT) From 7b828227bd3e26acd5295908fc77daef8e1b8489 Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Wed, 16 Aug 2023 09:07:46 -0700 Subject: [PATCH 02/25] Release/0.1.25 (#214) +semver: patch * Update dependency decisions Signed-off-by: Victor Chang * Release/0.1.24 (#209) (#213) +semver: patch * adding new fields to messages for external app executions * added forgot licence header * added export request to export cmplete message event * Update ExportRequestEvent and update dependencies (#210) * Update dependencies * Remove ExportRequestType enum and replace with a list of plug-in assembly names * Update dependencies decisions * Include taskId in WorkflowRequestEvent to support multiple external app executions --------- Signed-off-by: Neil South Signed-off-by: Victor Chang * Fix merge issues Signed-off-by: Victor Chang --------- Signed-off-by: Victor Chang Signed-off-by: Neil South --- src/Messaging/Events/ExportCompleteEvent.cs | 9 --------- .../RabbitMQ/Tests/Unit/ServiceRegistrationTest.cs | 5 ++--- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/Messaging/Events/ExportCompleteEvent.cs b/src/Messaging/Events/ExportCompleteEvent.cs index 432b8b5..7893189 100755 --- a/src/Messaging/Events/ExportCompleteEvent.cs +++ b/src/Messaging/Events/ExportCompleteEvent.cs @@ -58,15 +58,6 @@ public class ExportCompleteEvent : EventBase [JsonProperty(PropertyName = "file_statuses")] public Dictionary FileStatuses { get; set; } - /// - /// Gets or set the ExportRequest type. - /// For standard exports this will be ExportRequestType.None - /// but for exports to external apps this will be ExportRequestType.ExternalProcessing - /// - [JsonProperty(PropertyName = "export_request")] - [Required] - public ExportRequestType ExportRequest { get; set; } = default!; - [JsonConstructor] public ExportCompleteEvent() { diff --git a/src/Plugins/RabbitMQ/Tests/Unit/ServiceRegistrationTest.cs b/src/Plugins/RabbitMQ/Tests/Unit/ServiceRegistrationTest.cs index 67d142e..ac7b026 100644 --- a/src/Plugins/RabbitMQ/Tests/Unit/ServiceRegistrationTest.cs +++ b/src/Plugins/RabbitMQ/Tests/Unit/ServiceRegistrationTest.cs @@ -1,5 +1,5 @@ /* - * Copyright 2022 MONAI Consortium + * Copyright 2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,8 +32,7 @@ public class ValidationTest [Fact(DisplayName = "Validates TaskUpdateEvent")] public void TaskUpdateEventTest() { - //var json = "{\"workflow_instance_id\":\"6caf0cf6-75f8-4120-8117-8f5f0927eb5f\",\"task_id\":\"argo-task\",\"execution_id\":\"1f599e30-626a-4c7b-962a-fc221a574488\",\"correlation_id\":\"e4b06f00-5ce3-4477-86cb-4f3bf20680c2\",\"status\":\"Succeeded\",\"taskStats\":{\"workflowId\":\"6caf0cf6-75f8-4120-8117-8f5f0927eb5f\",\"duration\":-1,\"resourceDuration\":{\"cpu\":12,\"memory\":7},\"nodeInfo\":{\"md-wonderful-bear-f8hjz\":{\"children\":[\"md-wonderful-bear-f8hjz-190249463\"],\"displayName\":\"md-wonderful-bear-f8hjz\",\"finishedAt\":\"2022-07-18T17:13:21+01:00\",\"id\":\"md-wonderful-bear-f8hjz\",\"name\":\"md-wonderful-bear-f8hjz\",\"outboundNodes\":[\"md-wonderful-bear-f8hjz-2400127581\"],\"phase\":\"Succeeded\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":3,\"memory\":2},\"startedAt\":\"2022-07-18T17:13:11+01:00\",\"templateName\":\"md-workflow-entrypoint\",\"templateScope\":\"local/md-wonderful-bear-f8hjz\",\"type\":\"Steps\"},\"md-wonderful-bear-f8hjz-190249463\":{\"boundaryID\":\"md-wonderful-bear-f8hjz\",\"children\":[\"md-wonderful-bear-f8hjz-2400127581\"],\"displayName\":\"[0]\",\"finishedAt\":\"2022-07-18T17:13:21+01:00\",\"id\":\"md-wonderful-bear-f8hjz-190249463\",\"name\":\"md-wonderful-bear-f8hjz[0]\",\"phase\":\"Succeeded\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":3,\"memory\":2},\"startedAt\":\"2022-07-18T17:13:11+01:00\",\"templateScope\":\"local/md-wonderful-bear-f8hjz\",\"type\":\"StepGroup\"},\"md-wonderful-bear-f8hjz-2400127581\":{\"boundaryID\":\"md-wonderful-bear-f8hjz\",\"displayName\":\"md-workflow-entrypoint\",\"finishedAt\":\"2022-07-18T17:13:18+01:00\",\"hostNodeName\":\"docker-desktop\",\"id\":\"md-wonderful-bear-f8hjz-2400127581\",\"inputs\":{\"parameters\":[{\"name\":\"message\",\"value\":\"{{workflow.parameters.message}}\"}]},\"name\":\"md-wonderful-bear-f8hjz[0].md-workflow-entrypoint\",\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"md-wonderful-bear-f8hjz/md-wonderful-bear-f8hjz-argosay-2400127581/main.log\"}}],\"exitCode\":\"0\"},\"phase\":\"Succeeded\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":3,\"memory\":2},\"startedAt\":\"2022-07-18T17:13:11+01:00\",\"templateName\":\"argosay\",\"templateScope\":\"local/md-wonderful-bear-f8hjz\",\"type\":\"Pod\"},\"md-wonderful-bear-f8hjz-2674993913\":{\"boundaryID\":\"md-wonderful-bear-f8hjz-2706448002\",\"children\":[\"md-wonderful-bear-f8hjz-3069151573\"],\"displayName\":\"[1]\",\"finishedAt\":\"2022-07-18T17:13:52+01:00\",\"id\":\"md-wonderful-bear-f8hjz-2674993913\",\"name\":\"md-wonderful-bear-f8hjz.onExit[1]\",\"phase\":\"Succeeded\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":4,\"memory\":2},\"startedAt\":\"2022-07-18T17:13:42+01:00\",\"templateScope\":\"local/md-wonderful-bear-f8hjz\",\"type\":\"StepGroup\"},\"md-wonderful-bear-f8hjz-2706448002\":{\"children\":[\"md-wonderful-bear-f8hjz-3681798148\"],\"displayName\":\"md-wonderful-bear-f8hjz.onExit\",\"finishedAt\":\"2022-07-18T17:13:52+01:00\",\"id\":\"md-wonderful-bear-f8hjz-2706448002\",\"name\":\"md-wonderful-bear-f8hjz.onExit\",\"outboundNodes\":[\"md-wonderful-bear-f8hjz-3069151573\"],\"phase\":\"Succeeded\",\"progress\":\"2/2\",\"resourcesDuration\":{\"cpu\":9,\"memory\":5},\"startedAt\":\"2022-07-18T17:13:21+01:00\",\"templateName\":\"exit-message-template\",\"templateScope\":\"local/md-wonderful-bear-f8hjz\",\"type\":\"Steps\"},\"md-wonderful-bear-f8hjz-3069151573\":{\"boundaryID\":\"md-wonderful-bear-f8hjz-2706448002\",\"displayName\":\"send-message\",\"finishedAt\":\"2022-07-18T17:13:50+01:00\",\"hostNodeName\":\"docker-desktop\",\"id\":\"md-wonderful-bear-f8hjz-3069151573\",\"inputs\":{\"artifacts\":[{\"archive\":{\"none\":{}},\"name\":\"message\",\"path\":\"/tmp/b2d64917-32c5-4c1a-b299-3386dbc144eb.json\",\"s3\":{\"accessKeySecret\":{\"key\":\"accessKey\",\"name\":\"argo-task-637937575309296430\"},\"bucket\":\"test-bucket\",\"endpoint\":\"minio:9000\",\"insecure\":true,\"key\":\"00000000-1000-0000-0000-000000000000/workflows/6caf0cf6-75f8-4120-8117-8f5f0927eb5f/1f599e30-626a-4c7b-962a-fc221a574488/tmp/md-wonderful-bear-f8hjz/messaging/b2d64917-32c5-4c1a-b299-3386dbc144eb.json\",\"secretKeySecret\":{\"key\":\"secretKey\",\"name\":\"argo-task-637937575309296430\"}}}]},\"name\":\"md-wonderful-bear-f8hjz.onExit[1].send-message\",\"outputs\":{\"artifacts\":[{\"name\":\"main-logs\",\"s3\":{\"key\":\"md-wonderful-bear-f8hjz/md-wonderful-bear-f8hjz-send-message-3069151573/main.log\"}}],\"exitCode\":\"0\"},\"phase\":\"Succeeded\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":4,\"memory\":2},\"startedAt\":\"2022-07-18T17:13:42+01:00\",\"templateName\":\"send-message\",\"templateScope\":\"local/md-wonderful-bear-f8hjz\",\"type\":\"Pod\"},\"md-wonderful-bear-f8hjz-3681798148\":{\"boundaryID\":\"md-wonderful-bear-f8hjz-2706448002\",\"children\":[\"md-wonderful-bear-f8hjz-743574115\"],\"displayName\":\"[0]\",\"finishedAt\":\"2022-07-18T17:13:42+01:00\",\"id\":\"md-wonderful-bear-f8hjz-3681798148\",\"name\":\"md-wonderful-bear-f8hjz.onExit[0]\",\"phase\":\"Succeeded\",\"progress\":\"2/2\",\"resourcesDuration\":{\"cpu\":9,\"memory\":5},\"startedAt\":\"2022-07-18T17:13:21+01:00\",\"templateScope\":\"local/md-wonderful-bear-f8hjz\",\"type\":\"StepGroup\"},\"md-wonderful-bear-f8hjz-743574115\":{\"boundaryID\":\"md-wonderful-bear-f8hjz-2706448002\",\"children\":[\"md-wonderful-bear-f8hjz-2674993913\"],\"displayName\":\"generate-message\",\"finishedAt\":\"2022-07-18T17:13:31+01:00\",\"hostNodeName\":\"docker-desktop\",\"id\":\"md-wonderful-bear-f8hjz-743574115\",\"inputs\":{\"parameters\":[{\"name\":\"event\",\"value\":\"{\\\"workflow_instance_id\\\":\\\"6caf0cf6-75f8-4120-8117-8f5f0927eb5f\\\",\\\"task_id\\\":\\\"argo-task\\\",\\\"execution_id\\\":\\\"1f599e30-626a-4c7b-962a-fc221a574488\\\",\\\"correlation_id\\\":\\\"e4b06f00-5ce3-4477-86cb-4f3bf20680c2\\\",\\\"identity\\\":\\\"md-wonderful-bear-f8hjz\\\",\\\"metadata\\\":{},\\\"outputs\\\":[]}\"},{\"name\":\"message\",\"value\":\"\\\"{\\\\\\\"ContentType\\\\\\\":\\\\\\\"application/json\\\\\\\",\\\\\\\"CorrelationID\\\\\\\":\\\\\\\"e4b06f00-5ce3-4477-86cb-4f3bf20680c2\\\\\\\",\\\\\\\"MessageID\\\\\\\":\\\\\\\"b2d64917-32c5-4c1a-b299-3386dbc144eb\\\\\\\",\\\\\\\"Type\\\\\\\":\\\\\\\"TaskCallbackEvent\\\\\\\",\\\\\\\"AppID\\\\\\\":\\\\\\\"Argo\\\\\\\",\\\\\\\"Exchange\\\\\\\":\\\\\\\"monaideploy\\\\\\\",\\\\\\\"RoutingKey\\\\\\\":\\\\\\\"md.tasks.callback\\\\\\\",\\\\\\\"DeliveryMode\\\\\\\":2,\\\\\\\"Body\\\\\\\":\\\\\\\"eyJ3b3JrZmxvd19pbnN0YW5jZV9pZCI6IjZjYWYwY2Y2LTc1ZjgtNDEyMC04MTE3LThmNWYwOTI3ZWI1ZiIsInRhc2tfaWQiOiJhcmdvLXRhc2siLCJleGVjdXRpb25faWQiOiIxZjU5OWUzMC02MjZhLTRjN2ItOTYyYS1mYzIyMWE1NzQ0ODgiLCJjb3JyZWxhdGlvbl9pZCI6ImU0YjA2ZjAwLTVjZTMtNDQ3Ny04NmNiLTRmM2JmMjA2ODBjMiIsImlkZW50aXR5IjoibWQtd29uZGVyZnVsLWJlYXItZjhoanoiLCJtZXRhZGF0YSI6e30sIm91dHB1dHMiOltdfQ==\\\\\\\"}\\\"\"}]},\"name\":\"md-wonderful-bear-f8hjz.onExit[0].generate-message\",\"outputs\":{\"artifacts\":[{\"archive\":{\"none\":{}},\"name\":\"output\",\"path\":\"/tmp\",\"s3\":{\"accessKeySecret\":{\"key\":\"accessKey\",\"name\":\"argo-task-637937575309296430\"},\"bucket\":\"test-bucket\",\"endpoint\":\"minio:9000\",\"insecure\":true,\"key\":\"00000000-1000-0000-0000-000000000000/workflows/6caf0cf6-75f8-4120-8117-8f5f0927eb5f/1f599e30-626a-4c7b-962a-fc221a574488/tmp/md-wonderful-bear-f8hjz/messaging\",\"secretKeySecret\":{\"key\":\"secretKey\",\"name\":\"argo-task-637937575309296430\"}}},{\"name\":\"main-logs\",\"s3\":{\"key\":\"md-wonderful-bear-f8hjz/md-wonderful-bear-f8hjz-generate-message-743574115/main.log\"}}],\"exitCode\":\"0\"},\"phase\":\"Succeeded\",\"progress\":\"1/1\",\"resourcesDuration\":{\"cpu\":5,\"memory\":3},\"startedAt\":\"2022-07-18T17:13:21+01:00\",\"templateName\":\"generate-message\",\"templateScope\":\"local/md-wonderful-bear-f8hjz\",\"type\":\"Pod\"}},\"startedAt\":\"2022-07-18T17:13:11+01:00\",\"finishedAt\":\"2022-07-18T17:13:52+01:00\"},\"reason\":\"None\",\"message\":\"\",\"outputs\":[],\"metadata\":{\"JobIdentity\":\"md-wonderful-bear-f8hjz\"}}"; - var json = """{"taskStats":{"workflowId":"6caf0cf6-75f8-4120-8117-8f5f0927eb5f","resourceDuration.cpu":12,"resourceDuration.memory":7}}"""; + var json = "{'taskStats':{'workflowId':'6caf0cf6-75f8-4120-8117-8f5f0927eb5f','resourceDuration.cpu':12,'resourceDuration.memory':7}}"; var updateEvent = Newtonsoft.Json.JsonConvert.DeserializeObject(json); var message = Assert.Throws(() => updateEvent?.Validate()); var expectedError = "Invalid message: The WorkflowInstanceId field is required. Path: WorkflowInstanceId.,The TaskId field is required. Path: TaskId.,The ExecutionId field is required. Path: ExecutionId.,The CorrelationId field is required. Path: CorrelationId."; From a50ae54aab83712b2af94182d59c51a626537243 Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Tue, 22 Aug 2023 09:20:06 -0700 Subject: [PATCH 03/25] Release 0.2.0 (#216) +semver: minor * adding new fields to messages for external app executions * added forgot licence header * added export request to export cmplete message event * Update ExportRequestEvent and update dependencies (#210) * Update dependencies * Remove ExportRequestType enum and replace with a list of plug-in assembly names * Update dependencies decisions * Include taskId in WorkflowRequestEvent to support multiple external app executions * gh-127 (#215) New data trigger and data origins to support multiple data sources/modalities Signed-off-by: Victor Chang Signed-off-by: Neil South --- src/Messaging/Events/WorkflowRequestEvent.cs | 66 ++++++++++++++++--- .../Tests/WorkflowRequestMessageTest.cs | 36 +++++++++- 2 files changed, 91 insertions(+), 11 deletions(-) diff --git a/src/Messaging/Events/WorkflowRequestEvent.cs b/src/Messaging/Events/WorkflowRequestEvent.cs index 1f0be31..3438f69 100755 --- a/src/Messaging/Events/WorkflowRequestEvent.cs +++ b/src/Messaging/Events/WorkflowRequestEvent.cs @@ -20,6 +20,56 @@ namespace Monai.Deploy.Messaging.Events { + public class DataOrigin + { + [JsonProperty(PropertyName = "type")] + public DataType DataType { get; set; } + + /// + /// Gets or sets the source of the data: + /// + /// DIMSE: the sender or calling AE Title of the DICOM dataset. + /// ACR inference request: the transaction ID. + /// FHIR/HL7: host name or IP address. + /// DICOMWeb: host name or IP address. + /// + /// + [JsonProperty(PropertyName = "source")] + [Required] + public string Source { get; set; } = default!; + + /// + /// Gets or set the receiving service. + /// + /// DIMSE: the MONAI Deploy AE Title that received the DICOM dataset. + /// ACR inference request: IP address of the receiving service. + /// FHIR/HL7: IP address of the receiving service. + /// DICOMWeb: IP address of the receiving service or the named virtual AE Title. + /// + /// + [JsonProperty(PropertyName = "destination")] + public string Destination { get; set; } = default!; + } + public enum DataType + { + /// + /// Data received via DIMSE services + /// + DIMSE, + /// + /// Data received via DICOMWeb services + /// + DICOMWEB, + /// + /// Data received via FHIR services + /// + FHIR, + /// + /// Data received via HL7 services + /// + HL7, + } + public class WorkflowRequestEvent : EventBase { private readonly List _payload; @@ -60,19 +110,16 @@ public class WorkflowRequestEvent : EventBase public string Bucket { get; set; } = default!; /// - /// For DIMSE, the sender or calling AE Title of the DICOM dataset. - /// For an ACR inference request, the transaction ID. + /// Gets or sets the service that received the original request. /// - [JsonProperty(PropertyName = "calling_aetitle")] - [Required] - public string CallingAeTitle { get; set; } = default!; + [JsonProperty(PropertyName = "trigger")] + public DataOrigin DataTrigger { get; set; } = default!; /// - /// For DIMSE, the MONAI Deploy AE Title received the DICOM dataset. - /// For an ACR inference request, this field is empty. + /// Gets or sets the data origins that were involved in triggering this workflow request. /// - [JsonProperty(PropertyName = "called_aetitle")] - public string CalledAeTitle { get; set; } = default!; + [JsonProperty(PropertyName = "data_origins")] + public List DataOrigins { get; private set; } /// /// Gets or sets the time the data was received. @@ -108,6 +155,7 @@ public WorkflowRequestEvent() { _payload = new List(); Workflows = new List(); + DataOrigins = new List(); } public void AddFiles(IEnumerable files) diff --git a/src/Messaging/Tests/WorkflowRequestMessageTest.cs b/src/Messaging/Tests/WorkflowRequestMessageTest.cs index dcec857..517d478 100644 --- a/src/Messaging/Tests/WorkflowRequestMessageTest.cs +++ b/src/Messaging/Tests/WorkflowRequestMessageTest.cs @@ -30,8 +30,12 @@ public void ConvertsJsonMessageToMessage() var input = new WorkflowRequestEvent() { Bucket = Guid.NewGuid().ToString(), - CalledAeTitle = Guid.NewGuid().ToString(), - CallingAeTitle = Guid.NewGuid().ToString(), + DataTrigger = new DataOrigin + { + DataType = DataType.DIMSE, + Source = Guid.NewGuid().ToString(), + Destination = Guid.NewGuid().ToString(), + }, CorrelationId = Guid.NewGuid().ToString(), FileCount = 10, PayloadId = Guid.NewGuid(), @@ -40,6 +44,34 @@ public void ConvertsJsonMessageToMessage() WorkflowInstanceId = Guid.NewGuid().ToString(), TaskId = Guid.NewGuid().ToString(), }; + input.DataOrigins.Add(new DataOrigin + { + DataType = DataType.DICOMWEB, + Source = Guid.NewGuid().ToString(), + Destination = Guid.NewGuid().ToString(), + + }); + input.DataOrigins.Add(new DataOrigin + { + DataType = DataType.FHIR, + Source = Guid.NewGuid().ToString(), + Destination = Guid.NewGuid().ToString(), + + }); + input.DataOrigins.Add(new DataOrigin + { + DataType = DataType.DIMSE, + Source = Guid.NewGuid().ToString(), + Destination = Guid.NewGuid().ToString(), + + }); + input.DataOrigins.Add(new DataOrigin + { + DataType = DataType.HL7, + Source = Guid.NewGuid().ToString(), + Destination = Guid.NewGuid().ToString(), + + }); var files = new List() { From 1b6c66e7cbf95c7b95d5f062dabfd866e229cf4a Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Thu, 24 Aug 2023 08:48:05 -0700 Subject: [PATCH 04/25] Release/0.2.1 (#218) +semver: patch * Add ACR enum in DataService (#217) Signed-off-by: Victor Chang --- src/Messaging/Common/BlockStorageInfo.cs | 5 +- src/Messaging/Common/Credentials.cs | 6 ++- src/Messaging/Common/Storage.cs | 9 +++- src/Messaging/Events/EmailRequestEvent.cs | 10 +++- src/Messaging/Events/ExportCompleteEvent.cs | 16 +++++-- src/Messaging/Events/ExportRequestEvent.cs | 17 ++++++- src/Messaging/Events/TaskCallbackEvent.cs | 10 +++- src/Messaging/Events/TaskCancellationEvent.cs | 12 ++++- src/Messaging/Events/TaskDispatchEvent.cs | 18 +++++++- src/Messaging/Events/TaskUpdateEvent.cs | 19 ++++++-- src/Messaging/Events/WorkflowRequestEvent.cs | 46 +++++++++++++++++-- src/Messaging/Monai.Deploy.Messaging.csproj | 1 + .../Tests/WorkflowRequestMessageTest.cs | 10 ++-- .../Monai.Deploy.Messaging.RabbitMQ.csproj | 1 + 14 files changed, 153 insertions(+), 27 deletions(-) diff --git a/src/Messaging/Common/BlockStorageInfo.cs b/src/Messaging/Common/BlockStorageInfo.cs index 4fed0e3..67645f3 100644 --- a/src/Messaging/Common/BlockStorageInfo.cs +++ b/src/Messaging/Common/BlockStorageInfo.cs @@ -1,5 +1,5 @@ /* - * Copyright 2021-2022 MONAI Consortium + * Copyright 2021-2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ * limitations under the License. */ +using System.Text.Json.Serialization; using Newtonsoft.Json; namespace Monai.Deploy.Messaging.Common @@ -24,12 +25,14 @@ public class BlockStorageInfo /// Gets or sets the root path to the file. /// [JsonProperty(PropertyName = "path")] + [JsonPropertyName("path")] public string Path { get; set; } = default!; /// /// Gets or sets the root path to the metadata file. /// [JsonProperty(PropertyName = "metadata")] + [JsonPropertyName("metadata")] public string Metadata { get; set; } = default!; } } diff --git a/src/Messaging/Common/Credentials.cs b/src/Messaging/Common/Credentials.cs index de0bdb5..4a9fc16 100644 --- a/src/Messaging/Common/Credentials.cs +++ b/src/Messaging/Common/Credentials.cs @@ -1,5 +1,5 @@ /* - * Copyright 2022 MONAI Consortium + * Copyright 2022-2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ using System.ComponentModel.DataAnnotations; +using System.Text.Json.Serialization; using Newtonsoft.Json; namespace Monai.Deploy.Messaging.Common @@ -25,6 +26,7 @@ public class Credentials /// Gets or sets the access key or user name of the credentials pair. /// [JsonProperty(PropertyName = "access_key")] + [JsonPropertyName("access_key")] [Required] public string AccessKey { get; set; } @@ -32,6 +34,7 @@ public class Credentials /// Gets or sets the access token or password of the credentials pair. /// [JsonProperty(PropertyName = "access_token")] + [JsonPropertyName("access_token")] [Required] public string AccessToken { get; set; } @@ -39,6 +42,7 @@ public class Credentials /// Gets or sets the session token of the credentials pair. /// [JsonProperty(PropertyName = "session_token")] + [JsonPropertyName("session_token")] public string SessionToken { get; set; } public Credentials() diff --git a/src/Messaging/Common/Storage.cs b/src/Messaging/Common/Storage.cs index 3d71135..3c6ea74 100644 --- a/src/Messaging/Common/Storage.cs +++ b/src/Messaging/Common/Storage.cs @@ -1,5 +1,5 @@ /* - * Copyright 2022 MONAI Consortium + * Copyright 2022-2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ using System.ComponentModel.DataAnnotations; +using System.Text.Json.Serialization; using Newtonsoft.Json; namespace Monai.Deploy.Messaging.Common @@ -26,6 +27,7 @@ public class Storage : ICloneable /// For Argo, name of the artifact used in the template. /// [JsonProperty(PropertyName = "name")] + [JsonPropertyName("name")] [Required] public string Name { get; set; } @@ -33,6 +35,7 @@ public class Storage : ICloneable /// Gets or sets the endpoint of the storage service. /// [JsonProperty(PropertyName = "endpoint")] + [JsonPropertyName("endpoint")] [Required] public string Endpoint { get; set; } @@ -40,12 +43,14 @@ public class Storage : ICloneable /// Gets or sets credentials for accessing the storage service. /// [JsonProperty(PropertyName = "credentials")] + [JsonPropertyName("credentials")] public Credentials? Credentials { get; set; } /// /// Gets or sets name of the bucket. /// [JsonProperty(PropertyName = "bucket")] + [JsonPropertyName("bucket")] [Required] public string Bucket { get; set; } @@ -53,12 +58,14 @@ public class Storage : ICloneable /// Gets or sets whether the connection should be secured or not. /// [JsonProperty(PropertyName = "secured_connection")] + [JsonPropertyName("secured_connection")] public bool SecuredConnection { get; set; } /// /// Gets or sets the optional relative root path to the data. /// [JsonProperty(PropertyName = "relative_root_path")] + [JsonPropertyName("relative_root_path")] [Required] public string RelativeRootPath { get; set; } diff --git a/src/Messaging/Events/EmailRequestEvent.cs b/src/Messaging/Events/EmailRequestEvent.cs index 195eb37..4ffb2a7 100644 --- a/src/Messaging/Events/EmailRequestEvent.cs +++ b/src/Messaging/Events/EmailRequestEvent.cs @@ -1,5 +1,5 @@ /* - * Copyright 2022 MONAI Consortium + * Copyright 2022-2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ using System.ComponentModel.DataAnnotations; +using System.Text.Json.Serialization; using Newtonsoft.Json; namespace Monai.Deploy.Messaging.Events @@ -22,29 +23,36 @@ namespace Monai.Deploy.Messaging.Events public class EmailRequestEvent : EventBase { [JsonProperty(PropertyName = "id")] + [JsonPropertyName("id")] [Required] public Guid Id { get; set; } [JsonProperty(PropertyName = "workflow_instance_id")] + [JsonPropertyName("workflow_instance_id")] [Required] public string WorkflowInstanceId { get; set; } [JsonProperty(PropertyName = "workflow_name")] + [JsonPropertyName("workflow_name")] [Required] public string WorkflowName { get; set; } [JsonProperty(PropertyName = "task_id")] + [JsonPropertyName("task_id")] [Required] public string TaskId { get; set; } [JsonProperty(PropertyName = "roles")] + [JsonPropertyName("roles")] public string Roles { get; set; } [JsonProperty(PropertyName = "emails")] + [JsonPropertyName("emails")] public string Emails { get; set; } [Required] [JsonProperty(PropertyName = "metadata")] + [JsonPropertyName("metadata")] public Dictionary Metadata { get; set; } public EmailRequestEvent() diff --git a/src/Messaging/Events/ExportCompleteEvent.cs b/src/Messaging/Events/ExportCompleteEvent.cs index 7893189..ac3de11 100755 --- a/src/Messaging/Events/ExportCompleteEvent.cs +++ b/src/Messaging/Events/ExportCompleteEvent.cs @@ -1,5 +1,5 @@ /* - * Copyright 2021-2022 MONAI Consortium + * Copyright 2021-2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,8 +15,8 @@ */ using System.ComponentModel.DataAnnotations; +using System.Text.Json.Serialization; using Ardalis.GuardClauses; -using Monai.Deploy.Messaging.Common; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -28,6 +28,7 @@ public class ExportCompleteEvent : EventBase /// Gets or sets the workflow instanceID generated by the Workflow Manager. /// [JsonProperty(PropertyName = "workflow_instance_id")] + [JsonPropertyName("workflow_instance_id")] [Required] public string WorkflowInstanceId { get; set; } = default!; @@ -35,6 +36,7 @@ public class ExportCompleteEvent : EventBase /// Gets or sets the export task ID generated by the Workflow Manager. /// [JsonProperty(PropertyName = "export_task_id")] + [JsonPropertyName("export_task_id")] [Required] public string ExportTaskId { get; set; } = default!; @@ -42,7 +44,9 @@ public class ExportCompleteEvent : EventBase /// Gets or sets the state of the export task. /// [JsonProperty(PropertyName = "status")] - [JsonConverter(typeof(StringEnumConverter))] + [JsonPropertyName("status")] + [Newtonsoft.Json.JsonConverter(typeof(StringEnumConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(JsonStringEnumConverter))] [Required] public ExportStatus Status { get; set; } @@ -50,15 +54,19 @@ public class ExportCompleteEvent : EventBase /// Gets or sets error messages, if any, when exporting. /// [JsonProperty(PropertyName = "message")] + [JsonPropertyName("message")] public string Message { get; set; } = default!; /// /// Gets or sets files exported with its status /// [JsonProperty(PropertyName = "file_statuses")] + [JsonPropertyName("file_statuses")] public Dictionary FileStatuses { get; set; } - [JsonConstructor] + [Newtonsoft.Json.JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] + public ExportCompleteEvent() { Status = ExportStatus.Unknown; diff --git a/src/Messaging/Events/ExportRequestEvent.cs b/src/Messaging/Events/ExportRequestEvent.cs index 2d6c89e..b5fd258 100755 --- a/src/Messaging/Events/ExportRequestEvent.cs +++ b/src/Messaging/Events/ExportRequestEvent.cs @@ -1,5 +1,5 @@ /* - * Copyright 2021-2022 MONAI Consortium + * Copyright 2021-2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ */ using System.ComponentModel.DataAnnotations; -using Monai.Deploy.Messaging.Common; +using System.Text.Json.Serialization; using Newtonsoft.Json; namespace Monai.Deploy.Messaging.Events @@ -26,6 +26,7 @@ public class ExportRequestEvent : EventBase /// Gets or sets the workflow instance ID generated by the Workflow Manager. /// [JsonProperty(PropertyName = "workflow_instance_id")] + [JsonPropertyName("workflow_instance_id")] [Required] public string WorkflowInstanceId { get; set; } = default!; @@ -33,6 +34,7 @@ public class ExportRequestEvent : EventBase /// Gets or sets the export task ID generated by the Workflow Manager. /// [JsonProperty(PropertyName = "export_task_id")] + [JsonPropertyName("export_task_id")] [Required] public string ExportTaskId { get; set; } = default!; @@ -40,6 +42,7 @@ public class ExportRequestEvent : EventBase /// Gets or sets a list of files to be exported. /// [JsonProperty(PropertyName = "files")] + [JsonPropertyName("files")] [Required, MinLength(1)] public IEnumerable Files { get; set; } = default!; @@ -49,6 +52,7 @@ public class ExportRequestEvent : EventBase /// For ACR, the Transaction ID in the original inference request. /// [JsonProperty(PropertyName = "destinations")] + [JsonPropertyName("destinations")] [Required] public string[] Destinations { get; set; } = default!; @@ -58,22 +62,29 @@ public class ExportRequestEvent : EventBase /// For ACR, use the Transaction ID in the original request. /// [JsonProperty(PropertyName = "correlation_id")] + [JsonPropertyName("correlation_id")] [Required] public string CorrelationId { get; set; } = default!; /// /// Gets or sets the delivery tag or acknowledge token for the task. /// + [JsonProperty(PropertyName = "delivery_tag")] + [JsonPropertyName("delivery_tag")] public string DeliveryTag { get; set; } = default!; /// /// Gets or sets the message ID set by the message broker. /// + [JsonProperty(PropertyName = "message_id")] + [JsonPropertyName("message_id")] public string MessageId { get; set; } = default!; /// /// Gets or sets error messages related to this export task. /// + [JsonProperty(PropertyName = "error_messages")] + [JsonPropertyName("error_messages")] public List ErrorMessages { get; private set; } /// @@ -82,6 +93,8 @@ public class ExportRequestEvent : EventBase /// E.g. MyCompnay.MyProject.MyNamepsace.MyPlugin, MyCompnay.MyProject.MyNamepsace where /// MyCompnay.MyProject.MyNamepsace is the name of the assembly (DLL). /// + [JsonProperty(PropertyName = "plug_in_assemblies")] + [JsonPropertyName("plug_in_assemblies")] public List PluginAssemblies { get; private set; } public ExportRequestEvent() diff --git a/src/Messaging/Events/TaskCallbackEvent.cs b/src/Messaging/Events/TaskCallbackEvent.cs index 0601b88..c088910 100644 --- a/src/Messaging/Events/TaskCallbackEvent.cs +++ b/src/Messaging/Events/TaskCallbackEvent.cs @@ -1,5 +1,5 @@ /* - * Copyright 2022 MONAI Consortium + * Copyright 2022-2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ using System.ComponentModel.DataAnnotations; +using System.Text.Json.Serialization; using Monai.Deploy.Messaging.Common; using Newtonsoft.Json; @@ -26,6 +27,7 @@ public class TaskCallbackEvent : EventBase /// Gets or sets the ID representing the instance of the workflow. /// [JsonProperty(PropertyName = "workflow_instance_id")] + [JsonPropertyName("workflow_instance_id")] [Required] public string WorkflowInstanceId { get; set; } @@ -34,12 +36,14 @@ public class TaskCallbackEvent : EventBase /// [Required] [JsonProperty(PropertyName = "task_id")] + [JsonPropertyName("task_id")] public string TaskId { get; set; } /// /// Gets or sets the execution ID representing the instance of the task. /// [JsonProperty(PropertyName = "execution_id")] + [JsonPropertyName("execution_id")] [Required] public string ExecutionId { get; set; } @@ -47,6 +51,7 @@ public class TaskCallbackEvent : EventBase /// Gets or sets the correlation ID. /// [JsonProperty(PropertyName = "correlation_id")] + [JsonPropertyName("correlation_id")] [Required] public string CorrelationId { get; set; } @@ -54,6 +59,7 @@ public class TaskCallbackEvent : EventBase /// Gets or sets the identity provided by the external service. /// [JsonProperty(PropertyName = "identity")] + [JsonPropertyName("identity")] [Required] public string Identity { get; set; } @@ -61,12 +67,14 @@ public class TaskCallbackEvent : EventBase /// Gets or sets any metadata generated by the task, including any output generated. /// [JsonProperty(PropertyName = "metadata")] + [JsonPropertyName("metadata")] public Dictionary Metadata { get; set; } /// /// Gets or sets the output storage information. /// [JsonProperty(PropertyName = "outputs")] + [JsonPropertyName("outputs")] public List Outputs { get; set; } public TaskCallbackEvent() diff --git a/src/Messaging/Events/TaskCancellationEvent.cs b/src/Messaging/Events/TaskCancellationEvent.cs index 8498384..aae9879 100644 --- a/src/Messaging/Events/TaskCancellationEvent.cs +++ b/src/Messaging/Events/TaskCancellationEvent.cs @@ -1,5 +1,5 @@ /* - * Copyright 2022 MONAI Consortium + * Copyright 2022-2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,9 @@ */ using System.ComponentModel.DataAnnotations; +using System.Text.Json.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; namespace Monai.Deploy.Messaging.Events { @@ -25,6 +27,7 @@ public class TaskCancellationEvent : EventBase /// Gets or sets the ID representing the instance of the workflow. /// [JsonProperty(PropertyName = "workflow_instance_id")] + [JsonPropertyName("workflow_instance_id")] [Required] public string WorkflowInstanceId { get; set; } = string.Empty; @@ -32,6 +35,7 @@ public class TaskCancellationEvent : EventBase /// Gets or sets the execution ID representing the instance of the task. /// [JsonProperty(PropertyName = "execution_id")] + [JsonPropertyName("execution_id")] [Required] public string ExecutionId { get; set; } = string.Empty; @@ -40,12 +44,14 @@ public class TaskCancellationEvent : EventBase /// [Required] [JsonProperty(PropertyName = "task_id")] + [JsonPropertyName("task_id")] public string TaskId { get; set; } = string.Empty; /// /// Gets or sets the identity provided by the external service. /// [JsonProperty(PropertyName = "identity")] + [JsonPropertyName("identity")] [Required, MaxLength(63)] public string Identity { get; set; } = string.Empty; @@ -53,6 +59,9 @@ public class TaskCancellationEvent : EventBase /// Gets or sets the reason for the cancellation. /// [JsonProperty(PropertyName = "reason")] + [JsonPropertyName("reason")] + [Newtonsoft.Json.JsonConverter(typeof(StringEnumConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(JsonStringEnumConverter))] [Required] public FailureReason Reason { get; set; } = FailureReason.Unknown; @@ -60,6 +69,7 @@ public class TaskCancellationEvent : EventBase /// Gets or sets a message relating to the cancellation. /// [JsonProperty(PropertyName = "message")] + [JsonPropertyName("message")] [Required, MaxLength(63)] public string Message { get; set; } = string.Empty; } diff --git a/src/Messaging/Events/TaskDispatchEvent.cs b/src/Messaging/Events/TaskDispatchEvent.cs index 726f7c3..c1aa168 100644 --- a/src/Messaging/Events/TaskDispatchEvent.cs +++ b/src/Messaging/Events/TaskDispatchEvent.cs @@ -1,5 +1,5 @@ /* - * Copyright 2022 MONAI Consortium + * Copyright 2022-2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ using System.ComponentModel.DataAnnotations; +using System.Text.Json.Serialization; using Monai.Deploy.Messaging.Common; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -27,6 +28,7 @@ public class TaskDispatchEvent : EventBase /// Gets or sets the ID representing the instance of the workflow. /// [JsonProperty(PropertyName = "workflow_instance_id")] + [JsonPropertyName("workflow_instance_id")] [Required] public string WorkflowInstanceId { get; set; } @@ -35,12 +37,14 @@ public class TaskDispatchEvent : EventBase /// [Required] [JsonProperty(PropertyName = "task_id")] + [JsonPropertyName("task_id")] public string TaskId { get; set; } /// /// Gets or sets the execution ID representing the instance of the task. /// [JsonProperty(PropertyName = "execution_id")] + [JsonPropertyName("execution_id")] [Required] public string ExecutionId { get; set; } @@ -48,6 +52,7 @@ public class TaskDispatchEvent : EventBase /// Gets or sets the payload ID of the current workflow instance. /// [JsonProperty(PropertyName = "payload_id")] + [JsonPropertyName("payload_id")] [Required] public string PayloadId { get; set; } @@ -55,6 +60,7 @@ public class TaskDispatchEvent : EventBase /// Gets or sets the correlation ID. /// [JsonProperty(PropertyName = "correlation_id")] + [JsonPropertyName("correlation_id")] [Required] public string CorrelationId { get; set; } @@ -62,6 +68,7 @@ public class TaskDispatchEvent : EventBase /// Gets or sets the type of plug-in the task is associated with. /// [JsonProperty(PropertyName = "type")] + [JsonPropertyName("type")] [Required] public string TaskPluginType { get; set; } @@ -69,13 +76,16 @@ public class TaskDispatchEvent : EventBase /// Gets or sets the task execution arguments. /// [JsonProperty(PropertyName = "task_plugin_arguments")] + [JsonPropertyName("task_plugin_arguments")] public Dictionary TaskPluginArguments { get; set; } /// /// Gets or set the status of the task. /// [JsonProperty(PropertyName = "status")] - [JsonConverter(typeof(StringEnumConverter))] + [JsonPropertyName("status")] + [Newtonsoft.Json.JsonConverter(typeof(StringEnumConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(JsonStringEnumConverter))] [Required] public TaskExecutionStatus Status { get; set; } @@ -83,6 +93,7 @@ public class TaskDispatchEvent : EventBase /// Gets or sets the input storage information. /// [JsonProperty(PropertyName = "inputs")] + [JsonPropertyName("inputs")] [Required, MinLength(1, ErrorMessage = "At least input is required.")] public List Inputs { get; set; } @@ -90,6 +101,7 @@ public class TaskDispatchEvent : EventBase /// Gets or sets the output storage information. /// [JsonProperty(PropertyName = "outputs")] + [JsonPropertyName("outputs")] [Required] public List Outputs { get; set; } @@ -97,6 +109,7 @@ public class TaskDispatchEvent : EventBase /// Gets or sets the intermediate storage information. /// [JsonProperty(PropertyName = "intermediate_storage")] + [JsonPropertyName("intermediate_storage")] [Required] public Storage IntermediateStorage { get; set; } @@ -104,6 +117,7 @@ public class TaskDispatchEvent : EventBase /// Gets or sets any metadata relevant to the task. /// [JsonProperty(PropertyName = "metadata")] + [JsonPropertyName("metadata")] public Dictionary Metadata { get; set; } public TaskDispatchEvent() diff --git a/src/Messaging/Events/TaskUpdateEvent.cs b/src/Messaging/Events/TaskUpdateEvent.cs index 2c2c9fb..b9ea839 100644 --- a/src/Messaging/Events/TaskUpdateEvent.cs +++ b/src/Messaging/Events/TaskUpdateEvent.cs @@ -1,5 +1,5 @@ /* - * Copyright 2022 MONAI Consortium + * Copyright 2022-2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ using System.ComponentModel.DataAnnotations; +using System.Text.Json.Serialization; using Monai.Deploy.Messaging.Common; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -27,6 +28,7 @@ public class TaskUpdateEvent : EventBase /// Gets or sets the ID representing the instance of the workflow. /// [JsonProperty(PropertyName = "workflow_instance_id")] + [JsonPropertyName("workflow_instance_id")] [Required] public string WorkflowInstanceId { get; set; } @@ -35,12 +37,14 @@ public class TaskUpdateEvent : EventBase /// [Required] [JsonProperty(PropertyName = "task_id")] + [JsonPropertyName("task_id")] public string TaskId { get; set; } /// /// Gets or sets the execution ID representing the instance of the task. /// [JsonProperty(PropertyName = "execution_id")] + [JsonPropertyName("execution_id")] [Required] public string ExecutionId { get; set; } @@ -48,6 +52,7 @@ public class TaskUpdateEvent : EventBase /// Gets or sets the correlation ID. /// [JsonProperty(PropertyName = "correlation_id")] + [JsonPropertyName("correlation_id")] [Required] public string CorrelationId { get; set; } @@ -55,7 +60,9 @@ public class TaskUpdateEvent : EventBase /// Gets or set the status of the task. /// [JsonProperty(PropertyName = "status")] - [JsonConverter(typeof(StringEnumConverter))] + [JsonPropertyName("status")] + [Newtonsoft.Json.JsonConverter(typeof(StringEnumConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(JsonStringEnumConverter))] [Required] public TaskExecutionStatus Status { get; set; } @@ -63,13 +70,16 @@ public class TaskUpdateEvent : EventBase /// Gets or set the execution stats of the task. /// [JsonProperty(PropertyName = "taskStats")] + [JsonPropertyName("taskStats")] public Dictionary ExecutionStats { get; set; } /// /// Gets or set the failure reason of the task. /// [JsonProperty(PropertyName = "reason")] - [JsonConverter(typeof(StringEnumConverter))] + [JsonPropertyName("reason")] + [Newtonsoft.Json.JsonConverter(typeof(StringEnumConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(JsonStringEnumConverter))] [Required] public FailureReason Reason { get; set; } @@ -77,18 +87,21 @@ public class TaskUpdateEvent : EventBase /// Gets or set any additional (error) message related to the task. /// [JsonProperty(PropertyName = "message")] + [JsonPropertyName("message")] public string Message { get; set; } /// /// Gets or sets any output artifacts relevent to the output of the task. /// [JsonProperty(PropertyName = "outputs")] + [JsonPropertyName("outputs")] public List Outputs { get; set; } /// /// Gets or sets any metadata relevant to the output of the task. /// [JsonProperty(PropertyName = "metadata")] + [JsonPropertyName("metadata")] public Dictionary Metadata { get; set; } public TaskUpdateEvent() diff --git a/src/Messaging/Events/WorkflowRequestEvent.cs b/src/Messaging/Events/WorkflowRequestEvent.cs index 3438f69..982b430 100755 --- a/src/Messaging/Events/WorkflowRequestEvent.cs +++ b/src/Messaging/Events/WorkflowRequestEvent.cs @@ -1,5 +1,5 @@ /* - * Copyright 2021-2022 MONAI Consortium + * Copyright 2021-2023 MONAI Consortium * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ */ using System.ComponentModel.DataAnnotations; +using System.Text.Json.Serialization; using Monai.Deploy.Messaging.Common; using Newtonsoft.Json; @@ -22,8 +23,9 @@ namespace Monai.Deploy.Messaging.Events { public class DataOrigin { - [JsonProperty(PropertyName = "type")] - public DataType DataType { get; set; } + [JsonProperty(PropertyName = "dataService")] + [JsonPropertyName("dataService")] + public DataService DataService { get; set; } = DataService.Unknown; /// /// Gets or sets the source of the data: @@ -35,6 +37,7 @@ public class DataOrigin /// /// [JsonProperty(PropertyName = "source")] + [JsonPropertyName("source")] [Required] public string Source { get; set; } = default!; @@ -48,10 +51,28 @@ public class DataOrigin /// /// [JsonProperty(PropertyName = "destination")] + [JsonPropertyName("destination")] public string Destination { get; set; } = default!; + + public override int GetHashCode() + { + return HashCode.Combine(Source, Destination, DataService); + } + + public override bool Equals(object? obj) + { + return obj is DataOrigin dataOrigin && + Source.Equals(dataOrigin.Source, StringComparison.Ordinal) && + Destination.Equals(dataOrigin.Destination, StringComparison.Ordinal) && + DataService.Equals(dataOrigin.DataService); + } } - public enum DataType + public enum DataService { + /// + /// Unknown data service + /// + Unknown, /// /// Data received via DIMSE services /// @@ -59,7 +80,7 @@ public enum DataType /// /// Data received via DICOMWeb services /// - DICOMWEB, + DicomWeb, /// /// Data received via FHIR services /// @@ -68,6 +89,10 @@ public enum DataType /// Data received via HL7 services /// HL7, + /// + /// Data received via ACR API call + /// + ACR, } public class WorkflowRequestEvent : EventBase @@ -78,6 +103,7 @@ public class WorkflowRequestEvent : EventBase /// Gets or sets the ID of the payload which is also used as the root path of the payload. /// [JsonProperty(PropertyName = "payload_id")] + [JsonPropertyName("payload_id")] [Required] public Guid PayloadId { get; set; } @@ -85,12 +111,14 @@ public class WorkflowRequestEvent : EventBase /// Gets or sets the associated workflows to be launched. /// [JsonProperty(PropertyName = "workflows")] + [JsonPropertyName("workflows")] public IEnumerable Workflows { get; set; } /// /// Gets or sets number of files in the payload. /// [JsonProperty(PropertyName = "file_count")] + [JsonPropertyName("file_count")] [Required] public int FileCount { get; set; } @@ -99,6 +127,7 @@ public class WorkflowRequestEvent : EventBase /// For an ACR inference request, the correlation ID is the Transaction ID in the original request. /// [JsonProperty(PropertyName = "correlation_id")] + [JsonPropertyName("correlation_id")] [Required] public string CorrelationId { get; set; } = default!; @@ -106,6 +135,7 @@ public class WorkflowRequestEvent : EventBase /// Gets or set the name of the bucket where the files in are stored. /// [JsonProperty(PropertyName = "bucket")] + [JsonPropertyName("bucket")] [Required] public string Bucket { get; set; } = default!; @@ -113,18 +143,21 @@ public class WorkflowRequestEvent : EventBase /// Gets or sets the service that received the original request. /// [JsonProperty(PropertyName = "trigger")] + [JsonPropertyName("trigger")] public DataOrigin DataTrigger { get; set; } = default!; /// /// Gets or sets the data origins that were involved in triggering this workflow request. /// [JsonProperty(PropertyName = "data_origins")] + [JsonPropertyName("data_origins")] public List DataOrigins { get; private set; } /// /// Gets or sets the time the data was received. /// [JsonProperty(PropertyName = "timestamp")] + [JsonPropertyName("timestamp")] [Required] public DateTime Timestamp { get; set; } @@ -134,6 +167,7 @@ public class WorkflowRequestEvent : EventBase /// In standard workflows this will not be set /// [JsonProperty(PropertyName = "workflow_instance_id")] + [JsonPropertyName("workflow_instance_id")] public string? WorkflowInstanceId { get; set; } = default; /// @@ -142,6 +176,7 @@ public class WorkflowRequestEvent : EventBase /// In standard workflows this will not be set /// [JsonProperty(PropertyName = "task_id")] + [JsonPropertyName("task_id")] public string? TaskId { get; set; } = default; /// @@ -149,6 +184,7 @@ public class WorkflowRequestEvent : EventBase /// [JsonProperty(PropertyName = "payload")] [Required, MinLength(1, ErrorMessage = "At least one file is required.")] + [JsonPropertyName("payload")] public IReadOnlyList Payload { get => _payload; } public WorkflowRequestEvent() diff --git a/src/Messaging/Monai.Deploy.Messaging.csproj b/src/Messaging/Monai.Deploy.Messaging.csproj index 4c5df90..3d8f483 100644 --- a/src/Messaging/Monai.Deploy.Messaging.csproj +++ b/src/Messaging/Monai.Deploy.Messaging.csproj @@ -22,6 +22,7 @@ enable false ..\.sonarlint\project-monai_monai-deploy-messagingcsharp.ruleset + true diff --git a/src/Messaging/Tests/WorkflowRequestMessageTest.cs b/src/Messaging/Tests/WorkflowRequestMessageTest.cs index 517d478..22a3553 100644 --- a/src/Messaging/Tests/WorkflowRequestMessageTest.cs +++ b/src/Messaging/Tests/WorkflowRequestMessageTest.cs @@ -32,7 +32,7 @@ public void ConvertsJsonMessageToMessage() Bucket = Guid.NewGuid().ToString(), DataTrigger = new DataOrigin { - DataType = DataType.DIMSE, + DataService = DataService.DIMSE, Source = Guid.NewGuid().ToString(), Destination = Guid.NewGuid().ToString(), }, @@ -46,28 +46,28 @@ public void ConvertsJsonMessageToMessage() }; input.DataOrigins.Add(new DataOrigin { - DataType = DataType.DICOMWEB, + DataService = DataService.DicomWeb, Source = Guid.NewGuid().ToString(), Destination = Guid.NewGuid().ToString(), }); input.DataOrigins.Add(new DataOrigin { - DataType = DataType.FHIR, + DataService = DataService.FHIR, Source = Guid.NewGuid().ToString(), Destination = Guid.NewGuid().ToString(), }); input.DataOrigins.Add(new DataOrigin { - DataType = DataType.DIMSE, + DataService = DataService.DIMSE, Source = Guid.NewGuid().ToString(), Destination = Guid.NewGuid().ToString(), }); input.DataOrigins.Add(new DataOrigin { - DataType = DataType.HL7, + DataService = DataService.HL7, Source = Guid.NewGuid().ToString(), Destination = Guid.NewGuid().ToString(), diff --git a/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj b/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj index 4628a97..a8b20e4 100644 --- a/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj +++ b/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj @@ -23,6 +23,7 @@ Monai.Deploy.Messaging.RabbitMQ false $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + true From 12cd750f35edcf7e9e06f7fbee7c43e6337a8e0b Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Thu, 24 Aug 2023 08:50:56 -0700 Subject: [PATCH 05/25] Update GitVersion.yml Signed-off-by: Victor Chang --- GitVersion.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GitVersion.yml b/GitVersion.yml index 77eb439..0bf6cdb 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -56,4 +56,4 @@ branches: ignore: sha: [] merge-message-formats: {} -next-version: 0.1.19 +next-version: 0.2.0 From 1f1c13f41cf95a47227d69031fa1afd1f0bff89a Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Thu, 24 Aug 2023 08:52:49 -0700 Subject: [PATCH 06/25] Update GitVersion.yml Signed-off-by: Victor Chang --- GitVersion.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GitVersion.yml b/GitVersion.yml index 0bf6cdb..f60383e 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -56,4 +56,4 @@ branches: ignore: sha: [] merge-message-formats: {} -next-version: 0.2.0 +next-version: 0.2.1 From 01cecc80d08f71a4e9b6c03c86c768781d249d0d Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Thu, 24 Aug 2023 08:54:21 -0700 Subject: [PATCH 07/25] Update GitVersion.yml +semver: patch Signed-off-by: Victor Chang --- GitVersion.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GitVersion.yml b/GitVersion.yml index f60383e..0bf6cdb 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -56,4 +56,4 @@ branches: ignore: sha: [] merge-message-formats: {} -next-version: 0.2.1 +next-version: 0.2.0 From 3e31a26af6b2f7d5578a0111dac6c011be46306d Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Thu, 24 Aug 2023 08:56:26 -0700 Subject: [PATCH 08/25] Release/0.2.1 (#219) +semver: patch From 50c561acf4a8d4d40b74c780d5c9565e2f8161b4 Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Thu, 24 Aug 2023 09:10:37 -0700 Subject: [PATCH 09/25] Release/0.2.2 (#221) +semver: patch --- GitVersion.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/GitVersion.yml b/GitVersion.yml index 0bf6cdb..d6d5b0e 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -57,3 +57,4 @@ ignore: sha: [] merge-message-formats: {} next-version: 0.2.0 + From f40903a613a119d06f14ceaf34f4983510df1951 Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Thu, 24 Aug 2023 09:16:30 -0700 Subject: [PATCH 10/25] Release/1.0.0 (#222) +semver: major --- src/Messaging/Events/ExportCompleteEvent.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Messaging/Events/ExportCompleteEvent.cs b/src/Messaging/Events/ExportCompleteEvent.cs index ac3de11..5a048df 100755 --- a/src/Messaging/Events/ExportCompleteEvent.cs +++ b/src/Messaging/Events/ExportCompleteEvent.cs @@ -66,7 +66,6 @@ public class ExportCompleteEvent : EventBase [Newtonsoft.Json.JsonConstructor] [System.Text.Json.Serialization.JsonConstructor] - public ExportCompleteEvent() { Status = ExportStatus.Unknown; From 98252746cdb3c8d3450baea3a276523a44fa8706 Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Thu, 24 Aug 2023 09:17:39 -0700 Subject: [PATCH 11/25] Update GitVersion.yml Signed-off-by: Victor Chang --- GitVersion.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/GitVersion.yml b/GitVersion.yml index d6d5b0e..35a1736 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -56,5 +56,4 @@ branches: ignore: sha: [] merge-message-formats: {} -next-version: 0.2.0 From 30ecc3e9c83d895f0319516738bb701a1dc8d23c Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Thu, 24 Aug 2023 09:18:38 -0700 Subject: [PATCH 12/25] Update GitVersion.yml Signed-off-by: Victor Chang --- GitVersion.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/GitVersion.yml b/GitVersion.yml index 35a1736..818aabb 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -56,4 +56,6 @@ branches: ignore: sha: [] merge-message-formats: {} +next-version: 1.0.0 + From 6313bd385731831013a88227739357cfa306720b Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Thu, 24 Aug 2023 09:24:03 -0700 Subject: [PATCH 13/25] Attempt to fix GitVersion versioning by removing next-version Signed-off-by: Victor Chang --- GitVersion.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/GitVersion.yml b/GitVersion.yml index 818aabb..ecd6f8e 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -56,6 +56,3 @@ branches: ignore: sha: [] merge-message-formats: {} -next-version: 1.0.0 - - From 0877434582c6b8c80e315168856b39424dce0b18 Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Tue, 12 Sep 2023 08:34:16 -0700 Subject: [PATCH 14/25] Release/1.0.1 (#224) +semver: patch prefix scope variables with `@` Signed-off-by: Victor Chang --- src/Messaging/Common/ExportRequestType.cs | 1 + src/Messaging/Events/WorkflowRequestEvent.cs | 6 ++++++ .../IServiceCollectionExtensionsTests.cs | 3 +++ src/Messaging/Tests/TaskCallbackEventTest.cs | 1 - .../Tests/WorkflowRequestMessageTest.cs | 6 +----- src/Plugins/RabbitMQ/Logger.cs | 20 +++++++++---------- .../RabbitMqMessagePublisherService.cs | 6 +++--- .../RabbitMqMessageSubscriberService.cs | 13 ++++++------ .../Tests/Integration/ReliabilityTest.cs | 1 - .../RabbitMqMessageSubscriberServiceTest.cs | 1 - 10 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/Messaging/Common/ExportRequestType.cs b/src/Messaging/Common/ExportRequestType.cs index 7309685..1cb3530 100755 --- a/src/Messaging/Common/ExportRequestType.cs +++ b/src/Messaging/Common/ExportRequestType.cs @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + namespace Monai.Deploy.Messaging.Common { public enum ExportRequestType diff --git a/src/Messaging/Events/WorkflowRequestEvent.cs b/src/Messaging/Events/WorkflowRequestEvent.cs index 982b430..ab26e82 100755 --- a/src/Messaging/Events/WorkflowRequestEvent.cs +++ b/src/Messaging/Events/WorkflowRequestEvent.cs @@ -67,28 +67,34 @@ public override bool Equals(object? obj) DataService.Equals(dataOrigin.DataService); } } + public enum DataService { /// /// Unknown data service /// Unknown, + /// /// Data received via DIMSE services /// DIMSE, + /// /// Data received via DICOMWeb services /// DicomWeb, + /// /// Data received via FHIR services /// FHIR, + /// /// Data received via HL7 services /// HL7, + /// /// Data received via ACR API call /// diff --git a/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs b/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs index 473ef81..21f2663 100644 --- a/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs +++ b/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs @@ -204,8 +204,11 @@ internal class GoodSubscriberService : IMessageBrokerSubscriberService public string Name => throw new NotImplementedException(); #pragma warning disable CS0067 // The event 'GoodSubscriberService.OnConnectionError' is never used + // event used by users of this library public event ConnectionErrorHandler? OnConnectionError; +#pragma warning restore CS0067 // The event 'GoodSubscriberService.OnConnectionError' is never used + #pragma warning restore CS0067 // The event 'GoodSubscriberService.OnConnectionError' is never used public void Acknowledge(MessageBase message) => throw new NotImplementedException(); diff --git a/src/Messaging/Tests/TaskCallbackEventTest.cs b/src/Messaging/Tests/TaskCallbackEventTest.cs index e279a26..21300f9 100644 --- a/src/Messaging/Tests/TaskCallbackEventTest.cs +++ b/src/Messaging/Tests/TaskCallbackEventTest.cs @@ -21,7 +21,6 @@ namespace Monai.Deploy.Messaging.Tests { - public class TaskCallbackEventTest { [Fact(DisplayName = "Validation throws on error")] diff --git a/src/Messaging/Tests/WorkflowRequestMessageTest.cs b/src/Messaging/Tests/WorkflowRequestMessageTest.cs index 22a3553..af86116 100644 --- a/src/Messaging/Tests/WorkflowRequestMessageTest.cs +++ b/src/Messaging/Tests/WorkflowRequestMessageTest.cs @@ -48,29 +48,25 @@ public void ConvertsJsonMessageToMessage() { DataService = DataService.DicomWeb, Source = Guid.NewGuid().ToString(), - Destination = Guid.NewGuid().ToString(), - + Destination = Guid.NewGuid().ToString(), }); input.DataOrigins.Add(new DataOrigin { DataService = DataService.FHIR, Source = Guid.NewGuid().ToString(), Destination = Guid.NewGuid().ToString(), - }); input.DataOrigins.Add(new DataOrigin { DataService = DataService.DIMSE, Source = Guid.NewGuid().ToString(), Destination = Guid.NewGuid().ToString(), - }); input.DataOrigins.Add(new DataOrigin { DataService = DataService.HL7, Source = Guid.NewGuid().ToString(), Destination = Guid.NewGuid().ToString(), - }); var files = new List() diff --git a/src/Plugins/RabbitMQ/Logger.cs b/src/Plugins/RabbitMQ/Logger.cs index 5cdcda5..f0e4532 100644 --- a/src/Plugins/RabbitMQ/Logger.cs +++ b/src/Plugins/RabbitMQ/Logger.cs @@ -23,7 +23,7 @@ public static partial class Logger { internal static readonly string LoggingScopeMessageApplication = "Message ID={0}. Application ID={1}."; - [LoggerMessage(EventId = 10000, Level = LogLevel.Information, Message = "Publishing message to {endpoint}/{virtualHost}. Exchange={exchange}, Routing Key={topic}.")] + [LoggerMessage(EventId = 10000, Level = LogLevel.Information, Message = "Publishing message to {endpoint}/{virtualHost}. Exchange: {exchange}, Topic: {topic}.")] public static partial void PublshingRabbitMQ(this ILogger logger, string endpoint, string virtualHost, string exchange, string topic); [LoggerMessage(EventId = 10001, Level = LogLevel.Debug, Message = "{ServiceName} connecting to {endpoint}/{virtualHost}.")] @@ -32,32 +32,32 @@ public static partial class Logger [LoggerMessage(EventId = 10002, Level = LogLevel.Information, Message = "Message received from queue {queue} for {topic}.")] public static partial void MessageReceivedFromQueue(this ILogger logger, string queue, string topic); - [LoggerMessage(EventId = 10003, Level = LogLevel.Information, Message = "Listening for messages from {endpoint}/{virtualHost}. Exchange={exchange}, Queue={queue}, Routing Key={topic}.")] + [LoggerMessage(EventId = 10003, Level = LogLevel.Information, Message = "Listening for messages from {endpoint}/{virtualHost}. Exchange: {exchange}, Queue: {queue}, Topic: {topic}.")] public static partial void SubscribeToRabbitMQQueue(this ILogger logger, string endpoint, string virtualHost, string exchange, string queue, string topic); - [LoggerMessage(EventId = 10004, Level = LogLevel.Information, Message = "Sending message acknowledgement for message {messageId}.")] + [LoggerMessage(EventId = 10004, Level = LogLevel.Information, Message = "Sending message acknowledgment. MessageId: {messageId}.")] public static partial void SendingAcknowledgement(this ILogger logger, string messageId); - [LoggerMessage(EventId = 10005, Level = LogLevel.Information, Message = "Ackowledge sent for message {messageId}. Event Duration {durationMilliseconds}")] + [LoggerMessage(EventId = 10005, Level = LogLevel.Information, Message = "Acknowledgment sent. Message ID: {messageId}. Event Duration: {durationMilliseconds}")] public static partial void AcknowledgementSent(this ILogger logger, string messageId, double durationMilliseconds); - [LoggerMessage(EventId = 10006, Level = LogLevel.Information, Message = "Sending nack message {messageId} and requeuing.")] + [LoggerMessage(EventId = 10006, Level = LogLevel.Information, Message = "Sending nack message. Message ID: {messageId} and requeuing.")] public static partial void SendingNAcknowledgement(this ILogger logger, string messageId); - [LoggerMessage(EventId = 10007, Level = LogLevel.Information, Message = "Nack message sent for message {messageId}, requeue={requeue}.")] + [LoggerMessage(EventId = 10007, Level = LogLevel.Information, Message = "Nack message sent. Message ID: {messageId}. Requeue: @{requeue}.")] public static partial void NAcknowledgementSent(this ILogger logger, string messageId, bool requeue); [LoggerMessage(EventId = 10008, Level = LogLevel.Information, Message = "Closing connections.")] public static partial void ClosingConnections(this ILogger logger); - [LoggerMessage(EventId = 10009, Level = LogLevel.Error, Message = "Invalid or corrupted message received: Queue={queueName}, Topic={topic}, Message ID={messageId}.")] + [LoggerMessage(EventId = 10009, Level = LogLevel.Error, Message = "Invalid or corrupted message received: Queue name: {queueName}. Topic: {topic}. Message ID: {messageId}.")] public static partial void InvalidMessage(this ILogger logger, string queueName, string topic, string messageId, Exception ex); - [LoggerMessage(EventId = 10010, Level = LogLevel.Error, Message = "Exception not handled by the subscriber's callback function: Queue={queueName}, Topic={topic}, Message ID={messageId}.")] + [LoggerMessage(EventId = 10010, Level = LogLevel.Error, Message = "Exception not handled by the subscriber's callback function: Queue name: {queueName}. Topic: {topic}. Message ID: {messageId}.")] public static partial void ErrorNotHandledByCallback(this ILogger logger, string queueName, string topic, string messageId, Exception ex); - [LoggerMessage(EventId = 10011, Level = LogLevel.Error, Message = "Exception thrown: Message ID={messageId}.")] - public static partial void Exception(this ILogger logger, string messageId, Exception ex); + [LoggerMessage(EventId = 10011, Level = LogLevel.Error, Message = "Error requeuing. Message ID: {messageId}.")] + public static partial void ErrorRequeue(this ILogger logger, string messageId, Exception ex); [LoggerMessage(EventId = 10012, Level = LogLevel.Error, Message = "Health check failure.")] public static partial void HealthCheckError(this ILogger logger, Exception ex); diff --git a/src/Plugins/RabbitMQ/Publisher/RabbitMqMessagePublisherService.cs b/src/Plugins/RabbitMQ/Publisher/RabbitMqMessagePublisherService.cs index cf49876..295c819 100755 --- a/src/Plugins/RabbitMQ/Publisher/RabbitMqMessagePublisherService.cs +++ b/src/Plugins/RabbitMQ/Publisher/RabbitMqMessagePublisherService.cs @@ -101,9 +101,9 @@ public Task Publish(string topic, Message message) using var loggingScope = _logger.BeginScope(new LoggingDataDictionary { - ["MessageId"] = message.MessageId, - ["ApplicationId"] = message.ApplicationId, - ["CorrelationId"] = message.CorrelationId + ["@messageId"] = message.MessageId, + ["@applicationId"] = message.ApplicationId, + ["@correlationId"] = message.CorrelationId }); _logger.PublshingRabbitMQ(_endpoint, _virtualHost, _exchange, topic); diff --git a/src/Plugins/RabbitMQ/Subscriber/RabbitMqMessageSubscriberService.cs b/src/Plugins/RabbitMQ/Subscriber/RabbitMqMessageSubscriberService.cs index 017dc64..5155850 100755 --- a/src/Plugins/RabbitMQ/Subscriber/RabbitMqMessageSubscriberService.cs +++ b/src/Plugins/RabbitMQ/Subscriber/RabbitMqMessageSubscriberService.cs @@ -185,10 +185,10 @@ private EventingBasicConsumer CreateConsumer(Func { - ["MessageId"] = eventArgs.BasicProperties.MessageId, - ["ApplicationId"] = eventArgs.BasicProperties.AppId, - ["CorrelationId"] = eventArgs.BasicProperties.CorrelationId, - ["RecievedTime"] = DateTime.UtcNow + ["@messageId"] = eventArgs.BasicProperties.MessageId, + ["@applicationId"] = eventArgs.BasicProperties.AppId, + ["@correlationId"] = eventArgs.BasicProperties.CorrelationId, + ["@recievedTime"] = DateTime.UtcNow }); _logger.MessageReceivedFromQueue(queueDeclareResult.QueueName, eventArgs.RoutingKey); @@ -274,7 +274,7 @@ public void Acknowledge(MessageBase message) using var loggingScope = _logger.BeginScope(new LoggingDataDictionary { - ["EventDuration"] = eventDuration + ["@eventDuration"] = eventDuration }); _logger.AcknowledgementSent(message.MessageId, eventDuration); } @@ -291,7 +291,7 @@ public async Task RequeueWithDelay(MessageBase message) } catch (Exception e) { - _logger.Exception($"Requeue delay failed.", e); + _logger.ErrorRequeue($"Requeue delay failed.", e); Reject(message, true); } } @@ -379,6 +379,7 @@ private static MessageReceivedEventArgs CreateMessage(string topic, BasicDeliver deliveryTag: eventArgs.DeliveryTag.ToString(CultureInfo.InvariantCulture)), CancellationToken.None); } + private (bool exists, bool accessable) QueueExists(string queueName) { var testChannel = _rabbitMqConnectionFactory.MakeTempChannel(ChannelType.Subscriber, _endpoint, _username, _password, _virtualHost, _useSSL, _portNumber); diff --git a/src/Plugins/RabbitMQ/Tests/Integration/ReliabilityTest.cs b/src/Plugins/RabbitMQ/Tests/Integration/ReliabilityTest.cs index 6bb2448..e49f8cd 100755 --- a/src/Plugins/RabbitMQ/Tests/Integration/ReliabilityTest.cs +++ b/src/Plugins/RabbitMQ/Tests/Integration/ReliabilityTest.cs @@ -144,7 +144,6 @@ public void GivenMessages_WhenPublished_SubscribeShallReceiveAndAckMessages() #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously } - Parallel.For(0, MessageCount, new ParallelOptions { MaxDegreeOfParallelism = MaxDegreeOfParallelism }, i => { var guid = Guid.NewGuid().ToString(); diff --git a/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs b/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs index 7e3412a..a1e1439 100755 --- a/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs +++ b/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs @@ -375,7 +375,6 @@ await Task.Run(() => s_messageReceived = args.Message; service.Acknowledge(args.Message); }).ConfigureAwait(false); - }); }; Assert.Throws(asyncAct); From 9a839cd30bef523df93be1fddd6b8a0fad2da5c7 Mon Sep 17 00:00:00 2001 From: Neil South <104848880+neildsouth@users.noreply.github.com> Date: Wed, 11 Oct 2023 17:18:12 +0100 Subject: [PATCH 15/25] Update IServiceCollectionExtensionsTests.cs Signed-off-by: Neil South <104848880+neildsouth@users.noreply.github.com> --- src/Messaging/Tests/IServiceCollectionExtensionsTests.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs b/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs index c9137fe..fc1126d 100644 --- a/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs +++ b/src/Messaging/Tests/IServiceCollectionExtensionsTests.cs @@ -207,10 +207,6 @@ internal class GoodSubscriberService : IMessageBrokerSubscriberService // event used by users of this library public event ConnectionErrorHandler? OnConnectionError; -#pragma warning restore CS0067 // The event 'GoodSubscriberService.OnConnectionError' is never used - -#pragma warning restore CS0067 // The event 'GoodSubscriberService.OnConnectionError' is never used - #pragma warning restore CS0067 // The event 'GoodSubscriberService.OnConnectionError' is never used public void Acknowledge(MessageBase message) => throw new NotImplementedException(); From d41cfbe2f40cd7ce8e4d45745e6306e87a6c4444 Mon Sep 17 00:00:00 2001 From: Neil South Date: Mon, 23 Oct 2023 11:29:33 +0100 Subject: [PATCH 16/25] adding comment Signed-off-by: Neil South --- src/Messaging/Events/ExportRequestEvent.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Messaging/Events/ExportRequestEvent.cs b/src/Messaging/Events/ExportRequestEvent.cs index 0f0b036..d0274ba 100755 --- a/src/Messaging/Events/ExportRequestEvent.cs +++ b/src/Messaging/Events/ExportRequestEvent.cs @@ -87,6 +87,9 @@ public class ExportRequestEvent : EventBase [JsonPropertyName("error_messages")] public List ErrorMessages { get; private set; } + /// + /// Gets or set the payloadId for external apps sending data back + /// [JsonProperty(PropertyName = "file_id")] [JsonPropertyName("file_id")] public string? PayloadId { get; set; } From b087cd7db7c771db8b8bd66c7f868569ff22e435 Mon Sep 17 00:00:00 2001 From: Neil South Date: Tue, 24 Oct 2023 10:45:45 +0100 Subject: [PATCH 17/25] unify naming Signed-off-by: Neil South --- src/Messaging/Events/ExportRequestEvent.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Messaging/Events/ExportRequestEvent.cs b/src/Messaging/Events/ExportRequestEvent.cs index d0274ba..ba77496 100755 --- a/src/Messaging/Events/ExportRequestEvent.cs +++ b/src/Messaging/Events/ExportRequestEvent.cs @@ -90,8 +90,8 @@ public class ExportRequestEvent : EventBase /// /// Gets or set the payloadId for external apps sending data back /// - [JsonProperty(PropertyName = "file_id")] - [JsonPropertyName("file_id")] + [JsonProperty(PropertyName = "payload_id")] + [JsonPropertyName("payload_id")] public string? PayloadId { get; set; } /// From 6fb82bf637922b4dbc996a6310e5002602da15f1 Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Fri, 5 Jan 2024 08:17:32 -0800 Subject: [PATCH 18/25] Release 2.0.0 (#273) +semver: major * Update project to .NET 8 (#270) Signed-off-by: Victor Chang --- .github/workflows/ci.yml | 14 +- doc/dependency_decisions.yml | 353 ++--- global.json | 2 +- .../API/IMessageBrokerSubscriberService.cs | 1 - src/Messaging/Common/LoggingDataDictionary.cs | 6 - .../Common/MessageConversionException.cs | 8 - .../Common/MessageValidationException.cs | 6 - src/Messaging/Common/ServiceException.cs | 6 - .../Configuration/ConfigurationException.cs | 7 - src/Messaging/Monai.Deploy.Messaging.csproj | 22 +- .../Tests/Common/ArtifactTypesTests.cs | 2 +- .../Tests/Monai.Deploy.Messaging.Tests.csproj | 24 +- .../Monai.Deploy.Messaging.RabbitMQ.csproj | 18 +- .../Tests/Integration/HealthCheckTest.cs | 4 +- ...nai.Deploy.Messaging.RabbitMQ.Tests.csproj | 25 +- .../Tests/Unit/RabbitMQHealthCheckTest.cs | 4 +- .../RabbitMqMessagePublisherServiceTest.cs | 2 +- .../RabbitMqMessageSubscriberServiceTest.cs | 16 +- third-party-licenses.md | 1151 ++++++++++++----- 19 files changed, 1087 insertions(+), 584 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e9a606..f639174 100755 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-dotnet@v3 with: - dotnet-version: "6.0.x" + dotnet-version: "8.0.x" - name: Enable Homebrew run: echo "/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin" >> $GITHUB_PATH @@ -102,7 +102,7 @@ jobs: - uses: actions/setup-dotnet@v3 with: - dotnet-version: "6.0.x" + dotnet-version: "8.0.x" - name: Enable NuGet cache uses: actions/cache@v3.3.1 @@ -146,7 +146,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - run: find ~+ -type f -name "*.Test.csproj" | xargs -L1 dotnet test -c ${{ env.BUILD_CONFIG }} -v=minimal -r "${{ env.TEST_RESULTS }}" --collect:"XPlat Code Coverage" --settings coverlet.runsettings + run: find ~+ -type f -name "*.Tests.csproj" | xargs -L1 dotnet test -c ${{ env.BUILD_CONFIG }} -v=minimal --results-directory "${{ env.TEST_RESULTS }}" --collect:"XPlat Code Coverage" --settings coverlet.runsettings working-directory: ./src - name: Stop docker-compose @@ -163,7 +163,7 @@ jobs: - uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} - directory: "src/${{ env.TEST_RESULTS }}" + directory: "src/" files: "**/coverage.opencover.xml" flags: unittests name: codecov-umbrella @@ -195,7 +195,7 @@ jobs: - uses: actions/setup-dotnet@v3 with: - dotnet-version: "6.0.x" + dotnet-version: "8.0.x" - name: Enable NuGet cache uses: actions/cache@v3.3.1 @@ -275,7 +275,7 @@ jobs: env: NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} with: - dotnet-version: "6.0.x" + dotnet-version: "8.0.x" source-url: https://nuget.pkg.github.com/Project-MONAI/index.json - name: Publish to GitHub @@ -300,7 +300,7 @@ jobs: env: NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} with: - dotnet-version: "6.0.x" + dotnet-version: "8.0.x" source-url: https://nuget.pkg.github.com/Project-MONAI/index.json - name: Publish to GitHub diff --git a/doc/dependency_decisions.yml b/doc/dependency_decisions.yml index 4b9fd9b..cfe1c23 100755 --- a/doc/dependency_decisions.yml +++ b/doc/dependency_decisions.yml @@ -4,7 +4,7 @@ - :who: mocsharp :why: MIT (https://github.com/ardalis/GuardClauses.Analyzers/raw/master/LICENSE) :versions: - - 4.1.1 + - 4.3.0 :when: 2022-08-16 21:39:30.077666354 Z - - :approve - Castle.Core @@ -13,103 +13,96 @@ :versions: - 5.1.1 :when: 2023-08-16 16:49:26.950721112 Z -- - :approve - - coverlet.collector - - :who: mocsharp - :why: MIT (https://github.com/coverlet-coverage/coverlet/raw/master/LICENSE) - :versions: - - 6.0.0 - :when: 2022-08-16 21:40:21.855388365 Z -- - :approve - - JetBrains.Annotations - - :who: mocsharp - :why: MIT (https://github.com/JetBrains/JetBrains.Annotations/raw/main/license.md) - :versions: - - 2021.3.0 - :when: 2022-08-16 21:39:36.950721112 Z - - :approve - Microsoft.AspNetCore.TestHost - :who: woodheadio :why: MIT (https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) :versions: - - 6.0.21 + - 8.0.0 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.CodeCoverage - :who: woodheadio :why: MIT (https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) :versions: - - 17.7.0 + - 17.8.0 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.Extensions.Configuration.Abstractions - :who: mocsharp :why: MIT (https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) :versions: - - 6.0.0 + - 8.0.0 :when: 2022-08-16 21:39:38.225591162 Z - - :approve - Microsoft.Extensions.DependencyInjection.Abstractions - :who: mocsharp :why: MIT (https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) :versions: - - 6.0.0 + - 8.0.0 :when: 2022-08-16 21:39:41.552489638 Z +- - :approve + - Microsoft.Extensions.Diagnostics.Abstractions + - :who: woodheadio + :why: MIT (https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) + :versions: + - 8.0.0 + :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.Extensions.Diagnostics.HealthChecks - :who: woodheadio :why: MIT (https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) :versions: - - 6.0.21 + - 8.0.0 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - :who: woodheadio :why: MIT (https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) :versions: - - 6.0.21 + - 8.0.0 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.Extensions.FileProviders.Abstractions - :who: mocsharp :why: MIT (https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) :versions: - - 6.0.0 + - 8.0.0 :when: 2022-08-16 21:39:41.978000106 Z - - :approve - Microsoft.Extensions.Hosting.Abstractions - :who: mocsharp :why: MIT (https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) :versions: - - 6.0.0 + - 8.0.0 :when: 2022-08-16 21:39:43.643788345 Z - - :approve - Microsoft.Extensions.Logging.Abstractions - :who: mocsharp :why: MIT (https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) :versions: - - 6.0.4 + - 8.0.0 :when: 2022-08-16 21:39:44.471693654 Z - - :approve - Microsoft.Extensions.Options - :who: mocsharp :why: MIT (https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) :versions: - - 6.0.0 + - 8.0.0 :when: 2022-08-16 21:39:46.980521333 Z - - :approve - Microsoft.Extensions.Primitives - :who: mocsharp :why: MIT (https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) :versions: - - 6.0.0 + - 8.0.0 :when: 2022-08-16 21:39:47.818886422 Z - - :approve - Microsoft.NET.Test.Sdk - :who: woodheadio :why: MIT (https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) :versions: - - 17.7.0 + - 17.8.0 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.NETCore.Platforms @@ -130,14 +123,14 @@ - :who: woodheadio :why: MIT (https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) :versions: - - 17.7.0 + - 17.8.0 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.TestPlatform.TestHost - :who: woodheadio :why: MIT (https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) :versions: - - 17.7.0 + - 17.8.0 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - Microsoft.Win32.Primitives @@ -151,7 +144,7 @@ - :who: woodheadio :why: BSD 3-Clause License ( https://raw.githubusercontent.com/moq/moq4/main/License.txt) :versions: - - 4.20.69 + - 4.20.70 :when: 2023-08-16 16:49:26.950721112 Z - - :approve - NETStandard.Library @@ -179,127 +172,22 @@ - :who: mocsharp :why: MIT ( https://licenses.nuget.org/MIT) :versions: - - 7.2.4 + - 8.2.0 :when: 2022-11-09 18:57:32.294717110 Z - - :approve - - RabbitMQ.Client - - :who: mocsharp - :why: Apache-2.0 (https://github.com/rabbitmq/rabbitmq-dotnet-client/raw/main/LICENSE-APACHE2) - :versions: - - 6.5.0 - :when: 2022-08-16 21:39:52.474284611 Z -- - :approve - - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:22.289423980 Z -- - :approve - - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:22.712579013 Z -- - :approve - - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:23.140549879 Z -- - :approve - - runtime.native.System - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:23.578082745 Z -- - :approve - - runtime.native.System.IO.Compression - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:23.998148184 Z -- - :approve - - runtime.native.System.Net.Http - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:24.434111736 Z -- - :approve - - runtime.native.System.Security.Cryptography.Apple - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:24.868505894 Z -- - :approve - - runtime.native.System.Security.Cryptography.OpenSsl - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:25.303742409 Z -- - :approve - - runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:25.719795625 Z -- - :approve - - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:26.152928791 Z -- - :approve - - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:26.579463736 Z -- - :approve - - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl + - Polly.Core - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:27.001874526 Z -- - :approve - - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:27.431289100 Z -- - :approve - - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) - :versions: - - 4.3.0 - :when: 2022-08-16 21:40:27.853144921 Z -- - :approve - - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl - - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :why: MIT ( https://licenses.nuget.org/MIT) :versions: - - 4.3.0 - :when: 2022-08-16 21:40:28.265837209 Z + - 8.2.0 + :when: 2022-11-09 18:57:32.294717110 Z - - :approve - - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl + - RabbitMQ.Client - :who: mocsharp - :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :why: Apache-2.0 (https://github.com/rabbitmq/rabbitmq-dotnet-client/raw/main/LICENSE-APACHE2) :versions: - - 4.3.0 - :when: 2022-08-16 21:40:28.686857664 Z + - 6.8.1 + :when: 2022-08-16 21:39:52.474284611 Z - - :approve - System.AppContext - :who: mocsharp @@ -314,13 +202,6 @@ :versions: - 4.3.0 :when: 2022-08-16 21:39:53.322949012 Z -- - :approve - - System.Buffers - - :who: mocsharp - :why: MIT (https://github.com/dotnet/corefx/raw/master/LICENSE.TXT) - :versions: - - 4.5.1 - :when: 2022-08-16 21:39:53.747562166 Z - - :approve - System.Collections - :who: mocsharp @@ -355,6 +236,7 @@ :why: MIT (https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) :versions: - 4.3.0 + - 8.0.0 :when: 2022-08-16 21:39:56.310443725 Z - - :approve - System.Diagnostics.EventLog @@ -410,14 +292,14 @@ - :who: samrooke :why: MIT (https://github.com/TestableIO/System.IO.Abstractions/raw/main/LICENSE) :versions: - - 17.2.3 + - 20.0.4 :when: 2022-12-14 12:28:00.728481602 Z - - :approve - System.IO.Abstractions.TestingHelpers - :who: samrooke :why: MIT (https://github.com/TestableIO/System.IO.Abstractions/raw/main/LICENSE) :versions: - - 17.2.3 + - 20.0.4 :when: 2022-12-14 12:28:00.728481602 Z - - :approve - System.IO.Compression @@ -452,7 +334,7 @@ - :who: mocsharp :why: MIT (https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) :versions: - - 6.0.3 + - 8.0.0 :when: 2022-08-16 23:06:53.356642197 Z - - :approve - System.Linq @@ -573,13 +455,6 @@ :versions: - 4.3.0 :when: 2022-08-16 21:40:09.951778503 Z -- - :approve - - System.Runtime.CompilerServices.Unsafe - - :who: mocsharp - :why: MIT (https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) - :versions: - - 6.0.0 - :when: 2022-08-16 21:40:10.372835347 Z - - :approve - System.Runtime.Extensions - :who: mocsharp @@ -734,12 +609,152 @@ :versions: - 4.3.0 :when: 2022-08-16 21:40:21.430356356 Z +- - :approve + - TestableIO.System.IO.Abstractions + - :who: mocsharp + :why: MIT (https://github.com/TestableIO/System.IO.Abstractions/raw/main/LICENSE) + :versions: + - 20.0.4 + :when: 2022-08-16 21:40:21.430356356 Z +- - :approve + - TestableIO.System.IO.Abstractions.TestingHelpers + - :who: mocsharp + :why: MIT (https://github.com/TestableIO/System.IO.Abstractions/raw/main/LICENSE) + :versions: + - 20.0.4 + :when: 2022-08-16 21:40:21.430356356 Z +- - :approve + - TestableIO.System.IO.Abstractions.Wrappers + - :who: mocsharp + :why: MIT (https://github.com/TestableIO/System.IO.Abstractions/raw/main/LICENSE) + :versions: + - 20.0.4 + :when: 2022-08-16 21:40:21.430356356 Z +- - :approve + - coverlet.collector + - :who: mocsharp + :why: MIT (https://github.com/coverlet-coverage/coverlet/raw/master/LICENSE) + :versions: + - 6.0.0 + :when: 2022-08-16 21:40:21.855388365 Z +- - :approve + - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:22.289423980 Z +- - :approve + - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:22.712579013 Z +- - :approve + - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:23.140549879 Z +- - :approve + - runtime.native.System + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:23.578082745 Z +- - :approve + - runtime.native.System.IO.Compression + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:23.998148184 Z +- - :approve + - runtime.native.System.Net.Http + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:24.434111736 Z +- - :approve + - runtime.native.System.Security.Cryptography.Apple + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:24.868505894 Z +- - :approve + - runtime.native.System.Security.Cryptography.OpenSsl + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:25.303742409 Z +- - :approve + - runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:25.719795625 Z +- - :approve + - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:26.152928791 Z +- - :approve + - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:26.579463736 Z +- - :approve + - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:27.001874526 Z +- - :approve + - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:27.431289100 Z +- - :approve + - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:27.853144921 Z +- - :approve + - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:28.265837209 Z +- - :approve + - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl + - :who: mocsharp + :why: MICROSOFT .NET LIBRARY License ( http://go.microsoft.com/fwlink/?LinkId=329770) + :versions: + - 4.3.0 + :when: 2022-08-16 21:40:28.686857664 Z - - :approve - xunit - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) :versions: - - 2.5.0 + - 2.6.4 :when: 2022-08-16 21:40:29.166018542 Z - - :approve - xunit.abstractions @@ -753,40 +768,40 @@ - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit.analyzers/master/LICENSE) :versions: - - 1.2.0 + - 1.8.0 :when: 2022-08-16 21:40:30.047067134 Z - - :approve - xunit.assert - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) :versions: - - 2.5.0 + - 2.6.4 :when: 2022-08-16 21:40:30.526718458 Z - - :approve - xunit.core - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) :versions: - - 2.5.0 + - 2.6.4 :when: 2022-08-16 21:40:30.973515441 Z - - :approve - xunit.extensibility.core - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) :versions: - - 2.5.0 + - 2.6.4 :when: 2022-08-16 21:40:31.401607230 Z - - :approve - xunit.extensibility.execution - :who: mocsharp :why: Apache-2.0 ( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) :versions: - - 2.5.0 + - 2.6.4 :when: 2022-08-16 21:40:31.845685693 Z - - :approve - xunit.runner.visualstudio - :who: mocsharp :why: MIT ( https://licenses.nuget.org/MIT) :versions: - - 2.5.0 - :when: 2022-08-16 21:40:32.294717110 Z \ No newline at end of file + - 2.5.6 + :when: 2022-08-16 21:40:32.294717110 Z diff --git a/global.json b/global.json index d6c2c37..501e79a 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "6.0.100", + "version": "8.0.100", "rollForward": "latestFeature" } } \ No newline at end of file diff --git a/src/Messaging/API/IMessageBrokerSubscriberService.cs b/src/Messaging/API/IMessageBrokerSubscriberService.cs index 65941d6..9d22f0e 100755 --- a/src/Messaging/API/IMessageBrokerSubscriberService.cs +++ b/src/Messaging/API/IMessageBrokerSubscriberService.cs @@ -33,7 +33,6 @@ public interface IMessageBrokerSubscriberService : IDisposable /// /// Subscribe to a message topic and queue and executes messageReceivedCallback asynchronously for every message that is received. - /// Either provide a topic, a queue or both. /// A queue is generated if the name of the queue is not provided. /// diff --git a/src/Messaging/Common/LoggingDataDictionary.cs b/src/Messaging/Common/LoggingDataDictionary.cs index eabc4b7..aa18d55 100644 --- a/src/Messaging/Common/LoggingDataDictionary.cs +++ b/src/Messaging/Common/LoggingDataDictionary.cs @@ -15,21 +15,15 @@ */ using System.Globalization; -using System.Runtime.Serialization; namespace Monai.Deploy.Messaging.Common { - [Serializable] public class LoggingDataDictionary : Dictionary where TKey : notnull { public LoggingDataDictionary() { } - protected LoggingDataDictionary(SerializationInfo info, StreamingContext context) : base(info, context) - { - } - public override string ToString() { var pairs = this.Select(x => string.Format(CultureInfo.InvariantCulture, "{0}={1}", x.Key, x.Value)); diff --git a/src/Messaging/Common/MessageConversionException.cs b/src/Messaging/Common/MessageConversionException.cs index 16c3b1f..11987f4 100644 --- a/src/Messaging/Common/MessageConversionException.cs +++ b/src/Messaging/Common/MessageConversionException.cs @@ -14,12 +14,8 @@ * limitations under the License. */ -// -using System.Runtime.Serialization; - namespace Monai.Deploy.Messaging.Common { - [Serializable] public class MessageConversionException : Exception { public MessageConversionException() @@ -33,9 +29,5 @@ public MessageConversionException(string message) : base(message) public MessageConversionException(string message, Exception innerException) : base(message, innerException) { } - - protected MessageConversionException(SerializationInfo info, StreamingContext context) : base(info, context) - { - } } } diff --git a/src/Messaging/Common/MessageValidationException.cs b/src/Messaging/Common/MessageValidationException.cs index a6052ce..54ed4cc 100644 --- a/src/Messaging/Common/MessageValidationException.cs +++ b/src/Messaging/Common/MessageValidationException.cs @@ -15,11 +15,9 @@ */ using System.ComponentModel.DataAnnotations; -using System.Runtime.Serialization; namespace Monai.Deploy.Messaging.Common { - [Serializable] public class MessageValidationException : Exception { public MessageValidationException(List errors) @@ -27,10 +25,6 @@ public MessageValidationException(List errors) { } - protected MessageValidationException(SerializationInfo info, StreamingContext context) : base(info, context) - { - } - private static string FormatMessage(List errors) { if (errors is null || errors.Count == 0) diff --git a/src/Messaging/Common/ServiceException.cs b/src/Messaging/Common/ServiceException.cs index 6bdaf30..000396b 100644 --- a/src/Messaging/Common/ServiceException.cs +++ b/src/Messaging/Common/ServiceException.cs @@ -14,8 +14,6 @@ * limitations under the License. */ -using System.Runtime.Serialization; - namespace Monai.Deploy.Messaging.Common { public class ServiceException : Exception @@ -31,9 +29,5 @@ public ServiceException(string? message) : base(message) public ServiceException(string? message, Exception? innerException) : base(message, innerException) { } - - protected ServiceException(SerializationInfo info, StreamingContext context) : base(info, context) - { - } } } diff --git a/src/Messaging/Configuration/ConfigurationException.cs b/src/Messaging/Configuration/ConfigurationException.cs index 461d19e..1931bfb 100644 --- a/src/Messaging/Configuration/ConfigurationException.cs +++ b/src/Messaging/Configuration/ConfigurationException.cs @@ -14,19 +14,12 @@ * limitations under the License. */ -using System.Runtime.Serialization; - namespace Monai.Deploy.Messaging.Configuration { - [Serializable] public class ConfigurationException : Exception { public ConfigurationException(string? message) : base(message) { } - - protected ConfigurationException(SerializationInfo info, StreamingContext context) : base(info, context) - { - } } } diff --git a/src/Messaging/Monai.Deploy.Messaging.csproj b/src/Messaging/Monai.Deploy.Messaging.csproj index 3d8f483..8e89a1d 100644 --- a/src/Messaging/Monai.Deploy.Messaging.csproj +++ b/src/Messaging/Monai.Deploy.Messaging.csproj @@ -1,4 +1,4 @@ - - - net6.0 + net8.0 latest enable enable @@ -24,7 +23,6 @@ ..\.sonarlint\project-monai_monai-deploy-messagingcsharp.ruleset true - Monai.Deploy.Messaging 0.1.0 @@ -39,45 +37,37 @@ Apache-2.0 True - - preview - preview - - - - True \ - - - + + + - - + \ No newline at end of file diff --git a/src/Messaging/Tests/Common/ArtifactTypesTests.cs b/src/Messaging/Tests/Common/ArtifactTypesTests.cs index deb4d05..54b671f 100755 --- a/src/Messaging/Tests/Common/ArtifactTypesTests.cs +++ b/src/Messaging/Tests/Common/ArtifactTypesTests.cs @@ -37,7 +37,7 @@ public void ArtifactTypeInvalid_ShouldReturnFalse() [Fact] public void ArtifactTypeNull_ShouldReturnFalse() { - Assert.False(ArtifactTypes.Validate(null)); + Assert.False(ArtifactTypes.Validate(null!)); } [Fact] diff --git a/src/Messaging/Tests/Monai.Deploy.Messaging.Tests.csproj b/src/Messaging/Tests/Monai.Deploy.Messaging.Tests.csproj index 3ca0050..0be0159 100644 --- a/src/Messaging/Tests/Monai.Deploy.Messaging.Tests.csproj +++ b/src/Messaging/Tests/Monai.Deploy.Messaging.Tests.csproj @@ -1,4 +1,4 @@ - - - - net6.0 + net8.0 enable - false - preview - preview - - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -43,11 +37,9 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - + - - - + \ No newline at end of file diff --git a/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj b/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj index a8b20e4..3ce4a6c 100644 --- a/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj +++ b/src/Plugins/RabbitMQ/Monai.Deploy.Messaging.RabbitMQ.csproj @@ -13,11 +13,9 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - net6.0 + net8.0 enable latest Monai.Deploy.Messaging.RabbitMQ @@ -25,7 +23,6 @@ $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb true - Monai.Deploy.Messaging.RabbitMQ 0.1.0 @@ -39,36 +36,29 @@ Apache-2.0 True - - preview - preview - - - - - + + - - + \ No newline at end of file diff --git a/src/Plugins/RabbitMQ/Tests/Integration/HealthCheckTest.cs b/src/Plugins/RabbitMQ/Tests/Integration/HealthCheckTest.cs index 767fdf7..9f715a0 100644 --- a/src/Plugins/RabbitMQ/Tests/Integration/HealthCheckTest.cs +++ b/src/Plugins/RabbitMQ/Tests/Integration/HealthCheckTest.cs @@ -33,13 +33,13 @@ public HealthCheckTest() [Fact] public async Task GivenAWebServer_WhenRabbitMqHealthChecksAreRegistered_ExpectToReturnInfoFromHealthEndpoint() { - using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer()).StartAsync().ConfigureAwait(false); + using var host = await new HostBuilder().ConfigureWebHost(SetupWebServer()).StartAsync(); var server = host.GetTestServer(); server.BaseAddress = new Uri("https://example.com/"); var client = server.CreateClient(); - var responseMessage = await client.GetAsync("health").ConfigureAwait(false); + var responseMessage = await client.GetAsync("health"); Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode); } diff --git a/src/Plugins/RabbitMQ/Tests/Monai.Deploy.Messaging.RabbitMQ.Tests.csproj b/src/Plugins/RabbitMQ/Tests/Monai.Deploy.Messaging.RabbitMQ.Tests.csproj index 45af62c..24efbe2 100644 --- a/src/Plugins/RabbitMQ/Tests/Monai.Deploy.Messaging.RabbitMQ.Tests.csproj +++ b/src/Plugins/RabbitMQ/Tests/Monai.Deploy.Messaging.RabbitMQ.Tests.csproj @@ -13,36 +13,28 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - net6.0 + net8.0 enable enable - false - - preview - preview - - - - - - - + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -50,11 +42,10 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all + - - - + \ No newline at end of file diff --git a/src/Plugins/RabbitMQ/Tests/Unit/RabbitMQHealthCheckTest.cs b/src/Plugins/RabbitMQ/Tests/Unit/RabbitMQHealthCheckTest.cs index d0c819c..71c020c 100644 --- a/src/Plugins/RabbitMQ/Tests/Unit/RabbitMQHealthCheckTest.cs +++ b/src/Plugins/RabbitMQ/Tests/Unit/RabbitMQHealthCheckTest.cs @@ -46,7 +46,7 @@ public async Task CheckHealthAsync_WhenFailed_ReturnUnhealthy() .Throws(new Exception("error")); var healthCheck = new RabbitMQHealthCheck(_connectionFactory.Object, _options, _logger.Object, (d) => { }); - var results = await healthCheck.CheckHealthAsync(new HealthCheckContext()).ConfigureAwait(false); + var results = await healthCheck.CheckHealthAsync(new HealthCheckContext()); Assert.Equal(HealthStatus.Unhealthy, results.Status); Assert.NotNull(results.Exception); @@ -61,7 +61,7 @@ public async Task CheckHealthAsync_WhenSucceeds_ReturnHealthy() _connectionFactory.Setup(p => p.CreateChannel(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(channel.Object); var healthCheck = new RabbitMQHealthCheck(_connectionFactory.Object, _options, _logger.Object, (d) => { }); - var results = await healthCheck.CheckHealthAsync(new HealthCheckContext()).ConfigureAwait(false); + var results = await healthCheck.CheckHealthAsync(new HealthCheckContext()); Assert.Equal(HealthStatus.Healthy, results.Status); Assert.Null(results.Exception); diff --git a/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessagePublisherServiceTest.cs b/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessagePublisherServiceTest.cs index f9b8e48..7a26f26 100644 --- a/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessagePublisherServiceTest.cs +++ b/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessagePublisherServiceTest.cs @@ -71,7 +71,7 @@ public async Task PublishesAMessage() var jsonMessage = new JsonMessage("hello world", Guid.NewGuid().ToString(), Guid.NewGuid().ToString()); var message = jsonMessage.ToMessage(); - await service.Publish("topic", message).ConfigureAwait(false); + await service.Publish("topic", message); basicProperties.VerifySet(p => p.Persistent = true); basicProperties.VerifySet(p => p.ContentType = jsonMessage.ContentType); diff --git a/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs b/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs index a1e1439..bdb07a8 100755 --- a/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs +++ b/src/Plugins/RabbitMQ/Tests/Unit/RabbitMqMessageSubscriberServiceTest.cs @@ -75,7 +75,7 @@ public void CleanupOnDispose() private static Message? s_messageReceived; [Fact(DisplayName = "Subscribes to a topic")] - public void SubscribesToATopic() + public async Task SubscribesToATopic() { _options.Value.SubscriberSettings.Add(ConfigurationKeys.EndPoint, "endpoint"); _options.Value.SubscriberSettings.Add(ConfigurationKeys.Username, "username"); @@ -143,7 +143,7 @@ public void SubscribesToATopic() Assert.Equal("topic", args.Message.MessageDescription); Assert.Equal(message.MessageId, args.Message.MessageId); Assert.Equal(message.Body, args.Message.Body); - await Task.CompletedTask.ConfigureAwait(false); + await Task.CompletedTask; }); service.SubscribeAsync("topic", "queue", async (args) => @@ -152,11 +152,11 @@ await Task.Run(() => { s_messageReceived = args.Message; service.Acknowledge(args.Message); - }).ConfigureAwait(false); + }); }); // wait for it to pick up meassage - Task.Delay(500).GetAwaiter().GetResult(); + await Task.Delay(500); Assert.NotNull(s_messageReceived); Assert.Equal(message.ApplicationId, s_messageReceived.ApplicationId); @@ -170,7 +170,7 @@ await Task.Run(() => } [Fact(DisplayName = "Subscribes to a topic and previously created dead-letter queue is down")] - public void SubscribesToATopicAndDeadLetterQueueIsDown() + public async Task SubscribesToATopicAndDeadLetterQueueIsDown() { _options.Value.SubscriberSettings.Add(ConfigurationKeys.EndPoint, "endpoint"); _options.Value.SubscriberSettings.Add(ConfigurationKeys.Username, "username"); @@ -260,11 +260,11 @@ await Task.Run(() => { s_messageReceived = args.Message; service.Acknowledge(args.Message); - }).ConfigureAwait(false); + }); }); // wait for it to pick up meassage - Task.Delay(500).GetAwaiter().GetResult(); + await Task.Delay(500); Assert.NotNull(s_messageReceived); Assert.Equal(message.ApplicationId, s_messageReceived.ApplicationId); @@ -374,7 +374,7 @@ await Task.Run(() => { s_messageReceived = args.Message; service.Acknowledge(args.Message); - }).ConfigureAwait(false); + }); }); }; Assert.Throws(asyncAct); diff --git a/third-party-licenses.md b/third-party-licenses.md index bdd4ee9..f074e99 100644 --- a/third-party-licenses.md +++ b/third-party-licenses.md @@ -18,11 +18,11 @@ limitations under the License.
-Microsoft .NET 6 6.0 +Microsoft .NET 8 8.0 -## Microsoft .NET 6 +## Microsoft .NET 8 -- Version: 6.0 +- Version: 8.0 - Source: https://dot.net - Publisher: Microsoft - Project URL: https://dotnet.microsoft.com/en-us/ @@ -60,14 +60,14 @@ SOFTWARE.
-Ardalis.GuardClauses 4.1.1 +Ardalis.GuardClauses 4.3.0 ## Ardalis.GuardClauses -- Version: 4.1.1 +- Version: 4.3.0 - Authors: Steve Smith (@ardalis) - Project URL: https://github.com/ardalis/guardclauses -- Source: [NuGet](https://www.nuget.org/packages/Ardalis.GuardClauses/4.1.1) +- Source: [NuGet](https://www.nuget.org/packages/Ardalis.GuardClauses/4.3.0) - License: [MIT](https://github.com/ardalis/GuardClauses.Analyzers/raw/master/LICENSE) @@ -130,22 +130,23 @@ limitations under the License.
-JetBrains.Annotations 2021.3.0 +Microsoft.AspNetCore.TestHost 8.0.0 -## JetBrains.Annotations +## Microsoft.AspNetCore.TestHost -- Version: 2021.3.0 -- Authors: JetBrains -- Owners: JetBrains -- Project URL: https://www.jetbrains.com/help/resharper/Code_Analysis__Code_Annotations.html -- Source: [NuGet](https://www.nuget.org/packages/JetBrains.Annotations/2021.3.0) -- License: [MIT](https://github.com/JetBrains/JetBrains.Annotations/raw/main/license.md) +- Version: 8.0.0 +- Authors: Microsoft +- Project URL: https://asp.net/ +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.AspNetCore.TestHost/8.0.0) +- License: [MIT](https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) ``` -MIT License +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors -Copyright (c) 2016 JetBrains http://www.jetbrains.com +All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -170,23 +171,19 @@ SOFTWARE.
-Microsoft.AspNetCore.TestHost 6.0.21 +Microsoft.CodeCoverage 17.8.0 -## Microsoft.AspNetCore.TestHost +## Microsoft.CodeCoverage -- Version: 6.0.21 +- Version: 17.8.0 - Authors: Microsoft -- Project URL: https://asp.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.AspNetCore.TestHost/6.0.21) -- License: [MIT](https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) +- Project URL: https://github.com/microsoft/vstest +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.CodeCoverage/17.8.0) +- License: [MIT](https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) ``` -The MIT License (MIT) - -Copyright (c) .NET Foundation and Contributors - -All rights reserved. +Copyright (c) 2020 Microsoft Corporation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -211,19 +208,23 @@ SOFTWARE.
-Microsoft.CodeCoverage 17.7.0 +Microsoft.Extensions.Configuration.Abstractions 8.0.0 -## Microsoft.CodeCoverage +## Microsoft.Extensions.Configuration.Abstractions -- Version: 17.7.0 +- Version: 8.0.0 - Authors: Microsoft -- Project URL: https://github.com/microsoft/vstest -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.CodeCoverage/17.7.0) -- License: [MIT](https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) +- Project URL: https://dot.net/ +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Abstractions/8.0.0) +- License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) ``` -Copyright (c) 2020 Microsoft Corporation +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors + +All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -248,14 +249,14 @@ SOFTWARE.
-Microsoft.Extensions.Configuration.Abstractions 6.0.0 +Microsoft.Extensions.DependencyInjection.Abstractions 8.0.0 -## Microsoft.Extensions.Configuration.Abstractions +## Microsoft.Extensions.DependencyInjection.Abstractions -- Version: 6.0.0 +- Version: 8.0.0 - Authors: Microsoft - Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Abstractions/6.0.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0) - License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) @@ -289,15 +290,15 @@ SOFTWARE.
-Microsoft.Extensions.DependencyInjection.Abstractions 6.0.0 +Microsoft.Extensions.Diagnostics.Abstractions 8.0.0 -## Microsoft.Extensions.DependencyInjection.Abstractions +## Microsoft.Extensions.Diagnostics.Abstractions -- Version: 6.0.0 +- Version: 8.0.0 - Authors: Microsoft - Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0) -- License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Diagnostics.Abstractions/8.0.0) +- License: [MIT](https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) ``` @@ -330,14 +331,14 @@ SOFTWARE.
-Microsoft.Extensions.Diagnostics.HealthChecks 6.0.21 +Microsoft.Extensions.Diagnostics.HealthChecks 8.0.0 ## Microsoft.Extensions.Diagnostics.HealthChecks -- Version: 6.0.21 +- Version: 8.0.0 - Authors: Microsoft - Project URL: https://asp.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Diagnostics.HealthChecks/6.0.21) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0) - License: [MIT](https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) @@ -371,14 +372,14 @@ SOFTWARE.
-Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions 6.0.21 +Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions 8.0.0 ## Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions -- Version: 6.0.21 +- Version: 8.0.0 - Authors: Microsoft - Project URL: https://asp.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/6.0.21) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0) - License: [MIT](https://github.com/dotnet/aspnetcore/raw/main/LICENSE.txt) @@ -412,14 +413,14 @@ SOFTWARE.
-Microsoft.Extensions.FileProviders.Abstractions 6.0.0 +Microsoft.Extensions.FileProviders.Abstractions 8.0.0 ## Microsoft.Extensions.FileProviders.Abstractions -- Version: 6.0.0 +- Version: 8.0.0 - Authors: Microsoft - Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.FileProviders.Abstractions/6.0.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.FileProviders.Abstractions/8.0.0) - License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) @@ -453,14 +454,14 @@ SOFTWARE.
-Microsoft.Extensions.Hosting.Abstractions 6.0.0 +Microsoft.Extensions.Hosting.Abstractions 8.0.0 ## Microsoft.Extensions.Hosting.Abstractions -- Version: 6.0.0 +- Version: 8.0.0 - Authors: Microsoft - Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Hosting.Abstractions/6.0.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Hosting.Abstractions/8.0.0) - License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) @@ -494,14 +495,14 @@ SOFTWARE.
-Microsoft.Extensions.Logging.Abstractions 6.0.4 +Microsoft.Extensions.Logging.Abstractions 8.0.0 ## Microsoft.Extensions.Logging.Abstractions -- Version: 6.0.4 +- Version: 8.0.0 - Authors: Microsoft - Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Logging.Abstractions/6.0.4) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Logging.Abstractions/8.0.0) - License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) @@ -535,14 +536,14 @@ SOFTWARE.
-Microsoft.Extensions.Options 6.0.0 +Microsoft.Extensions.Options 8.0.0 ## Microsoft.Extensions.Options -- Version: 6.0.0 +- Version: 8.0.0 - Authors: Microsoft - Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Options/6.0.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Options/8.0.0) - License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) @@ -576,14 +577,14 @@ SOFTWARE.
-Microsoft.Extensions.Primitives 6.0.0 +Microsoft.Extensions.Primitives 8.0.0 ## Microsoft.Extensions.Primitives -- Version: 6.0.0 +- Version: 8.0.0 - Authors: Microsoft - Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Primitives/6.0.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.Extensions.Primitives/8.0.0) - License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) @@ -617,14 +618,14 @@ SOFTWARE.
-Microsoft.NET.Test.Sdk 17.7.0 +Microsoft.NET.Test.Sdk 17.8.0 ## Microsoft.NET.Test.Sdk -- Version: 17.7.0 +- Version: 17.8.0 - Authors: Microsoft - Project URL: https://github.com/microsoft/vstest -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.NET.Test.Sdk/17.7.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.NET.Test.Sdk/17.8.0) - License: [MIT](https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) @@ -667,6 +668,11 @@ SOFTWARE. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -781,7 +787,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -867,6 +873,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -981,7 +992,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -1054,14 +1065,14 @@ consequential or other damages.
-Microsoft.TestPlatform.ObjectModel 17.7.0 +Microsoft.TestPlatform.ObjectModel 17.8.0 ## Microsoft.TestPlatform.ObjectModel -- Version: 17.7.0 +- Version: 17.8.0 - Authors: Microsoft - Project URL: https://github.com/microsoft/vstest -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.7.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/17.8.0) - License: [MIT](https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) @@ -1091,14 +1102,14 @@ SOFTWARE.
-Microsoft.TestPlatform.TestHost 17.7.0 +Microsoft.TestPlatform.TestHost 17.8.0 ## Microsoft.TestPlatform.TestHost -- Version: 17.7.0 +- Version: 17.8.0 - Authors: Microsoft - Project URL: https://github.com/microsoft/vstest -- Source: [NuGet](https://www.nuget.org/packages/Microsoft.TestPlatform.TestHost/17.7.0) +- Source: [NuGet](https://www.nuget.org/packages/Microsoft.TestPlatform.TestHost/17.8.0) - License: [MIT](https://github.com/microsoft/vstest/raw/v17.4.1/LICENSE) @@ -1141,6 +1152,11 @@ SOFTWARE. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -1255,7 +1271,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -1328,14 +1344,14 @@ consequential or other damages.
-Moq 4.20.69 +Moq 4.20.70 ## Moq -- Version: 4.20.69 +- Version: 4.20.70 - Authors: Daniel Cazzulino, kzu - Project URL: https://github.com/moq/moq -- Source: [NuGet](https://www.nuget.org/packages/Moq/4.20.69) +- Source: [NuGet](https://www.nuget.org/packages/Moq/4.20.70) - License: [BSD 3-Clause License]( https://raw.githubusercontent.com/moq/moq4/main/License.txt) @@ -1388,6 +1404,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -1502,7 +1523,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -1646,14 +1667,69 @@ specific language governing permissions and limitations under the License.
-Polly 7.2.4 +Polly 8.2.0 ## Polly -- Version: 7.2.4 +- Version: 8.2.0 +- Authors: Michael Wolfenden, App vNext +- Project URL: https://github.com/App-vNext/Polly +- Source: [NuGet](https://www.nuget.org/packages/Polly/8.2.0) +- License: [MIT]( https://licenses.nuget.org/MIT) + + +``` +'MIT' reference + + + +MIT License +SPDX identifier +MIT +License text + +MIT License + + +Copyright (c) + + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: +The above copyright notice and this permission notice + (including the next paragraph) + shall be included in all copies or substantial + portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT + LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +SPDX web page + +https://spdx.org/licenses/MIT.html + +Notice +This license content is provided by the SPDX project. For more information about licenses.nuget.org, see our documentation. + +Data pulled from spdx/license-list-data on February 9, 2023. +``` + +
+ + +
+Polly.Core 8.2.0 + +## Polly.Core + +- Version: 8.2.0 - Authors: Michael Wolfenden, App vNext - Project URL: https://github.com/App-vNext/Polly -- Source: [NuGet](https://www.nuget.org/packages/Polly/7.2.4) +- Source: [NuGet](https://www.nuget.org/packages/Polly.Core/8.2.0) - License: [MIT]( https://licenses.nuget.org/MIT) @@ -1701,14 +1777,14 @@ Data pulled from spdx/license-list-data on February 9, 2023.
-RabbitMQ.Client 6.5.0 +RabbitMQ.Client 6.8.1 ## RabbitMQ.Client -- Version: 6.5.0 +- Version: 6.8.1 - Authors: VMware - Project URL: https://www.rabbitmq.com/dotnet.html -- Source: [NuGet](https://www.nuget.org/packages/RabbitMQ.Client/6.5.0) +- Source: [NuGet](https://www.nuget.org/packages/RabbitMQ.Client/6.8.1) - License: [Apache-2.0](https://github.com/rabbitmq/rabbitmq-dotnet-client/raw/main/LICENSE-APACHE2) @@ -1933,6 +2009,11 @@ Apache License ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -2047,7 +2128,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -2133,6 +2214,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -2247,7 +2333,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -2319,48 +2405,6 @@ consequential or other damages.
-
-System.Buffers 4.5.1 - -## System.Buffers - -- Version: 4.5.1 -- Authors: Microsoft -- Owners: microsoft,dotnetframework -- Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/System.Buffers/4.5.1) -- License: [MIT](https://github.com/dotnet/corefx/raw/master/LICENSE.TXT) - - -``` -The MIT License (MIT) - -Copyright (c) .NET Foundation and Contributors - -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` - -
- -
System.Collections 4.3.0 @@ -2375,6 +2419,11 @@ SOFTWARE. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -2489,7 +2538,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -2575,6 +2624,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -2689,7 +2743,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -2775,6 +2829,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -2889,7 +2948,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -2975,6 +3034,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -3089,7 +3153,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -3203,6 +3267,47 @@ SOFTWARE.
+
+System.Diagnostics.DiagnosticSource 8.0.0 + +## System.Diagnostics.DiagnosticSource + +- Version: 8.0.0 +- Authors: Microsoft +- Project URL: https://dot.net/ +- Source: [NuGet](https://www.nuget.org/packages/System.Diagnostics.DiagnosticSource/8.0.0) +- License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) + + +``` +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` + +
+ +
System.Diagnostics.EventLog 6.0.0 @@ -3258,6 +3363,11 @@ SOFTWARE. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -3372,7 +3482,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -3458,6 +3568,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -3572,7 +3687,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -3658,6 +3773,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -3772,7 +3892,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -3858,6 +3978,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -3972,7 +4097,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -4058,6 +4183,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -4172,7 +4302,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -4258,6 +4388,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -4372,7 +4507,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -4445,14 +4580,14 @@ consequential or other damages.
-System.IO.Abstractions 17.2.3 +System.IO.Abstractions 20.0.4 ## System.IO.Abstractions -- Version: 17.2.3 +- Version: 20.0.4 - Authors: Tatham Oddie & friends - Project URL: https://github.com/TestableIO/System.IO.Abstractions -- Source: [NuGet](https://www.nuget.org/packages/System.IO.Abstractions/17.2.3) +- Source: [NuGet](https://www.nuget.org/packages/System.IO.Abstractions/20.0.4) - License: [MIT](https://github.com/TestableIO/System.IO.Abstractions/raw/main/LICENSE) @@ -4486,14 +4621,14 @@ SOFTWARE.
-System.IO.Abstractions.TestingHelpers 17.2.3 +System.IO.Abstractions.TestingHelpers 20.0.4 ## System.IO.Abstractions.TestingHelpers -- Version: 17.2.3 +- Version: 20.0.4 - Authors: Tatham Oddie & friends - Project URL: https://github.com/TestableIO/System.IO.Abstractions -- Source: [NuGet](https://www.nuget.org/packages/System.IO.Abstractions.TestingHelpers/17.2.3) +- Source: [NuGet](https://www.nuget.org/packages/System.IO.Abstractions.TestingHelpers/20.0.4) - License: [MIT](https://github.com/TestableIO/System.IO.Abstractions/raw/main/LICENSE) @@ -4540,6 +4675,11 @@ SOFTWARE. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -4654,7 +4794,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -4740,6 +4880,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -4854,7 +4999,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -4940,6 +5085,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -5054,7 +5204,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -5140,6 +5290,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -5254,7 +5409,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -5327,14 +5482,14 @@ consequential or other damages.
-System.IO.Pipelines 6.0.3 +System.IO.Pipelines 8.0.0 ## System.IO.Pipelines -- Version: 6.0.3 +- Version: 8.0.0 - Authors: Microsoft - Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/System.IO.Pipelines/6.0.3) +- Source: [NuGet](https://www.nuget.org/packages/System.IO.Pipelines/8.0.0) - License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) @@ -5381,8 +5536,13 @@ SOFTWARE. ``` -MICROSOFT SOFTWARE LICENSE -TERMS +.NET Library License Terms | .NET + + + + +MICROSOFT SOFTWARE LICENSE +TERMS MICROSOFT .NET LIBRARY @@ -5495,7 +5655,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -5581,6 +5741,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -5695,7 +5860,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -5823,6 +5988,11 @@ SOFTWARE. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -5937,7 +6107,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -6023,6 +6193,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -6137,7 +6312,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -6223,6 +6398,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -6337,7 +6517,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -6423,6 +6603,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -6537,7 +6722,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -6623,6 +6808,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -6737,7 +6927,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -6823,6 +7013,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -6937,7 +7132,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -7023,6 +7218,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -7137,7 +7337,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -7223,6 +7423,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -7337,7 +7542,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -7423,6 +7628,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -7537,7 +7747,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -7665,6 +7875,11 @@ SOFTWARE. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -7779,7 +7994,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -7865,6 +8080,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -7979,7 +8199,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -8065,6 +8285,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -8179,7 +8404,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -8265,6 +8490,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -8379,7 +8609,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -8451,47 +8681,6 @@ consequential or other damages.
-
-System.Runtime.CompilerServices.Unsafe 6.0.0 - -## System.Runtime.CompilerServices.Unsafe - -- Version: 6.0.0 -- Authors: Microsoft -- Project URL: https://dot.net/ -- Source: [NuGet](https://www.nuget.org/packages/System.Runtime.CompilerServices.Unsafe/6.0.0) -- License: [MIT](https://github.com/dotnet/runtime/raw/main/LICENSE.TXT) - - -``` -The MIT License (MIT) - -Copyright (c) .NET Foundation and Contributors - -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` - -
- -
System.Runtime.Extensions 4.3.0 @@ -8506,6 +8695,11 @@ SOFTWARE. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -8620,7 +8814,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -8706,6 +8900,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -8820,7 +9019,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -8906,6 +9105,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -9020,7 +9224,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -9106,6 +9310,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -9220,7 +9429,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -9306,6 +9515,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -9420,7 +9634,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -9506,6 +9720,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -9620,7 +9839,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -9706,6 +9925,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -9820,7 +10044,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -9906,6 +10130,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -10020,7 +10249,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -10106,6 +10335,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -10220,7 +10454,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -10306,6 +10540,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -10420,7 +10659,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -10506,6 +10745,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -10620,7 +10864,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -10706,6 +10950,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -10820,7 +11069,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -10906,6 +11155,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -11020,7 +11274,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -11106,6 +11360,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -11220,7 +11479,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -11306,6 +11565,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -11420,7 +11684,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -11506,6 +11770,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -11620,7 +11889,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -11752,7 +12021,6 @@ corefx/LICENSE.TXT at master · dotnet/corefx · GitHub - Skip to content @@ -11763,6 +12031,12 @@ Skip to content + + + + + + Toggle navigation @@ -11774,8 +12048,8 @@ Toggle navigation - Sign up - + Sign in + @@ -11990,12 +12264,14 @@ Resources - Customer Stories + Learning Pathways + + White papers, Ebooks, Webinars @@ -12004,6 +12280,12 @@ Resources + Customer Stories + + + + + Partners @@ -12139,6 +12421,7 @@ Clear + @@ -12255,10 +12538,10 @@ Query You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. + - - +Dismiss alert @@ -12303,7 +12586,7 @@ Notifications Fork - 5.2k + 5.1k @@ -12359,31 +12642,26 @@ Insights + +Additional navigation options -More + - Code - - Pull requests - - Security - + Code - Insights - @@ -12392,6 +12670,7 @@ More + Pull requests @@ -12402,7 +12681,10 @@ More -Footer + Security + + + @@ -12410,25 +12692,74 @@ Footer + Insights + + + + + - © 2023 GitHub, Inc. - + + + + + + + + + + + + + +Footer + + + + + + + + + © 2024 GitHub, Inc. + + + Footer navigation + Terms + + Privacy + + Security + + Status + + Docs -Contact GitHub -Pricing -API -Training -Blog -About + + +Contact + + + + + Manage cookies + + + + + + + Do not share my personal information + @@ -12465,6 +12796,11 @@ About ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -12579,7 +12915,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -12665,6 +13001,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -12779,7 +13120,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -12865,6 +13206,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -12979,7 +13325,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -13065,6 +13411,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -13179,7 +13530,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -13265,6 +13616,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -13379,7 +13735,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -13451,6 +13807,129 @@ consequential or other damages.
+
+TestableIO.System.IO.Abstractions 20.0.4 + +## TestableIO.System.IO.Abstractions + +- Version: 20.0.4 +- Authors: Tatham Oddie & friends +- Project URL: https://github.com/TestableIO/System.IO.Abstractions +- Source: [NuGet](https://www.nuget.org/packages/TestableIO.System.IO.Abstractions/20.0.4) +- License: [MIT](https://github.com/TestableIO/System.IO.Abstractions/raw/main/LICENSE) + + +``` +The MIT License (MIT) + +Copyright (c) Tatham Oddie and Contributors + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` + +
+ + +
+TestableIO.System.IO.Abstractions.TestingHelpers 20.0.4 + +## TestableIO.System.IO.Abstractions.TestingHelpers + +- Version: 20.0.4 +- Authors: Tatham Oddie & friends +- Project URL: https://github.com/TestableIO/System.IO.Abstractions +- Source: [NuGet](https://www.nuget.org/packages/TestableIO.System.IO.Abstractions.TestingHelpers/20.0.4) +- License: [MIT](https://github.com/TestableIO/System.IO.Abstractions/raw/main/LICENSE) + + +``` +The MIT License (MIT) + +Copyright (c) Tatham Oddie and Contributors + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` + +
+ + +
+TestableIO.System.IO.Abstractions.Wrappers 20.0.4 + +## TestableIO.System.IO.Abstractions.Wrappers + +- Version: 20.0.4 +- Authors: Tatham Oddie & friends +- Project URL: https://github.com/TestableIO/System.IO.Abstractions +- Source: [NuGet](https://www.nuget.org/packages/TestableIO.System.IO.Abstractions.Wrappers/20.0.4) +- License: [MIT](https://github.com/TestableIO/System.IO.Abstractions/raw/main/LICENSE) + + +``` +The MIT License (MIT) + +Copyright (c) Tatham Oddie and Contributors + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` + +
+ +
coverlet.collector 6.0.0 @@ -13504,6 +13983,11 @@ SOFTWARE. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -13618,7 +14102,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -13704,6 +14188,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -13818,7 +14307,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -13904,6 +14393,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -14018,7 +14512,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -14104,6 +14598,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -14218,7 +14717,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -14304,6 +14803,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -14418,7 +14922,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -14504,6 +15008,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -14618,7 +15127,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -14704,6 +15213,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -14818,7 +15332,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -14904,6 +15418,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -15018,7 +15537,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -15104,6 +15623,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -15218,7 +15742,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -15304,6 +15828,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -15418,7 +15947,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -15504,6 +16033,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -15618,7 +16152,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -15704,6 +16238,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -15818,7 +16357,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -15904,6 +16443,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -16018,7 +16562,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -16104,6 +16648,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -16218,7 +16767,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -16304,6 +16853,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -16418,7 +16972,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -16504,6 +17058,11 @@ consequential or other damages. ``` +.NET Library License Terms | .NET + + + + MICROSOFT SOFTWARE LICENSE TERMS @@ -16618,7 +17177,7 @@ Export Restrictions. You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information -on export restrictions, visit www.microsoft.com/exporting.   +on export restrictions, visit www.microsoft.com/exporting. 7.    SUPPORT SERVICES. Because this software is “as is,” we may not provide @@ -16691,13 +17250,13 @@ consequential or other damages.
-xunit 2.5.0 +xunit 2.6.4 ## xunit -- Version: 2.5.0 +- Version: 2.6.4 - Authors: jnewkirk,bradwilson -- Source: [NuGet](https://www.nuget.org/packages/xunit/2.5.0) +- Source: [NuGet](https://www.nuget.org/packages/xunit/2.6.4) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) @@ -16823,13 +17382,13 @@ Both sets of code are covered by the following license:
-xunit.analyzers 1.2.0 +xunit.analyzers 1.8.0 ## xunit.analyzers -- Version: 1.2.0 +- Version: 1.8.0 - Authors: jnewkirk,bradwilson,marcind -- Source: [NuGet](https://www.nuget.org/packages/xunit.analyzers/1.2.0) +- Source: [NuGet](https://www.nuget.org/packages/xunit.analyzers/1.8.0) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit.analyzers/master/LICENSE) @@ -16854,13 +17413,13 @@ limitations under the License.
-xunit.assert 2.5.0 +xunit.assert 2.6.4 ## xunit.assert -- Version: 2.5.0 +- Version: 2.6.4 - Authors: jnewkirk,bradwilson -- Source: [NuGet](https://www.nuget.org/packages/xunit.assert/2.5.0) +- Source: [NuGet](https://www.nuget.org/packages/xunit.assert/2.6.4) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) @@ -16919,13 +17478,13 @@ Both sets of code are covered by the following license:
-xunit.core 2.5.0 +xunit.core 2.6.4 ## xunit.core -- Version: 2.5.0 +- Version: 2.6.4 - Authors: jnewkirk,bradwilson -- Source: [NuGet](https://www.nuget.org/packages/xunit.core/2.5.0) +- Source: [NuGet](https://www.nuget.org/packages/xunit.core/2.6.4) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) @@ -16984,13 +17543,13 @@ Both sets of code are covered by the following license:
-xunit.extensibility.core 2.5.0 +xunit.extensibility.core 2.6.4 ## xunit.extensibility.core -- Version: 2.5.0 +- Version: 2.6.4 - Authors: jnewkirk,bradwilson -- Source: [NuGet](https://www.nuget.org/packages/xunit.extensibility.core/2.5.0) +- Source: [NuGet](https://www.nuget.org/packages/xunit.extensibility.core/2.6.4) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) @@ -17049,13 +17608,13 @@ Both sets of code are covered by the following license:
-xunit.extensibility.execution 2.5.0 +xunit.extensibility.execution 2.6.4 ## xunit.extensibility.execution -- Version: 2.5.0 +- Version: 2.6.4 - Authors: jnewkirk,bradwilson -- Source: [NuGet](https://www.nuget.org/packages/xunit.extensibility.execution/2.5.0) +- Source: [NuGet](https://www.nuget.org/packages/xunit.extensibility.execution/2.6.4) - License: [Apache-2.0]( https://raw.githubusercontent.com/xunit/xunit/master/license.txt) @@ -17114,14 +17673,13 @@ Both sets of code are covered by the following license:
-xunit.runner.visualstudio 2.5.0 +xunit.runner.visualstudio 2.5.6 ## xunit.runner.visualstudio -- Version: 2.5.0 -- Authors: .NET Foundation and Contributors -- Project URL: https://github.com/xunit/visualstudio.xunit -- Source: [NuGet](https://www.nuget.org/packages/xunit.runner.visualstudio/2.5.0) +- Version: 2.5.6 +- Authors: jnewkirk,bradwilson +- Source: [NuGet](https://www.nuget.org/packages/xunit.runner.visualstudio/2.5.6) - License: [MIT]( https://licenses.nuget.org/MIT) @@ -17166,3 +17724,4 @@ Data pulled from spdx/license-list-data on February 9, 2023. ```
+ From e62dfb9f261780211fd7139abeaee675f43ba63b Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Wed, 31 Jan 2024 10:34:25 -0800 Subject: [PATCH 19/25] Update GitVersion.yml Set next version to 2.0.0 Signed-off-by: Victor Chang --- GitVersion.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/GitVersion.yml b/GitVersion.yml index ecd6f8e..5c13feb 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -56,3 +56,4 @@ branches: ignore: sha: [] merge-message-formats: {} +next-version: 2.0.0 From e8317569f88d4c9d58edd380aeb7c4b4d110b93b Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Wed, 31 Jan 2024 10:40:33 -0800 Subject: [PATCH 20/25] Update GitVersion.yml Signed-off-by: Victor Chang --- GitVersion.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/GitVersion.yml b/GitVersion.yml index 5c13feb..ee9fbe7 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -56,4 +56,5 @@ branches: ignore: sha: [] merge-message-formats: {} -next-version: 2.0.0 +next-version: 2.0.1 +update-build-number: true From 895250d6b1c54d66de6780acdf79d264f1066399 Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Wed, 31 Jan 2024 10:41:58 -0800 Subject: [PATCH 21/25] Update GitVersion.yml Signed-off-by: Victor Chang --- GitVersion.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GitVersion.yml b/GitVersion.yml index ee9fbe7..e543639 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -57,4 +57,4 @@ ignore: sha: [] merge-message-formats: {} next-version: 2.0.1 -update-build-number: true +update-build-number: false From ae8e2b5817a6330da0c587bf89f670c9e1076dbd Mon Sep 17 00:00:00 2001 From: Neil South <104848880+neildsouth@users.noreply.github.com> Date: Thu, 1 Feb 2024 09:12:17 +0000 Subject: [PATCH 22/25] Update .gitignore test Signed-off-by: Neil South <104848880+neildsouth@users.noreply.github.com> --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index e0e0dd2..e64791b 100644 --- a/.gitignore +++ b/.gitignore @@ -351,4 +351,5 @@ MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ + */.idea/* From 33b79ca5d73ae41ffce89ff363eabee9c501ed2c Mon Sep 17 00:00:00 2001 From: Neil South <104848880+neildsouth@users.noreply.github.com> Date: Thu, 1 Feb 2024 10:09:56 +0000 Subject: [PATCH 23/25] +semver: minor Signed-off-by: Neil South <104848880+neildsouth@users.noreply.github.com> --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index e64791b..e0e0dd2 100644 --- a/.gitignore +++ b/.gitignore @@ -351,5 +351,4 @@ MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ - */.idea/* From a3477083d237b09686cff113f25494c8001d8a44 Mon Sep 17 00:00:00 2001 From: Neil South <104848880+neildsouth@users.noreply.github.com> Date: Fri, 2 Feb 2024 10:07:07 +0000 Subject: [PATCH 24/25] +semver: patch +semver: patch Signed-off-by: Neil South <104848880+neildsouth@users.noreply.github.com> From f6e5c8577d37a4b36d9a4048ed99ca10f4f3bcab Mon Sep 17 00:00:00 2001 From: Neil South <104848880+neildsouth@users.noreply.github.com> Date: Fri, 2 Feb 2024 10:26:21 +0000 Subject: [PATCH 25/25] Update .gitignore to do new release Signed-off-by: Neil South <104848880+neildsouth@users.noreply.github.com> --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index e0e0dd2..e64791b 100644 --- a/.gitignore +++ b/.gitignore @@ -351,4 +351,5 @@ MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ + */.idea/*