From 215d90ef667c9625efbea30b56a29aa0f5b2dd98 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Tue, 16 Dec 2025 11:08:58 -0800 Subject: [PATCH 01/31] Upgrade service SDK to support AAD auth --- .../IotEdgeQuickstart.csproj | 5 +- smoke/IotEdgeQuickstart/details/Details.cs | 6 +- smoke/IotEdgeQuickstart/packages.lock.json | 147 ++++++++++-------- smoke/LeafDevice/LeafDevice.csproj | 1 + smoke/LeafDevice/details/Details.cs | 6 +- smoke/LeafDevice/packages.lock.json | 112 +++++++------ 6 files changed, 166 insertions(+), 111 deletions(-) diff --git a/smoke/IotEdgeQuickstart/IotEdgeQuickstart.csproj b/smoke/IotEdgeQuickstart/IotEdgeQuickstart.csproj index 0fd7e5d0a0b..a5d859c5617 100644 --- a/smoke/IotEdgeQuickstart/IotEdgeQuickstart.csproj +++ b/smoke/IotEdgeQuickstart/IotEdgeQuickstart.csproj @@ -9,11 +9,12 @@ + - + + - diff --git a/smoke/IotEdgeQuickstart/details/Details.cs b/smoke/IotEdgeQuickstart/details/Details.cs index 2e84eb5eca7..5638f468880 100644 --- a/smoke/IotEdgeQuickstart/details/Details.cs +++ b/smoke/IotEdgeQuickstart/details/Details.cs @@ -9,6 +9,7 @@ namespace IotEdgeQuickstart.Details using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Common.Exceptions; using Microsoft.Azure.Devices.Edge.Test.Common; @@ -236,7 +237,7 @@ protected async Task GetOrCreateEdgeDeviceIdentity() var settings = new HttpTransportSettings(); this.proxy.ForEach(p => settings.Proxy = p); IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); - RegistryManager rm = RegistryManager.CreateFromConnectionString(builder.ToString(), settings); + RegistryManager rm = RegistryManager.Create(builder.HostName, new DefaultAzureCredential(), settings); Device device = await rm.GetDeviceAsync(this.deviceId); if (device != null) @@ -311,8 +312,9 @@ protected async Task VerifyEdgeAgentIsConnectedToIotHub() var settings = new ServiceClientTransportSettings(); this.proxy.ForEach(p => settings.HttpProxy = p); + IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); ServiceClient serviceClient = - ServiceClient.CreateFromConnectionString(this.context.IotHubConnectionString, this.serviceClientTransportType, settings); + ServiceClient.Create(builder.HostName, new DefaultAzureCredential(), this.serviceClientTransportType, settings); while (!cts.IsCancellationRequested) { diff --git a/smoke/IotEdgeQuickstart/packages.lock.json b/smoke/IotEdgeQuickstart/packages.lock.json index 66fedef33f2..d026e899530 100644 --- a/smoke/IotEdgeQuickstart/packages.lock.json +++ b/smoke/IotEdgeQuickstart/packages.lock.json @@ -2,6 +2,17 @@ "version": 1, "dependencies": { "net8.0": { + "Azure.Identity": { + "type": "Direct", + "requested": "[1.17.1, )", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", + "dependencies": { + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" + } + }, "McMaster.Extensions.CommandLineUtils": { "type": "Direct", "requested": "[2.3.2, )", @@ -13,14 +24,15 @@ }, "Microsoft.Azure.Devices": { "type": "Direct", - "requested": "[1.31.6, )", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", - "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "requested": "[1.41.0, )", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -37,15 +49,6 @@ "resolved": "1.2.4", "contentHash": "ndU9F3ohMQpCe34cen8LvtVY2xCUWF++jEJworvq6IuazF9FQUwnuT/8we6wbgOdHC20aHCduGnjuA5D0azbAQ==" }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.164, )", - "resolved": "1.2.0-beta.164", - "contentHash": "IWMH8RyJGDu8ZrYFKIwjfcuXizpJnjnMGE8tDRnZ36AIAQeFDjeUPH2EUEMwj4+63oQBu/KkzRe9clSW9s5mdA==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.164" - } - }, "System.ServiceProcess.ServiceController": { "type": "Direct", "requested": "[4.5.0, )", @@ -98,16 +101,12 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" } }, "Azure.Storage.Blobs": { @@ -190,8 +189,8 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices.Client": { "type": "Transitive", @@ -210,11 +209,11 @@ }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Azure.EventHubs": { @@ -272,8 +271,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -347,8 +346,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -386,8 +385,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -403,6 +405,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.IdentityModel.Clients.ActiveDirectory": { "type": "Transitive", "resolved": "4.5.1", @@ -470,8 +495,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -558,8 +583,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Nito.AsyncEx": { "type": "Transitive", @@ -796,11 +821,6 @@ "System.Runtime.InteropServices.RuntimeInformation": "4.3.0" } }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.164", - "contentHash": "3WJ5JvRP9QjdrwspeLFjwD2AZw2CcDmYLQ7x8oofxvOzXvboZdFlPsSV8h56hLyK0lnMFvtpb48nxz7oQ4RgCQ==" - }, "System.AppContext": { "type": "Transitive", "resolved": "4.3.0", @@ -821,6 +841,15 @@ "System.Threading": "4.3.0" } }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1175,12 +1204,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1239,11 +1264,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.3.0", @@ -1637,8 +1657,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Cryptography.X509Certificates": { "type": "Transitive", @@ -1788,8 +1808,13 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.3.0", + "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } }, "System.Threading.Thread": { "type": "Transitive", diff --git a/smoke/LeafDevice/LeafDevice.csproj b/smoke/LeafDevice/LeafDevice.csproj index 5bff0abafd3..c832d1908c7 100644 --- a/smoke/LeafDevice/LeafDevice.csproj +++ b/smoke/LeafDevice/LeafDevice.csproj @@ -9,6 +9,7 @@ + diff --git a/smoke/LeafDevice/details/Details.cs b/smoke/LeafDevice/details/Details.cs index 15ae31b2112..88a09995a62 100644 --- a/smoke/LeafDevice/details/Details.cs +++ b/smoke/LeafDevice/details/Details.cs @@ -12,6 +12,7 @@ namespace LeafDeviceTest using System.Text; using System.Threading; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Client; using Microsoft.Azure.Devices.Client.Transport.Mqtt; @@ -218,7 +219,7 @@ protected async Task GetOrCreateDeviceIdentityAsync() var settings = new HttpTransportSettings(); this.proxy.ForEach(p => settings.Proxy = p); IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); - RegistryManager rm = RegistryManager.CreateFromConnectionString(builder.ToString(), settings); + RegistryManager rm = RegistryManager.Create(builder.HostName, new DefaultAzureCredential(), settings); Option edgeScope = await this.edgeDeviceId .Map(id => GetScopeIfExitsAsync(rm, id)) @@ -321,8 +322,9 @@ protected async Task VerifyDirectMethodAsync() // User Service SDK to invoke Direct Method on the device. var settings = new ServiceClientTransportSettings(); this.proxy.ForEach(p => settings.HttpProxy = p); + IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); ServiceClient serviceClient = - ServiceClient.CreateFromConnectionString(this.context.IotHubConnectionString, this.serviceClientTransportType, settings); + ServiceClient.Create(builder.HostName, new DefaultAzureCredential(), this.serviceClientTransportType, settings); // Call a direct method TimeSpan testDuration = TimeSpan.FromSeconds(300); diff --git a/smoke/LeafDevice/packages.lock.json b/smoke/LeafDevice/packages.lock.json index 9b6f5d0f7e2..59209bde053 100644 --- a/smoke/LeafDevice/packages.lock.json +++ b/smoke/LeafDevice/packages.lock.json @@ -2,6 +2,17 @@ "version": 1, "dependencies": { "net8.0": { + "Azure.Identity": { + "type": "Direct", + "requested": "[1.17.1, )", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", + "dependencies": { + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" + } + }, "McMaster.Extensions.CommandLineUtils": { "type": "Direct", "requested": "[2.3.2, )", @@ -47,15 +58,6 @@ "resolved": "1.2.4", "contentHash": "ndU9F3ohMQpCe34cen8LvtVY2xCUWF++jEJworvq6IuazF9FQUwnuT/8we6wbgOdHC20aHCduGnjuA5D0azbAQ==" }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.164, )", - "resolved": "1.2.0-beta.164", - "contentHash": "IWMH8RyJGDu8ZrYFKIwjfcuXizpJnjnMGE8tDRnZ36AIAQeFDjeUPH2EUEMwj4+63oQBu/KkzRe9clSW9s5mdA==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.164" - } - }, "YamlDotNet": { "type": "Direct", "requested": "[6.0.0, )", @@ -105,16 +107,12 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" } }, "Azure.Storage.Blobs": { @@ -264,8 +262,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -339,8 +337,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -378,8 +376,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -395,6 +396,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.IdentityModel.Clients.ActiveDirectory": { "type": "Transitive", "resolved": "4.5.1", @@ -793,11 +817,6 @@ "System.Runtime.InteropServices.RuntimeInformation": "4.3.0" } }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.164", - "contentHash": "3WJ5JvRP9QjdrwspeLFjwD2AZw2CcDmYLQ7x8oofxvOzXvboZdFlPsSV8h56hLyK0lnMFvtpb48nxz7oQ4RgCQ==" - }, "System.AppContext": { "type": "Transitive", "resolved": "4.3.0", @@ -818,6 +837,15 @@ "System.Threading": "4.3.0" } }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1172,12 +1200,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1236,11 +1260,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.3.0", @@ -1634,8 +1653,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Cryptography.X509Certificates": { "type": "Transitive", @@ -1793,8 +1812,13 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.3.0", + "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } }, "System.Threading.Thread": { "type": "Transitive", From ae636ba819a6b1e136664c5a37b873ab89673c20 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Tue, 16 Dec 2025 13:23:27 -0800 Subject: [PATCH 02/31] Upgrade service SDK dependency in LeafDevice test app --- smoke/IotEdgeQuickstart/packages.lock.json | 14 +++++++ smoke/LeafDevice/LeafDevice.csproj | 2 +- smoke/LeafDevice/details/Details.cs | 2 +- smoke/LeafDevice/packages.lock.json | 49 ++++++++++++++-------- 4 files changed, 48 insertions(+), 19 deletions(-) diff --git a/smoke/IotEdgeQuickstart/packages.lock.json b/smoke/IotEdgeQuickstart/packages.lock.json index d026e899530..7a12d0d99ab 100644 --- a/smoke/IotEdgeQuickstart/packages.lock.json +++ b/smoke/IotEdgeQuickstart/packages.lock.json @@ -49,6 +49,15 @@ "resolved": "1.2.4", "contentHash": "ndU9F3ohMQpCe34cen8LvtVY2xCUWF++jEJworvq6IuazF9FQUwnuT/8we6wbgOdHC20aHCduGnjuA5D0azbAQ==" }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.164, )", + "resolved": "1.2.0-beta.164", + "contentHash": "IWMH8RyJGDu8ZrYFKIwjfcuXizpJnjnMGE8tDRnZ36AIAQeFDjeUPH2EUEMwj4+63oQBu/KkzRe9clSW9s5mdA==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.164" + } + }, "System.ServiceProcess.ServiceController": { "type": "Direct", "requested": "[4.5.0, )", @@ -821,6 +830,11 @@ "System.Runtime.InteropServices.RuntimeInformation": "4.3.0" } }, + "StyleCop.Analyzers.Unstable": { + "type": "Transitive", + "resolved": "1.2.0.164", + "contentHash": "3WJ5JvRP9QjdrwspeLFjwD2AZw2CcDmYLQ7x8oofxvOzXvboZdFlPsSV8h56hLyK0lnMFvtpb48nxz7oQ4RgCQ==" + }, "System.AppContext": { "type": "Transitive", "resolved": "4.3.0", diff --git a/smoke/LeafDevice/LeafDevice.csproj b/smoke/LeafDevice/LeafDevice.csproj index c832d1908c7..abbe673778e 100644 --- a/smoke/LeafDevice/LeafDevice.csproj +++ b/smoke/LeafDevice/LeafDevice.csproj @@ -11,7 +11,7 @@ - + diff --git a/smoke/LeafDevice/details/Details.cs b/smoke/LeafDevice/details/Details.cs index 88a09995a62..42c70e059e7 100644 --- a/smoke/LeafDevice/details/Details.cs +++ b/smoke/LeafDevice/details/Details.cs @@ -71,7 +71,7 @@ protected Details( this.trustedCACertificateFileName = trustedCACertificateFileName; this.proxy = proxy.Map(p => new WebProxy(p) as IWebProxy); this.edgeHostName = edgeHostName; - if (!edgeDeviceId.IsNullOrWhiteSpace()) + if (!string.IsNullOrWhiteSpace(edgeDeviceId)) { this.edgeDeviceId = Option.Some(edgeDeviceId); } diff --git a/smoke/LeafDevice/packages.lock.json b/smoke/LeafDevice/packages.lock.json index 59209bde053..42cfa4e21ec 100644 --- a/smoke/LeafDevice/packages.lock.json +++ b/smoke/LeafDevice/packages.lock.json @@ -24,14 +24,15 @@ }, "Microsoft.Azure.Devices": { "type": "Direct", - "requested": "[1.31.6, )", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", - "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "requested": "[1.41.0, )", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -58,6 +59,15 @@ "resolved": "1.2.4", "contentHash": "ndU9F3ohMQpCe34cen8LvtVY2xCUWF++jEJworvq6IuazF9FQUwnuT/8we6wbgOdHC20aHCduGnjuA5D0azbAQ==" }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.164, )", + "resolved": "1.2.0-beta.164", + "contentHash": "IWMH8RyJGDu8ZrYFKIwjfcuXizpJnjnMGE8tDRnZ36AIAQeFDjeUPH2EUEMwj4+63oQBu/KkzRe9clSW9s5mdA==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.164" + } + }, "YamlDotNet": { "type": "Direct", "requested": "[6.0.0, )", @@ -195,16 +205,16 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Azure.EventHubs": { @@ -486,8 +496,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -579,8 +589,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Nito.AsyncEx": { "type": "Transitive", @@ -817,6 +827,11 @@ "System.Runtime.InteropServices.RuntimeInformation": "4.3.0" } }, + "StyleCop.Analyzers.Unstable": { + "type": "Transitive", + "resolved": "1.2.0.164", + "contentHash": "3WJ5JvRP9QjdrwspeLFjwD2AZw2CcDmYLQ7x8oofxvOzXvboZdFlPsSV8h56hLyK0lnMFvtpb48nxz7oQ4RgCQ==" + }, "System.AppContext": { "type": "Transitive", "resolved": "4.3.0", From bf9af4339e2c62334a306fc1759d046f56a5b053 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Tue, 16 Dec 2025 13:23:38 -0800 Subject: [PATCH 03/31] Fix StyleCop warnings --- samples/dotnet/EdgeX509AuthDownstreamDevice/Program.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/samples/dotnet/EdgeX509AuthDownstreamDevice/Program.cs b/samples/dotnet/EdgeX509AuthDownstreamDevice/Program.cs index 64ecc6e65e0..58fb4ba0545 100644 --- a/samples/dotnet/EdgeX509AuthDownstreamDevice/Program.cs +++ b/samples/dotnet/EdgeX509AuthDownstreamDevice/Program.cs @@ -333,10 +333,11 @@ static void Main() var (cert, certChain) = GetClientCertificateAndChainFromFile(DeviceIdentityCertPath, DeviceIdentityPrivateKeyPath); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { - //Windows does not natively support PEM files for TLS connections due to the platform's lack of support for ephemeral keys. - //Hence need to convert the certificate to PFX format. + // Windows does not natively support PEM files for TLS connections due to the platform's lack of support for ephemeral keys. + // Hence need to convert the certificate to PFX format. cert = new X509Certificate2(cert.Export(X509ContentType.Pfx)); } + InstallChainCertificates(certChain); ITransportSettings[] transportSettings = GetTransport(ClientTransportType); From 16c86fed6aae2730cc37b9bf0fbae05cfc61768c Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 11:19:40 -0800 Subject: [PATCH 04/31] Invoke IotEdgeQuickstart inside AzureCLI task for AAD auth to IoT Hub --- builds/e2e/connectivity.yaml | 2 ++ builds/e2e/templates/connectivity-deploy.yaml | 13 ++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/builds/e2e/connectivity.yaml b/builds/e2e/connectivity.yaml index 8baa6b8f0dd..340a235d879 100644 --- a/builds/e2e/connectivity.yaml +++ b/builds/e2e/connectivity.yaml @@ -211,6 +211,7 @@ jobs: # Deploy connectivity test - template: templates/connectivity-deploy.yaml parameters: + connection.arm: $(az.connection.arm) release.label: 'ct$(agent.group)' test.buildNumber: '$(Build.BuildNumber)' test.buildId: '$(Build.BuildId)' @@ -407,6 +408,7 @@ jobs: # Deploy connectivity test - template: templates/connectivity-deploy.yaml parameters: + connection.arm: $(az.connection.arm) release.label: 'ct$(agent.group)' test.buildNumber: '$(Build.BuildNumber)' test.buildId: '$(Build.BuildId)' diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 92c44c2ff14..8b865667150 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -1,4 +1,5 @@ parameters: + connection.arm: '' release.label: '' test.buildNumber: '' test.buildId: '' @@ -86,12 +87,16 @@ steps: echo "##vso[task.setvariable variable=DeviceCaKey]$(pwd)/private/iot-edge-device-ca-ConnectivityTestDeviceCA.key.pem" fi - - task: Bash@3 + - task: AzureCLI@2 condition: and(succeeded(), eq(variables['run.flag'], 1)) displayName: 'Run Connectivity Deployment' inputs: - targetType: inline - script: | + azureSubscription: $(connection.arm) + scriptType: bash + scriptLocation: inlineScript + inlineScript: | + set -euo pipefail + . $(Agent.BuildDirectory)/../artifacts/${{ parameters['images.artifact.name'] }}/artifactInfo.txt chmod +x ${{ parameters['build.repo.path'] }}/scripts/linux/trcE2ETest.sh testName="Connectivity" @@ -147,9 +152,7 @@ steps: scriptExitCode=$? echo "script exit code=$scriptExitCode" exit $scriptExitCode - workingDirectory: "$(Agent.BuildDirectory)/.." - env: E2E_nestedEdgeTest: $(nestededge) E2E_trustedCaCerts: $(TrustBundle) From 0c378b80096496cb0a539245ba6bbccef3eec0ff Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 11:23:38 -0800 Subject: [PATCH 05/31] Fix template expression in YAML --- builds/e2e/templates/connectivity-deploy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 8b865667150..09c8c786d0d 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -91,7 +91,7 @@ steps: condition: and(succeeded(), eq(variables['run.flag'], 1)) displayName: 'Run Connectivity Deployment' inputs: - azureSubscription: $(connection.arm) + azureSubscription: ${{ parameters.connection.arm }} scriptType: bash scriptLocation: inlineScript inlineScript: | From badd09b348ebc79fbef8b1208304c70f385a31dc Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 11:32:58 -0800 Subject: [PATCH 06/31] Fix argument to connectivity-deploy.yaml --- builds/e2e/connectivity.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/builds/e2e/connectivity.yaml b/builds/e2e/connectivity.yaml index 340a235d879..dcd044a98ca 100644 --- a/builds/e2e/connectivity.yaml +++ b/builds/e2e/connectivity.yaml @@ -211,7 +211,7 @@ jobs: # Deploy connectivity test - template: templates/connectivity-deploy.yaml parameters: - connection.arm: $(az.connection.arm) + connection.arm: $(azure.subscription) release.label: 'ct$(agent.group)' test.buildNumber: '$(Build.BuildNumber)' test.buildId: '$(Build.BuildId)' @@ -408,7 +408,7 @@ jobs: # Deploy connectivity test - template: templates/connectivity-deploy.yaml parameters: - connection.arm: $(az.connection.arm) + connection.arm: $(azure.subscription) release.label: 'ct$(agent.group)' test.buildNumber: '$(Build.BuildNumber)' test.buildId: '$(Build.BuildId)' From dc6090fd1ce10ebf82a194410bebb457500418d7 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 11:43:54 -0800 Subject: [PATCH 07/31] Quote values for consistency --- builds/e2e/connectivity.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/builds/e2e/connectivity.yaml b/builds/e2e/connectivity.yaml index dcd044a98ca..8d58ff8472f 100644 --- a/builds/e2e/connectivity.yaml +++ b/builds/e2e/connectivity.yaml @@ -211,7 +211,7 @@ jobs: # Deploy connectivity test - template: templates/connectivity-deploy.yaml parameters: - connection.arm: $(azure.subscription) + connection.arm: '$(azure.subscription)' release.label: 'ct$(agent.group)' test.buildNumber: '$(Build.BuildNumber)' test.buildId: '$(Build.BuildId)' @@ -408,7 +408,7 @@ jobs: # Deploy connectivity test - template: templates/connectivity-deploy.yaml parameters: - connection.arm: $(azure.subscription) + connection.arm: '$(azure.subscription)' release.label: 'ct$(agent.group)' test.buildNumber: '$(Build.BuildNumber)' test.buildId: '$(Build.BuildId)' From 4fa0342a565253d8a0968a1971ce299ab4df8f3b Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 11:44:38 -0800 Subject: [PATCH 08/31] Fix reference to dotted template parameter --- builds/e2e/templates/connectivity-deploy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 09c8c786d0d..5a0945e6d23 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -91,7 +91,7 @@ steps: condition: and(succeeded(), eq(variables['run.flag'], 1)) displayName: 'Run Connectivity Deployment' inputs: - azureSubscription: ${{ parameters.connection.arm }} + azureSubscription: ${{ parameters['connection.arm'] }} scriptType: bash scriptLocation: inlineScript inlineScript: | From bdb3213d983c0bdc724e4ce1eb6062c94cf9db45 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 14:16:33 -0800 Subject: [PATCH 09/31] Try an app that works from my desktop --- builds/e2e/delete/iot-service/Program.cs | 10 ++++++++ .../e2e/delete/iot-service/iot-service.csproj | 16 +++++++++++++ builds/e2e/delete/iot-service/iot-service.sln | 24 +++++++++++++++++++ builds/e2e/templates/connectivity-deploy.yaml | 8 +++++++ 4 files changed, 58 insertions(+) create mode 100644 builds/e2e/delete/iot-service/Program.cs create mode 100644 builds/e2e/delete/iot-service/iot-service.csproj create mode 100644 builds/e2e/delete/iot-service/iot-service.sln diff --git a/builds/e2e/delete/iot-service/Program.cs b/builds/e2e/delete/iot-service/Program.cs new file mode 100644 index 00000000000..afe8fdeb2ce --- /dev/null +++ b/builds/e2e/delete/iot-service/Program.cs @@ -0,0 +1,10 @@ +using Azure.Identity; +using Microsoft.Azure.Devices; + +var hostname = "EdgeConnectivityTestHub.azure-devices.net"; +var settings = new HttpTransportSettings(); +RegistryManager rm = RegistryManager.Create(hostname, new DefaultAzureCredential(), settings); + +var deviceId = "ct1-Linux-amd64-connect-L0Wzdev6-Amqp-leaf"; +var device = await rm.GetDeviceAsync(deviceId); +Console.WriteLine($"Device ID: {device.Id}, Status: {device.Status}, ETag: {device.ETag}"); diff --git a/builds/e2e/delete/iot-service/iot-service.csproj b/builds/e2e/delete/iot-service/iot-service.csproj new file mode 100644 index 00000000000..f677df41509 --- /dev/null +++ b/builds/e2e/delete/iot-service/iot-service.csproj @@ -0,0 +1,16 @@ + + + + Exe + net8.0 + iot_service + enable + enable + + + + + + + + diff --git a/builds/e2e/delete/iot-service/iot-service.sln b/builds/e2e/delete/iot-service/iot-service.sln new file mode 100644 index 00000000000..fb9c479a843 --- /dev/null +++ b/builds/e2e/delete/iot-service/iot-service.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.2.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iot-service", "iot-service.csproj", "{F860AFD6-97D7-0FA0-27E9-94EEDAC590A3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F860AFD6-97D7-0FA0-27E9-94EEDAC590A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F860AFD6-97D7-0FA0-27E9-94EEDAC590A3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F860AFD6-97D7-0FA0-27E9-94EEDAC590A3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F860AFD6-97D7-0FA0-27E9-94EEDAC590A3}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9F0BC883-FF7A-4FCB-9E28-FD73396C1280} + EndGlobalSection +EndGlobal diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 5a0945e6d23..65e20f792fc 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -97,6 +97,14 @@ steps: inlineScript: | set -euo pipefail + # DELETE: build and run this targeted sample app that works from my desktop + echo 'Build iot-service sample app' + dotnet publish -c Release ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service + echo 'Run iot-service sample app' + ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Release/net8.0/publish/iot-service + echo 'Run iot-service sample app as sudo' + sudo --preserve-env ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Release/net8.0/publish/iot-service + . $(Agent.BuildDirectory)/../artifacts/${{ parameters['images.artifact.name'] }}/artifactInfo.txt chmod +x ${{ parameters['build.repo.path'] }}/scripts/linux/trcE2ETest.sh testName="Connectivity" From 1c6e843c9c21e09d806c5ef26b531052b430e66c Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 14:28:05 -0800 Subject: [PATCH 10/31] See if a debug build will give us a better call stack --- builds/e2e/templates/connectivity-deploy.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 65e20f792fc..1e96e5cf0c1 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -99,12 +99,11 @@ steps: # DELETE: build and run this targeted sample app that works from my desktop echo 'Build iot-service sample app' - dotnet publish -c Release ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service + dotnet publish -c Debug ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service echo 'Run iot-service sample app' - ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Release/net8.0/publish/iot-service + ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Debug/net8.0/publish/iot-service echo 'Run iot-service sample app as sudo' - sudo --preserve-env ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Release/net8.0/publish/iot-service - + sudo --preserve-env ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Debug/net8.0/publish/iot-service . $(Agent.BuildDirectory)/../artifacts/${{ parameters['images.artifact.name'] }}/artifactInfo.txt chmod +x ${{ parameters['build.repo.path'] }}/scripts/linux/trcE2ETest.sh testName="Connectivity" From 4142469c5cf18d6e98311d722ee6d8e4c3928628 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 14:48:21 -0800 Subject: [PATCH 11/31] See Azure Identity logs --- builds/e2e/delete/iot-service/Program.cs | 8 ++++++++ builds/e2e/templates/connectivity-deploy.yaml | 1 + 2 files changed, 9 insertions(+) diff --git a/builds/e2e/delete/iot-service/Program.cs b/builds/e2e/delete/iot-service/Program.cs index afe8fdeb2ce..6eda954ba95 100644 --- a/builds/e2e/delete/iot-service/Program.cs +++ b/builds/e2e/delete/iot-service/Program.cs @@ -1,6 +1,14 @@ using Azure.Identity; using Microsoft.Azure.Devices; +using AzureEventSourceListener listener = new((args, message) => +{ + if (args is { EventSource.Name: "Azure-Identity" }) + { + Console.WriteLine(message); + } +}, EventLevel.LogAlways); + var hostname = "EdgeConnectivityTestHub.azure-devices.net"; var settings = new HttpTransportSettings(); RegistryManager rm = RegistryManager.Create(hostname, new DefaultAzureCredential(), settings); diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 1e96e5cf0c1..87c04011c8b 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -104,6 +104,7 @@ steps: ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Debug/net8.0/publish/iot-service echo 'Run iot-service sample app as sudo' sudo --preserve-env ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Debug/net8.0/publish/iot-service + . $(Agent.BuildDirectory)/../artifacts/${{ parameters['images.artifact.name'] }}/artifactInfo.txt chmod +x ${{ parameters['build.repo.path'] }}/scripts/linux/trcE2ETest.sh testName="Connectivity" From 0d9519a1d037cac8294e07d6882f3ca48f80bc6b Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 14:52:23 -0800 Subject: [PATCH 12/31] Add usings to make the sample compile --- builds/e2e/delete/iot-service/Program.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/builds/e2e/delete/iot-service/Program.cs b/builds/e2e/delete/iot-service/Program.cs index 6eda954ba95..23f42f95c81 100644 --- a/builds/e2e/delete/iot-service/Program.cs +++ b/builds/e2e/delete/iot-service/Program.cs @@ -1,4 +1,6 @@ -using Azure.Identity; +using System.Diagnostics.Tracing; +using Azure.Core.Diagnostics; +using Azure.Identity; using Microsoft.Azure.Devices; using AzureEventSourceListener listener = new((args, message) => From 8285055272286f1a3a411406dd259b08d386e8eb Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 15:15:31 -0800 Subject: [PATCH 13/31] Use Azure CLI credentials to authenticate to IoT hub --- builds/e2e/delete/iot-service/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builds/e2e/delete/iot-service/Program.cs b/builds/e2e/delete/iot-service/Program.cs index 23f42f95c81..4ee6c7f636f 100644 --- a/builds/e2e/delete/iot-service/Program.cs +++ b/builds/e2e/delete/iot-service/Program.cs @@ -13,7 +13,7 @@ var hostname = "EdgeConnectivityTestHub.azure-devices.net"; var settings = new HttpTransportSettings(); -RegistryManager rm = RegistryManager.Create(hostname, new DefaultAzureCredential(), settings); +RegistryManager rm = RegistryManager.Create(hostname, new AzureCliCredential(), settings); var deviceId = "ct1-Linux-amd64-connect-L0Wzdev6-Amqp-leaf"; var device = await rm.GetDeviceAsync(deviceId); From 683804983f7bbd160f47e54dce865d92dd8b219e Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 15:25:33 -0800 Subject: [PATCH 14/31] Use AzureCliCredential in IotEdgeQuickstart and LeafDevice --- smoke/IotEdgeQuickstart/details/Details.cs | 4 ++-- smoke/LeafDevice/details/Details.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/smoke/IotEdgeQuickstart/details/Details.cs b/smoke/IotEdgeQuickstart/details/Details.cs index 5638f468880..8adf4c62fde 100644 --- a/smoke/IotEdgeQuickstart/details/Details.cs +++ b/smoke/IotEdgeQuickstart/details/Details.cs @@ -237,7 +237,7 @@ protected async Task GetOrCreateEdgeDeviceIdentity() var settings = new HttpTransportSettings(); this.proxy.ForEach(p => settings.Proxy = p); IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); - RegistryManager rm = RegistryManager.Create(builder.HostName, new DefaultAzureCredential(), settings); + RegistryManager rm = RegistryManager.Create(builder.HostName, new AzureCliCredential(), settings); Device device = await rm.GetDeviceAsync(this.deviceId); if (device != null) @@ -314,7 +314,7 @@ protected async Task VerifyEdgeAgentIsConnectedToIotHub() IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); ServiceClient serviceClient = - ServiceClient.Create(builder.HostName, new DefaultAzureCredential(), this.serviceClientTransportType, settings); + ServiceClient.Create(builder.HostName, new AzureCliCredential(), this.serviceClientTransportType, settings); while (!cts.IsCancellationRequested) { diff --git a/smoke/LeafDevice/details/Details.cs b/smoke/LeafDevice/details/Details.cs index 42c70e059e7..80402b299b1 100644 --- a/smoke/LeafDevice/details/Details.cs +++ b/smoke/LeafDevice/details/Details.cs @@ -219,7 +219,7 @@ protected async Task GetOrCreateDeviceIdentityAsync() var settings = new HttpTransportSettings(); this.proxy.ForEach(p => settings.Proxy = p); IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); - RegistryManager rm = RegistryManager.Create(builder.HostName, new DefaultAzureCredential(), settings); + RegistryManager rm = RegistryManager.Create(builder.HostName, new AzureCliCredential(), settings); Option edgeScope = await this.edgeDeviceId .Map(id => GetScopeIfExitsAsync(rm, id)) @@ -324,7 +324,7 @@ protected async Task VerifyDirectMethodAsync() this.proxy.ForEach(p => settings.HttpProxy = p); IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); ServiceClient serviceClient = - ServiceClient.Create(builder.HostName, new DefaultAzureCredential(), this.serviceClientTransportType, settings); + ServiceClient.Create(builder.HostName, new AzureCliCredential(), this.serviceClientTransportType, settings); // Call a direct method TimeSpan testDuration = TimeSpan.FromSeconds(300); From 4542313005700313271941b84895a4bd7226f337 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 15:39:04 -0800 Subject: [PATCH 15/31] Revert "Use Azure CLI credentials to authenticate to IoT hub" This reverts commit 8285055272286f1a3a411406dd259b08d386e8eb. --- builds/e2e/delete/iot-service/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builds/e2e/delete/iot-service/Program.cs b/builds/e2e/delete/iot-service/Program.cs index 4ee6c7f636f..23f42f95c81 100644 --- a/builds/e2e/delete/iot-service/Program.cs +++ b/builds/e2e/delete/iot-service/Program.cs @@ -13,7 +13,7 @@ var hostname = "EdgeConnectivityTestHub.azure-devices.net"; var settings = new HttpTransportSettings(); -RegistryManager rm = RegistryManager.Create(hostname, new AzureCliCredential(), settings); +RegistryManager rm = RegistryManager.Create(hostname, new DefaultAzureCredential(), settings); var deviceId = "ct1-Linux-amd64-connect-L0Wzdev6-Amqp-leaf"; var device = await rm.GetDeviceAsync(deviceId); From b359317596d8c1bc1dcec325de14f4727eb13cde Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 15:39:16 -0800 Subject: [PATCH 16/31] Revert "Add usings to make the sample compile" This reverts commit 0d9519a1d037cac8294e07d6882f3ca48f80bc6b. --- builds/e2e/delete/iot-service/Program.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/builds/e2e/delete/iot-service/Program.cs b/builds/e2e/delete/iot-service/Program.cs index 23f42f95c81..6eda954ba95 100644 --- a/builds/e2e/delete/iot-service/Program.cs +++ b/builds/e2e/delete/iot-service/Program.cs @@ -1,6 +1,4 @@ -using System.Diagnostics.Tracing; -using Azure.Core.Diagnostics; -using Azure.Identity; +using Azure.Identity; using Microsoft.Azure.Devices; using AzureEventSourceListener listener = new((args, message) => From 226ec8a877d35ab172dcd9528d2aa05c2412ea22 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 15:39:21 -0800 Subject: [PATCH 17/31] Revert "See Azure Identity logs" This reverts commit 4142469c5cf18d6e98311d722ee6d8e4c3928628. --- builds/e2e/delete/iot-service/Program.cs | 8 -------- builds/e2e/templates/connectivity-deploy.yaml | 1 - 2 files changed, 9 deletions(-) diff --git a/builds/e2e/delete/iot-service/Program.cs b/builds/e2e/delete/iot-service/Program.cs index 6eda954ba95..afe8fdeb2ce 100644 --- a/builds/e2e/delete/iot-service/Program.cs +++ b/builds/e2e/delete/iot-service/Program.cs @@ -1,14 +1,6 @@ using Azure.Identity; using Microsoft.Azure.Devices; -using AzureEventSourceListener listener = new((args, message) => -{ - if (args is { EventSource.Name: "Azure-Identity" }) - { - Console.WriteLine(message); - } -}, EventLevel.LogAlways); - var hostname = "EdgeConnectivityTestHub.azure-devices.net"; var settings = new HttpTransportSettings(); RegistryManager rm = RegistryManager.Create(hostname, new DefaultAzureCredential(), settings); diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 87c04011c8b..1e96e5cf0c1 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -104,7 +104,6 @@ steps: ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Debug/net8.0/publish/iot-service echo 'Run iot-service sample app as sudo' sudo --preserve-env ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Debug/net8.0/publish/iot-service - . $(Agent.BuildDirectory)/../artifacts/${{ parameters['images.artifact.name'] }}/artifactInfo.txt chmod +x ${{ parameters['build.repo.path'] }}/scripts/linux/trcE2ETest.sh testName="Connectivity" From 6bf67f389f282de2fd93ada42c5f293df77d2f69 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 15:39:23 -0800 Subject: [PATCH 18/31] Revert "See if a debug build will give us a better call stack" This reverts commit 1c6e843c9c21e09d806c5ef26b531052b430e66c. --- builds/e2e/templates/connectivity-deploy.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 1e96e5cf0c1..65e20f792fc 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -99,11 +99,12 @@ steps: # DELETE: build and run this targeted sample app that works from my desktop echo 'Build iot-service sample app' - dotnet publish -c Debug ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service + dotnet publish -c Release ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service echo 'Run iot-service sample app' - ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Debug/net8.0/publish/iot-service + ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Release/net8.0/publish/iot-service echo 'Run iot-service sample app as sudo' - sudo --preserve-env ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Debug/net8.0/publish/iot-service + sudo --preserve-env ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Release/net8.0/publish/iot-service + . $(Agent.BuildDirectory)/../artifacts/${{ parameters['images.artifact.name'] }}/artifactInfo.txt chmod +x ${{ parameters['build.repo.path'] }}/scripts/linux/trcE2ETest.sh testName="Connectivity" From 9aa5e01f27d63fb5575b560b52ac9204d312f776 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Wed, 17 Dec 2025 15:39:31 -0800 Subject: [PATCH 19/31] Revert "Try an app that works from my desktop" This reverts commit bdb3213d983c0bdc724e4ce1eb6062c94cf9db45. --- builds/e2e/delete/iot-service/Program.cs | 10 -------- .../e2e/delete/iot-service/iot-service.csproj | 16 ------------- builds/e2e/delete/iot-service/iot-service.sln | 24 ------------------- builds/e2e/templates/connectivity-deploy.yaml | 8 ------- 4 files changed, 58 deletions(-) delete mode 100644 builds/e2e/delete/iot-service/Program.cs delete mode 100644 builds/e2e/delete/iot-service/iot-service.csproj delete mode 100644 builds/e2e/delete/iot-service/iot-service.sln diff --git a/builds/e2e/delete/iot-service/Program.cs b/builds/e2e/delete/iot-service/Program.cs deleted file mode 100644 index afe8fdeb2ce..00000000000 --- a/builds/e2e/delete/iot-service/Program.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Azure.Identity; -using Microsoft.Azure.Devices; - -var hostname = "EdgeConnectivityTestHub.azure-devices.net"; -var settings = new HttpTransportSettings(); -RegistryManager rm = RegistryManager.Create(hostname, new DefaultAzureCredential(), settings); - -var deviceId = "ct1-Linux-amd64-connect-L0Wzdev6-Amqp-leaf"; -var device = await rm.GetDeviceAsync(deviceId); -Console.WriteLine($"Device ID: {device.Id}, Status: {device.Status}, ETag: {device.ETag}"); diff --git a/builds/e2e/delete/iot-service/iot-service.csproj b/builds/e2e/delete/iot-service/iot-service.csproj deleted file mode 100644 index f677df41509..00000000000 --- a/builds/e2e/delete/iot-service/iot-service.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - Exe - net8.0 - iot_service - enable - enable - - - - - - - - diff --git a/builds/e2e/delete/iot-service/iot-service.sln b/builds/e2e/delete/iot-service/iot-service.sln deleted file mode 100644 index fb9c479a843..00000000000 --- a/builds/e2e/delete/iot-service/iot-service.sln +++ /dev/null @@ -1,24 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.5.2.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iot-service", "iot-service.csproj", "{F860AFD6-97D7-0FA0-27E9-94EEDAC590A3}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F860AFD6-97D7-0FA0-27E9-94EEDAC590A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F860AFD6-97D7-0FA0-27E9-94EEDAC590A3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F860AFD6-97D7-0FA0-27E9-94EEDAC590A3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F860AFD6-97D7-0FA0-27E9-94EEDAC590A3}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {9F0BC883-FF7A-4FCB-9E28-FD73396C1280} - EndGlobalSection -EndGlobal diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 65e20f792fc..5a0945e6d23 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -97,14 +97,6 @@ steps: inlineScript: | set -euo pipefail - # DELETE: build and run this targeted sample app that works from my desktop - echo 'Build iot-service sample app' - dotnet publish -c Release ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service - echo 'Run iot-service sample app' - ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Release/net8.0/publish/iot-service - echo 'Run iot-service sample app as sudo' - sudo --preserve-env ${{ parameters['build.repo.path'] }}/builds/e2e/delete/iot-service/bin/Release/net8.0/publish/iot-service - . $(Agent.BuildDirectory)/../artifacts/${{ parameters['images.artifact.name'] }}/artifactInfo.txt chmod +x ${{ parameters['build.repo.path'] }}/scripts/linux/trcE2ETest.sh testName="Connectivity" From b74f6a3d8299d1d28bb7be44cd9dc43332380738 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Thu, 18 Dec 2025 11:39:08 -0800 Subject: [PATCH 20/31] Use AAD auth in test modules for connectivity --- builds/e2e/connectivity.yaml | 4 +- builds/e2e/templates/connectivity-deploy.yaml | 4 +- .../connectivity_deployment.template.json | 52 +++---- .../packages.lock.json | 133 ++++++++++------ .../packages.lock.json | 133 ++++++++++------ scripts/linux/trcE2ETest.sh | 58 +++---- smoke/IotEdgeQuickstart/Program.cs | 56 +++---- smoke/IotEdgeQuickstart/Quickstart.cs | 4 +- smoke/IotEdgeQuickstart/details/Details.cs | 37 ++--- smoke/IotEdgeQuickstart/packages.lock.json | 5 +- smoke/LeafDevice/LeafDevice.cs | 12 +- smoke/LeafDevice/Program.cs | 16 +- smoke/LeafDevice/details/Details.cs | 26 ++-- smoke/LeafDevice/packages.lock.json | 5 +- .../Context.cs | 6 +- .../IotHub.cs | 20 +-- ...soft.Azure.Devices.Edge.Test.Common.csproj | 5 +- .../packages.lock.json | 140 ++++++++++------- .../PriorityQueues.cs | 4 +- .../Provisioning.cs | 2 +- .../helpers/ManualProvisioningFixture.cs | 2 +- .../helpers/TestResultCoordinatorUtil.cs | 2 +- .../packages.lock.json | 124 +++++++++------ .../CloudToDeviceMessageReceiver.cs | 11 +- .../CloudToDeviceMessageSender.cs | 7 +- .../CloudToDeviceMessageTester.csproj | 3 +- .../CloudToDeviceMessageTester/Settings.cs | 12 +- .../packages.lock.json | 143 +++++++++++------- .../DeploymentTester/DeploymentTester.csproj | 3 +- test/modules/DeploymentTester/Program.cs | 3 +- test/modules/DeploymentTester/Settings.cs | 10 +- .../DeploymentTester/config/settings.json | 2 +- .../DeploymentTester/packages.lock.json | 134 +++++++++------- .../DirectMethodCloudSender.cs | 5 +- .../DirectMethodSender.csproj | 3 +- test/modules/DirectMethodSender/Program.cs | 2 +- test/modules/DirectMethodSender/Settings.cs | 8 +- .../DirectMethodSender/packages.lock.json | 134 +++++++++------- .../EdgeHubRestartTester.csproj | 3 +- .../EdgeHubRestartTester/config/settings.json | 2 +- .../EdgeHubRestartTester/packages.lock.json | 134 +++++++++------- .../EdgeHubRestartTester/src/Program.cs | 3 +- .../EdgeHubRestartTester/src/Settings.cs | 11 +- .../MetricsValidator/packages.lock.json | 124 +++++++++------ .../ModuleRestarter/ModuleRestarter.csproj | 3 +- .../ModuleRestarter/config/settings.json | 2 +- .../ModuleRestarter/packages.lock.json | 134 +++++++++------- test/modules/ModuleRestarter/src/Program.cs | 3 +- test/modules/ModuleRestarter/src/Settings.cs | 8 +- test/modules/Modules.Test/packages.lock.json | 136 +++++++++++------ test/modules/TestAnalyzer/TestAnalyzer.csproj | 2 +- test/modules/TestAnalyzer/packages.lock.json | 142 ++++++++++------- .../Reports/CloudTwinTestResultCollection.cs | 9 +- .../Reports/TestReportGeneratorFactory.cs | 2 +- .../Services/TestResultReportingService.cs | 2 +- .../modules/TestResultCoordinator/Settings.cs | 11 +- .../TestResultCoordinator/TestReportUtil.cs | 7 +- .../TestResultCoordinator.csproj | 3 +- .../TestResultCoordinator/packages.lock.json | 143 +++++++++++------- test/modules/TwinTester/Program.cs | 3 +- test/modules/TwinTester/Settings.cs | 8 +- test/modules/TwinTester/TwinTester.csproj | 5 +- test/modules/TwinTester/config/settings.json | 2 +- test/modules/TwinTester/packages.lock.json | 140 ++++++++++------- 64 files changed, 1415 insertions(+), 957 deletions(-) diff --git a/builds/e2e/connectivity.yaml b/builds/e2e/connectivity.yaml index 8d58ff8472f..7efbc27195b 100644 --- a/builds/e2e/connectivity.yaml +++ b/builds/e2e/connectivity.yaml @@ -225,7 +225,7 @@ jobs: container.registry: '$(cr.server)' container.registry.username: '$(cr.username)' container.registry.password: '$(cr.token)' - iotHub.connectionString: '$(IotHub-ConnStr)' + iotHub.hostName: '$(iothub.hostname)' eventHub.connectionString: '$(IotHub-EventHubConnStr)' deploymentFileName: '$(deploymentFileName)' upstream.protocol: '$(upstream.protocol)' @@ -422,7 +422,7 @@ jobs: container.registry: '$(cr.server)' container.registry.username: '$(cr.username)' container.registry.password: '$(cr.token)' - iotHub.connectionString: '$(EdgeConnectivityTestHubARM32ConnString)' + iotHub.hostName: '$(iothub.hostname)' eventHub.connectionString: '$(EdgeConnectivityEventHubARM32ConnString)' deploymentFileName: '$(deploymentFileName)' upstream.protocol: '$(upstream.protocol)' diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 5a0945e6d23..69246314f8c 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -14,7 +14,7 @@ parameters: container.registry.username: '' container.registry.password: '' testResultCoordinator.blobStorageAccountUriWithSasToken: '' - iotHub.connectionString: '' + iotHub.hostName: '' eventHub.connectionString: '' upstream.protocol: '' networkController.description: '' @@ -121,7 +121,7 @@ steps: -containerRegistry "${{ parameters['container.registry'] }}" \ -containerRegistryUsername "${{ parameters['container.registry.username'] }}" \ -containerRegistryPassword "${{ parameters['container.registry.password'] }}" \ - -iotHubConnectionString "${{ parameters['iotHub.connectionString'] }}" \ + -iotHubHostName "${{ parameters['iotHub.hostName'] }}" \ -eventHubConnectionString "${{ parameters['eventHub.connectionString'] }}" \ -upstreamProtocol "${{ parameters['upstream.protocol'] }}" \ -testDuration "${{ parameters['testDuration'] }}" \ diff --git a/e2e_deployment_files/connectivity_deployment.template.json b/e2e_deployment_files/connectivity_deployment.template.json index 43e3556c7e8..45a2cf9b7ce 100644 --- a/e2e_deployment_files/connectivity_deployment.template.json +++ b/e2e_deployment_files/connectivity_deployment.template.json @@ -145,8 +145,8 @@ "InvocationSource": { "value": "Cloud" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "TargetModuleId": { "value": "directMethodReceiver1" @@ -205,8 +205,8 @@ "InvocationSource": { "value": "Cloud" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "TargetModuleId": { "value": "directMethodReceiver2" @@ -268,8 +268,8 @@ "InvocationSource": { "value": "Cloud" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "TargetModuleId": { "value": "$edgeAgent" @@ -382,8 +382,8 @@ "logAnalyticsLogType": { "value": "" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "logUploadEnabled": { "value": "" @@ -427,8 +427,8 @@ "testDuration": { "value": "" }, - "ServiceClientConnectionString": { - "value": "" + "IotHubHostname": { + "value": "" }, "TargetModuleId": { "value": "twinTester2" @@ -469,8 +469,8 @@ "testDuration": { "value": "" }, - "ServiceClientConnectionString": { - "value": "" + "IotHubHostname": { + "value": "" }, "TransportType": { "value": "Amqp" @@ -511,8 +511,8 @@ "testDuration": { "value": "" }, - "ServiceClientConnectionString": { - "value": "" + "IotHubHostname": { + "value": "" }, "TargetModuleId": { "value": "twinTester4" @@ -553,8 +553,8 @@ "testDuration": { "value": "" }, - "ServiceClientConnectionString": { - "value": "" + "IotHubHostname": { + "value": "" }, "TransportType": { "value": "Mqtt" @@ -589,8 +589,8 @@ "testDuration": { "value": "" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "trackingId": { "value": "" @@ -640,8 +640,8 @@ "C2DMESSAGE_TESTER_MODE": { "value": "Sender" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "trackingId": { "value": "" @@ -670,8 +670,8 @@ "C2DMESSAGE_TESTER_MODE": { "value": "Receiver" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "transportType": { "value": "Amqp" @@ -694,8 +694,8 @@ "C2DMESSAGE_TESTER_MODE": { "value": "Sender" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "trackingId": { "value": "" @@ -727,8 +727,8 @@ "C2DMESSAGE_TESTER_MODE": { "value": "Receiver" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "transportType": { "value": "Mqtt" diff --git a/edge-hub/core/test/Microsoft.Azure.Devices.Edge.Hub.CloudProxy.Test/packages.lock.json b/edge-hub/core/test/Microsoft.Azure.Devices.Edge.Hub.CloudProxy.Test/packages.lock.json index 37b84aa6aea..8ee6bab686c 100644 --- a/edge-hub/core/test/Microsoft.Azure.Devices.Edge.Hub.CloudProxy.Test/packages.lock.json +++ b/edge-hub/core/test/Microsoft.Azure.Devices.Edge.Hub.CloudProxy.Test/packages.lock.json @@ -153,16 +153,22 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" + } + }, + "Azure.Identity": { + "type": "Transitive", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", + "dependencies": { + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" } }, "Azure.Storage.Blobs": { @@ -285,18 +291,19 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices": { "type": "Transitive", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -330,11 +337,11 @@ }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Azure.EventHubs": { @@ -392,8 +399,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CodeCoverage": { "type": "Transitive", @@ -472,8 +479,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -511,8 +518,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", @@ -555,6 +565,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.IdentityModel.Clients.ActiveDirectory": { "type": "Transitive", "resolved": "4.5.1", @@ -622,8 +655,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -733,8 +766,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Newtonsoft.Json.Bson": { "type": "Transitive", @@ -1017,6 +1050,15 @@ "System.Threading": "4.3.0" } }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1363,12 +1405,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1427,11 +1465,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.3.0", @@ -1830,8 +1863,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Cryptography.X509Certificates": { "type": "Transitive", @@ -1990,8 +2023,13 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.3.0", + "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } }, "System.Threading.Thread": { "type": "Transitive", @@ -2214,7 +2252,8 @@ "microsoft.azure.devices.edge.test.common": { "type": "Project", "dependencies": { - "Microsoft.Azure.Devices": "[1.31.6, )", + "Azure.Identity": "[1.17.1, )", + "Microsoft.Azure.Devices": "[1.41.0, )", "Microsoft.Azure.Devices.Client": "[1.36.10, )", "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", "Microsoft.Azure.EventHubs": "[4.3.2, )", @@ -2222,7 +2261,7 @@ "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", "Nett": "[0.15.0, )", - "Newtonsoft.Json": "[13.0.2, )", + "Newtonsoft.Json": "[13.0.3, )", "System.ServiceProcess.ServiceController": "[4.5.0, )" } }, diff --git a/edge-hub/core/test/Microsoft.Azure.Devices.Edge.Hub.E2E.Test/packages.lock.json b/edge-hub/core/test/Microsoft.Azure.Devices.Edge.Hub.E2E.Test/packages.lock.json index 0e1ebd35b66..b3ecd2546bb 100644 --- a/edge-hub/core/test/Microsoft.Azure.Devices.Edge.Hub.E2E.Test/packages.lock.json +++ b/edge-hub/core/test/Microsoft.Azure.Devices.Edge.Hub.E2E.Test/packages.lock.json @@ -153,16 +153,22 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" + } + }, + "Azure.Identity": { + "type": "Transitive", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", + "dependencies": { + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" } }, "Azure.Storage.Blobs": { @@ -285,18 +291,19 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices": { "type": "Transitive", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -330,11 +337,11 @@ }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Azure.EventHubs": { @@ -392,8 +399,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CodeCoverage": { "type": "Transitive", @@ -472,8 +479,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -511,8 +518,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", @@ -569,6 +579,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.IdentityModel.Clients.ActiveDirectory": { "type": "Transitive", "resolved": "4.5.1", @@ -636,8 +669,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -747,8 +780,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Newtonsoft.Json.Bson": { "type": "Transitive", @@ -1062,6 +1095,15 @@ "System.Threading": "4.3.0" } }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1408,12 +1450,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1472,11 +1510,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.3.0", @@ -1875,8 +1908,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Cryptography.X509Certificates": { "type": "Transitive", @@ -2035,8 +2068,13 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.3.0", + "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } }, "System.Threading.Thread": { "type": "Transitive", @@ -2321,7 +2359,8 @@ "microsoft.azure.devices.edge.test.common": { "type": "Project", "dependencies": { - "Microsoft.Azure.Devices": "[1.31.6, )", + "Azure.Identity": "[1.17.1, )", + "Microsoft.Azure.Devices": "[1.41.0, )", "Microsoft.Azure.Devices.Client": "[1.36.10, )", "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", "Microsoft.Azure.EventHubs": "[4.3.2, )", @@ -2329,7 +2368,7 @@ "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", "Nett": "[0.15.0, )", - "Newtonsoft.Json": "[13.0.2, )", + "Newtonsoft.Json": "[13.0.3, )", "System.ServiceProcess.ServiceController": "[4.5.0, )" } }, diff --git a/scripts/linux/trcE2ETest.sh b/scripts/linux/trcE2ETest.sh index 7e8d35112a2..97e1e387686 100755 --- a/scripts/linux/trcE2ETest.sh +++ b/scripts/linux/trcE2ETest.sh @@ -15,7 +15,7 @@ function usage() { echo " -containerRegistry Host address of container registry." echo " -containerRegistryUsername Username of container registry." echo ' -containerRegistryPassword Password of given username for container registory.' - echo ' -iotHubConnectionString IoT hub connection string for creating edge device.' + echo ' -iotHubHostName Hostname of IoT hub where edge device will be created.' echo ' -eventHubConnectionString Event hub connection string for receive D2C messages.' echo ' -eventHubConsumerGroupId Event hub consumer group for receive D2C messages.' echo ' -testDuration Connectivity test duration' @@ -171,7 +171,7 @@ function prepare_test_from_artifacts() { sed -i -e "s@@$CONTAINER_REGISTRY@g" "$deployment_working_file" sed -i -e "s@@$CONTAINER_REGISTRY_USERNAME@g" "$deployment_working_file" sed -i -e "s@@$CONTAINER_REGISTRY_PASSWORD@g" "$deployment_working_file" - sed -i -e "s@@$IOT_HUB_CONNECTION_STRING@g" "$deployment_working_file" + sed -i -e "s@@$IOT_HUB_HOSTNAME@g" "$deployment_working_file" sed -i -e "s@@$TEST_START_DELAY@g" "$deployment_working_file" sed -i -e "s@@$TRACKING_ID@g" "$deployment_working_file" sed -i -e "s@@$LOG_ANALYTICS_WORKSPACEID@g" "$deployment_working_file" @@ -360,7 +360,7 @@ function process_args() { CONTAINER_REGISTRY_PASSWORD="$arg" saveNextArg=0 elif [ $saveNextArg -eq 7 ]; then - IOT_HUB_CONNECTION_STRING="$arg" + IOT_HUB_HOSTNAME="$arg" saveNextArg=0 elif [ $saveNextArg -eq 8 ]; then EVENTHUB_CONNECTION_STRING="$arg" @@ -497,7 +497,7 @@ function process_args() { '-containerRegistry' ) saveNextArg=4;; '-containerRegistryUsername' ) saveNextArg=5;; '-containerRegistryPassword' ) saveNextArg=6;; - '-iotHubConnectionString' ) saveNextArg=7;; + '-iotHubHostName' ) saveNextArg=7;; '-eventHubConnectionString' ) saveNextArg=8;; '-eventHubConsumerGroupId' ) saveNextArg=9;; '-testDuration' ) saveNextArg=10;; @@ -559,7 +559,7 @@ function process_args() { [[ -z "$CONTAINER_REGISTRY_PASSWORD" ]] && { print_error 'Container registry password is required'; exit 1; } [[ -z "$DEPLOYMENT_FILE_NAME" ]] && { print_error 'Deployment file name is required'; exit 1; } [[ -z "$EVENTHUB_CONNECTION_STRING" ]] && { print_error 'Event hub connection string is required'; exit 1; } - [[ -z "$IOT_HUB_CONNECTION_STRING" ]] && { print_error 'IoT hub connection string is required'; exit 1; } + [[ -z "$IOT_HUB_HOSTNAME" ]] && { print_error 'IoT hub hostname is required'; exit 1; } [[ -z "$LOG_ANALYTICS_SHAREDKEY" ]] && { print_error 'Log analytics shared key is required'; exit 1; } [[ -z "$LOG_ANALYTICS_WORKSPACEID" ]] && { print_error 'Log analytics workspace id is required'; exit 1; } [[ -z "$LOG_ANALYTICS_LOGTYPE" ]] && { print_error 'Log analytics log type is required'; exit 1; } @@ -574,7 +574,7 @@ function process_args() { echo 'Required parameters are provided' - if [ -z "$TRACKING_ID"]; then + if [ -z "$TRACKING_ID" ]; then TRACKING_ID=$(cat /proc/sys/kernel/random/uuid) fi } @@ -648,31 +648,31 @@ function run_connectivity_test() { echo "Parent Edge Device=$PARENT_EDGE_DEVICE" "$quickstart_working_folder/IotEdgeQuickstart" \ - -d "$device_id" \ - -a "$E2E_TEST_DIR/artifacts/" \ - -c "$IOT_HUB_CONNECTION_STRING" \ - -e "$EVENTHUB_CONNECTION_STRING" \ - -r "$CONTAINER_REGISTRY" \ - -u "$CONTAINER_REGISTRY_USERNAME" \ - -p "$CONTAINER_REGISTRY_PASSWORD" \ - -n "$(hostname)" \ - --parent-hostname "$PARENT_HOSTNAME" \ - --parent-edge-device "$PARENT_EDGE_DEVICE" \ - --device_ca_cert "$DEVICE_CA_CERT" \ - --device_ca_pk "$DEVICE_CA_PRIVATE_KEY" \ - --trusted_ca_certs "$TRUSTED_CA_CERTS" \ - --initialize-with-agent-artifact true \ - -t "$ARTIFACT_IMAGE_BUILD_NUMBER-linux-$image_architecture_label" \ - --leave-running=All \ - -l "$deployment_working_file" \ - --runtime-log-level "$TEST_RUNTIME_LOG_LEVEL" \ - --no-verify \ - --overwrite-packages && funcRet=$? || funcRet=$? + -d "$device_id" \ + -a "$E2E_TEST_DIR/artifacts/" \ + --iothub-hostname "$IOT_HUB_HOSTNAME" \ + -e "$EVENTHUB_CONNECTION_STRING" \ + -r "$CONTAINER_REGISTRY" \ + -u "$CONTAINER_REGISTRY_USERNAME" \ + -p "$CONTAINER_REGISTRY_PASSWORD" \ + -n "$(hostname)" \ + --parent-hostname "$PARENT_HOSTNAME" \ + --parent-edge-device "$PARENT_EDGE_DEVICE" \ + --device_ca_cert "$DEVICE_CA_CERT" \ + --device_ca_pk "$DEVICE_CA_PRIVATE_KEY" \ + --trusted_ca_certs "$TRUSTED_CA_CERTS" \ + --initialize-with-agent-artifact true \ + -t "$ARTIFACT_IMAGE_BUILD_NUMBER-linux-$image_architecture_label" \ + --leave-running=All \ + -l "$deployment_working_file" \ + --runtime-log-level "$TEST_RUNTIME_LOG_LEVEL" \ + --no-verify \ + --overwrite-packages && funcRet=$? || funcRet=$? else "$quickstart_working_folder/IotEdgeQuickstart" \ -d "$device_id" \ -a "$E2E_TEST_DIR/artifacts/" \ - -c "$IOT_HUB_CONNECTION_STRING" \ + --iothub-hostname "$IOT_HUB_HOSTNAME" \ -e "$EVENTHUB_CONNECTION_STRING" \ -r "$CONTAINER_REGISTRY" \ -u "$CONTAINER_REGISTRY_USERNAME" \ @@ -797,7 +797,7 @@ function run_longhaul_test() { "$quickstart_working_folder/IotEdgeQuickstart" \ -d "$device_id" \ -a "$E2E_TEST_DIR/artifacts/" \ - -c "$IOT_HUB_CONNECTION_STRING" \ + --iothub-hostname "$IOT_HUB_HOSTNAME" \ -e "$EVENTHUB_CONNECTION_STRING" \ -r "$CONTAINER_REGISTRY" \ -u "$CONTAINER_REGISTRY_USERNAME" \ @@ -823,7 +823,7 @@ function run_longhaul_test() { "$quickstart_working_folder/IotEdgeQuickstart" \ -d "$device_id" \ -a "$E2E_TEST_DIR/artifacts/" \ - -c "$IOT_HUB_CONNECTION_STRING" \ + --iothub-hostname "$IOT_HUB_HOSTNAME" \ -e "$EVENTHUB_CONNECTION_STRING" \ -r "$CONTAINER_REGISTRY" \ -u "$CONTAINER_REGISTRY_USERNAME" \ diff --git a/smoke/IotEdgeQuickstart/Program.cs b/smoke/IotEdgeQuickstart/Program.cs index fa8fe4d7c02..4fe5a4d0fcb 100644 --- a/smoke/IotEdgeQuickstart/Program.cs +++ b/smoke/IotEdgeQuickstart/Program.cs @@ -23,8 +23,8 @@ option is specified on the command line. Option Environment variable --bootstrapper-archive bootstrapperArchivePath - --connection-string iothubConnectionString --eventhub-endpoint eventhubCompatibleEndpointWithEntityPath + --iothub-hostname iothubHostName --password registryPassword --registry registryAddress --tag imageTag @@ -39,11 +39,11 @@ be used. Option Default value --bootstrapper 'iotedged' --bootstrapper-archive no path (archive is installed from apt or pypi) - --connection-string get the value from Key Vault --device-id an auto-generated unique identifier - --initialize-with-agent-artifact false --edge-hostname 'quickstart' --eventhub-endpoint get the value from Key Vault + --initialize-with-agent-artifact false + --iothub-hostname get the value from Key Vault --leave-running none (or 'all' if given as a switch) --password anonymous, or Key Vault if --registry is specified --registry mcr.microsoft.com (anonymous) @@ -72,21 +72,21 @@ class Program [Option("-b|--bootstrapper=", CommandOptionType.SingleValue, Description = "Which bootstrapper to use")] public BootstrapperType BootstrapperType { get; } = BootstrapperType.Iotedged; - [Option("-c|--connection-string ", Description = "IoT Hub connection string (hub-scoped, e.g. iothubowner)")] - public string IotHubConnectionString { get; } = Environment.GetEnvironmentVariable("iothubConnectionString"); - [Option("-d|--device-id", Description = "Edge device identifier registered with IoT Hub")] public string DeviceId { get; } = $"iot-edge-quickstart-{Guid.NewGuid()}"; - [Option("--initialize-with-agent-artifact ", CommandOptionType.SingleValue, Description = "Boolean specifying whether to bypass startup of edge agent 1.0 and start with the desired agent artifact directly")] - public bool InitializeWithAgentArtifact { get; } = false; - [Option("-e|--eventhub-endpoint ", Description = "Event Hub-compatible endpoint for IoT Hub, including EntityPath")] public string EventHubCompatibleEndpointWithEntityPath { get; } = Environment.GetEnvironmentVariable("eventhubCompatibleEndpointWithEntityPath"); [Option("-h|--use-http=", Description = "Modules talk to iotedged via tcp instead of unix domain socket")] public (bool useHttp, string hostname) UseHttp { get; } = (false, string.Empty); + [Option("--initialize-with-agent-artifact ", CommandOptionType.SingleValue, Description = "Boolean specifying whether to bypass startup of edge agent 1.0 and start with the desired agent artifact directly")] + public bool InitializeWithAgentArtifact { get; } = false; + + [Option("--iothub-hostname ", Description = "IoT Hub hostname")] + public string IotHubHostName { get; } = Environment.GetEnvironmentVariable("iothubHostName"); + [Option("--use-connect-management-uri=", Description = "Modules talk to a custom connect management socket (default is unix:///var/run/iotedge/mgmt.sock)")] public string ConnectManagementUri { get; } = string.Empty; @@ -237,22 +237,22 @@ async Task OnExecuteAsync() UriSocks socks = new UriSocks(this.ConnectManagementUri, this.ConnectWorkloadUri, this.ListenManagementUri, this.ListenWorkloadUri); ILinuxPackageInstall installMethod; - if (!this.BypassEdgeInstallation) - { - if (!string.IsNullOrEmpty(this.PackageType) && this.PackageType.ToLower().Equals("rpm")) - { - installMethod = new LinuxPackageInstallRPM(this.BootstrapperArchivePath); - } - else - { - installMethod = new LinuxPackageInstallDep(this.BootstrapperArchivePath); - } - } - else - { - installMethod = new LinuxPackageNonInstall(); - } - + if (!this.BypassEdgeInstallation) + { + if (!string.IsNullOrEmpty(this.PackageType) && this.PackageType.ToLower().Equals("rpm")) + { + installMethod = new LinuxPackageInstallRPM(this.BootstrapperArchivePath); + } + else + { + installMethod = new LinuxPackageInstallDep(this.BootstrapperArchivePath); + } + } + else + { + installMethod = new LinuxPackageNonInstall(); + } + bootstrapper = new IotedgedLinux(credentials, uris, socks, proxy, upstreamProtocolOption, this.OverwritePackages, installMethod); } @@ -261,8 +261,8 @@ async Task OnExecuteAsync() throw new ArgumentException("Unknown BootstrapperType"); } - string connectionString = this.IotHubConnectionString ?? - await SecretsHelper.GetSecretFromConfigKey("iotHubConnStrKey"); + string iothubHostName = this.IotHubHostName ?? + await SecretsHelper.GetSecretFromConfigKey("iotHubHostName"); Option dpsAttestation = Option.None(); if (!string.IsNullOrEmpty(this.DPSScopeId)) @@ -310,7 +310,7 @@ async Task OnExecuteAsync() var test = new Quickstart( bootstrapper, credentials, - connectionString, + iothubHostName, endpoint, this.UpstreamProtocol.Item2, proxy, diff --git a/smoke/IotEdgeQuickstart/Quickstart.cs b/smoke/IotEdgeQuickstart/Quickstart.cs index 284d5ce224c..d2afc1d533d 100644 --- a/smoke/IotEdgeQuickstart/Quickstart.cs +++ b/smoke/IotEdgeQuickstart/Quickstart.cs @@ -17,7 +17,7 @@ public class Quickstart : Details.Details public Quickstart( IBootstrapper bootstrapper, Option credentials, - string iothubConnectionString, + string iothubHostName, string eventhubCompatibleEndpointWithEntityPath, UpstreamProtocolType upstreamProtocol, Option proxy, @@ -40,7 +40,7 @@ public Quickstart( LogLevel runtimeLogLevel, bool cleanUpExistingDeviceOnSuccess, Option dpsAttestation) - : base(bootstrapper, credentials, iothubConnectionString, eventhubCompatibleEndpointWithEntityPath, upstreamProtocol, proxy, imageTag, deviceId, hostname, parentHostname, parentEdgeDevice, deploymentFileName, twinTestFileName, deviceCaCert, deviceCaPk, deviceCaCerts, optimizedForPerformance, initializeWithAgentArtifact, runtimeLogLevel, cleanUpExistingDeviceOnSuccess, dpsAttestation) + : base(bootstrapper, credentials, iothubHostName, eventhubCompatibleEndpointWithEntityPath, upstreamProtocol, proxy, imageTag, deviceId, hostname, parentHostname, parentEdgeDevice, deploymentFileName, twinTestFileName, deviceCaCert, deviceCaPk, deviceCaCerts, optimizedForPerformance, initializeWithAgentArtifact, runtimeLogLevel, cleanUpExistingDeviceOnSuccess, dpsAttestation) { this.leaveRunning = leaveRunning; this.noVerify = noVerify; diff --git a/smoke/IotEdgeQuickstart/details/Details.cs b/smoke/IotEdgeQuickstart/details/Details.cs index 8adf4c62fde..e77135bc96e 100644 --- a/smoke/IotEdgeQuickstart/details/Details.cs +++ b/smoke/IotEdgeQuickstart/details/Details.cs @@ -111,7 +111,7 @@ public class Details readonly Option credentials; - readonly string iothubConnectionString; + readonly string iothubHostName; readonly Option dpsAttestation; @@ -152,7 +152,7 @@ public class Details protected Details( IBootstrapper bootstrapper, Option credentials, - string iothubConnectionString, + string iothubHostName, string eventhubCompatibleEndpointWithEntityPath, UpstreamProtocolType upstreamProtocol, Option proxy, @@ -174,7 +174,7 @@ protected Details( { this.bootstrapper = bootstrapper; this.credentials = credentials; - this.iothubConnectionString = iothubConnectionString; + this.iothubHostName = iothubHostName; this.dpsAttestation = dpsAttestation; this.eventhubCompatibleEndpointWithEntityPath = eventhubCompatibleEndpointWithEntityPath; @@ -236,15 +236,14 @@ protected async Task GetOrCreateEdgeDeviceIdentity() Console.WriteLine("Getting or Creating device Identity."); var settings = new HttpTransportSettings(); this.proxy.ForEach(p => settings.Proxy = p); - IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); - RegistryManager rm = RegistryManager.Create(builder.HostName, new AzureCliCredential(), settings); + RegistryManager rm = RegistryManager.Create(this.iothubHostName, new AzureCliCredential(), settings); Device device = await rm.GetDeviceAsync(this.deviceId); if (device != null) { - Console.WriteLine($"Device '{device.Id}' already registered on IoT hub '{builder.HostName}'"); + Console.WriteLine($"Device '{device.Id}' already registered on IoT hub '{this.iothubHostName}'"); Console.WriteLine($"Clean up Existing device? {this.cleanUpExistingDeviceOnSuccess}"); - this.context = new DeviceContext(device, this.iothubConnectionString, rm, this.cleanUpExistingDeviceOnSuccess); + this.context = new DeviceContext(device, this.iothubHostName, rm, this.cleanUpExistingDeviceOnSuccess); } else { @@ -252,7 +251,7 @@ protected async Task GetOrCreateEdgeDeviceIdentity() // ESD will register with DPS to create the device in IoT Hub if (this.dpsAttestation.HasValue) { - this.context = new DeviceContext(this.deviceId, this.iothubConnectionString, rm, this.cleanUpExistingDeviceOnSuccess); + this.context = new DeviceContext(this.deviceId, this.iothubHostName, rm, this.cleanUpExistingDeviceOnSuccess); } else { @@ -268,11 +267,9 @@ protected Task ConfigureBootstrapper() dps => { return new DeviceProvisioningMethod(dps); }, () => { - IotHubConnectionStringBuilder builder = - IotHubConnectionStringBuilder.Create(this.context.IotHubConnectionString); Device device = this.context.Device.Expect(() => new InvalidOperationException("Expected a valid device instance")); string connectionString = - $"HostName={builder.HostName};" + + $"HostName={this.context.IotHubHostName};" + $"DeviceId={device.Id};" + $"SharedAccessKey={device.Authentication.SymmetricKey.PrimaryKey}"; @@ -312,9 +309,8 @@ protected async Task VerifyEdgeAgentIsConnectedToIotHub() var settings = new ServiceClientTransportSettings(); this.proxy.ForEach(p => settings.HttpProxy = p); - IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); ServiceClient serviceClient = - ServiceClient.Create(builder.HostName, new AzureCliCredential(), this.serviceClientTransportType, settings); + ServiceClient.Create(this.iothubHostName, new AzureCliCredential(), this.serviceClientTransportType, settings); while (!cts.IsCancellationRequested) { @@ -544,8 +540,7 @@ await this.parentEdgeDevice.ForEachAsync(async p => device.ParentScopes.Add(parentDevice.Scope); }); - IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); - Console.WriteLine($"Registering device '{device.Id}' on IoT hub '{builder.HostName}'"); + Console.WriteLine($"Registering device '{device.Id}' on IoT hub '{this.iothubHostName}'"); var retryStrategy = new Incremental(15, RetryStrategy.DefaultRetryInterval, RetryStrategy.DefaultRetryIncrement); var retryPolicy = new RetryPolicy(new TransientNetworkErrorDetectionStrategy(), retryStrategy); @@ -556,7 +551,7 @@ await retryPolicy.ExecuteAsync( device = await rm.AddDeviceAsync(device); }, new CancellationTokenSource(TimeSpan.FromMinutes(10)).Token); - this.context = new DeviceContext(device, builder.ToString(), rm, true); + this.context = new DeviceContext(device, this.iothubHostName, rm, true); } string EdgeAgentImage() @@ -627,20 +622,20 @@ public bool IsTransient(Exception ex) public class DeviceContext { - public DeviceContext(string deviceId, string iothubConnectionString, RegistryManager rm, bool removeDevice) + public DeviceContext(string deviceId, string iothubHostName, RegistryManager rm, bool removeDevice) { this.DeviceId = deviceId; this.Device = Option.None(); - this.IotHubConnectionString = iothubConnectionString; + this.IotHubHostName = iothubHostName; this.RegistryManager = rm; this.RemoveDevice = removeDevice; } - public DeviceContext(Device device, string iothubConnectionString, RegistryManager rm, bool removeDevice) + public DeviceContext(Device device, string iothubHostName, RegistryManager rm, bool removeDevice) { this.DeviceId = device.Id; this.Device = Option.Some(device); - this.IotHubConnectionString = iothubConnectionString; + this.IotHubHostName = iothubHostName; this.RegistryManager = rm; this.RemoveDevice = removeDevice; } @@ -649,7 +644,7 @@ public DeviceContext(Device device, string iothubConnectionString, RegistryManag public string DeviceId { get; } - public string IotHubConnectionString { get; } + public string IotHubHostName { get; } public RegistryManager RegistryManager { get; } diff --git a/smoke/IotEdgeQuickstart/packages.lock.json b/smoke/IotEdgeQuickstart/packages.lock.json index 7a12d0d99ab..3905b7ba053 100644 --- a/smoke/IotEdgeQuickstart/packages.lock.json +++ b/smoke/IotEdgeQuickstart/packages.lock.json @@ -1978,7 +1978,8 @@ "microsoft.azure.devices.edge.test.common": { "type": "Project", "dependencies": { - "Microsoft.Azure.Devices": "[1.31.6, )", + "Azure.Identity": "[1.17.1, )", + "Microsoft.Azure.Devices": "[1.41.0, )", "Microsoft.Azure.Devices.Client": "[1.36.10, )", "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", "Microsoft.Azure.EventHubs": "[4.3.2, )", @@ -1986,7 +1987,7 @@ "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", "Nett": "[0.15.0, )", - "Newtonsoft.Json": "[13.0.2, )", + "Newtonsoft.Json": "[13.0.3, )", "System.ServiceProcess.ServiceController": "[4.5.0, )" } }, diff --git a/smoke/LeafDevice/LeafDevice.cs b/smoke/LeafDevice/LeafDevice.cs index 8689dc70a69..6d143a8b255 100644 --- a/smoke/LeafDevice/LeafDevice.cs +++ b/smoke/LeafDevice/LeafDevice.cs @@ -9,7 +9,7 @@ namespace LeafDeviceTest internal class LeafDevice : Details { LeafDevice( - string iothubConnectionString, + string iothubHostName, string eventhubCompatibleEndpointWithEntityPath, string deviceId, string trustedCACertificateFileName, @@ -20,7 +20,7 @@ internal class LeafDevice : Details Option deviceCertificate, Option> thumbprintCertificates) : base( - iothubConnectionString, + iothubHostName, eventhubCompatibleEndpointWithEntityPath, deviceId, trustedCACertificateFileName, @@ -63,7 +63,7 @@ public async Task RunAsync(bool keepDevice = false) public class LeafDeviceBuilder { - readonly string iothubConnectionString; + readonly string iothubHostName; readonly string eventhubCompatibleEndpointWithEntityPath; readonly string deviceId; readonly string trustedCACertificateFileName; @@ -77,7 +77,7 @@ public class LeafDeviceBuilder Option> thumbprintCerts; public LeafDeviceBuilder( - string iothubConnectionString, + string iothubHostName, string eventhubCompatibleEndpointWithEntityPath, string deviceId, string trustedCACertificateFileName, @@ -86,7 +86,7 @@ public LeafDeviceBuilder( DeviceProtocol protocol, Option proxy) { - this.iothubConnectionString = Preconditions.CheckNotNull(iothubConnectionString); + this.iothubHostName = Preconditions.CheckNotNull(iothubHostName); this.eventhubCompatibleEndpointWithEntityPath = Preconditions.CheckNotNull(eventhubCompatibleEndpointWithEntityPath); this.deviceId = Preconditions.CheckNotNull(deviceId); this.trustedCACertificateFileName = Preconditions.CheckNotNull(trustedCACertificateFileName); @@ -147,7 +147,7 @@ public LeafDevice Build() }; }); return new LeafDevice( - this.iothubConnectionString, + this.iothubHostName, this.eventhubCompatibleEndpointWithEntityPath, this.deviceId, this.trustedCACertificateFileName, diff --git a/smoke/LeafDevice/Program.cs b/smoke/LeafDevice/Program.cs index 0c555f9e1b6..9b88f5ba685 100644 --- a/smoke/LeafDevice/Program.cs +++ b/smoke/LeafDevice/Program.cs @@ -18,7 +18,7 @@ the value of the corresponding environment variable will be used unless the option is specified on the command line. Option Environment variable - --connection-string iothubConnectionString + --iothub-hostname iothubHostName --eventhub-endpoint eventhubCompatibleEndpointWithEntityPath --proxy https_proxy @@ -28,7 +28,7 @@ All options to this command have defaults. If an option is not specified and be used. Option Default value - --connection-string get the value from Key Vault + --iothub-hostname get the value from Key Vault --eventhub-endpoint get the value from Key Vault --device-id an auto-generated unique identifier --certificate empty string @@ -38,9 +38,6 @@ Option Default value [HelpOption] class Program { - [Option("-c|--connection-string ", Description = "Device connection string (hub-scoped, e.g. iothubowner)")] - public string DeviceConnectionString { get; } = Environment.GetEnvironmentVariable("iothubConnectionString"); - [Option("-e|--eventhub-endpoint ", Description = "Event Hub-compatible endpoint for IoT Hub, including EntityPath")] public string EventHubCompatibleEndpointWithEntityPath { get; } = Environment.GetEnvironmentVariable("eventhubCompatibleEndpointWithEntityPath"); @@ -57,6 +54,9 @@ class Program If not provided, the leaf device will not be in the Edge device's scope")] public string EdgeGatewayDeviceId { get; } = string.Empty; + [Option("|--iothub-hostname ", Description = "IoT hub hostname")] + public string IotHubHostName { get; } = Environment.GetEnvironmentVariable("iothubHostName"); + [Option("-proto|--protocol", Description = @"Protocol the leaf device will use to communicate with the Edge device. Choices are Mqtt, MqttWs, Amqp, AmqpWs. If protocol is unspecified, default is Mqtt.")] @@ -97,8 +97,8 @@ async Task OnExecuteAsync() { try { - string connectionString = this.DeviceConnectionString ?? - await SecretsHelper.GetSecretFromConfigKey("iotHubConnStrKey"); + string iothubHostName = this.IotHubHostName ?? + await SecretsHelper.GetSecretFromConfigKey("iotHubHostName"); string endpoint = this.EventHubCompatibleEndpointWithEntityPath ?? await SecretsHelper.GetSecretFromConfigKey("eventHubConnStrKey"); @@ -109,7 +109,7 @@ async Task OnExecuteAsync() : Option.Maybe(Environment.GetEnvironmentVariable("https_proxy")); var builder = new LeafDevice.LeafDeviceBuilder( - connectionString, + iothubHostName, endpoint, this.DeviceId, this.TrustedCACertificateFileName, diff --git a/smoke/LeafDevice/details/Details.cs b/smoke/LeafDevice/details/Details.cs index 80402b299b1..da3f15e0079 100644 --- a/smoke/LeafDevice/details/Details.cs +++ b/smoke/LeafDevice/details/Details.cs @@ -37,7 +37,7 @@ public enum DeviceProtocol public class Details { - readonly string iothubConnectionString; + readonly string iothubHostName; readonly string eventhubCompatibleEndpointWithEntityPath; readonly string deviceId; readonly string trustedCACertificateFileName; @@ -54,7 +54,7 @@ public class Details Option proxy; protected Details( - string iothubConnectionString, + string iothubHostName, string eventhubCompatibleEndpointWithEntityPath, string deviceId, string trustedCACertificateFileName, @@ -65,7 +65,7 @@ protected Details( Option clientCertificatePaths, Option> thumbprintCertificatePaths) { - this.iothubConnectionString = iothubConnectionString; + this.iothubHostName = iothubHostName; this.eventhubCompatibleEndpointWithEntityPath = eventhubCompatibleEndpointWithEntityPath; this.deviceId = deviceId; this.trustedCACertificateFileName = trustedCACertificateFileName; @@ -153,17 +153,16 @@ protected async Task ConnectToEdgeAndSendDataAsync() try { - var builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); DeviceClient deviceClient; if (this.authType == AuthenticationType.Sas) { - string leafDeviceConnectionString = $"HostName={builder.HostName};DeviceId={this.deviceId};SharedAccessKey={this.context.Device.Authentication.SymmetricKey.PrimaryKey};GatewayHostName={this.edgeHostName}"; + string leafDeviceConnectionString = $"HostName={this.iothubHostName};DeviceId={this.deviceId};SharedAccessKey={this.context.Device.Authentication.SymmetricKey.PrimaryKey};GatewayHostName={this.edgeHostName}"; deviceClient = DeviceClient.CreateFromConnectionString(leafDeviceConnectionString, this.deviceTransportSettings); } else { var auth = new DeviceAuthenticationWithX509Certificate(this.deviceId, this.clientCertificate.Expect(() => new InvalidOperationException("Missing client certificate"))); - deviceClient = DeviceClient.Create(builder.HostName, this.edgeHostName, auth, this.deviceTransportSettings); + deviceClient = DeviceClient.Create(this.iothubHostName, this.edgeHostName, auth, this.deviceTransportSettings); } this.context.DeviceClientInstance = Option.Some(deviceClient); @@ -218,8 +217,7 @@ protected async Task GetOrCreateDeviceIdentityAsync() { var settings = new HttpTransportSettings(); this.proxy.ForEach(p => settings.Proxy = p); - IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); - RegistryManager rm = RegistryManager.Create(builder.HostName, new AzureCliCredential(), settings); + RegistryManager rm = RegistryManager.Create(this.iothubHostName, new AzureCliCredential(), settings); Option edgeScope = await this.edgeDeviceId .Map(id => GetScopeIfExitsAsync(rm, id)) @@ -228,7 +226,7 @@ protected async Task GetOrCreateDeviceIdentityAsync() Device device = await rm.GetDeviceAsync(this.deviceId); if (device != null) { - Console.WriteLine($"Device '{device.Id}' already registered on IoT hub '{builder.HostName}'"); + Console.WriteLine($"Device '{device.Id}' already registered on IoT hub '{this.iothubHostName}'"); if (this.authType == AuthenticationType.SelfSigned) { @@ -247,7 +245,6 @@ protected async Task GetOrCreateDeviceIdentityAsync() this.context = new DeviceContext { Device = device, - IotHubConnectionString = this.iothubConnectionString, RegistryManager = rm, RemoveDevice = false, MessageGuid = Guid.NewGuid().ToString() @@ -322,9 +319,8 @@ protected async Task VerifyDirectMethodAsync() // User Service SDK to invoke Direct Method on the device. var settings = new ServiceClientTransportSettings(); this.proxy.ForEach(p => settings.HttpProxy = p); - IotHubConnectionStringBuilder builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); ServiceClient serviceClient = - ServiceClient.Create(builder.HostName, new AzureCliCredential(), this.serviceClientTransportType, settings); + ServiceClient.Create(this.iothubHostName, new AzureCliCredential(), this.serviceClientTransportType, settings); // Call a direct method TimeSpan testDuration = TimeSpan.FromSeconds(300); @@ -532,8 +528,7 @@ async Task CreateDeviceIdentityAsync(RegistryManager rm, Option edgeDevi }; edgeDeviceScope.ForEach(scope => device.Scope = scope); - var builder = IotHubConnectionStringBuilder.Create(this.iothubConnectionString); - Console.WriteLine($"Registering device '{device.Id}' on IoT hub '{builder.HostName}'"); + Console.WriteLine($"Registering device '{device.Id}' on IoT hub '{this.iothubHostName}'"); device = await rm.AddDeviceAsync(device); @@ -541,7 +536,6 @@ async Task CreateDeviceIdentityAsync(RegistryManager rm, Option edgeDevi { Device = device, DeviceClientInstance = Option.None(), - IotHubConnectionString = this.iothubConnectionString, RegistryManager = rm, RemoveDevice = true, MessageGuid = Guid.NewGuid().ToString() @@ -555,8 +549,6 @@ public class DeviceContext public Option DeviceClientInstance { get; set; } - public string IotHubConnectionString { get; set; } - public RegistryManager RegistryManager { get; set; } public bool RemoveDevice { get; set; } diff --git a/smoke/LeafDevice/packages.lock.json b/smoke/LeafDevice/packages.lock.json index 42cfa4e21ec..348fa397dd2 100644 --- a/smoke/LeafDevice/packages.lock.json +++ b/smoke/LeafDevice/packages.lock.json @@ -1983,7 +1983,8 @@ "microsoft.azure.devices.edge.test.common": { "type": "Project", "dependencies": { - "Microsoft.Azure.Devices": "[1.31.6, )", + "Azure.Identity": "[1.17.1, )", + "Microsoft.Azure.Devices": "[1.41.0, )", "Microsoft.Azure.Devices.Client": "[1.36.10, )", "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", "Microsoft.Azure.EventHubs": "[4.3.2, )", @@ -1991,7 +1992,7 @@ "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", "Nett": "[0.15.0, )", - "Newtonsoft.Json": "[13.0.2, )", + "Newtonsoft.Json": "[13.0.3, )", "System.ServiceProcess.ServiceController": "[4.5.0, )" } }, diff --git a/test/Microsoft.Azure.Devices.Edge.Test.Common/Context.cs b/test/Microsoft.Azure.Devices.Edge.Test.Common/Context.cs index 43b3a9da7cf..dbcb3bb0b1f 100644 --- a/test/Microsoft.Azure.Devices.Edge.Test.Common/Context.cs +++ b/test/Microsoft.Azure.Devices.Edge.Test.Common/Context.cs @@ -80,8 +80,8 @@ IEnumerable GetAndValidateRegistries() $"e2e-{string.Concat(Dns.GetHostName().Take(14)).TrimEnd(new[] { '-' })}-{DateTime.Now:yyMMdd'-'HHmmss'.'fff}"; this.CaCertScriptPath = Option.Maybe(Get("caCertScriptPath")); - this.ConnectionString = Get("IOT_HUB_CONNECTION_STRING"); - Preconditions.CheckArgument(!string.IsNullOrWhiteSpace(this.ConnectionString), $"IOT_HUB_CONNECTION_STRING is missing from environment or context.json."); + this.IotHubHostname = Get("IOT_HUB_HOSTNAME"); + Preconditions.CheckArgument(!string.IsNullOrWhiteSpace(this.IotHubHostname), $"IOT_HUB_HOSTNAME is missing from environment or context.json."); this.ParentDeviceId = Option.Maybe(Get("parentDeviceId")); this.DpsIdScope = Option.Maybe(Get("dpsIdScope")); this.DpsGroupKey = Option.Maybe(Get("DPS_GROUP_KEY")); @@ -130,7 +130,7 @@ IEnumerable GetAndValidateRegistries() public Option CaCertScriptPath { get; } - public string ConnectionString { get; } + public string IotHubHostname { get; } public Option ParentDeviceId { get; } diff --git a/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs b/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs index da3781f1364..1ff3bebef3c 100644 --- a/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs +++ b/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs @@ -5,6 +5,7 @@ namespace Microsoft.Azure.Devices.Edge.Test.Common using System.Net; using System.Threading; using System.Threading.Tasks; + using global::Azure.Identity; using Microsoft.Azure.Devices.Common.Exceptions; using Microsoft.Azure.Devices.Edge.Util; using Microsoft.Azure.Devices.Edge.Util.TransientFaultHandling; @@ -19,16 +20,16 @@ namespace Microsoft.Azure.Devices.Edge.Test.Common public class IotHub { readonly string eventHubEndpoint; - readonly string iotHubConnectionString; + readonly string iotHubHostname; readonly Lazy registryManager; readonly Lazy serviceClient; readonly Lazy eventHubClient; static readonly TimeSpan eventHubRequestDuration = TimeSpan.FromSeconds(20); - public IotHub(string iotHubConnectionString, string eventHubEndpoint, Option proxyUri) + public IotHub(string iotHubHostname, string eventHubEndpoint, Option proxyUri) { this.eventHubEndpoint = eventHubEndpoint; - this.iotHubConnectionString = iotHubConnectionString; + this.iotHubHostname = iotHubHostname; Option proxy = proxyUri.Map(p => new WebProxy(p) as IWebProxy); this.registryManager = new Lazy( @@ -36,8 +37,9 @@ public IotHub(string iotHubConnectionString, string eventHubEndpoint, Option settings.Proxy = p); - return RegistryManager.CreateFromConnectionString( - this.iotHubConnectionString, + return RegistryManager.Create( + this.iotHubHostname, + new AzureCliCredential(), settings); }); @@ -46,8 +48,9 @@ public IotHub(string iotHubConnectionString, string eventHubEndpoint, Option settings.HttpProxy = p); - return ServiceClient.CreateFromConnectionString( - this.iotHubConnectionString, + return ServiceClient.Create( + this.iotHubHostname, + new AzureCliCredential(), DeviceTransportType.Amqp_WebSocket_Only, settings); }); @@ -65,8 +68,7 @@ public IotHub(string iotHubConnectionString, string eventHubEndpoint, Option - IotHubConnectionStringBuilder.Create(this.iotHubConnectionString).HostName; + public string Hostname => this.iotHubHostname; public string EntityPath => new EventHubsConnectionStringBuilder(this.eventHubEndpoint).EntityPath; diff --git a/test/Microsoft.Azure.Devices.Edge.Test.Common/Microsoft.Azure.Devices.Edge.Test.Common.csproj b/test/Microsoft.Azure.Devices.Edge.Test.Common/Microsoft.Azure.Devices.Edge.Test.Common.csproj index 7f7ffb96242..0573da112bb 100644 --- a/test/Microsoft.Azure.Devices.Edge.Test.Common/Microsoft.Azure.Devices.Edge.Test.Common.csproj +++ b/test/Microsoft.Azure.Devices.Edge.Test.Common/Microsoft.Azure.Devices.Edge.Test.Common.csproj @@ -8,13 +8,14 @@ - + + - + diff --git a/test/Microsoft.Azure.Devices.Edge.Test.Common/packages.lock.json b/test/Microsoft.Azure.Devices.Edge.Test.Common/packages.lock.json index 618609952ba..aacc212bf11 100644 --- a/test/Microsoft.Azure.Devices.Edge.Test.Common/packages.lock.json +++ b/test/Microsoft.Azure.Devices.Edge.Test.Common/packages.lock.json @@ -2,16 +2,28 @@ "version": 1, "dependencies": { "net8.0": { - "Microsoft.Azure.Devices": { + "Azure.Identity": { "type": "Direct", - "requested": "[1.31.6, )", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "requested": "[1.17.1, )", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" + } + }, + "Microsoft.Azure.Devices": { + "type": "Direct", + "requested": "[1.41.0, )", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -86,9 +98,9 @@ }, "Newtonsoft.Json": { "type": "Direct", - "requested": "[13.0.2, )", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "requested": "[13.0.3, )", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "StyleCop.Analyzers": { "type": "Direct", @@ -151,16 +163,12 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" } }, "Azure.Storage.Blobs": { @@ -243,16 +251,16 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Azure.Services.AppAuthentication": { @@ -267,8 +275,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -314,8 +322,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -353,8 +361,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -370,6 +381,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.IdentityModel.Clients.ActiveDirectory": { "type": "Transitive", "resolved": "3.14.2", @@ -434,8 +468,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -770,6 +804,15 @@ "System.Threading": "4.3.0" } }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1119,12 +1162,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1183,11 +1222,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.3.0", @@ -1581,8 +1615,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Cryptography.X509Certificates": { "type": "Transitive", @@ -1669,11 +1703,6 @@ "System.Text.Encoding": "4.3.0" } }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "iTUgB/WtrZ1sWZs84F2hwyQhiRH6QNjQv2DkwrH+WP6RoFga2Q1m3f9/Q7FG8cck8AdHitQkmkXSY8qylcDmuA==" - }, "System.Text.Json": { "type": "Transitive", "resolved": "4.7.2", @@ -1717,8 +1746,13 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.3.0", + "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } }, "System.Threading.Thread": { "type": "Transitive", diff --git a/test/Microsoft.Azure.Devices.Edge.Test/PriorityQueues.cs b/test/Microsoft.Azure.Devices.Edge.Test/PriorityQueues.cs index c6f74e7fde0..9cea73158a7 100644 --- a/test/Microsoft.Azure.Devices.Edge.Test/PriorityQueues.cs +++ b/test/Microsoft.Azure.Devices.Edge.Test/PriorityQueues.cs @@ -133,7 +133,7 @@ await this.IotHub.ReceiveEventsAsync( Log.Verbose($"Received message from IoTHub with sequence number: {sequenceNumber}"); var receivedTrackingId = (string)data.Properties["trackingId"]; - if (!receivedTrackingId.IsNullOrWhiteSpace() && receivedTrackingId.Equals(trackingId)) + if (!string.IsNullOrWhiteSpace(receivedTrackingId) && receivedTrackingId.Equals(trackingId)) { messages.Enqueue(new MessageTestResult("hubtest.receive", DateTime.UtcNow) { @@ -145,7 +145,7 @@ await this.IotHub.ReceiveEventsAsync( } else { - var message = receivedTrackingId.IsNullOrWhiteSpace() ? "EMPTY" : receivedTrackingId; + var message = string.IsNullOrWhiteSpace(receivedTrackingId) ? "EMPTY" : receivedTrackingId; Log.Verbose($"Message contains incorrect tracking id: {message}. Ignoring."); } } diff --git a/test/Microsoft.Azure.Devices.Edge.Test/Provisioning.cs b/test/Microsoft.Azure.Devices.Edge.Test/Provisioning.cs index f547d6e4a6b..1e1fb70d6a5 100644 --- a/test/Microsoft.Azure.Devices.Edge.Test/Provisioning.cs +++ b/test/Microsoft.Azure.Devices.Edge.Test/Provisioning.cs @@ -21,7 +21,7 @@ public class Provisioning : DeviceProvisioningFixture public Provisioning() { this.iotHub = new IotHub( - Context.Current.ConnectionString, + Context.Current.IotHubHostname, Context.Current.EventHubEndpoint, Context.Current.TestRunnerProxy); } diff --git a/test/Microsoft.Azure.Devices.Edge.Test/helpers/ManualProvisioningFixture.cs b/test/Microsoft.Azure.Devices.Edge.Test/helpers/ManualProvisioningFixture.cs index d9908af66f3..766a7e9140a 100644 --- a/test/Microsoft.Azure.Devices.Edge.Test/helpers/ManualProvisioningFixture.cs +++ b/test/Microsoft.Azure.Devices.Edge.Test/helpers/ManualProvisioningFixture.cs @@ -24,7 +24,7 @@ public class ManualProvisioningFixture : BaseFixture public ManualProvisioningFixture() { this.IotHub = new IotHub( - Context.Current.ConnectionString, + Context.Current.IotHubHostname, Context.Current.EventHubEndpoint, Context.Current.TestRunnerProxy); } diff --git a/test/Microsoft.Azure.Devices.Edge.Test/helpers/TestResultCoordinatorUtil.cs b/test/Microsoft.Azure.Devices.Edge.Test/helpers/TestResultCoordinatorUtil.cs index b73be075b08..aa0933bfee7 100644 --- a/test/Microsoft.Azure.Devices.Edge.Test/helpers/TestResultCoordinatorUtil.cs +++ b/test/Microsoft.Azure.Devices.Edge.Test/helpers/TestResultCoordinatorUtil.cs @@ -63,7 +63,7 @@ public static Action BuildAddTestResultCoordinatorConfig( ("trackingId", trackingId), ("useTestResultReportingService", "false"), ("useResultEventReceivingService", "false"), - ("IOT_HUB_CONNECTION_STRING", Context.Current.ConnectionString), + ("IOT_HUB_HOSTNAME", Context.Current.IotHubHostname), ("testStartDelay", "00:00:00"), ("verificationDelay", "00:00:00"), ("NetworkControllerRunProfile", "Online"), diff --git a/test/Microsoft.Azure.Devices.Edge.Test/packages.lock.json b/test/Microsoft.Azure.Devices.Edge.Test/packages.lock.json index 021e29f4adb..f6468adf765 100644 --- a/test/Microsoft.Azure.Devices.Edge.Test/packages.lock.json +++ b/test/Microsoft.Azure.Devices.Edge.Test/packages.lock.json @@ -162,16 +162,22 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" + } + }, + "Azure.Identity": { + "type": "Transitive", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", + "dependencies": { + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" } }, "Azure.Storage.Blobs": { @@ -259,18 +265,19 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices": { "type": "Transitive", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -292,11 +299,11 @@ }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Azure.EventHubs": { @@ -354,8 +361,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CodeCoverage": { "type": "Transitive", @@ -421,8 +428,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -460,8 +467,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.ObjectPool": { "type": "Transitive", @@ -482,6 +492,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.IdentityModel.Clients.ActiveDirectory": { "type": "Transitive", "resolved": "4.5.1", @@ -549,8 +582,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -622,8 +655,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Nito.AsyncEx": { "type": "Transitive", @@ -877,6 +910,15 @@ "System.Runtime": "4.1.0" } }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1285,12 +1327,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1336,11 +1374,6 @@ "System.Runtime.Handles": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.0.12", @@ -1921,8 +1954,8 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.5.2", + "contentHash": "BG/TNxDFv0svAzx8OiMXDlsHfGw623BZ8tCXw4YLhDFDvDhNUEV58jKYMGRnkbJNm7c3JNNJDiN7JBMzxRBR2w==" }, "System.Threading.Thread": { "type": "Transitive", @@ -2140,7 +2173,8 @@ "microsoft.azure.devices.edge.test.common": { "type": "Project", "dependencies": { - "Microsoft.Azure.Devices": "[1.31.6, )", + "Azure.Identity": "[1.17.1, )", + "Microsoft.Azure.Devices": "[1.41.0, )", "Microsoft.Azure.Devices.Client": "[1.36.10, )", "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", "Microsoft.Azure.EventHubs": "[4.3.2, )", @@ -2148,7 +2182,7 @@ "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", "Nett": "[0.15.0, )", - "Newtonsoft.Json": "[13.0.2, )", + "Newtonsoft.Json": "[13.0.3, )", "System.ServiceProcess.ServiceController": "[4.5.0, )" } }, diff --git a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs index 575bef2a217..9393b147e2b 100644 --- a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs +++ b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs @@ -7,6 +7,7 @@ namespace CloudToDeviceMessageTester using System.Security.Cryptography.X509Certificates; using System.Threading; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices.Client; using Microsoft.Azure.Devices.Client.Exceptions; using Microsoft.Azure.Devices.Edge.ModuleUtil; @@ -20,7 +21,7 @@ namespace CloudToDeviceMessageTester sealed class CloudToDeviceMessageReceiver : ICloudToDeviceMessageTester { readonly ILogger logger; - readonly string iotHubConnectionString; + readonly string iotHubHostname; readonly string deviceId; readonly string edgeDeviceId; readonly string moduleId; @@ -31,7 +32,6 @@ sealed class CloudToDeviceMessageReceiver : ICloudToDeviceMessageTester readonly string apiVersion; readonly string workloadClientApiVersion = "2019-01-30"; readonly string moduleGenerationId; - readonly string iotHubHostName; DeviceClient deviceClient; internal CloudToDeviceMessageReceiver( @@ -41,7 +41,7 @@ internal CloudToDeviceMessageReceiver( TestResultReportingClient testResultReportingClient) { this.logger = Preconditions.CheckNotNull(logger, nameof(logger)); - this.iotHubConnectionString = Preconditions.CheckNonWhiteSpace(sharedMetadata.IotHubConnectionString, nameof(sharedMetadata.IotHubConnectionString)); + this.iotHubHostname = Preconditions.CheckNonWhiteSpace(sharedMetadata.IotHubHostname, nameof(sharedMetadata.IotHubHostname)); this.deviceId = Preconditions.CheckNonWhiteSpace(sharedMetadata.DeviceId, nameof(sharedMetadata.DeviceId)); this.edgeDeviceId = Preconditions.CheckNonWhiteSpace(receiverMetadata.EdgeDeviceId, nameof(receiverMetadata.EdgeDeviceId)); this.moduleId = Preconditions.CheckNonWhiteSpace(sharedMetadata.ModuleId, nameof(sharedMetadata.ModuleId)); @@ -50,7 +50,6 @@ internal CloudToDeviceMessageReceiver( this.workloadUri = Preconditions.CheckNonWhiteSpace(receiverMetadata.WorkloadUri, nameof(receiverMetadata.WorkloadUri)); this.apiVersion = Preconditions.CheckNonWhiteSpace(receiverMetadata.ApiVersion, nameof(receiverMetadata.ApiVersion)); this.moduleGenerationId = Preconditions.CheckNonWhiteSpace(receiverMetadata.ModuleGenerationId, nameof(receiverMetadata.ModuleGenerationId)); - this.iotHubHostName = Preconditions.CheckNonWhiteSpace(receiverMetadata.IotHubHostName, nameof(receiverMetadata.IotHubHostName)); this.testResultReportingClient = Preconditions.CheckNotNull(testResultReportingClient, nameof(testResultReportingClient)); } @@ -80,12 +79,12 @@ public async Task StartAsync(CancellationToken ct) try { - registryManager = Microsoft.Azure.Devices.RegistryManager.CreateFromConnectionString(this.iotHubConnectionString); + registryManager = Microsoft.Azure.Devices.RegistryManager.Create(this.iotHubHostname, new AzureCliCredential()); var edgeDevice = await registryManager.GetDeviceAsync(this.edgeDeviceId); var leafDevice = new Microsoft.Azure.Devices.Device(this.deviceId); leafDevice.Scope = edgeDevice.Scope; Microsoft.Azure.Devices.Device device = await registryManager.AddDeviceAsync(leafDevice, ct); - string deviceConnectionString = $"HostName={this.iotHubHostName};DeviceId={this.deviceId};SharedAccessKey={device.Authentication.SymmetricKey.PrimaryKey};GatewayHostName={this.gatewayHostName}"; + string deviceConnectionString = $"HostName={this.iotHubHostname};DeviceId={this.deviceId};SharedAccessKey={device.Authentication.SymmetricKey.PrimaryKey};GatewayHostName={this.gatewayHostName}"; this.deviceClient = DeviceClient.CreateFromConnectionString(deviceConnectionString, new ITransportSettings[] { transportSettings }); var retryStrategy = new Incremental(15, RetryStrategy.DefaultRetryInterval, RetryStrategy.DefaultRetryIncrement); diff --git a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs index 2ee114386f1..cb4e3f5424a 100644 --- a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs +++ b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs @@ -5,6 +5,7 @@ namespace CloudToDeviceMessageTester using System.Text; using System.Threading; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Common.Exceptions; using Microsoft.Azure.Devices.Edge.ModuleUtil; @@ -15,7 +16,7 @@ namespace CloudToDeviceMessageTester sealed class CloudToDeviceMessageSender : ICloudToDeviceMessageTester { readonly ILogger logger; - readonly string iotHubConnectionString; + readonly string iotHubHostname; readonly string deviceId; readonly string moduleId; readonly TimeSpan testDuration; @@ -33,7 +34,7 @@ internal CloudToDeviceMessageSender( TestResultReportingClient testResultReportingClient) { this.logger = Preconditions.CheckNotNull(logger, nameof(logger)); - this.iotHubConnectionString = Preconditions.CheckNonWhiteSpace(sharedMetadata.IotHubConnectionString, nameof(sharedMetadata.IotHubConnectionString)); + this.iotHubHostname = Preconditions.CheckNonWhiteSpace(sharedMetadata.IotHubHostname, nameof(sharedMetadata.IotHubHostname)); this.deviceId = Preconditions.CheckNonWhiteSpace(sharedMetadata.DeviceId, nameof(sharedMetadata.DeviceId)); this.moduleId = Preconditions.CheckNonWhiteSpace(sharedMetadata.ModuleId, nameof(sharedMetadata.ModuleId)); this.trackingId = Preconditions.CheckNonWhiteSpace(senderMetadata.TrackingId, nameof(senderMetadata.TrackingId)); @@ -51,7 +52,7 @@ public async Task StartAsync(CancellationToken ct) await Task.Delay(this.testStartDelay, ct); DateTime testStartAt = DateTime.UtcNow; - this.serviceClient = ServiceClient.CreateFromConnectionString(this.iotHubConnectionString); + this.serviceClient = ServiceClient.Create(this.iotHubHostname, new AzureCliCredential()); await this.serviceClient.OpenAsync(); Guid batchId = Guid.NewGuid(); diff --git a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageTester.csproj b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageTester.csproj index 374ccfe3ef2..c4057bde2de 100644 --- a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageTester.csproj +++ b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageTester.csproj @@ -14,7 +14,8 @@ - + + diff --git a/test/modules/CloudToDeviceMessageTester/Settings.cs b/test/modules/CloudToDeviceMessageTester/Settings.cs index 0c3d7ef34da..5504d8fd14f 100644 --- a/test/modules/CloudToDeviceMessageTester/Settings.cs +++ b/test/modules/CloudToDeviceMessageTester/Settings.cs @@ -15,13 +15,12 @@ class Settings Settings( string deviceId, - string iotHubConnectionString, + string iotHubHostname, string moduleId, string gatewayHostName, string workloadUri, string apiVersion, string moduleGenerationId, - string iotHubHostName, CloudToDeviceMessageTesterMode testMode, string trackingId, TransportType transportType, @@ -40,7 +39,7 @@ class Settings this.SharedSettings = new C2DTestSharedSettings() { - IotHubConnectionString = Preconditions.CheckNonWhiteSpace(iotHubConnectionString, nameof(iotHubConnectionString)), + IotHubHostname = Preconditions.CheckNonWhiteSpace(iotHubHostname, nameof(iotHubHostname)), DeviceId = deviceId + "-" + transportType.ToString() + "-leaf", ModuleId = Preconditions.CheckNonWhiteSpace(moduleId, nameof(moduleId)), }; @@ -53,7 +52,6 @@ class Settings WorkloadUri = Preconditions.CheckNonWhiteSpace(workloadUri, nameof(workloadUri)), ApiVersion = Preconditions.CheckNonWhiteSpace(apiVersion, nameof(apiVersion)), ModuleGenerationId = Preconditions.CheckNonWhiteSpace(moduleGenerationId, nameof(moduleGenerationId)), - IotHubHostName = Preconditions.CheckNonWhiteSpace(iotHubHostName, nameof(iotHubHostName)), TransportType = transportType, EdgeDeviceId = deviceId }; @@ -80,13 +78,12 @@ static Settings Create() return new Settings( configuration.GetValue("IOTEDGE_DEVICEID"), - configuration.GetValue("IOT_HUB_CONNECTION_STRING"), + configuration.GetValue("IOT_HUB_HOSTNAME"), configuration.GetValue("IOTEDGE_MODULEID"), configuration.GetValue("IOTEDGE_GATEWAYHOSTNAME"), configuration.GetValue("IOTEDGE_WORKLOADURI"), configuration.GetValue("IOTEDGE_APIVERSION"), configuration.GetValue("IOTEDGE_MODULEGENERATIONID"), - configuration.GetValue("IOTEDGE_IOTHUBHOSTNAME"), configuration.GetValue("C2DMESSAGE_TESTER_MODE", CloudToDeviceMessageTesterMode.Receiver), configuration.GetValue("trackingId"), configuration.GetValue("transportType", TransportType.Amqp), @@ -128,7 +125,7 @@ public override string ToString() internal struct C2DTestSharedSettings { - public string IotHubConnectionString; + public string IotHubHostname; public string DeviceId; public string ModuleId; } @@ -140,7 +137,6 @@ internal struct C2DTestReceiverSettings public string WorkloadUri; public string ApiVersion; public string ModuleGenerationId; - public string IotHubHostName; public string EdgeDeviceId; } diff --git a/test/modules/CloudToDeviceMessageTester/packages.lock.json b/test/modules/CloudToDeviceMessageTester/packages.lock.json index 771ee33d74f..e065ad7b5f5 100644 --- a/test/modules/CloudToDeviceMessageTester/packages.lock.json +++ b/test/modules/CloudToDeviceMessageTester/packages.lock.json @@ -2,16 +2,28 @@ "version": 1, "dependencies": { "net8.0": { - "Microsoft.Azure.Devices": { + "Azure.Identity": { "type": "Direct", - "requested": "[1.31.6, )", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "requested": "[1.17.1, )", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" + } + }, + "Microsoft.Azure.Devices": { + "type": "Direct", + "requested": "[1.41.0, )", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -158,16 +170,12 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" } }, "Azure.Storage.Blobs": { @@ -250,16 +258,16 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Azure.EventHubs": { @@ -288,8 +296,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -306,8 +314,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -345,8 +353,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -362,6 +373,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.IdentityModel.Clients.ActiveDirectory": { "type": "Transitive", "resolved": "3.14.2", @@ -426,8 +460,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -509,8 +543,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Nito.AsyncEx": { "type": "Transitive", @@ -772,6 +806,15 @@ "System.Threading": "4.3.0" } }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1121,12 +1164,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1185,11 +1224,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.3.0", @@ -1573,8 +1607,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Cryptography.X509Certificates": { "type": "Transitive", @@ -1669,11 +1703,6 @@ "System.Text.Encoding": "4.3.0" } }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "iTUgB/WtrZ1sWZs84F2hwyQhiRH6QNjQv2DkwrH+WP6RoFga2Q1m3f9/Q7FG8cck8AdHitQkmkXSY8qylcDmuA==" - }, "System.Text.Json": { "type": "Transitive", "resolved": "4.7.2", @@ -1717,8 +1746,13 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.3.0", + "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } }, "System.Threading.Thread": { "type": "Transitive", @@ -1853,7 +1887,8 @@ "microsoft.azure.devices.edge.test.common": { "type": "Project", "dependencies": { - "Microsoft.Azure.Devices": "[1.31.6, )", + "Azure.Identity": "[1.17.1, )", + "Microsoft.Azure.Devices": "[1.41.0, )", "Microsoft.Azure.Devices.Client": "[1.36.10, )", "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", "Microsoft.Azure.EventHubs": "[4.3.2, )", @@ -1861,7 +1896,7 @@ "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", "Nett": "[0.15.0, )", - "Newtonsoft.Json": "[13.0.2, )", + "Newtonsoft.Json": "[13.0.3, )", "System.ServiceProcess.ServiceController": "[4.5.0, )" } }, diff --git a/test/modules/DeploymentTester/DeploymentTester.csproj b/test/modules/DeploymentTester/DeploymentTester.csproj index 845ca88be8c..0d2d3d96779 100644 --- a/test/modules/DeploymentTester/DeploymentTester.csproj +++ b/test/modules/DeploymentTester/DeploymentTester.csproj @@ -14,7 +14,8 @@ - + + diff --git a/test/modules/DeploymentTester/Program.cs b/test/modules/DeploymentTester/Program.cs index 5705993a7b4..976ead33396 100644 --- a/test/modules/DeploymentTester/Program.cs +++ b/test/modules/DeploymentTester/Program.cs @@ -6,6 +6,7 @@ namespace DeploymentTester using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Edge.ModuleUtil; using Microsoft.Azure.Devices.Edge.ModuleUtil.TestResults; @@ -57,7 +58,7 @@ static async Task UpdateDeploymentEnvironmentVariablesAsync(TestResultReportingC try { - registryManager = RegistryManager.CreateFromConnectionString(Settings.Current.IoTHubConnectionString.OrDefault()); + registryManager = RegistryManager.Create(Settings.Current.IotHubHostname.OrDefault(), new AzureCliCredential()); DateTime testStartAt = DateTime.UtcNow; long count = 1; diff --git a/test/modules/DeploymentTester/Settings.cs b/test/modules/DeploymentTester/Settings.cs index 68b22316562..7b1fc805244 100644 --- a/test/modules/DeploymentTester/Settings.cs +++ b/test/modules/DeploymentTester/Settings.cs @@ -18,7 +18,7 @@ class Settings string deviceId, string moduleId, DeploymentTesterMode testMode, - Option iotHubConnectionString, + Option iotHubHostname, Uri testResultCoordinatorUrl, TimeSpan testStartDelay, TimeSpan testDuration, @@ -33,8 +33,8 @@ class Settings if (testMode == DeploymentTesterMode.Sender) { - Preconditions.CheckArgument(iotHubConnectionString.HasValue, nameof(iotHubConnectionString)); - this.IoTHubConnectionString = iotHubConnectionString; + Preconditions.CheckArgument(iotHubHostname.HasValue, nameof(iotHubHostname)); + this.IotHubHostname = iotHubHostname; Preconditions.CheckArgument(targetModuleId.HasValue, nameof(targetModuleId)); this.TargetModuleId = targetModuleId; @@ -58,7 +58,7 @@ static Settings Create() configuration.GetValue("IOTEDGE_DEVICEID"), configuration.GetValue("IOTEDGE_MODULEID"), configuration.GetValue("DEPLOYMENT_TESTER_MODE", DeploymentTesterMode.Receiver), - Option.Maybe(configuration.GetValue("IOT_HUB_CONNECTION_STRING")), + Option.Maybe(configuration.GetValue("IOT_HUB_HOSTNAME")), configuration.GetValue("testResultCoordinatorUrl", new Uri("http://testresultcoordinator:5001")), configuration.GetValue("testStartDelay", TimeSpan.FromMinutes(2)), configuration.GetValue("testDuration", TimeSpan.FromHours(1)), @@ -73,7 +73,7 @@ static Settings Create() public DeploymentTesterMode TestMode { get; } - public Option IoTHubConnectionString { get; } + public Option IotHubHostname { get; } public Uri TestResultCoordinatorUrl { get; } diff --git a/test/modules/DeploymentTester/config/settings.json b/test/modules/DeploymentTester/config/settings.json index 5c26c15901e..7a62dcfb4a9 100644 --- a/test/modules/DeploymentTester/config/settings.json +++ b/test/modules/DeploymentTester/config/settings.json @@ -1,6 +1,6 @@ { "DEPLOYMENT_TESTER_MODE": "Receiver", - "IOT_HUB_CONNECTION_STRING": "", + "IOT_HUB_HOSTNAME": "", "testStartDelay": "00:02:00", "testDuration": "01:00:00", "trackingId": "", diff --git a/test/modules/DeploymentTester/packages.lock.json b/test/modules/DeploymentTester/packages.lock.json index 1445028e361..0ce0163e19d 100644 --- a/test/modules/DeploymentTester/packages.lock.json +++ b/test/modules/DeploymentTester/packages.lock.json @@ -2,16 +2,28 @@ "version": 1, "dependencies": { "net8.0": { - "Microsoft.Azure.Devices": { + "Azure.Identity": { "type": "Direct", - "requested": "[1.31.6, )", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "requested": "[1.17.1, )", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" + } + }, + "Microsoft.Azure.Devices": { + "type": "Direct", + "requested": "[1.41.0, )", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -143,16 +155,12 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" } }, "Azure.Storage.Blobs": { @@ -235,8 +243,8 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices.Client": { "type": "Transitive", @@ -255,17 +263,17 @@ }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -282,8 +290,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -310,8 +318,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -327,6 +338,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.NETCore.Platforms": { "type": "Transitive", "resolved": "2.1.0", @@ -339,8 +373,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -356,8 +390,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Nito.AsyncEx": { "type": "Transitive", @@ -501,6 +535,15 @@ "resolved": "1.2.0.164", "contentHash": "3WJ5JvRP9QjdrwspeLFjwD2AZw2CcDmYLQ7x8oofxvOzXvboZdFlPsSV8h56hLyK0lnMFvtpb48nxz7oQ4RgCQ==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -678,17 +721,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } - }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.ObjectModel": { "type": "Transitive", @@ -886,8 +920,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Principal.Windows": { "type": "Transitive", @@ -915,11 +949,6 @@ "System.Runtime": "4.3.0" } }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "iTUgB/WtrZ1sWZs84F2hwyQhiRH6QNjQv2DkwrH+WP6RoFga2Q1m3f9/Q7FG8cck8AdHitQkmkXSY8qylcDmuA==" - }, "System.Text.Json": { "type": "Transitive", "resolved": "4.7.2", @@ -952,11 +981,6 @@ "System.Runtime": "4.3.0" } }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" - }, "System.ValueTuple": { "type": "Transitive", "resolved": "4.5.0", diff --git a/test/modules/DirectMethodSender/DirectMethodCloudSender.cs b/test/modules/DirectMethodSender/DirectMethodCloudSender.cs index f9de2872114..0086a43799b 100644 --- a/test/modules/DirectMethodSender/DirectMethodCloudSender.cs +++ b/test/modules/DirectMethodSender/DirectMethodCloudSender.cs @@ -4,6 +4,7 @@ namespace DirectMethodSender using System; using System.Threading; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Edge.Util; using Microsoft.Extensions.Logging; @@ -27,11 +28,11 @@ sealed class DirectMethodCloudSender : DirectMethodSenderBase public override void Dispose() => this.serviceClient.Dispose(); public static async Task CreateAsync( - string connectionString, + string iotHubHostname, TransportType transportType, ILogger logger) { - ServiceClient serviceClient = ServiceClient.CreateFromConnectionString(connectionString, transportType); + ServiceClient serviceClient = ServiceClient.Create(iotHubHostname, new AzureCliCredential(), transportType); await serviceClient.OpenAsync(); return new DirectMethodCloudSender( serviceClient, diff --git a/test/modules/DirectMethodSender/DirectMethodSender.csproj b/test/modules/DirectMethodSender/DirectMethodSender.csproj index 7836b9e3cca..72427b5bd3a 100644 --- a/test/modules/DirectMethodSender/DirectMethodSender.csproj +++ b/test/modules/DirectMethodSender/DirectMethodSender.csproj @@ -14,7 +14,8 @@ - + + diff --git a/test/modules/DirectMethodSender/Program.cs b/test/modules/DirectMethodSender/Program.cs index e6be3a8bb8c..4d960b80528 100644 --- a/test/modules/DirectMethodSender/Program.cs +++ b/test/modules/DirectMethodSender/Program.cs @@ -95,7 +95,7 @@ public static async Task CreateClientAsync(InvocationSou case InvocationSource.Cloud: // Implicit OpenAsync() directMethodClient = await DirectMethodCloudSender.CreateAsync( - Settings.Current.ServiceClientConnectionString.Expect(() => new ArgumentException("ServiceClientConnectionString is null")), + Settings.Current.IotHubHostname.Expect(() => new ArgumentException("IotHubHostname is null")), (Microsoft.Azure.Devices.TransportType)Settings.Current.TransportType, Logger); break; diff --git a/test/modules/DirectMethodSender/Settings.cs b/test/modules/DirectMethodSender/Settings.cs index 94975191a60..3ba01d2ebb0 100644 --- a/test/modules/DirectMethodSender/Settings.cs +++ b/test/modules/DirectMethodSender/Settings.cs @@ -20,7 +20,7 @@ class Settings TimeSpan directMethodFrequency, Option reportingEndpointUrl, InvocationSource invocationSource, - Option serviceClientConnectionString, + Option iotHubHostname, string moduleId, TimeSpan testDuration, TimeSpan testStartDelay, @@ -38,7 +38,7 @@ class Settings this.DirectMethodFrequency = directMethodFrequency; this.InvocationSource = invocationSource; this.ReportingEndpointUrl = reportingEndpointUrl; - this.ServiceClientConnectionString = serviceClientConnectionString; + this.IotHubHostname = iotHubHostname; this.ModuleId = Preconditions.CheckNonWhiteSpace(moduleId, nameof(moduleId)); this.TestDuration = testDuration; this.TestStartDelay = testStartDelay; @@ -62,7 +62,7 @@ static Settings Create() configuration.GetValue("DirectMethodFrequency", TimeSpan.FromSeconds(5)), Option.Maybe(configuration.GetValue("ReportingEndpointUrl")), configuration.GetValue("InvocationSource", InvocationSource.Local), - Option.Maybe(configuration.GetValue("IOT_HUB_CONNECTION_STRING")), + Option.Maybe(configuration.GetValue("IOT_HUB_HOSTNAME")), configuration.GetValue("IOTEDGE_MODULEID"), configuration.GetValue("testDuration", TimeSpan.Zero), configuration.GetValue("testStartDelay", TimeSpan.Zero), @@ -81,7 +81,7 @@ static Settings Create() internal InvocationSource InvocationSource { get; } - internal Option ServiceClientConnectionString { get; } + internal Option IotHubHostname { get; } internal Option ReportingEndpointUrl { get; } diff --git a/test/modules/DirectMethodSender/packages.lock.json b/test/modules/DirectMethodSender/packages.lock.json index 7f3832f9467..58c484b59f0 100644 --- a/test/modules/DirectMethodSender/packages.lock.json +++ b/test/modules/DirectMethodSender/packages.lock.json @@ -2,16 +2,28 @@ "version": 1, "dependencies": { "net8.0": { - "Microsoft.Azure.Devices": { + "Azure.Identity": { "type": "Direct", - "requested": "[1.31.6, )", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "requested": "[1.17.1, )", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" + } + }, + "Microsoft.Azure.Devices": { + "type": "Direct", + "requested": "[1.41.0, )", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -158,16 +170,12 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" } }, "Azure.Storage.Blobs": { @@ -250,22 +258,22 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -282,8 +290,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -321,8 +329,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -338,6 +349,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.NETCore.Platforms": { "type": "Transitive", "resolved": "2.1.0", @@ -350,8 +384,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -367,8 +401,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Nito.AsyncEx": { "type": "Transitive", @@ -512,6 +546,15 @@ "resolved": "1.2.0.164", "contentHash": "3WJ5JvRP9QjdrwspeLFjwD2AZw2CcDmYLQ7x8oofxvOzXvboZdFlPsSV8h56hLyK0lnMFvtpb48nxz7oQ4RgCQ==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -689,17 +732,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } - }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.ObjectModel": { "type": "Transitive", @@ -887,8 +921,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Principal.Windows": { "type": "Transitive", @@ -916,11 +950,6 @@ "System.Runtime": "4.3.0" } }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "iTUgB/WtrZ1sWZs84F2hwyQhiRH6QNjQv2DkwrH+WP6RoFga2Q1m3f9/Q7FG8cck8AdHitQkmkXSY8qylcDmuA==" - }, "System.Text.Json": { "type": "Transitive", "resolved": "4.7.2", @@ -953,11 +982,6 @@ "System.Runtime": "4.3.0" } }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" - }, "System.ValueTuple": { "type": "Transitive", "resolved": "4.5.0", diff --git a/test/modules/EdgeHubRestartTester/EdgeHubRestartTester.csproj b/test/modules/EdgeHubRestartTester/EdgeHubRestartTester.csproj index 1c82f7c0279..510c10a3931 100644 --- a/test/modules/EdgeHubRestartTester/EdgeHubRestartTester.csproj +++ b/test/modules/EdgeHubRestartTester/EdgeHubRestartTester.csproj @@ -27,7 +27,8 @@ - + + diff --git a/test/modules/EdgeHubRestartTester/config/settings.json b/test/modules/EdgeHubRestartTester/config/settings.json index 4d0cd4a2dc2..9429ab726d9 100644 --- a/test/modules/EdgeHubRestartTester/config/settings.json +++ b/test/modules/EdgeHubRestartTester/config/settings.json @@ -1,5 +1,5 @@ { - "IOT_HUB_CONNECTION_STRING": { + "IOT_HUB_HOSTNAME": { "value": "" }, "directMethodEnabled": { diff --git a/test/modules/EdgeHubRestartTester/packages.lock.json b/test/modules/EdgeHubRestartTester/packages.lock.json index 95dabf47358..a1ceac82135 100644 --- a/test/modules/EdgeHubRestartTester/packages.lock.json +++ b/test/modules/EdgeHubRestartTester/packages.lock.json @@ -2,16 +2,28 @@ "version": 1, "dependencies": { "net8.0": { - "Microsoft.Azure.Devices": { + "Azure.Identity": { "type": "Direct", - "requested": "[1.31.6, )", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "requested": "[1.17.1, )", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" + } + }, + "Microsoft.Azure.Devices": { + "type": "Direct", + "requested": "[1.41.0, )", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -147,16 +159,12 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" } }, "Azure.Storage.Blobs": { @@ -239,22 +247,22 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -271,8 +279,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -310,8 +318,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -327,6 +338,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.NETCore.Platforms": { "type": "Transitive", "resolved": "2.1.0", @@ -339,8 +373,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -356,8 +390,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Nito.AsyncEx": { "type": "Transitive", @@ -501,6 +535,15 @@ "resolved": "1.2.0.164", "contentHash": "3WJ5JvRP9QjdrwspeLFjwD2AZw2CcDmYLQ7x8oofxvOzXvboZdFlPsSV8h56hLyK0lnMFvtpb48nxz7oQ4RgCQ==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -678,17 +721,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } - }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.ObjectModel": { "type": "Transitive", @@ -886,8 +920,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Principal.Windows": { "type": "Transitive", @@ -915,11 +949,6 @@ "System.Runtime": "4.3.0" } }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "iTUgB/WtrZ1sWZs84F2hwyQhiRH6QNjQv2DkwrH+WP6RoFga2Q1m3f9/Q7FG8cck8AdHitQkmkXSY8qylcDmuA==" - }, "System.Text.Json": { "type": "Transitive", "resolved": "4.7.2", @@ -952,11 +981,6 @@ "System.Runtime": "4.3.0" } }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" - }, "System.ValueTuple": { "type": "Transitive", "resolved": "4.5.0", diff --git a/test/modules/EdgeHubRestartTester/src/Program.cs b/test/modules/EdgeHubRestartTester/src/Program.cs index ac1b582c91c..a914121b6a1 100644 --- a/test/modules/EdgeHubRestartTester/src/Program.cs +++ b/test/modules/EdgeHubRestartTester/src/Program.cs @@ -6,6 +6,7 @@ namespace EdgeHubRestartTester using System.Net; using System.Threading; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Client; using Microsoft.Azure.Devices.Edge.ModuleUtil; @@ -33,7 +34,7 @@ static async Task MainAsync() List moduleClients = new List(); try { - iotHubServiceClient = ServiceClient.CreateFromConnectionString(Settings.Current.IoTHubConnectionString); + iotHubServiceClient = ServiceClient.Create(Settings.Current.IotHubHostname, new AzureCliCredential()); List edgeHubConnectorTests = new List(); diff --git a/test/modules/EdgeHubRestartTester/src/Settings.cs b/test/modules/EdgeHubRestartTester/src/Settings.cs index 88008b0eea8..95331490024 100644 --- a/test/modules/EdgeHubRestartTester/src/Settings.cs +++ b/test/modules/EdgeHubRestartTester/src/Settings.cs @@ -6,6 +6,7 @@ namespace EdgeHubRestartTester using System.IO; using System.Linq; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Edge.Util; using Microsoft.Azure.Devices.Shared; @@ -21,7 +22,7 @@ class Settings Settings( TimeSpan sdkOperationTimeout, - string serviceClientConnectionString, + string iotHubHostname, string deviceId, string reportingEndpointUrl, TimeSpan restartPeriod, @@ -43,7 +44,7 @@ class Settings this.ReportingEndpointUrl = new Uri(Preconditions.CheckNonWhiteSpace(reportingEndpointUrl, nameof(reportingEndpointUrl))); this.RestartPeriod = restartPeriod; this.SdkOperationTimeout = sdkOperationTimeout; - this.IoTHubConnectionString = Preconditions.CheckNonWhiteSpace(serviceClientConnectionString, nameof(serviceClientConnectionString)); + this.IotHubHostname = Preconditions.CheckNonWhiteSpace(iotHubHostname, nameof(iotHubHostname)); this.TestDuration = testDuration; this.TestStartDelay = testStartDelay; this.TrackingId = Preconditions.CheckNonWhiteSpace(trackingId, nameof(trackingId)); @@ -69,7 +70,7 @@ static Settings Create() return new Settings( configuration.GetValue("sdkOperationTimeout", TimeSpan.FromMilliseconds(20)), - configuration.GetValue("IOT_HUB_CONNECTION_STRING", string.Empty), + configuration.GetValue("IOT_HUB_HOSTNAME", string.Empty), configuration.GetValue("IOTEDGE_DEVICEID", string.Empty), configuration.GetValue("reportingEndpointUrl"), configuration.GetValue("restartPeriod", TimeSpan.FromMinutes(5)), @@ -80,7 +81,7 @@ static Settings Create() configuration.GetValue("trackingId", string.Empty)); } - public string IoTHubConnectionString { get; } + public string IotHubHostname { get; } public string DeviceId { get; } @@ -123,7 +124,7 @@ internal async Task> GetConnectorConfigAsync() { if (!this.isConnectorConfigReady) { - RegistryManager rm = RegistryManager.CreateFromConnectionString(this.IoTHubConnectionString); + RegistryManager rm = RegistryManager.Create(this.IotHubHostname, new AzureCliCredential()); Twin moduleTwin = await rm.GetTwinAsync(this.DeviceId, this.ModuleId); string connectorConfigJson = moduleTwin.Properties.Desired["edgeHubConnectorConfig"].ToString(); diff --git a/test/modules/MetricsValidator/packages.lock.json b/test/modules/MetricsValidator/packages.lock.json index e2c8a2a3c02..8d6dc4844f3 100644 --- a/test/modules/MetricsValidator/packages.lock.json +++ b/test/modules/MetricsValidator/packages.lock.json @@ -169,16 +169,22 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" + } + }, + "Azure.Identity": { + "type": "Transitive", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", + "dependencies": { + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" } }, "Azure.Storage.Blobs": { @@ -266,29 +272,30 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices": { "type": "Transitive", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Azure.EventHubs": { @@ -346,8 +353,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -364,8 +371,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -403,8 +410,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.ObjectPool": { "type": "Transitive", @@ -425,6 +435,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.IdentityModel.Clients.ActiveDirectory": { "type": "Transitive", "resolved": "4.5.1", @@ -492,8 +525,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -590,8 +623,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Nito.AsyncEx": { "type": "Transitive", @@ -861,6 +894,15 @@ "System.Threading": "4.3.0" } }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1247,12 +1289,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1311,11 +1349,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.3.0", @@ -1881,8 +1914,8 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.5.2", + "contentHash": "BG/TNxDFv0svAzx8OiMXDlsHfGw623BZ8tCXw4YLhDFDvDhNUEV58jKYMGRnkbJNm7c3JNNJDiN7JBMzxRBR2w==" }, "System.Threading.Thread": { "type": "Transitive", @@ -2088,7 +2121,8 @@ "microsoft.azure.devices.edge.test.common": { "type": "Project", "dependencies": { - "Microsoft.Azure.Devices": "[1.31.6, )", + "Azure.Identity": "[1.17.1, )", + "Microsoft.Azure.Devices": "[1.41.0, )", "Microsoft.Azure.Devices.Client": "[1.36.10, )", "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", "Microsoft.Azure.EventHubs": "[4.3.2, )", @@ -2096,7 +2130,7 @@ "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", "Nett": "[0.15.0, )", - "Newtonsoft.Json": "[13.0.2, )", + "Newtonsoft.Json": "[13.0.3, )", "System.ServiceProcess.ServiceController": "[4.5.0, )" } }, diff --git a/test/modules/ModuleRestarter/ModuleRestarter.csproj b/test/modules/ModuleRestarter/ModuleRestarter.csproj index 9a3c85d0b06..cf0af17dfdd 100644 --- a/test/modules/ModuleRestarter/ModuleRestarter.csproj +++ b/test/modules/ModuleRestarter/ModuleRestarter.csproj @@ -14,7 +14,8 @@ - + + diff --git a/test/modules/ModuleRestarter/config/settings.json b/test/modules/ModuleRestarter/config/settings.json index 70191076072..ae4dc16cc5d 100644 --- a/test/modules/ModuleRestarter/config/settings.json +++ b/test/modules/ModuleRestarter/config/settings.json @@ -1,5 +1,5 @@ { - "ServiceClientConnectionString": "", + "IotHubHostname": "", "DesiredModulesToRestartCSV": "moduleRestarter", "RestartIntervalInMins": "10" } diff --git a/test/modules/ModuleRestarter/packages.lock.json b/test/modules/ModuleRestarter/packages.lock.json index 7f3832f9467..58c484b59f0 100644 --- a/test/modules/ModuleRestarter/packages.lock.json +++ b/test/modules/ModuleRestarter/packages.lock.json @@ -2,16 +2,28 @@ "version": 1, "dependencies": { "net8.0": { - "Microsoft.Azure.Devices": { + "Azure.Identity": { "type": "Direct", - "requested": "[1.31.6, )", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "requested": "[1.17.1, )", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" + } + }, + "Microsoft.Azure.Devices": { + "type": "Direct", + "requested": "[1.41.0, )", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -158,16 +170,12 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" } }, "Azure.Storage.Blobs": { @@ -250,22 +258,22 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -282,8 +290,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -321,8 +329,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -338,6 +349,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.NETCore.Platforms": { "type": "Transitive", "resolved": "2.1.0", @@ -350,8 +384,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -367,8 +401,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Nito.AsyncEx": { "type": "Transitive", @@ -512,6 +546,15 @@ "resolved": "1.2.0.164", "contentHash": "3WJ5JvRP9QjdrwspeLFjwD2AZw2CcDmYLQ7x8oofxvOzXvboZdFlPsSV8h56hLyK0lnMFvtpb48nxz7oQ4RgCQ==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -689,17 +732,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } - }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.ObjectModel": { "type": "Transitive", @@ -887,8 +921,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Principal.Windows": { "type": "Transitive", @@ -916,11 +950,6 @@ "System.Runtime": "4.3.0" } }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "iTUgB/WtrZ1sWZs84F2hwyQhiRH6QNjQv2DkwrH+WP6RoFga2Q1m3f9/Q7FG8cck8AdHitQkmkXSY8qylcDmuA==" - }, "System.Text.Json": { "type": "Transitive", "resolved": "4.7.2", @@ -953,11 +982,6 @@ "System.Runtime": "4.3.0" } }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" - }, "System.ValueTuple": { "type": "Transitive", "resolved": "4.5.0", diff --git a/test/modules/ModuleRestarter/src/Program.cs b/test/modules/ModuleRestarter/src/Program.cs index 02f481b6c32..e0db817a64a 100644 --- a/test/modules/ModuleRestarter/src/Program.cs +++ b/test/modules/ModuleRestarter/src/Program.cs @@ -6,6 +6,7 @@ namespace ModuleRestarter using System.Net; using System.Threading; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Edge.ModuleUtil; using Microsoft.Azure.Devices.Edge.Util; @@ -44,7 +45,7 @@ static async Task RestartModules(CancellationTokenSource cts) try { - ServiceClient iotHubServiceClient = ServiceClient.CreateFromConnectionString(Settings.Current.ServiceClientConnectionString); + ServiceClient iotHubServiceClient = ServiceClient.Create(Settings.Current.IotHubHostname, new AzureCliCredential()); CloudToDeviceMethod c2dMethod = new CloudToDeviceMethod("RestartModule"); Random random = new Random(); string payloadSchema = "{{ \"SchemaVersion\": \"1.0\", \"Id\": \"{0}\" }}"; diff --git a/test/modules/ModuleRestarter/src/Settings.cs b/test/modules/ModuleRestarter/src/Settings.cs index 7284f4d2c84..2e69d11a220 100644 --- a/test/modules/ModuleRestarter/src/Settings.cs +++ b/test/modules/ModuleRestarter/src/Settings.cs @@ -13,12 +13,12 @@ class Settings internal static Settings Current = Create(); Settings( - string serviceClientConnectionString, + string iotHubHostname, string deviceId, string desiredModulesToRestartCSV, int restartIntervalInMins) { - this.ServiceClientConnectionString = Preconditions.CheckNonWhiteSpace(serviceClientConnectionString, nameof(serviceClientConnectionString)); + this.IotHubHostname = Preconditions.CheckNonWhiteSpace(iotHubHostname, nameof(iotHubHostname)); this.DeviceId = Preconditions.CheckNonWhiteSpace(deviceId, nameof(deviceId)); this.RestartInterval = TimeSpan.FromMinutes(Preconditions.CheckRange(restartIntervalInMins, 1)); @@ -42,13 +42,13 @@ static Settings Create() .Build(); return new Settings( - configuration.GetValue("ServiceClientConnectionString", string.Empty), + configuration.GetValue("IotHubHostname", string.Empty), configuration.GetValue("IOTEDGE_DEVICEID", string.Empty), configuration.GetValue("DesiredModulesToRestartCSV", string.Empty), configuration.GetValue("RestartIntervalInMins", 10)); } - public string ServiceClientConnectionString { get; } + public string IotHubHostname { get; } public string DeviceId { get; } diff --git a/test/modules/Modules.Test/packages.lock.json b/test/modules/Modules.Test/packages.lock.json index 6bedcb80a1c..c8f03652b50 100644 --- a/test/modules/Modules.Test/packages.lock.json +++ b/test/modules/Modules.Test/packages.lock.json @@ -105,16 +105,22 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" + } + }, + "Azure.Identity": { + "type": "Transitive", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", + "dependencies": { + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" } }, "Azure.Storage.Blobs": { @@ -224,18 +230,19 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices": { "type": "Transitive", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -257,11 +264,11 @@ }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Azure.EventHubs": { @@ -319,8 +326,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CodeCoverage": { "type": "Transitive", @@ -399,8 +406,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -438,8 +445,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -455,6 +465,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.IdentityModel.Clients.ActiveDirectory": { "type": "Transitive", "resolved": "4.5.1", @@ -522,8 +555,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -590,8 +623,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Newtonsoft.Json.Bson": { "type": "Transitive", @@ -857,6 +890,15 @@ "resolved": "1.2.0.164", "contentHash": "3WJ5JvRP9QjdrwspeLFjwD2AZw2CcDmYLQ7x8oofxvOzXvboZdFlPsSV8h56hLyK0lnMFvtpb48nxz7oQ4RgCQ==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1166,12 +1208,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1217,11 +1255,6 @@ "System.Runtime.Handles": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.0.12", @@ -1620,8 +1653,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Cryptography.X509Certificates": { "type": "Transitive", @@ -1762,8 +1795,13 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.3.0", + "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } }, "System.Threading.Thread": { "type": "Transitive", @@ -1949,7 +1987,8 @@ "microsoft.azure.devices.edge.test.common": { "type": "Project", "dependencies": { - "Microsoft.Azure.Devices": "[1.31.6, )", + "Azure.Identity": "[1.17.1, )", + "Microsoft.Azure.Devices": "[1.41.0, )", "Microsoft.Azure.Devices.Client": "[1.36.10, )", "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", "Microsoft.Azure.EventHubs": "[4.3.2, )", @@ -1957,7 +1996,7 @@ "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", "Nett": "[0.15.0, )", - "Newtonsoft.Json": "[13.0.2, )", + "Newtonsoft.Json": "[13.0.3, )", "System.ServiceProcess.ServiceController": "[4.5.0, )" } }, @@ -1998,9 +2037,10 @@ "testresultcoordinator": { "type": "Project", "dependencies": { + "Azure.Identity": "[1.17.1, )", "Azure.Storage.Blobs": "[12.19.1, )", "Microsoft.AspNetCore.Mvc.NewtonsoftJson": "[3.1.3, )", - "Microsoft.Azure.Devices": "[1.31.6, )", + "Microsoft.Azure.Devices": "[1.41.0, )", "Microsoft.Azure.Devices.Edge.ModuleUtil": "[1.0.0, )", "Microsoft.Azure.Devices.Edge.Storage": "[1.0.0, )", "Microsoft.Azure.Devices.Edge.Storage.RocksDb": "[1.0.0, )", diff --git a/test/modules/TestAnalyzer/TestAnalyzer.csproj b/test/modules/TestAnalyzer/TestAnalyzer.csproj index e2a8103842e..0d8dacd1d8e 100644 --- a/test/modules/TestAnalyzer/TestAnalyzer.csproj +++ b/test/modules/TestAnalyzer/TestAnalyzer.csproj @@ -19,7 +19,7 @@ - + diff --git a/test/modules/TestAnalyzer/packages.lock.json b/test/modules/TestAnalyzer/packages.lock.json index dfe3bfeeabd..0b70f7c9076 100644 --- a/test/modules/TestAnalyzer/packages.lock.json +++ b/test/modules/TestAnalyzer/packages.lock.json @@ -15,14 +15,15 @@ }, "Microsoft.Azure.Devices": { "type": "Direct", - "requested": "[1.31.6, )", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", - "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "requested": "[1.41.0, )", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -133,16 +134,22 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" + } + }, + "Azure.Identity": { + "type": "Transitive", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", + "dependencies": { + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" } }, "Azure.Storage.Blobs": { @@ -234,8 +241,8 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices.Client": { "type": "Transitive", @@ -254,11 +261,11 @@ }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Azure.EventHubs": { @@ -287,8 +294,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -313,8 +320,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -352,8 +359,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -369,6 +379,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.IdentityModel.Clients.ActiveDirectory": { "type": "Transitive", "resolved": "3.14.2", @@ -433,8 +466,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -516,8 +549,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Newtonsoft.Json.Bson": { "type": "Transitive", @@ -807,6 +840,15 @@ "System.Threading": "4.3.0" } }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1156,12 +1198,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1220,11 +1258,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.3.0", @@ -1618,8 +1651,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Cryptography.X509Certificates": { "type": "Transitive", @@ -1714,11 +1747,6 @@ "System.Text.Encoding": "4.3.0" } }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "iTUgB/WtrZ1sWZs84F2hwyQhiRH6QNjQv2DkwrH+WP6RoFga2Q1m3f9/Q7FG8cck8AdHitQkmkXSY8qylcDmuA==" - }, "System.Text.Json": { "type": "Transitive", "resolved": "4.7.2", @@ -1762,8 +1790,13 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.3.0", + "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } }, "System.Threading.Thread": { "type": "Transitive", @@ -1914,7 +1947,8 @@ "microsoft.azure.devices.edge.test.common": { "type": "Project", "dependencies": { - "Microsoft.Azure.Devices": "[1.31.6, )", + "Azure.Identity": "[1.17.1, )", + "Microsoft.Azure.Devices": "[1.41.0, )", "Microsoft.Azure.Devices.Client": "[1.36.10, )", "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", "Microsoft.Azure.EventHubs": "[4.3.2, )", @@ -1922,7 +1956,7 @@ "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", "Nett": "[0.15.0, )", - "Newtonsoft.Json": "[13.0.2, )", + "Newtonsoft.Json": "[13.0.3, )", "System.ServiceProcess.ServiceController": "[4.5.0, )" } }, diff --git a/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs b/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs index 403d9e10bf2..10e58a2463f 100644 --- a/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs +++ b/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs @@ -5,6 +5,7 @@ namespace TestResultCoordinator.Reports using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Edge.ModuleUtil; using Microsoft.Azure.Devices.Shared; @@ -14,9 +15,9 @@ class CloudTwinTestResultCollection : IAsyncEnumerable { CloudTwinTestResultCollectionEnumerator enumerator; - public CloudTwinTestResultCollection(string source, string serviceClientConnectionString, string moduleId, string trackingId) + public CloudTwinTestResultCollection(string source, string iotHubHostname, string moduleId, string trackingId) { - CloudTwinTestResultCollectionEnumerator enumerator = new CloudTwinTestResultCollectionEnumerator(source, serviceClientConnectionString, moduleId, trackingId); + CloudTwinTestResultCollectionEnumerator enumerator = new CloudTwinTestResultCollectionEnumerator(source, iotHubHostname, moduleId, trackingId); this.enumerator = enumerator; } @@ -35,9 +36,9 @@ public class CloudTwinTestResultCollectionEnumerator : IAsyncEnumerator GetTwinExpectedResults(TwinCountingReportM string[] sources = reportMetadata.ExpectedSource.Split('.'); string moduleId = sources.Length > 0 ? sources[0] : Settings.Current.ModuleId; - return new CloudTwinTestResultCollection(reportMetadata.ExpectedSource, Settings.Current.IoTHubConnectionString, moduleId, Settings.Current.TrackingId); + return new CloudTwinTestResultCollection(reportMetadata.ExpectedSource, Settings.Current.IotHubHostname, moduleId, Settings.Current.TrackingId); } } } diff --git a/test/modules/TestResultCoordinator/Services/TestResultReportingService.cs b/test/modules/TestResultCoordinator/Services/TestResultReportingService.cs index b88de4c1f35..59223ababcc 100644 --- a/test/modules/TestResultCoordinator/Services/TestResultReportingService.cs +++ b/test/modules/TestResultCoordinator/Services/TestResultReportingService.cs @@ -105,7 +105,7 @@ async void DoWorkAsync(object state) { try { - await TestReportUtil.UploadLogsAsync(Settings.Current.IoTHubConnectionString, this.serviceSpecificSettings.BlobStorageAccountUriWithSasToken, this.logUploadDuration, this.logger); + await TestReportUtil.UploadLogsAsync(Settings.Current.IotHubHostname, this.serviceSpecificSettings.BlobStorageAccountUriWithSasToken, this.logUploadDuration, this.logger); } catch (Exception ex) { diff --git a/test/modules/TestResultCoordinator/Settings.cs b/test/modules/TestResultCoordinator/Settings.cs index 4594fdb184e..c19b23ff258 100644 --- a/test/modules/TestResultCoordinator/Settings.cs +++ b/test/modules/TestResultCoordinator/Settings.cs @@ -6,6 +6,7 @@ namespace TestResultCoordinator using System.IO; using System.Linq; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Edge.ModuleUtil; using Microsoft.Azure.Devices.Edge.ModuleUtil.NetworkController; @@ -32,7 +33,7 @@ class Settings bool useTestResultReportingService, bool useResultEventReceivingService, string eventHubConnectionString, - string iotHubConnectionString, + string iotHubHostname, string deviceId, string moduleId, ushort webHostPort, @@ -106,7 +107,7 @@ class Settings } this.TrackingId = Preconditions.CheckNonWhiteSpace(trackingId, nameof(trackingId)); - this.IoTHubConnectionString = Preconditions.CheckNonWhiteSpace(iotHubConnectionString, nameof(iotHubConnectionString)); + this.IotHubHostname = Preconditions.CheckNonWhiteSpace(iotHubHostname, nameof(iotHubHostname)); this.DeviceId = Preconditions.CheckNonWhiteSpace(deviceId, nameof(deviceId)); this.ModuleId = Preconditions.CheckNonWhiteSpace(moduleId, nameof(moduleId)); this.WebHostPort = Preconditions.CheckNotNull(webHostPort, nameof(webHostPort)); @@ -150,7 +151,7 @@ static Settings Create() configuration.GetValue("useTestResultReportingService", true), configuration.GetValue("useResultEventReceivingService", true), configuration.GetValue("eventHubConnectionString"), - configuration.GetValue("IOT_HUB_CONNECTION_STRING"), + configuration.GetValue("IOT_HUB_HOSTNAME"), configuration.GetValue("IOTEDGE_DEVICEID"), configuration.GetValue("IOTEDGE_MODULEID"), configuration.GetValue("webhostPort", DefaultWebHostPort), @@ -175,7 +176,7 @@ static Settings Create() configuration.GetValue("eventHubDelayTolerance", TimeSpan.FromHours(1))); } - public string IoTHubConnectionString { get; } + public string IotHubHostname { get; } public string DeviceId { get; } @@ -252,7 +253,7 @@ internal async Task> GetReportMetadataListAsync(ILogge { if (this.reportMetadatas == null) { - RegistryManager rm = RegistryManager.CreateFromConnectionString(this.IoTHubConnectionString); + RegistryManager rm = RegistryManager.Create(this.IotHubHostname, new AzureCliCredential()); Twin moduleTwin = await rm.GetTwinAsync(this.DeviceId, this.ModuleId); this.reportMetadatas = TestReportUtil.ParseReportMetadataJson(moduleTwin.Properties.Desired["reportMetadataList"].ToString(), logger); } diff --git a/test/modules/TestResultCoordinator/TestReportUtil.cs b/test/modules/TestResultCoordinator/TestReportUtil.cs index b3534751a2e..a800c09d1ac 100644 --- a/test/modules/TestResultCoordinator/TestReportUtil.cs +++ b/test/modules/TestResultCoordinator/TestReportUtil.cs @@ -5,6 +5,7 @@ namespace TestResultCoordinator using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; + using Azure.Identity; using Azure.Storage.Blobs; using Azure.Storage.Sas; using Microsoft.Azure.Devices; @@ -141,16 +142,16 @@ internal static async Task GetOrCreateBlobContainerSasUriForLogAsync(string return GetContainerSasUri(containerClient); } - internal static async Task UploadLogsAsync(string iotHubConnectionString, Uri blobContainerWriteUri, Option logUploadDuration, ILogger logger) + internal static async Task UploadLogsAsync(string iotHubHostname, Uri blobContainerWriteUri, Option logUploadDuration, ILogger logger) { - Preconditions.CheckNonWhiteSpace(iotHubConnectionString, nameof(iotHubConnectionString)); + Preconditions.CheckNonWhiteSpace(iotHubHostname, nameof(iotHubHostname)); Preconditions.CheckNotNull(blobContainerWriteUri, nameof(blobContainerWriteUri)); Preconditions.CheckNotNull(logger, nameof(logger)); DateTime uploadLogStartAt = DateTime.UtcNow; logger.LogInformation("Send upload logs request to edgeAgent."); - ServiceClient serviceClient = ServiceClient.CreateFromConnectionString(iotHubConnectionString); + ServiceClient serviceClient = ServiceClient.Create(iotHubHostname, new AzureCliCredential()); CloudToDeviceMethod uploadLogRequest = new CloudToDeviceMethod("UploadModuleLogs"); diff --git a/test/modules/TestResultCoordinator/TestResultCoordinator.csproj b/test/modules/TestResultCoordinator/TestResultCoordinator.csproj index bc4a548b377..1c8f2f0fdf0 100644 --- a/test/modules/TestResultCoordinator/TestResultCoordinator.csproj +++ b/test/modules/TestResultCoordinator/TestResultCoordinator.csproj @@ -18,9 +18,10 @@ + - + diff --git a/test/modules/TestResultCoordinator/packages.lock.json b/test/modules/TestResultCoordinator/packages.lock.json index 52cfcc2632c..e1f0702cf7d 100644 --- a/test/modules/TestResultCoordinator/packages.lock.json +++ b/test/modules/TestResultCoordinator/packages.lock.json @@ -2,6 +2,17 @@ "version": 1, "dependencies": { "net8.0": { + "Azure.Identity": { + "type": "Direct", + "requested": "[1.17.1, )", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", + "dependencies": { + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" + } + }, "Azure.Storage.Blobs": { "type": "Direct", "requested": "[12.19.1, )", @@ -25,14 +36,15 @@ }, "Microsoft.Azure.Devices": { "type": "Direct", - "requested": "[1.31.6, )", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", - "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "requested": "[1.41.0, )", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -107,16 +119,12 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" } }, "Azure.Storage.Common": { @@ -199,8 +207,8 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices.Client": { "type": "Transitive", @@ -219,11 +227,11 @@ }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Azure.EventHubs": { @@ -252,8 +260,8 @@ }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -327,8 +335,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -355,8 +363,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -372,6 +383,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.IdentityModel.Clients.ActiveDirectory": { "type": "Transitive", "resolved": "3.14.2", @@ -436,8 +470,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -519,8 +553,8 @@ }, "Newtonsoft.Json": { "type": "Transitive", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Newtonsoft.Json.Bson": { "type": "Transitive", @@ -810,6 +844,15 @@ "System.Threading": "4.3.0" } }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1159,12 +1202,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1223,11 +1262,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.3.0", @@ -1621,8 +1655,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Cryptography.X509Certificates": { "type": "Transitive", @@ -1717,11 +1751,6 @@ "System.Text.Encoding": "4.3.0" } }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "iTUgB/WtrZ1sWZs84F2hwyQhiRH6QNjQv2DkwrH+WP6RoFga2Q1m3f9/Q7FG8cck8AdHitQkmkXSY8qylcDmuA==" - }, "System.Text.Json": { "type": "Transitive", "resolved": "4.7.2", @@ -1765,8 +1794,13 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.3.0", + "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } }, "System.Threading.Thread": { "type": "Transitive", @@ -1917,7 +1951,8 @@ "microsoft.azure.devices.edge.test.common": { "type": "Project", "dependencies": { - "Microsoft.Azure.Devices": "[1.31.6, )", + "Azure.Identity": "[1.17.1, )", + "Microsoft.Azure.Devices": "[1.41.0, )", "Microsoft.Azure.Devices.Client": "[1.36.10, )", "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", "Microsoft.Azure.EventHubs": "[4.3.2, )", @@ -1925,7 +1960,7 @@ "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", "Nett": "[0.15.0, )", - "Newtonsoft.Json": "[13.0.2, )", + "Newtonsoft.Json": "[13.0.3, )", "System.ServiceProcess.ServiceController": "[4.5.0, )" } }, diff --git a/test/modules/TwinTester/Program.cs b/test/modules/TwinTester/Program.cs index 4d806f18574..349ff1cceb8 100644 --- a/test/modules/TwinTester/Program.cs +++ b/test/modules/TwinTester/Program.cs @@ -4,6 +4,7 @@ namespace TwinTester using System; using System.Threading; using System.Threading.Tasks; + using Azure.Identity; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Client; using Microsoft.Azure.Devices.Edge.ModuleUtil; @@ -23,7 +24,7 @@ static async Task Main() ITwinTestInitializer twinOperator = null; try { - using (RegistryManager registryManager = RegistryManager.CreateFromConnectionString(Settings.Current.ServiceClientConnectionString)) + using (RegistryManager registryManager = RegistryManager.Create(Settings.Current.IotHubHostname, new AzureCliCredential())) { twinOperator = await GetTwinOperatorAsync(registryManager); await twinOperator.StartAsync(cts.Token); diff --git a/test/modules/TwinTester/Settings.cs b/test/modules/TwinTester/Settings.cs index a0c57021103..726ac54077d 100644 --- a/test/modules/TwinTester/Settings.cs +++ b/test/modules/TwinTester/Settings.cs @@ -34,7 +34,7 @@ static Settings Create() configuration.GetValue("TransportType", TransportType.Amqp_Tcp_Only), configuration.GetValue("AnalyzerUrl", "http://analyzer:15000"), configuration.GetValue("testResultCoordinatorUrl"), - configuration.GetValue("ServiceClientConnectionString"), + configuration.GetValue("IotHubHostname"), configuration.GetValue("StoragePath"), configuration.GetValue("StorageOptimizeForPerformance", true), configuration.GetValue("TwinTestMode", TwinTestMode.TwinAllOperations), @@ -54,7 +54,7 @@ static Settings Create() TransportType transportType, string analyzerUrl, string testResultCoordinatorUrl, - string serviceClientConnectionString, + string iotHubHostname, string storagePath, bool storageOptimizeForPerformance, TwinTestMode testMode, @@ -70,7 +70,7 @@ static Settings Create() this.TwinUpdateFailureThreshold = Preconditions.CheckNotNull(twinUpdateFailureThreshold); this.EdgeHubRestartFailureTolerance = Preconditions.CheckNotNull(edgeHubRestartFailureTolerance); this.TransportType = Preconditions.CheckNotNull(transportType); - this.ServiceClientConnectionString = Preconditions.CheckNonWhiteSpace(serviceClientConnectionString, nameof(serviceClientConnectionString)); + this.IotHubHostname = Preconditions.CheckNonWhiteSpace(iotHubHostname, nameof(iotHubHostname)); this.StoragePath = Preconditions.CheckNotNull(storagePath); this.StorageOptimizeForPerformance = Preconditions.CheckNotNull(storageOptimizeForPerformance); this.TwinTestMode = testMode; @@ -107,7 +107,7 @@ static Settings Create() public Uri ReporterUrl { get; } - public string ServiceClientConnectionString { get; } + public string IotHubHostname { get; } public string StoragePath { get; } diff --git a/test/modules/TwinTester/TwinTester.csproj b/test/modules/TwinTester/TwinTester.csproj index 23df3de49d4..07626e6d2ab 100644 --- a/test/modules/TwinTester/TwinTester.csproj +++ b/test/modules/TwinTester/TwinTester.csproj @@ -14,7 +14,8 @@ - + + @@ -23,7 +24,7 @@ - + diff --git a/test/modules/TwinTester/config/settings.json b/test/modules/TwinTester/config/settings.json index 1861a56df42..961d57b5cd8 100644 --- a/test/modules/TwinTester/config/settings.json +++ b/test/modules/TwinTester/config/settings.json @@ -5,7 +5,7 @@ "twinUpdateFailureThreshold": "00:01:00", "transportType": "amqp", "analyzerURL": "http://analyzer:15000", - "serviceClientConnectionString": "", + "iotHubHostname": "", "StoragePath": "", "StorageOptimizeForPerformance": true, "TwinTestMode": "TwinAllOperations" diff --git a/test/modules/TwinTester/packages.lock.json b/test/modules/TwinTester/packages.lock.json index b68b88fb375..7f6f19e2257 100644 --- a/test/modules/TwinTester/packages.lock.json +++ b/test/modules/TwinTester/packages.lock.json @@ -2,16 +2,28 @@ "version": 1, "dependencies": { "net8.0": { - "Microsoft.Azure.Devices": { + "Azure.Identity": { "type": "Direct", - "requested": "[1.31.6, )", - "resolved": "1.31.6", - "contentHash": "/skCDrkfdyiWsJc9Lbm3nrkHZVboFCxzpd4RaLYrx1t59qfBDAydGQYDY/sKEKFXy1Kpttk9MFN7Qy91LSEISQ==", + "requested": "[1.17.1, )", + "resolved": "1.17.1", + "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", "dependencies": { - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Rest.ClientRuntime": "2.3.21", - "Newtonsoft.Json": "12.0.3", + "Azure.Core": "1.50.0", + "Microsoft.Identity.Client": "4.78.0", + "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" + } + }, + "Microsoft.Azure.Devices": { + "type": "Direct", + "requested": "[1.41.0, )", + "resolved": "1.41.0", + "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", + "dependencies": { + "Azure.Core": "1.44.1", + "Microsoft.Azure.Amqp": "2.6.9", + "Microsoft.Azure.Devices.Shared": "1.30.4", + "Microsoft.Rest.ClientRuntime": "2.3.24", + "Newtonsoft.Json": "13.0.3", "System.Diagnostics.Contracts": "4.3.0", "System.Diagnostics.TraceSource": "4.3.0" } @@ -109,9 +121,9 @@ }, "Newtonsoft.Json": { "type": "Direct", - "requested": "[13.0.2, )", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "requested": "[13.0.3, )", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "StyleCop.Analyzers": { "type": "Direct", @@ -165,16 +177,12 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.50.0", + "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Memory.Data": "1.0.2", - "System.Numerics.Vectors": "4.5.0", - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.7.2", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" } }, "Azure.Storage.Blobs": { @@ -257,22 +265,22 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.6.9", + "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" }, "Microsoft.Azure.Devices.Shared": { "type": "Transitive", - "resolved": "1.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", + "resolved": "1.30.4", + "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", "dependencies": { "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.0.3" + "Newtonsoft.Json": "13.0.3" } }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" + "resolved": "8.0.0", + "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" }, "Microsoft.CSharp": { "type": "Transitive", @@ -289,8 +297,8 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", @@ -317,8 +325,11 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" + "resolved": "8.0.3", + "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -334,6 +345,29 @@ "resolved": "5.0.0", "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.78.0", + "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", + "dependencies": { + "Microsoft.Identity.Client": "4.78.0", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "8.14.0", + "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + }, "Microsoft.NETCore.Platforms": { "type": "Transitive", "resolved": "2.1.0", @@ -346,8 +380,8 @@ }, "Microsoft.Rest.ClientRuntime": { "type": "Transitive", - "resolved": "2.3.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", + "resolved": "2.3.24", + "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", "dependencies": { "Newtonsoft.Json": "10.0.3" } @@ -702,6 +736,15 @@ "System.Threading": "4.3.0" } }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.8.0", + "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, "System.Collections": { "type": "Transitive", "resolved": "4.3.0", @@ -1001,12 +1044,8 @@ }, "System.Memory.Data": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==", - "dependencies": { - "System.Text.Encodings.Web": "4.7.2", - "System.Text.Json": "4.6.0" - } + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" }, "System.Net.Http": { "type": "Transitive", @@ -1065,11 +1104,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, "System.ObjectModel": { "type": "Transitive", "resolved": "4.3.0", @@ -1389,8 +1423,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, "System.Security.Cryptography.X509Certificates": { "type": "Transitive", @@ -1461,11 +1495,6 @@ "System.Text.Encoding": "4.3.0" } }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "iTUgB/WtrZ1sWZs84F2hwyQhiRH6QNjQv2DkwrH+WP6RoFga2Q1m3f9/Q7FG8cck8AdHitQkmkXSY8qylcDmuA==" - }, "System.Text.Json": { "type": "Transitive", "resolved": "4.7.2", @@ -1500,8 +1529,13 @@ }, "System.Threading.Tasks.Extensions": { "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + "resolved": "4.3.0", + "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } }, "System.Threading.Timer": { "type": "Transitive", From 3d4e65d9ae87e04f4ceb442bc56b6636dcb63137 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Thu, 18 Dec 2025 16:34:21 -0800 Subject: [PATCH 21/31] Use EnvironmentCredential instead of AzureCliCredential --- builds/e2e/templates/connectivity-deploy.yaml | 11 +- .../connectivity_deployment.template.json | 117 ++++++++++++++++++ scripts/linux/trcE2ETest.sh | 18 +++ smoke/IotEdgeQuickstart/details/Details.cs | 4 +- smoke/LeafDevice/details/Details.cs | 4 +- .../IotHub.cs | 4 +- .../CloudToDeviceMessageReceiver.cs | 2 +- .../CloudToDeviceMessageSender.cs | 2 +- test/modules/DeploymentTester/Program.cs | 2 +- .../DirectMethodCloudSender.cs | 2 +- .../EdgeHubRestartTester/src/Program.cs | 2 +- .../EdgeHubRestartTester/src/Settings.cs | 2 +- test/modules/ModuleRestarter/src/Program.cs | 2 +- .../Reports/CloudTwinTestResultCollection.cs | 2 +- .../modules/TestResultCoordinator/Settings.cs | 2 +- .../TestResultCoordinator/TestReportUtil.cs | 2 +- test/modules/TwinTester/Program.cs | 2 +- 17 files changed, 162 insertions(+), 18 deletions(-) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 69246314f8c..dd0a70b2cbb 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -97,6 +97,12 @@ steps: inlineScript: | set -euo pipefail + accessToken=$(az account get-access-token --resource 'https://iothubs.azure.net') + echo "AAD token acquired for IoT hub control plane. Expires $(echo $accessToken | jq -r .expiresOn)" + tenantId=$(echo $accessToken | jq -r .tenant) + clientId='00000000-0000-0000-0000-000000000000' + clientSecret=$(echo $accessToken | jq -r .accessToken) + . $(Agent.BuildDirectory)/../artifacts/${{ parameters['images.artifact.name'] }}/artifactInfo.txt chmod +x ${{ parameters['build.repo.path'] }}/scripts/linux/trcE2ETest.sh testName="Connectivity" @@ -147,7 +153,10 @@ steps: -repoPath "${{ parameters['build.repo.path'] }}" \ -topology "${{ parameters['topology'] }}" \ -waitForTestComplete \ - -cleanAll + -cleanAll \ + -tenantId "$tenantId" \ + -clientId "$clientId" \ + -clientSecret "$clientSecret" scriptExitCode=$? echo "script exit code=$scriptExitCode" diff --git a/e2e_deployment_files/connectivity_deployment.template.json b/e2e_deployment_files/connectivity_deployment.template.json index 45a2cf9b7ce..7d59a40f51f 100644 --- a/e2e_deployment_files/connectivity_deployment.template.json +++ b/e2e_deployment_files/connectivity_deployment.template.json @@ -165,6 +165,15 @@ }, "DirectMethodFrequency": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -225,6 +234,15 @@ }, "DirectMethodFrequency": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -288,6 +306,15 @@ }, "DirectMethodFrequency": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -399,6 +426,15 @@ }, "topology": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -441,6 +477,15 @@ }, "StorageOptimizeForPerformance": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -483,6 +528,15 @@ }, "StorageOptimizeForPerformance": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -525,6 +579,15 @@ }, "StorageOptimizeForPerformance": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -567,6 +630,15 @@ }, "StorageOptimizeForPerformance": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -603,6 +675,15 @@ }, "DEPLOYMENT_UPDATE_PERIOD": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -654,6 +735,15 @@ }, "ReportingEndpointUrl": { "value": "http://localhost:5001" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -678,6 +768,15 @@ }, "ReportingEndpointUrl": { "value": "http://testResultCoordinator:5001" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -711,6 +810,15 @@ }, "ReportingEndpointUrl": { "value": "http://localhost:5001" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { @@ -735,6 +843,15 @@ }, "ReportingEndpointUrl": { "value": "http://testResultCoordinator:5001" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "value": "" + }, + "AZURE_CLIENT_SECRET": { + "value": "" } }, "settings": { diff --git a/scripts/linux/trcE2ETest.sh b/scripts/linux/trcE2ETest.sh index 97e1e387686..42a4bf1e6e1 100755 --- a/scripts/linux/trcE2ETest.sh +++ b/scripts/linux/trcE2ETest.sh @@ -56,6 +56,9 @@ function usage() { echo " -trackingId Tracking id used to tag test events. Needed if running nested tests and test events are sent to TRC from L4 node. Otherwise generated." echo ' -cleanAll Do docker prune for containers, logs and volumes.' echo ' -packageType Package type to be used [deb, rpm]' + echo ' -tenantId Azure Tenant ID used by test modules to authenticate to the IoT hub'"'"'s control plane.' + echo ' -clientId Azure Client ID used by test modules to authenticate to the IoT hub'"'"'s control plane.' + echo ' -clientSecret Azure Client Secret used by test modules to authenticate to the IoT hub'"'"'s control plane.' exit 1; } @@ -177,6 +180,9 @@ function prepare_test_from_artifacts() { sed -i -e "s@@$LOG_ANALYTICS_WORKSPACEID@g" "$deployment_working_file" sed -i -e "s@@$LOG_ANALYTICS_SHAREDKEY@g" "$deployment_working_file" sed -i -e "s@@$UPSTREAM_PROTOCOL@g" "$deployment_working_file" + sed -i -e "s@@$AZURE_TENANT_ID@g" "$deployment_working_file" + sed -i -e "s@@$AZURE_CLIENT_ID@g" "$deployment_working_file" + sed -i -e "s@@$AZURE_CLIENT_SECRET@g" "$deployment_working_file" if [[ ! -z "$CUSTOM_EDGE_AGENT_IMAGE" ]]; then sed -i -e "s@\"image\":.*azureiotedge-agent:.*\"@\"image\": \"$CUSTOM_EDGE_AGENT_IMAGE\"@g" "$deployment_working_file" @@ -488,6 +494,15 @@ function process_args() { elif [ $saveNextArg -eq 49 ]; then PACKAGE_TYPE="$arg" saveNextArg=0 + elif [ $saveNextArg -eq 50 ]; then + AZURE_TENANT_ID="$arg" + saveNextArg=0 + elif [ $saveNextArg -eq 51 ]; then + AZURE_CLIENT_ID="$arg" + saveNextArg=0 + elif [ $saveNextArg -eq 52 ]; then + AZURE_CLIENT_SECRET="$arg" + saveNextArg=0 else case "$arg" in '-h' | '--help' ) usage;; @@ -542,6 +557,9 @@ function process_args() { '-packageType' ) saveNextArg=49;; '-waitForTestComplete' ) WAIT_FOR_TEST_COMPLETE=1;; '-cleanAll' ) CLEAN_ALL=1;; + '-tenantId' ) saveNextArg=50;; + '-clientId' ) saveNextArg=51;; + '-clientSecret' ) saveNextArg=52;; * ) echo "Unsupported argument: $saveNextArg $arg" diff --git a/smoke/IotEdgeQuickstart/details/Details.cs b/smoke/IotEdgeQuickstart/details/Details.cs index e77135bc96e..1fc7e21e4f8 100644 --- a/smoke/IotEdgeQuickstart/details/Details.cs +++ b/smoke/IotEdgeQuickstart/details/Details.cs @@ -236,7 +236,7 @@ protected async Task GetOrCreateEdgeDeviceIdentity() Console.WriteLine("Getting or Creating device Identity."); var settings = new HttpTransportSettings(); this.proxy.ForEach(p => settings.Proxy = p); - RegistryManager rm = RegistryManager.Create(this.iothubHostName, new AzureCliCredential(), settings); + RegistryManager rm = RegistryManager.Create(this.iothubHostName, new EnvironmentCredential(), settings); Device device = await rm.GetDeviceAsync(this.deviceId); if (device != null) @@ -310,7 +310,7 @@ protected async Task VerifyEdgeAgentIsConnectedToIotHub() this.proxy.ForEach(p => settings.HttpProxy = p); ServiceClient serviceClient = - ServiceClient.Create(this.iothubHostName, new AzureCliCredential(), this.serviceClientTransportType, settings); + ServiceClient.Create(this.iothubHostName, new EnvironmentCredential(), this.serviceClientTransportType, settings); while (!cts.IsCancellationRequested) { diff --git a/smoke/LeafDevice/details/Details.cs b/smoke/LeafDevice/details/Details.cs index da3f15e0079..2e4de798044 100644 --- a/smoke/LeafDevice/details/Details.cs +++ b/smoke/LeafDevice/details/Details.cs @@ -217,7 +217,7 @@ protected async Task GetOrCreateDeviceIdentityAsync() { var settings = new HttpTransportSettings(); this.proxy.ForEach(p => settings.Proxy = p); - RegistryManager rm = RegistryManager.Create(this.iothubHostName, new AzureCliCredential(), settings); + RegistryManager rm = RegistryManager.Create(this.iothubHostName, new EnvironmentCredential(), settings); Option edgeScope = await this.edgeDeviceId .Map(id => GetScopeIfExitsAsync(rm, id)) @@ -320,7 +320,7 @@ protected async Task VerifyDirectMethodAsync() var settings = new ServiceClientTransportSettings(); this.proxy.ForEach(p => settings.HttpProxy = p); ServiceClient serviceClient = - ServiceClient.Create(this.iothubHostName, new AzureCliCredential(), this.serviceClientTransportType, settings); + ServiceClient.Create(this.iothubHostName, new EnvironmentCredential(), this.serviceClientTransportType, settings); // Call a direct method TimeSpan testDuration = TimeSpan.FromSeconds(300); diff --git a/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs b/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs index 1ff3bebef3c..f4cdb1bea9c 100644 --- a/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs +++ b/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs @@ -39,7 +39,7 @@ public IotHub(string iotHubHostname, string eventHubEndpoint, Option proxyU proxy.ForEach(p => settings.Proxy = p); return RegistryManager.Create( this.iotHubHostname, - new AzureCliCredential(), + new EnvironmentCredential(), settings); }); @@ -50,7 +50,7 @@ public IotHub(string iotHubHostname, string eventHubEndpoint, Option proxyU proxy.ForEach(p => settings.HttpProxy = p); return ServiceClient.Create( this.iotHubHostname, - new AzureCliCredential(), + new EnvironmentCredential(), DeviceTransportType.Amqp_WebSocket_Only, settings); }); diff --git a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs index 9393b147e2b..957978bba08 100644 --- a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs +++ b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs @@ -79,7 +79,7 @@ public async Task StartAsync(CancellationToken ct) try { - registryManager = Microsoft.Azure.Devices.RegistryManager.Create(this.iotHubHostname, new AzureCliCredential()); + registryManager = Microsoft.Azure.Devices.RegistryManager.Create(this.iotHubHostname, new EnvironmentCredential()); var edgeDevice = await registryManager.GetDeviceAsync(this.edgeDeviceId); var leafDevice = new Microsoft.Azure.Devices.Device(this.deviceId); leafDevice.Scope = edgeDevice.Scope; diff --git a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs index cb4e3f5424a..62501500d74 100644 --- a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs +++ b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs @@ -52,7 +52,7 @@ public async Task StartAsync(CancellationToken ct) await Task.Delay(this.testStartDelay, ct); DateTime testStartAt = DateTime.UtcNow; - this.serviceClient = ServiceClient.Create(this.iotHubHostname, new AzureCliCredential()); + this.serviceClient = ServiceClient.Create(this.iotHubHostname, new EnvironmentCredential()); await this.serviceClient.OpenAsync(); Guid batchId = Guid.NewGuid(); diff --git a/test/modules/DeploymentTester/Program.cs b/test/modules/DeploymentTester/Program.cs index 976ead33396..06c8ec5737f 100644 --- a/test/modules/DeploymentTester/Program.cs +++ b/test/modules/DeploymentTester/Program.cs @@ -58,7 +58,7 @@ static async Task UpdateDeploymentEnvironmentVariablesAsync(TestResultReportingC try { - registryManager = RegistryManager.Create(Settings.Current.IotHubHostname.OrDefault(), new AzureCliCredential()); + registryManager = RegistryManager.Create(Settings.Current.IotHubHostname.OrDefault(), new EnvironmentCredential()); DateTime testStartAt = DateTime.UtcNow; long count = 1; diff --git a/test/modules/DirectMethodSender/DirectMethodCloudSender.cs b/test/modules/DirectMethodSender/DirectMethodCloudSender.cs index 0086a43799b..546a78dd998 100644 --- a/test/modules/DirectMethodSender/DirectMethodCloudSender.cs +++ b/test/modules/DirectMethodSender/DirectMethodCloudSender.cs @@ -32,7 +32,7 @@ public static async Task CreateAsync( TransportType transportType, ILogger logger) { - ServiceClient serviceClient = ServiceClient.Create(iotHubHostname, new AzureCliCredential(), transportType); + ServiceClient serviceClient = ServiceClient.Create(iotHubHostname, new EnvironmentCredential(), transportType); await serviceClient.OpenAsync(); return new DirectMethodCloudSender( serviceClient, diff --git a/test/modules/EdgeHubRestartTester/src/Program.cs b/test/modules/EdgeHubRestartTester/src/Program.cs index a914121b6a1..cd00a301651 100644 --- a/test/modules/EdgeHubRestartTester/src/Program.cs +++ b/test/modules/EdgeHubRestartTester/src/Program.cs @@ -34,7 +34,7 @@ static async Task MainAsync() List moduleClients = new List(); try { - iotHubServiceClient = ServiceClient.Create(Settings.Current.IotHubHostname, new AzureCliCredential()); + iotHubServiceClient = ServiceClient.Create(Settings.Current.IotHubHostname, new EnvironmentCredential()); List edgeHubConnectorTests = new List(); diff --git a/test/modules/EdgeHubRestartTester/src/Settings.cs b/test/modules/EdgeHubRestartTester/src/Settings.cs index 95331490024..8941b9f6e71 100644 --- a/test/modules/EdgeHubRestartTester/src/Settings.cs +++ b/test/modules/EdgeHubRestartTester/src/Settings.cs @@ -124,7 +124,7 @@ internal async Task> GetConnectorConfigAsync() { if (!this.isConnectorConfigReady) { - RegistryManager rm = RegistryManager.Create(this.IotHubHostname, new AzureCliCredential()); + RegistryManager rm = RegistryManager.Create(this.IotHubHostname, new EnvironmentCredential()); Twin moduleTwin = await rm.GetTwinAsync(this.DeviceId, this.ModuleId); string connectorConfigJson = moduleTwin.Properties.Desired["edgeHubConnectorConfig"].ToString(); diff --git a/test/modules/ModuleRestarter/src/Program.cs b/test/modules/ModuleRestarter/src/Program.cs index e0db817a64a..51969288384 100644 --- a/test/modules/ModuleRestarter/src/Program.cs +++ b/test/modules/ModuleRestarter/src/Program.cs @@ -45,7 +45,7 @@ static async Task RestartModules(CancellationTokenSource cts) try { - ServiceClient iotHubServiceClient = ServiceClient.Create(Settings.Current.IotHubHostname, new AzureCliCredential()); + ServiceClient iotHubServiceClient = ServiceClient.Create(Settings.Current.IotHubHostname, new EnvironmentCredential()); CloudToDeviceMethod c2dMethod = new CloudToDeviceMethod("RestartModule"); Random random = new Random(); string payloadSchema = "{{ \"SchemaVersion\": \"1.0\", \"Id\": \"{0}\" }}"; diff --git a/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs b/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs index 10e58a2463f..97611a6cee0 100644 --- a/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs +++ b/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs @@ -38,7 +38,7 @@ public class CloudTwinTestResultCollectionEnumerator : IAsyncEnumerator> GetReportMetadataListAsync(ILogge { if (this.reportMetadatas == null) { - RegistryManager rm = RegistryManager.Create(this.IotHubHostname, new AzureCliCredential()); + RegistryManager rm = RegistryManager.Create(this.IotHubHostname, new EnvironmentCredential()); Twin moduleTwin = await rm.GetTwinAsync(this.DeviceId, this.ModuleId); this.reportMetadatas = TestReportUtil.ParseReportMetadataJson(moduleTwin.Properties.Desired["reportMetadataList"].ToString(), logger); } diff --git a/test/modules/TestResultCoordinator/TestReportUtil.cs b/test/modules/TestResultCoordinator/TestReportUtil.cs index a800c09d1ac..920eab8f0dc 100644 --- a/test/modules/TestResultCoordinator/TestReportUtil.cs +++ b/test/modules/TestResultCoordinator/TestReportUtil.cs @@ -151,7 +151,7 @@ internal static async Task UploadLogsAsync(string iotHubHostname, Uri blobContai DateTime uploadLogStartAt = DateTime.UtcNow; logger.LogInformation("Send upload logs request to edgeAgent."); - ServiceClient serviceClient = ServiceClient.Create(iotHubHostname, new AzureCliCredential()); + ServiceClient serviceClient = ServiceClient.Create(iotHubHostname, new EnvironmentCredential()); CloudToDeviceMethod uploadLogRequest = new CloudToDeviceMethod("UploadModuleLogs"); diff --git a/test/modules/TwinTester/Program.cs b/test/modules/TwinTester/Program.cs index 349ff1cceb8..3667e02e2a6 100644 --- a/test/modules/TwinTester/Program.cs +++ b/test/modules/TwinTester/Program.cs @@ -24,7 +24,7 @@ static async Task Main() ITwinTestInitializer twinOperator = null; try { - using (RegistryManager registryManager = RegistryManager.Create(Settings.Current.IotHubHostname, new AzureCliCredential())) + using (RegistryManager registryManager = RegistryManager.Create(Settings.Current.IotHubHostname, new EnvironmentCredential())) { twinOperator = await GetTwinOperatorAsync(registryManager); await twinOperator.StartAsync(cts.Token); From 7843290fbda16f430f376ca4b92c42532e1e9569 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Thu, 18 Dec 2025 16:37:24 -0800 Subject: [PATCH 22/31] Add missed error handling --- scripts/linux/trcE2ETest.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/linux/trcE2ETest.sh b/scripts/linux/trcE2ETest.sh index 42a4bf1e6e1..a3c838b74ed 100755 --- a/scripts/linux/trcE2ETest.sh +++ b/scripts/linux/trcE2ETest.sh @@ -589,6 +589,9 @@ function process_args() { [[ -z "$REPO_PATH" ]] && { print_error 'Repo path is required'; exit 1; } [[ (-z "${TEST_NAME,,}") || ("${TEST_NAME,,}" != "${LONGHAUL_TEST_NAME,,}" && "${TEST_NAME,,}" != "${CONNECTIVITY_TEST_NAME,,}") ]] && { print_error 'Invalid test name'; exit 1; } [[ (-z "${CLIENT_MODULE_TRANSPORT_TYPE,,}") && ("${image_architecture_label,,}" == "arm32v7" || "${image_architecture_label,,}" == "arm64v8") ]] && { print_error 'Arm platform needs to run with client module transport type set'; exit 1; } + [[ -z "$AZURE_TENANT_ID" ]] && { print_error 'Azure Tenant ID is required'; exit 1; } + [[ -z "$AZURE_CLIENT_ID" ]] && { print_error 'Azure Client ID is required'; exit 1; } + [[ -z "$AZURE_CLIENT_SECRET" ]] && { print_error 'Azure Client Secret is required'; exit 1; } echo 'Required parameters are provided' From ff812d2ab040628576cf2b41fa9b64ed0c9697aa Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Thu, 18 Dec 2025 17:40:37 -0800 Subject: [PATCH 23/31] Dump current account info --- builds/e2e/templates/connectivity-deploy.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index dd0a70b2cbb..d0eccbe4c90 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -97,6 +97,9 @@ steps: inlineScript: | set -euo pipefail + # TODO: REMOVE + az account show + accessToken=$(az account get-access-token --resource 'https://iothubs.azure.net') echo "AAD token acquired for IoT hub control plane. Expires $(echo $accessToken | jq -r .expiresOn)" tenantId=$(echo $accessToken | jq -r .tenant) From ee5ca65b9b3f9c65f5ccf594a1d23f45210123ee Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Thu, 18 Dec 2025 17:44:52 -0800 Subject: [PATCH 24/31] Export variables needed by EnvironmentCredential --- scripts/linux/trcE2ETest.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/linux/trcE2ETest.sh b/scripts/linux/trcE2ETest.sh index a3c838b74ed..2ac49d32ae9 100755 --- a/scripts/linux/trcE2ETest.sh +++ b/scripts/linux/trcE2ETest.sh @@ -668,6 +668,10 @@ function run_connectivity_test() { echo "Parent hostname=$PARENT_HOSTNAME" echo "Parent Edge Device=$PARENT_EDGE_DEVICE" + export AZURE_TENANT_ID + export AZURE_CLIENT_ID + export AZURE_CLIENT_SECRET + "$quickstart_working_folder/IotEdgeQuickstart" \ -d "$device_id" \ -a "$E2E_TEST_DIR/artifacts/" \ From fd71d45d22adf721544a9f9dbf451d3e1df8a587 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Thu, 18 Dec 2025 17:55:59 -0800 Subject: [PATCH 25/31] Revert "Dump current account info" This reverts commit ff812d2ab040628576cf2b41fa9b64ed0c9697aa. --- builds/e2e/templates/connectivity-deploy.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index d0eccbe4c90..dd0a70b2cbb 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -97,9 +97,6 @@ steps: inlineScript: | set -euo pipefail - # TODO: REMOVE - az account show - accessToken=$(az account get-access-token --resource 'https://iothubs.azure.net') echo "AAD token acquired for IoT hub control plane. Expires $(echo $accessToken | jq -r .expiresOn)" tenantId=$(echo $accessToken | jq -r .tenant) From 75ad86d5514b932f2ff5366d0d41c9be4626d2ab Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Thu, 18 Dec 2025 18:13:54 -0800 Subject: [PATCH 26/31] Use account info from task --- builds/e2e/templates/connectivity-deploy.yaml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index dd0a70b2cbb..28ffe8e82ac 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -92,17 +92,12 @@ steps: displayName: 'Run Connectivity Deployment' inputs: azureSubscription: ${{ parameters['connection.arm'] }} + addSpnToEnvironment: true scriptType: bash scriptLocation: inlineScript inlineScript: | set -euo pipefail - accessToken=$(az account get-access-token --resource 'https://iothubs.azure.net') - echo "AAD token acquired for IoT hub control plane. Expires $(echo $accessToken | jq -r .expiresOn)" - tenantId=$(echo $accessToken | jq -r .tenant) - clientId='00000000-0000-0000-0000-000000000000' - clientSecret=$(echo $accessToken | jq -r .accessToken) - . $(Agent.BuildDirectory)/../artifacts/${{ parameters['images.artifact.name'] }}/artifactInfo.txt chmod +x ${{ parameters['build.repo.path'] }}/scripts/linux/trcE2ETest.sh testName="Connectivity" @@ -155,8 +150,8 @@ steps: -waitForTestComplete \ -cleanAll \ -tenantId "$tenantId" \ - -clientId "$clientId" \ - -clientSecret "$clientSecret" + -clientId "$servicePrincipalId" \ + -clientSecret "$servicePrincipalKey" scriptExitCode=$? echo "script exit code=$scriptExitCode" From 6caeeeecc70d731a630f7ca3c26f3d9254c7cd36 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Thu, 18 Dec 2025 20:35:58 -0800 Subject: [PATCH 27/31] Use the right variable name for the token type --- builds/e2e/templates/connectivity-deploy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 28ffe8e82ac..a6db5cc8e1d 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -151,7 +151,7 @@ steps: -cleanAll \ -tenantId "$tenantId" \ -clientId "$servicePrincipalId" \ - -clientSecret "$servicePrincipalKey" + -clientSecret "$idToken" scriptExitCode=$? echo "script exit code=$scriptExitCode" From 0aa8c9def8bf880c9484bc2df33a8684f1edc997 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Fri, 19 Dec 2025 09:42:18 -0800 Subject: [PATCH 28/31] Dump some more info to the logs --- builds/e2e/templates/connectivity-deploy.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index a6db5cc8e1d..83283047f69 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -97,6 +97,11 @@ steps: scriptLocation: inlineScript inlineScript: | set -euo pipefail + + echo "clientId=$servicePrincipalId" + echo "tenantId=$tenantId" + echo "tokenFile=$AZURE_FEDERATED_TOKEN_FILE" + ls -l "$AZURE_FEDERATED_TOKEN_FILE" . $(Agent.BuildDirectory)/../artifacts/${{ parameters['images.artifact.name'] }}/artifactInfo.txt chmod +x ${{ parameters['build.repo.path'] }}/scripts/linux/trcE2ETest.sh From 855e1251b384c0dbe556bd9abc0de921d0943d31 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Fri, 19 Dec 2025 10:02:34 -0800 Subject: [PATCH 29/31] Revert "Dump some more info to the logs" This reverts commit 0aa8c9def8bf880c9484bc2df33a8684f1edc997. --- builds/e2e/templates/connectivity-deploy.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index 83283047f69..a6db5cc8e1d 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -97,11 +97,6 @@ steps: scriptLocation: inlineScript inlineScript: | set -euo pipefail - - echo "clientId=$servicePrincipalId" - echo "tenantId=$tenantId" - echo "tokenFile=$AZURE_FEDERATED_TOKEN_FILE" - ls -l "$AZURE_FEDERATED_TOKEN_FILE" . $(Agent.BuildDirectory)/../artifacts/${{ parameters['images.artifact.name'] }}/artifactInfo.txt chmod +x ${{ parameters['build.repo.path'] }}/scripts/linux/trcE2ETest.sh From f109bf2ea78dc09c63474013c3d1f0838b9f29a5 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Fri, 19 Dec 2025 12:15:28 -0800 Subject: [PATCH 30/31] Use WorkloadIdentityCredential for modules --- .../connectivity_deployment.template.json | 78 +++++++++---------- scripts/linux/trcE2ETest.sh | 9 +-- smoke/IotEdgeQuickstart/details/Details.cs | 4 +- smoke/LeafDevice/details/Details.cs | 4 +- .../IotHub.cs | 4 +- .../CloudToDeviceMessageReceiver.cs | 2 +- .../CloudToDeviceMessageSender.cs | 2 +- test/modules/DeploymentTester/Program.cs | 2 +- .../DirectMethodCloudSender.cs | 2 +- .../EdgeHubRestartTester/src/Program.cs | 2 +- .../EdgeHubRestartTester/src/Settings.cs | 2 +- test/modules/ModuleRestarter/src/Program.cs | 2 +- .../Reports/CloudTwinTestResultCollection.cs | 2 +- .../modules/TestResultCoordinator/Settings.cs | 2 +- .../TestResultCoordinator/TestReportUtil.cs | 2 +- test/modules/TwinTester/Program.cs | 2 +- 16 files changed, 60 insertions(+), 61 deletions(-) diff --git a/e2e_deployment_files/connectivity_deployment.template.json b/e2e_deployment_files/connectivity_deployment.template.json index 7d59a40f51f..6b85c54a7b5 100644 --- a/e2e_deployment_files/connectivity_deployment.template.json +++ b/e2e_deployment_files/connectivity_deployment.template.json @@ -172,13 +172,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-direct-method-sender:-linux-", - "createOptions": "{\"HostConfig\":{\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"],\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" } }, "directMethodReceiver1": { @@ -241,13 +241,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-direct-method-sender:-linux-", - "createOptions": "{\"HostConfig\":{\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"],\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" } }, "directMethodReceiver2": { @@ -313,13 +313,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-direct-method-sender:-linux-", - "createOptions": "{\"HostConfig\":{\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"],\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" } }, "relayer1": { @@ -433,13 +433,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-test-result-coordinator:-linux-", - "createOptions": "{\"HostConfig\": {\"PortBindings\": {\"5001/tcp\": [{\"HostPort\": \"5001\"}]}}}" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"],\"PortBindings\":{\"5001/tcp\":[{\"HostPort\":\"5001\"}]}}}" } }, "twinTester1": { @@ -484,13 +484,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-twin-tester:-linux-", - "createOptions": "{\"HostConfig\":{\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"],\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" } }, "twinTester2": { @@ -535,13 +535,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-twin-tester:-linux-", - "createOptions": "" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"]}}" } }, "twinTester3": { @@ -586,13 +586,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-twin-tester:-linux-", - "createOptions": "{\"HostConfig\":{\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"],\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" } }, "twinTester4": { @@ -637,13 +637,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-twin-tester:-linux-", - "createOptions": "" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"]}}" } }, "deploymentTester1": { @@ -682,13 +682,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-deployment-tester:-linux-", - "createOptions": "{\"HostConfig\":{\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"],\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" } }, "deploymentTester2": { @@ -742,13 +742,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-c2dmessage-tester:-linux-", - "createOptions": "{\"HostConfig\":{\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"],\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" } }, "cloudToDeviceMessageReceiver1": { @@ -775,13 +775,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-c2dmessage-tester:-linux-", - "createOptions": "" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"]}}" } }, "cloudToDeviceMessageSender2": { @@ -817,13 +817,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-c2dmessage-tester:-linux-", - "createOptions": "{\"HostConfig\":{\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"],\"NetworkMode\":\"host\"},\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}}}" } }, "cloudToDeviceMessageReceiver2": { @@ -850,13 +850,13 @@ "AZURE_CLIENT_ID": { "value": "" }, - "AZURE_CLIENT_SECRET": { - "value": "" + "AZURE_FEDERATED_TOKEN_FILE": { + "value": "/var/run/oidc.json" } }, "settings": { "image": "/microsoft/azureiotedge-c2dmessage-tester:-linux-", - "createOptions": "" + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/run/oidc.json\"]}}" } }, "networkController": { diff --git a/scripts/linux/trcE2ETest.sh b/scripts/linux/trcE2ETest.sh index 2ac49d32ae9..5b098923b49 100755 --- a/scripts/linux/trcE2ETest.sh +++ b/scripts/linux/trcE2ETest.sh @@ -165,6 +165,9 @@ function prepare_test_from_artifacts() { mkdir -p "$quickstart_working_folder" tar -C "$quickstart_working_folder" -xzf "$(get_artifact_file "$E2E_TEST_DIR" quickstart)" + echo "Create federated token file for OIDC authentication to IoT Hub at $quickstart_working_folder/oidc.json" + echo "$AZURE_CLIENT_SECRET" > "$quickstart_working_folder/oidc.json" + echo "Copy deployment artifact $DEPLOYMENT_FILE_NAME to $deployment_working_file" cp "$REPO_PATH/e2e_deployment_files/$DEPLOYMENT_FILE_NAME" "$deployment_working_file" @@ -182,7 +185,7 @@ function prepare_test_from_artifacts() { sed -i -e "s@@$UPSTREAM_PROTOCOL@g" "$deployment_working_file" sed -i -e "s@@$AZURE_TENANT_ID@g" "$deployment_working_file" sed -i -e "s@@$AZURE_CLIENT_ID@g" "$deployment_working_file" - sed -i -e "s@@$AZURE_CLIENT_SECRET@g" "$deployment_working_file" + sed -i -e "s@@$quickstart_working_folder/oidc.json@g" "$deployment_working_file" if [[ ! -z "$CUSTOM_EDGE_AGENT_IMAGE" ]]; then sed -i -e "s@\"image\":.*azureiotedge-agent:.*\"@\"image\": \"$CUSTOM_EDGE_AGENT_IMAGE\"@g" "$deployment_working_file" @@ -668,10 +671,6 @@ function run_connectivity_test() { echo "Parent hostname=$PARENT_HOSTNAME" echo "Parent Edge Device=$PARENT_EDGE_DEVICE" - export AZURE_TENANT_ID - export AZURE_CLIENT_ID - export AZURE_CLIENT_SECRET - "$quickstart_working_folder/IotEdgeQuickstart" \ -d "$device_id" \ -a "$E2E_TEST_DIR/artifacts/" \ diff --git a/smoke/IotEdgeQuickstart/details/Details.cs b/smoke/IotEdgeQuickstart/details/Details.cs index 1fc7e21e4f8..e77135bc96e 100644 --- a/smoke/IotEdgeQuickstart/details/Details.cs +++ b/smoke/IotEdgeQuickstart/details/Details.cs @@ -236,7 +236,7 @@ protected async Task GetOrCreateEdgeDeviceIdentity() Console.WriteLine("Getting or Creating device Identity."); var settings = new HttpTransportSettings(); this.proxy.ForEach(p => settings.Proxy = p); - RegistryManager rm = RegistryManager.Create(this.iothubHostName, new EnvironmentCredential(), settings); + RegistryManager rm = RegistryManager.Create(this.iothubHostName, new AzureCliCredential(), settings); Device device = await rm.GetDeviceAsync(this.deviceId); if (device != null) @@ -310,7 +310,7 @@ protected async Task VerifyEdgeAgentIsConnectedToIotHub() this.proxy.ForEach(p => settings.HttpProxy = p); ServiceClient serviceClient = - ServiceClient.Create(this.iothubHostName, new EnvironmentCredential(), this.serviceClientTransportType, settings); + ServiceClient.Create(this.iothubHostName, new AzureCliCredential(), this.serviceClientTransportType, settings); while (!cts.IsCancellationRequested) { diff --git a/smoke/LeafDevice/details/Details.cs b/smoke/LeafDevice/details/Details.cs index 2e4de798044..da3f15e0079 100644 --- a/smoke/LeafDevice/details/Details.cs +++ b/smoke/LeafDevice/details/Details.cs @@ -217,7 +217,7 @@ protected async Task GetOrCreateDeviceIdentityAsync() { var settings = new HttpTransportSettings(); this.proxy.ForEach(p => settings.Proxy = p); - RegistryManager rm = RegistryManager.Create(this.iothubHostName, new EnvironmentCredential(), settings); + RegistryManager rm = RegistryManager.Create(this.iothubHostName, new AzureCliCredential(), settings); Option edgeScope = await this.edgeDeviceId .Map(id => GetScopeIfExitsAsync(rm, id)) @@ -320,7 +320,7 @@ protected async Task VerifyDirectMethodAsync() var settings = new ServiceClientTransportSettings(); this.proxy.ForEach(p => settings.HttpProxy = p); ServiceClient serviceClient = - ServiceClient.Create(this.iothubHostName, new EnvironmentCredential(), this.serviceClientTransportType, settings); + ServiceClient.Create(this.iothubHostName, new AzureCliCredential(), this.serviceClientTransportType, settings); // Call a direct method TimeSpan testDuration = TimeSpan.FromSeconds(300); diff --git a/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs b/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs index f4cdb1bea9c..1ff3bebef3c 100644 --- a/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs +++ b/test/Microsoft.Azure.Devices.Edge.Test.Common/IotHub.cs @@ -39,7 +39,7 @@ public IotHub(string iotHubHostname, string eventHubEndpoint, Option proxyU proxy.ForEach(p => settings.Proxy = p); return RegistryManager.Create( this.iotHubHostname, - new EnvironmentCredential(), + new AzureCliCredential(), settings); }); @@ -50,7 +50,7 @@ public IotHub(string iotHubHostname, string eventHubEndpoint, Option proxyU proxy.ForEach(p => settings.HttpProxy = p); return ServiceClient.Create( this.iotHubHostname, - new EnvironmentCredential(), + new AzureCliCredential(), DeviceTransportType.Amqp_WebSocket_Only, settings); }); diff --git a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs index 957978bba08..0eb6cd4b753 100644 --- a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs +++ b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageReceiver.cs @@ -79,7 +79,7 @@ public async Task StartAsync(CancellationToken ct) try { - registryManager = Microsoft.Azure.Devices.RegistryManager.Create(this.iotHubHostname, new EnvironmentCredential()); + registryManager = Microsoft.Azure.Devices.RegistryManager.Create(this.iotHubHostname, new WorkloadIdentityCredential()); var edgeDevice = await registryManager.GetDeviceAsync(this.edgeDeviceId); var leafDevice = new Microsoft.Azure.Devices.Device(this.deviceId); leafDevice.Scope = edgeDevice.Scope; diff --git a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs index 62501500d74..1ffad407329 100644 --- a/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs +++ b/test/modules/CloudToDeviceMessageTester/CloudToDeviceMessageSender.cs @@ -52,7 +52,7 @@ public async Task StartAsync(CancellationToken ct) await Task.Delay(this.testStartDelay, ct); DateTime testStartAt = DateTime.UtcNow; - this.serviceClient = ServiceClient.Create(this.iotHubHostname, new EnvironmentCredential()); + this.serviceClient = ServiceClient.Create(this.iotHubHostname, new WorkloadIdentityCredential()); await this.serviceClient.OpenAsync(); Guid batchId = Guid.NewGuid(); diff --git a/test/modules/DeploymentTester/Program.cs b/test/modules/DeploymentTester/Program.cs index 06c8ec5737f..f65fbb0d003 100644 --- a/test/modules/DeploymentTester/Program.cs +++ b/test/modules/DeploymentTester/Program.cs @@ -58,7 +58,7 @@ static async Task UpdateDeploymentEnvironmentVariablesAsync(TestResultReportingC try { - registryManager = RegistryManager.Create(Settings.Current.IotHubHostname.OrDefault(), new EnvironmentCredential()); + registryManager = RegistryManager.Create(Settings.Current.IotHubHostname.OrDefault(), new WorkloadIdentityCredential()); DateTime testStartAt = DateTime.UtcNow; long count = 1; diff --git a/test/modules/DirectMethodSender/DirectMethodCloudSender.cs b/test/modules/DirectMethodSender/DirectMethodCloudSender.cs index 546a78dd998..cbfb60f735f 100644 --- a/test/modules/DirectMethodSender/DirectMethodCloudSender.cs +++ b/test/modules/DirectMethodSender/DirectMethodCloudSender.cs @@ -32,7 +32,7 @@ public static async Task CreateAsync( TransportType transportType, ILogger logger) { - ServiceClient serviceClient = ServiceClient.Create(iotHubHostname, new EnvironmentCredential(), transportType); + ServiceClient serviceClient = ServiceClient.Create(iotHubHostname, new WorkloadIdentityCredential(), transportType); await serviceClient.OpenAsync(); return new DirectMethodCloudSender( serviceClient, diff --git a/test/modules/EdgeHubRestartTester/src/Program.cs b/test/modules/EdgeHubRestartTester/src/Program.cs index cd00a301651..502743f2f05 100644 --- a/test/modules/EdgeHubRestartTester/src/Program.cs +++ b/test/modules/EdgeHubRestartTester/src/Program.cs @@ -34,7 +34,7 @@ static async Task MainAsync() List moduleClients = new List(); try { - iotHubServiceClient = ServiceClient.Create(Settings.Current.IotHubHostname, new EnvironmentCredential()); + iotHubServiceClient = ServiceClient.Create(Settings.Current.IotHubHostname, new WorkloadIdentityCredential()); List edgeHubConnectorTests = new List(); diff --git a/test/modules/EdgeHubRestartTester/src/Settings.cs b/test/modules/EdgeHubRestartTester/src/Settings.cs index 8941b9f6e71..6ce29b0ff1b 100644 --- a/test/modules/EdgeHubRestartTester/src/Settings.cs +++ b/test/modules/EdgeHubRestartTester/src/Settings.cs @@ -124,7 +124,7 @@ internal async Task> GetConnectorConfigAsync() { if (!this.isConnectorConfigReady) { - RegistryManager rm = RegistryManager.Create(this.IotHubHostname, new EnvironmentCredential()); + RegistryManager rm = RegistryManager.Create(this.IotHubHostname, new WorkloadIdentityCredential()); Twin moduleTwin = await rm.GetTwinAsync(this.DeviceId, this.ModuleId); string connectorConfigJson = moduleTwin.Properties.Desired["edgeHubConnectorConfig"].ToString(); diff --git a/test/modules/ModuleRestarter/src/Program.cs b/test/modules/ModuleRestarter/src/Program.cs index 51969288384..e52e917339b 100644 --- a/test/modules/ModuleRestarter/src/Program.cs +++ b/test/modules/ModuleRestarter/src/Program.cs @@ -45,7 +45,7 @@ static async Task RestartModules(CancellationTokenSource cts) try { - ServiceClient iotHubServiceClient = ServiceClient.Create(Settings.Current.IotHubHostname, new EnvironmentCredential()); + ServiceClient iotHubServiceClient = ServiceClient.Create(Settings.Current.IotHubHostname, new WorkloadIdentityCredential()); CloudToDeviceMethod c2dMethod = new CloudToDeviceMethod("RestartModule"); Random random = new Random(); string payloadSchema = "{{ \"SchemaVersion\": \"1.0\", \"Id\": \"{0}\" }}"; diff --git a/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs b/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs index 97611a6cee0..821569f8327 100644 --- a/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs +++ b/test/modules/TestResultCoordinator/Reports/CloudTwinTestResultCollection.cs @@ -38,7 +38,7 @@ public class CloudTwinTestResultCollectionEnumerator : IAsyncEnumerator> GetReportMetadataListAsync(ILogge { if (this.reportMetadatas == null) { - RegistryManager rm = RegistryManager.Create(this.IotHubHostname, new EnvironmentCredential()); + RegistryManager rm = RegistryManager.Create(this.IotHubHostname, new WorkloadIdentityCredential()); Twin moduleTwin = await rm.GetTwinAsync(this.DeviceId, this.ModuleId); this.reportMetadatas = TestReportUtil.ParseReportMetadataJson(moduleTwin.Properties.Desired["reportMetadataList"].ToString(), logger); } diff --git a/test/modules/TestResultCoordinator/TestReportUtil.cs b/test/modules/TestResultCoordinator/TestReportUtil.cs index 920eab8f0dc..4afffe11739 100644 --- a/test/modules/TestResultCoordinator/TestReportUtil.cs +++ b/test/modules/TestResultCoordinator/TestReportUtil.cs @@ -151,7 +151,7 @@ internal static async Task UploadLogsAsync(string iotHubHostname, Uri blobContai DateTime uploadLogStartAt = DateTime.UtcNow; logger.LogInformation("Send upload logs request to edgeAgent."); - ServiceClient serviceClient = ServiceClient.Create(iotHubHostname, new EnvironmentCredential()); + ServiceClient serviceClient = ServiceClient.Create(iotHubHostname, new WorkloadIdentityCredential()); CloudToDeviceMethod uploadLogRequest = new CloudToDeviceMethod("UploadModuleLogs"); diff --git a/test/modules/TwinTester/Program.cs b/test/modules/TwinTester/Program.cs index 3667e02e2a6..d9bdbf99d59 100644 --- a/test/modules/TwinTester/Program.cs +++ b/test/modules/TwinTester/Program.cs @@ -24,7 +24,7 @@ static async Task Main() ITwinTestInitializer twinOperator = null; try { - using (RegistryManager registryManager = RegistryManager.Create(Settings.Current.IotHubHostname, new EnvironmentCredential())) + using (RegistryManager registryManager = RegistryManager.Create(Settings.Current.IotHubHostname, new WorkloadIdentityCredential())) { twinOperator = await GetTwinOperatorAsync(registryManager); await twinOperator.StartAsync(cts.Token); From 4cac07fecc13040d4cc79ebb12fb17c2da6007b2 Mon Sep 17 00:00:00 2001 From: Damon Barry Date: Fri, 9 Jan 2026 13:12:23 -0800 Subject: [PATCH 31/31] Use AAD auth to read event hubs (INCOMPLETE) --- builds/e2e/templates/connectivity-deploy.yaml | 6 +- .../connectivity_deployment.template.json | 4 +- scripts/linux/trcE2ETest.sh | 25 +- .../IotEdgeQuickstart.csproj | 1 + smoke/IotEdgeQuickstart/details/Details.cs | 19 +- smoke/IotEdgeQuickstart/packages.lock.json | 2026 +---------------- test/modules/Modules.Test/packages.lock.json | 35 +- .../Services/PartitionReceiverHandler.cs | 4 +- .../TestResultEventReceivingService.cs | 46 +- .../modules/TestResultCoordinator/Settings.cs | 19 +- .../TestResultCoordinator.csproj | 1 + .../TestResultCoordinator/packages.lock.json | 35 +- 12 files changed, 157 insertions(+), 2064 deletions(-) diff --git a/builds/e2e/templates/connectivity-deploy.yaml b/builds/e2e/templates/connectivity-deploy.yaml index a6db5cc8e1d..f6e7ad566b6 100644 --- a/builds/e2e/templates/connectivity-deploy.yaml +++ b/builds/e2e/templates/connectivity-deploy.yaml @@ -15,7 +15,8 @@ parameters: container.registry.password: '' testResultCoordinator.blobStorageAccountUriWithSasToken: '' iotHub.hostName: '' - eventHub.connectionString: '' + eventHub.namespace: '' + eventHub.name: '' upstream.protocol: '' networkController.description: '' networkController.frequencies: '' @@ -123,7 +124,8 @@ steps: -containerRegistryUsername "${{ parameters['container.registry.username'] }}" \ -containerRegistryPassword "${{ parameters['container.registry.password'] }}" \ -iotHubHostName "${{ parameters['iotHub.hostName'] }}" \ - -eventHubConnectionString "${{ parameters['eventHub.connectionString'] }}" \ + -eventHubNamespace "${{ parameters['eventHub.namespace'] }}" \ + -eventHubName "${{ parameters['eventHub.name'] }}" \ -upstreamProtocol "${{ parameters['upstream.protocol'] }}" \ -testDuration "${{ parameters['testDuration'] }}" \ -networkControllerFrequency "${{ parameters['networkController.frequencies'] }}" \ diff --git a/e2e_deployment_files/connectivity_deployment.template.json b/e2e_deployment_files/connectivity_deployment.template.json index 6b85c54a7b5..199b4b10437 100644 --- a/e2e_deployment_files/connectivity_deployment.template.json +++ b/e2e_deployment_files/connectivity_deployment.template.json @@ -391,8 +391,8 @@ "verificationDelay": { "value": "" }, - "eventHubConnectionString": { - "value": "" + "eventHubNamespace": { + "value": "" }, "ConsumerGroupName": { "value": "" diff --git a/scripts/linux/trcE2ETest.sh b/scripts/linux/trcE2ETest.sh index 5b098923b49..f1b5b0f8d5d 100755 --- a/scripts/linux/trcE2ETest.sh +++ b/scripts/linux/trcE2ETest.sh @@ -16,7 +16,8 @@ function usage() { echo " -containerRegistryUsername Username of container registry." echo ' -containerRegistryPassword Password of given username for container registory.' echo ' -iotHubHostName Hostname of IoT hub where edge device will be created.' - echo ' -eventHubConnectionString Event hub connection string for receive D2C messages.' + echo ' -eventHubNamespace Fully qualified event hub namespace to receive D2C messages.' + echo ' -eventHubName Event hub name to receive D2C messages.' echo ' -eventHubConsumerGroupId Event hub consumer group for receive D2C messages.' echo ' -testDuration Connectivity test duration' echo ' -testStartDelay Tests start after delay for applicable modules' @@ -198,7 +199,8 @@ function prepare_test_from_artifacts() { sed -i -e "s@@$LOADGEN_MESSAGE_FREQUENCY@g" "$deployment_working_file" sed -i -e "s@@$EVENT_HUB_CONSUMER_GROUP_ID@g" "$deployment_working_file" - sed -i -e "s@@$EVENTHUB_CONNECTION_STRING@g" "$deployment_working_file" + sed -i -e "s@@$EVENTHUB_NAMESPACE@g" "$deployment_working_file" + sed -i -e "s@@$EVENTHUB_NAME@g" "$deployment_working_file" sed -i -e "s@@$optimize_for_performance@g" "$deployment_working_file" sed -i -e "s@@$LOG_ANALYTICS_LOGTYPE@g" "$deployment_working_file" sed -i -e "s@@$log_upload_enabled@g" "$deployment_working_file" @@ -372,7 +374,10 @@ function process_args() { IOT_HUB_HOSTNAME="$arg" saveNextArg=0 elif [ $saveNextArg -eq 8 ]; then - EVENTHUB_CONNECTION_STRING="$arg" + EVENTHUB_NAMESPACE="$arg" + saveNextArg=0 + elif [ $saveNextArg -eq 53 ]; then + EVENTHUB_NAME="$arg" saveNextArg=0 elif [ $saveNextArg -eq 9 ]; then EVENT_HUB_CONSUMER_GROUP_ID="$arg" @@ -516,7 +521,8 @@ function process_args() { '-containerRegistryUsername' ) saveNextArg=5;; '-containerRegistryPassword' ) saveNextArg=6;; '-iotHubHostName' ) saveNextArg=7;; - '-eventHubConnectionString' ) saveNextArg=8;; + '-eventHubNamespace' ) saveNextArg=8;; + '-eventHubName' ) saveNextArg=53;; '-eventHubConsumerGroupId' ) saveNextArg=9;; '-testDuration' ) saveNextArg=10;; '-testStartDelay' ) saveNextArg=11;; @@ -579,7 +585,8 @@ function process_args() { [[ -z "$CONTAINER_REGISTRY_USERNAME" ]] && { print_error 'Container registry username is required'; exit 1; } [[ -z "$CONTAINER_REGISTRY_PASSWORD" ]] && { print_error 'Container registry password is required'; exit 1; } [[ -z "$DEPLOYMENT_FILE_NAME" ]] && { print_error 'Deployment file name is required'; exit 1; } - [[ -z "$EVENTHUB_CONNECTION_STRING" ]] && { print_error 'Event hub connection string is required'; exit 1; } + [[ -z "$EVENTHUB_NAMESPACE" ]] && { print_error 'Event hub namespace is required'; exit 1; } + [[ -z "$EVENTHUB_NAME" ]] && { print_error 'Event hub name is required'; exit 1; } [[ -z "$IOT_HUB_HOSTNAME" ]] && { print_error 'IoT hub hostname is required'; exit 1; } [[ -z "$LOG_ANALYTICS_SHAREDKEY" ]] && { print_error 'Log analytics shared key is required'; exit 1; } [[ -z "$LOG_ANALYTICS_WORKSPACEID" ]] && { print_error 'Log analytics workspace id is required'; exit 1; } @@ -675,7 +682,7 @@ function run_connectivity_test() { -d "$device_id" \ -a "$E2E_TEST_DIR/artifacts/" \ --iothub-hostname "$IOT_HUB_HOSTNAME" \ - -e "$EVENTHUB_CONNECTION_STRING" \ + -e "$EVENTHUB_NAMESPACE" \ -r "$CONTAINER_REGISTRY" \ -u "$CONTAINER_REGISTRY_USERNAME" \ -p "$CONTAINER_REGISTRY_PASSWORD" \ @@ -697,7 +704,7 @@ function run_connectivity_test() { -d "$device_id" \ -a "$E2E_TEST_DIR/artifacts/" \ --iothub-hostname "$IOT_HUB_HOSTNAME" \ - -e "$EVENTHUB_CONNECTION_STRING" \ + -e "$EVENTHUB_NAMESPACE" \ -r "$CONTAINER_REGISTRY" \ -u "$CONTAINER_REGISTRY_USERNAME" \ -p "$CONTAINER_REGISTRY_PASSWORD" \ @@ -822,7 +829,7 @@ function run_longhaul_test() { -d "$device_id" \ -a "$E2E_TEST_DIR/artifacts/" \ --iothub-hostname "$IOT_HUB_HOSTNAME" \ - -e "$EVENTHUB_CONNECTION_STRING" \ + -e "$EVENTHUB_NAMESPACE" \ -r "$CONTAINER_REGISTRY" \ -u "$CONTAINER_REGISTRY_USERNAME" \ -p "$CONTAINER_REGISTRY_PASSWORD" \ @@ -848,7 +855,7 @@ function run_longhaul_test() { -d "$device_id" \ -a "$E2E_TEST_DIR/artifacts/" \ --iothub-hostname "$IOT_HUB_HOSTNAME" \ - -e "$EVENTHUB_CONNECTION_STRING" \ + -e "$EVENTHUB_NAMESPACE" \ -r "$CONTAINER_REGISTRY" \ -u "$CONTAINER_REGISTRY_USERNAME" \ -p "$CONTAINER_REGISTRY_PASSWORD" \ diff --git a/smoke/IotEdgeQuickstart/IotEdgeQuickstart.csproj b/smoke/IotEdgeQuickstart/IotEdgeQuickstart.csproj index a5d859c5617..a60eaffc233 100644 --- a/smoke/IotEdgeQuickstart/IotEdgeQuickstart.csproj +++ b/smoke/IotEdgeQuickstart/IotEdgeQuickstart.csproj @@ -10,6 +10,7 @@ + diff --git a/smoke/IotEdgeQuickstart/details/Details.cs b/smoke/IotEdgeQuickstart/details/Details.cs index e77135bc96e..62bf452f819 100644 --- a/smoke/IotEdgeQuickstart/details/Details.cs +++ b/smoke/IotEdgeQuickstart/details/Details.cs @@ -10,13 +10,14 @@ namespace IotEdgeQuickstart.Details using System.Threading; using System.Threading.Tasks; using Azure.Identity; + using Azure.Messaging.EventHubs.Consumer; + using Azure.Messaging.EventHubs.Primitives; using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Common.Exceptions; using Microsoft.Azure.Devices.Edge.Test.Common; using Microsoft.Azure.Devices.Edge.Util; using Microsoft.Azure.Devices.Edge.Util.TransientFaultHandling; using Microsoft.Azure.Devices.Shared; - using Microsoft.Azure.EventHubs; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using EventHubClientTransportType = Microsoft.Azure.EventHubs.TransportType; @@ -375,6 +376,22 @@ protected async Task VerifyDataOnIoTHub(string moduleId) // First Verify if module is already running. await this.bootstrapper.VerifyModuleIsRunning(moduleId); + var consumer = new EventHubConsumerClient( + EventHubConsumerClient.DefaultConsumerGroupName, + this.serviceSpecificSettings.FullyQualifiedNamespace, + this.serviceSpecificSettings.EventHubName, + new AzureCliCredential()); + int numPartitions = (await consumer.GetPartitionIdsAsync()).Length; + await consumer.CloseAsync(); + + var receiver = new PartitionReceiver( + this.serviceSpecificSettings.ConsumerGroupName, + EventHubPartitionKeyResolver.ResolveToPartition(Settings.Current.DeviceId, numPartitions), + EventPosition.FromEnqueuedTime(eventEnqueuedFrom), + this.serviceSpecificSettings.FullyQualifiedNamespace, + this.serviceSpecificSettings.EventHubName, + new AzureCliCredential()); + var builder = new EventHubsConnectionStringBuilder(this.eventhubCompatibleEndpointWithEntityPath) { TransportType = this.eventHubClientTransportType diff --git a/smoke/IotEdgeQuickstart/packages.lock.json b/smoke/IotEdgeQuickstart/packages.lock.json index 3905b7ba053..807ab822b67 100644 --- a/smoke/IotEdgeQuickstart/packages.lock.json +++ b/smoke/IotEdgeQuickstart/packages.lock.json @@ -1,2030 +1,6 @@ { "version": 1, "dependencies": { - "net8.0": { - "Azure.Identity": { - "type": "Direct", - "requested": "[1.17.1, )", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, - "McMaster.Extensions.CommandLineUtils": { - "type": "Direct", - "requested": "[2.3.2, )", - "resolved": "2.3.2", - "contentHash": "d09kCCzggnrKj/rLDL15njYq13WMMKpUm58L+mhoqP0ExU+5ta9aIitR40DrpGRGa0QPT86byGyJpqBl1gD82Q==", - "dependencies": { - "System.ComponentModel.Annotations": "4.4.1" - } - }, - "Microsoft.Azure.Devices": { - "type": "Direct", - "requested": "[1.41.0, )", - "resolved": "1.41.0", - "contentHash": "J3tr63fgQOeCLMJQt67TXmx7HG2ZhH9TyTgm699pmcCR1tAsUaJrsKWX/IJYB+5SfwRGaXVFzy2aSbabzFS+/Q==", - "dependencies": { - "Azure.Core": "1.44.1", - "Microsoft.Azure.Amqp": "2.6.9", - "Microsoft.Azure.Devices.Shared": "1.30.4", - "Microsoft.Rest.ClientRuntime": "2.3.24", - "Newtonsoft.Json": "13.0.3", - "System.Diagnostics.Contracts": "4.3.0", - "System.Diagnostics.TraceSource": "4.3.0" - } - }, - "Nett": { - "type": "Direct", - "requested": "[0.15.0, )", - "resolved": "0.15.0", - "contentHash": "/0SoN9ugPKfmLndtKy3gaRxOlzji94/yrNgQLe45/1ZgExj0BaVozbXD+oWD8E6MCLvTs+YWzmn315mQOXGCcw==" - }, - "RunProcessAsTask": { - "type": "Direct", - "requested": "[1.2.4, )", - "resolved": "1.2.4", - "contentHash": "ndU9F3ohMQpCe34cen8LvtVY2xCUWF++jEJworvq6IuazF9FQUwnuT/8we6wbgOdHC20aHCduGnjuA5D0azbAQ==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.164, )", - "resolved": "1.2.0-beta.164", - "contentHash": "IWMH8RyJGDu8ZrYFKIwjfcuXizpJnjnMGE8tDRnZ36AIAQeFDjeUPH2EUEMwj4+63oQBu/KkzRe9clSW9s5mdA==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.164" - } - }, - "System.ServiceProcess.ServiceController": { - "type": "Direct", - "requested": "[4.5.0, )", - "resolved": "4.5.0", - "contentHash": "8DGUtcNHf9TlvSVemKMFiqcOWJ4OdGBgvpcGL/cYossGf5ApMQdPUQS8vXHTBmlbYAcG+JXsjMFGAHp2oJrr+Q==", - "dependencies": { - "System.Diagnostics.EventLog": "4.5.0" - } - }, - "App.Metrics.Abstractions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ekSlyVgN6foN6rmwVmRGBr0j5ufgRPsO5f7Md2fc3q44vkBNYpjsRLiUQsIXCSVI3NHorkrZh8aL4eRcLkVDGw==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.0.0" - } - }, - "App.Metrics.Concurrency": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "otryWX9AR7wLPD49glbxvbYc16pnDOEezHsAtf5oVjhAa/fD+fjhI11MOgzBOjFpkH7z2FLl/gtZ0lwSdNxSag==" - }, - "App.Metrics.Core": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "HhW4n2fF+WBi6ctCpwsYkKCSeLhG5Y17e31kSkdESNAdPvroI9szlzW3WoY20qsB3bCldrGPPnCN6jXI1t3agA==", - "dependencies": { - "App.Metrics.Abstractions": "4.3.0", - "App.Metrics.Concurrency": "4.3.0", - "App.Metrics.Formatters.Ascii": "4.3.0", - "Microsoft.CSharp": "4.4.0" - } - }, - "App.Metrics.Formatters.Ascii": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "PPacBFRji8wTGv8rs13fPmAVlOit7CAvkdPkZ6aYgtUa75e0v4fYzwqPcLxokCqdQXW96PpKPfC0VZZeDkgljg==", - "dependencies": { - "App.Metrics.Abstractions": "4.3.0" - } - }, - "App.Metrics.Formatters.Prometheus": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "cVJZX5jiMxt+YytjpbMw52reN47LGL3XsCljzNH9Pb+Op9iSTazc4pa+/fX+FdpbhH/Zt+5hjdYiqOLFol0wGg==", - "dependencies": { - "App.Metrics.Core": "4.3.0", - "protobuf-net": "2.4.0" - } - }, - "Azure.Core": { - "type": "Transitive", - "resolved": "1.50.0", - "contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "8.0.0", - "System.ClientModel": "1.8.0", - "System.Memory.Data": "8.0.1" - } - }, - "Azure.Storage.Blobs": { - "type": "Transitive", - "resolved": "12.19.1", - "contentHash": "x43hWFJ4sPQ23TD4piCwT+KlQpZT8pNDAzqj6yUCqh+WJ2qcQa17e1gh6ZOeT2QNFQTTDSuR56fm2bIV7i11/w==", - "dependencies": { - "Azure.Storage.Common": "12.18.1", - "System.Text.Json": "4.7.2" - } - }, - "Azure.Storage.Common": { - "type": "Transitive", - "resolved": "12.18.1", - "contentHash": "ohCslqP9yDKIn+DVjBEOBuieB1QwsUCz+BwHYNaJ3lcIsTSiI4Evnq81HcKe8CqM8qvdModbipVQKpnxpbdWqA==", - "dependencies": { - "Azure.Core": "1.36.0", - "System.IO.Hashing": "6.0.0" - } - }, - "DotNetty.Buffers": { - "type": "Transitive", - "resolved": "0.7.6", - "contentHash": "JVYypDugRG4m3hbS0drCC79vX93zqjn5w+U4ti/KXjTIzcQ/UVHrCgs7ZgJfWRUQLfgfQB0daYQtE18lKD8pHg==", - "dependencies": { - "DotNetty.Common": "0.7.6", - "System.Runtime.CompilerServices.Unsafe": "5.0.0" - } - }, - "DotNetty.Codecs": { - "type": "Transitive", - "resolved": "0.7.6", - "contentHash": "XBZy/m3+V8PBUHHHbFKaRBE0+knTCitcE8oKCQn4jZybH25mCZ1vTwj3BRuPYdNpzh74Op32Hj4ZXF+DMx/oAg==", - "dependencies": { - "DotNetty.Buffers": "0.7.6", - "DotNetty.Common": "0.7.6", - "DotNetty.Transport": "0.7.6", - "System.Collections.Immutable": "1.5.0" - } - }, - "DotNetty.Codecs.Mqtt": { - "type": "Transitive", - "resolved": "0.7.6", - "contentHash": "jVynN2g/HXPlaT+zZwdJENaB0Aw28iV7ZvttAXy0i1ST7MB3olKxTTy5tq2QuI4z4wFzMHx/+15znq06AcyIAw==", - "dependencies": { - "DotNetty.Buffers": "0.7.6", - "DotNetty.Codecs": "0.7.6", - "DotNetty.Common": "0.7.6", - "DotNetty.Transport": "0.7.6" - } - }, - "DotNetty.Common": { - "type": "Transitive", - "resolved": "0.7.6", - "contentHash": "dmK8Njfh2Y4qnz99lLK0evoc46FPL5WOnHMLlavNZ6zqC5/bKgqGsJFoXbhVPkSYDp58g2euI64dhY0cvOUOZQ==", - "dependencies": { - "Microsoft.Extensions.Logging": "5.0.0", - "System.Runtime.CompilerServices.Unsafe": "5.0.0" - } - }, - "DotNetty.Handlers": { - "type": "Transitive", - "resolved": "0.7.6", - "contentHash": "6sSMp0Md8DbpyOAV9IjiR30uzaLrxAbJTcwFFpMJM1+EJhvPz6Ywt0RqoV6+lseq6zqBjMq2jbPTKcqPoqNYIA==", - "dependencies": { - "DotNetty.Buffers": "0.7.6", - "DotNetty.Codecs": "0.7.6", - "DotNetty.Common": "0.7.6", - "DotNetty.Transport": "0.7.6" - } - }, - "DotNetty.Transport": { - "type": "Transitive", - "resolved": "0.7.6", - "contentHash": "EVQ5FihFPdWmw7v6l/4iyMepj49vZT11kWQNJ0ApC4KzkdJJ6LM/7NDUgghyxbO0e25nfQRtkGLP5EZAEo7QDA==", - "dependencies": { - "DotNetty.Buffers": "0.7.6", - "DotNetty.Common": "0.7.6" - } - }, - "Microsoft.Azure.Amqp": { - "type": "Transitive", - "resolved": "2.6.9", - "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" - }, - "Microsoft.Azure.Devices.Client": { - "type": "Transitive", - "resolved": "1.36.10", - "contentHash": "jzvpHqH/FgyAPvDgQVrpgFhqzbo9FA5k5nqfRRZ6ghTGUsEmtjUGCbzvq9m2tm970G8HBOv7vwqgC7X678JXiw==", - "dependencies": { - "Azure.Storage.Blobs": "12.19.1", - "DotNetty.Codecs.Mqtt": "0.7.6", - "DotNetty.Handlers": "0.7.6", - "Microsoft.Azure.Amqp": "2.5.12", - "Microsoft.Azure.Devices.Shared": "1.27.2", - "Microsoft.Win32.Registry": "4.5.0", - "Newtonsoft.Json": "12.0.3", - "System.Configuration.ConfigurationManager": "4.4.1" - } - }, - "Microsoft.Azure.Devices.Shared": { - "type": "Transitive", - "resolved": "1.30.4", - "contentHash": "c24XKJ2PnugnDe/CHSYVcvP0TBua/P2S520PrV/edIcz+UmmNziV0U0aWpxmbj0BaVlIVhAtj26CcQuO0q+UjQ==", - "dependencies": { - "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "13.0.3" - } - }, - "Microsoft.Azure.EventHubs": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "U5PEuRFxw6Jgsu1oc2BwNEFkIVH8PCAWuG8D0zeaF3V/nwKmvsAw3r0N1HR29UHO1WQtCOIl2Vh6yuA0BqxEBw==", - "dependencies": { - "Microsoft.Azure.Amqp": "2.4.11", - "Microsoft.Azure.Services.AppAuthentication": "[1.0.3, 2.0.0)", - "System.Diagnostics.DiagnosticSource": "4.5.1", - "System.IdentityModel.Tokens.Jwt": "5.4.0", - "System.Net.Http": "4.3.4", - "System.Reflection.TypeExtensions": "[4.5.1, 4.9.0)", - "System.Runtime.Serialization.Primitives": "4.3.0" - } - }, - "Microsoft.Azure.KeyVault": { - "type": "Transitive", - "resolved": "3.0.5", - "contentHash": "hbWw44JCJhk7e+CFeqSD1iQ2k4MP6bVVahEd9Cd1OP6JNyy0Y/S+9almtadH3vUoeDQsBAoQmzGImNoK3gxpog==", - "dependencies": { - "Microsoft.Azure.KeyVault.WebKey": "3.0.5", - "Microsoft.Rest.ClientRuntime": "[2.3.20, 3.0.0)", - "Microsoft.Rest.ClientRuntime.Azure": "[3.3.18, 4.0.0)", - "Newtonsoft.Json": "10.0.3", - "System.Net.Http": "4.3.4" - } - }, - "Microsoft.Azure.KeyVault.WebKey": { - "type": "Transitive", - "resolved": "3.0.5", - "contentHash": "LmvQxr3qaK1rEMcsQCIz88T4LT6Mskd3mS425iXGFargt/FHS/p4lT++gBlsB3IZyU/opM7v8Yruzp13xu/I8g==", - "dependencies": { - "Microsoft.Rest.ClientRuntime": "[2.3.20, 3.0.0)", - "Microsoft.Rest.ClientRuntime.Azure": "[3.3.18, 4.0.0)", - "Newtonsoft.Json": "10.0.3", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Linq": "4.3.0", - "System.Net.Http": "4.3.4", - "System.Runtime": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Cng": "4.3.0" - } - }, - "Microsoft.Azure.Services.AppAuthentication": { - "type": "Transitive", - "resolved": "1.0.3", - "contentHash": "ywpQaK1klu1IoX4VUf+TBmU4kR71aWNI6O5rEIJU8z28L2xhJhnIm7k2Nf1Zu/PygeuOtt5g0QPCk5+lLltbeQ==", - "dependencies": { - "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.14.2", - "NETStandard.Library": "1.6.1", - "System.Diagnostics.Process": "4.3.0" - } - }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==" - }, - "Microsoft.CSharp": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "LN322qEKHjuVEhhXueTUe7RNePooZmS8aGid5aK2woX3NPjSnONFyKUc6+JknOS6ce6h2tCLfKPTBXE3mN/6Ag==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", - "Microsoft.Extensions.Primitives": "5.0.0" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ETjSBHMp3OAZ4HxGQYpwyGsD8Sw5FegQXphi0rpoGMT74S4+I2mm7XJEswwn59XAaKOzC15oDSOWEE8SzDCd6Q==", - "dependencies": { - "Microsoft.Extensions.Primitives": "5.0.0" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "Of1Irt1+NzWO+yEYkuDh5TpT4On7LKl98Q9iLqCdOZps6XXEWDj3AKtmyvzJPVXZe4apmkJJIiDL7rR1yC+hjQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "5.0.0" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "fqh6y6hAi0Z0fRsb4B/mP9OkKkSlifh5osa+N/YSQ+/S2a//+zYApZMUC1XeP9fdjlgZoPQoZ72Q2eLHyKLddQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "5.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "5.0.0" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "rRdspYKA18ViPOISwAihhCMbusHsARCOtDMwa23f+BGEdIjpKPlhs3LLjmKlxfhpGXBjIsS0JpXcChjRUN+PAw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "5.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0", - "Microsoft.Extensions.FileProviders.Physical": "5.0.0", - "Microsoft.Extensions.Primitives": "5.0.0" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "Pak8ymSUfdzPfBTLHxeOwcR32YDbuVfhnH2hkfOLnJNQd19ItlBdpMjIDY9C5O/nS2Sn9bzDMai0ZrvF7KyY/Q==", - "dependencies": { - "Microsoft.Extensions.Configuration": "5.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "5.0.0", - "Microsoft.Extensions.Configuration.FileExtensions": "5.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "Rc2kb/p3Ze6cP6rhFC3PJRdWGbLvSHZc0ev7YlyeU6FmHciDMLrhoVoTUEzKPhN5ZjFgKF1Cf5fOz8mCMIkvpA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "Transitive", - "resolved": "8.0.2", - "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "iuZIiZ3mteEb+nsUqpGXKx2cGF+cv6gWPd5jqQI4hzqdiJ6I94ddLjKhQOuRW1lueHwocIw30xbSHGhQj0zjdQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "5.0.0" - } - }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "1rkd8UO2qf21biwO7X0hL9uHP7vtfmdv/NLvKgCRHkdz1XnW8zVQJXyEYiN68WYpExgtVWn55QF0qBzgfh1mGg==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0", - "Microsoft.Extensions.FileSystemGlobbing": "5.0.0", - "Microsoft.Extensions.Primitives": "5.0.0" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ArliS8lGk8sWRtrWpqI8yUVYJpRruPjCDT+EIjrgkA/AAPRctlAkRISVZ334chAKktTLzD1+PK8F5IZpGedSqA==" - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "MgOwK6tPzB6YNH21wssJcw/2MKwee8b2gI7SllYfn6rvTpIrVvVS5HAjSU2vqSku1fwqRvWP0MdIi14qjd93Aw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "5.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", - "Microsoft.Extensions.Logging.Abstractions": "5.0.0", - "Microsoft.Extensions.Options": "5.0.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "Transitive", - "resolved": "8.0.3", - "contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "CBvR92TCJ5uBIdd9/HzDSrxYak+0W/3+yxrNg8Qm6Bmrkh5L+nu6m3WeazQehcZ5q1/6dDA7J5YdQjim0165zg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0", - "Microsoft.Extensions.Primitives": "5.0.0" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==" - }, - "Microsoft.Identity.Client": { - "type": "Transitive", - "resolved": "4.78.0", - "contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.14.0", - "System.Diagnostics.DiagnosticSource": "6.0.1" - } - }, - "Microsoft.Identity.Client.Extensions.Msal": { - "type": "Transitive", - "resolved": "4.78.0", - "contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==", - "dependencies": { - "Microsoft.Identity.Client": "4.78.0", - "System.Security.Cryptography.ProtectedData": "4.5.0" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" - }, - "Microsoft.IdentityModel.Clients.ActiveDirectory": { - "type": "Transitive", - "resolved": "4.5.1", - "contentHash": "Ib75KOlQuEUYdjHshIDSqQFEbA2qWqqszcggY/5/rcmojH+vhulqwDphb6nnk2sT1/vPgVxFOcLEbqyyj5mNOw==", - "dependencies": { - "NETStandard.Library": "1.6.1", - "System.Runtime.Serialization.Json": "4.3.0", - "System.Runtime.Serialization.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Security.SecureString": "4.3.0", - "System.Xml.XDocument": "4.3.0" - } - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "Transitive", - "resolved": "5.4.0", - "contentHash": "CDIV/v6s7ZbNjk2Z9rgUP0TToBsIIbTauyosShTRzKRthNpyk6uWzlPQA9/gPXhYERugfhp/w75phDqpH093Pw==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "5.4.0", - "Newtonsoft.Json": "10.0.1" - } - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "5.4.0", - "contentHash": "lkLmOqJN9ELf1m/+yvvnfm2cipP/RIKzHideQqH+hfFcZMkI4nn2PEOvw6VDpPzPg+31dqJm6W+rhoq5ewrEbA==", - "dependencies": { - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "Transitive", - "resolved": "5.4.0", - "contentHash": "Lim2PqkdqLRbLqMaP0Hws8vmzmZVVg4sso5J2OwJi1/eE0PmfEbC22b3VeHhL5CRIYKPtzvbiyK/Ahu71/rdpA==", - "dependencies": { - "Microsoft.IdentityModel.Logging": "5.4.0", - "Newtonsoft.Json": "10.0.1", - "System.Collections": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", - "System.Runtime.Serialization.Xml": "4.3.0", - "System.Security.Claims": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "Microsoft.NETCore.Platforms": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "ok+RPAtESz/9MUXeIEz6Lv5XAGQsaNmEYXMsgVALj4D7kqC8gveKWXWXbufLySR2fWrwZf8smyN5RmHu0e4BHA==" - }, - "Microsoft.NETCore.Targets": { - "type": "Transitive", - "resolved": "1.1.3", - "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==" - }, - "Microsoft.Rest.ClientRuntime": { - "type": "Transitive", - "resolved": "2.3.24", - "contentHash": "hZH7XgM3eV2jFrnq7Yf0nBD4WVXQzDrer2gEY7HMNiwio2hwDsTHO6LWuueNQAfRpNp4W7mKxcXpwXUiuVIlYw==", - "dependencies": { - "Newtonsoft.Json": "10.0.3" - } - }, - "Microsoft.Rest.ClientRuntime.Azure": { - "type": "Transitive", - "resolved": "3.3.18", - "contentHash": "pCtem10PRQYvzRiwJVInsccsqB0NrTjW83NF3zWk1LpN3IS0AneZKq89RyogDT7mRMT1Li/mLY8N8kU6RAiK0g==", - "dependencies": { - "Microsoft.Rest.ClientRuntime": "[2.3.17, 3.0.0)", - "NETStandard.Library": "1.6.1", - "Newtonsoft.Json": "10.0.3" - } - }, - "Microsoft.Win32.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "Microsoft.Win32.Registry": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "+FWlwd//+Tt56316p00hVePBCouXyEzT86Jb3+AuRotTND0IYn0OO3obs1gnQEs/txEnt+rF2JBGLItTG+Be6A==", - "dependencies": { - "System.Security.AccessControl": "4.5.0", - "System.Security.Principal.Windows": "4.5.0" - } - }, - "NETStandard.Library": { - "type": "Transitive", - "resolved": "1.6.1", - "contentHash": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.Win32.Primitives": "4.3.0", - "System.AppContext": "4.3.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Console": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.Compression.ZipFile": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.Net.Http": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Net.Sockets": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Timer": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XDocument": "4.3.0" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, - "Nito.AsyncEx": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "EgeMl8BoaLg6mOXs7MVjl3uqUqZlL0uYti2/G128EA60U9UqoYlF0AMtGOA1/EP+bvrjcvixK8D3MLpwr2dnSw==", - "dependencies": { - "Nito.AsyncEx.Context": "5.0.0", - "Nito.AsyncEx.Coordination": "5.0.0", - "Nito.AsyncEx.Interop.WaitHandles": "5.0.0", - "Nito.AsyncEx.Oop": "5.0.0", - "Nito.AsyncEx.Tasks": "5.0.0", - "Nito.Cancellation": "1.0.5" - } - }, - "Nito.AsyncEx.Context": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "Qnth1Ye+QSLg8P3fSFYzk7ue6oUUHQcKpLitgAig8xRFqTK5W1KTlfxF/Z8Eo0BuqZ17a5fAGtXrdKJsLqivZw==", - "dependencies": { - "Nito.AsyncEx.Tasks": "5.0.0" - } - }, - "Nito.AsyncEx.Coordination": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "kjauyO8UMo/FGZO/M8TdjXB8ZlBPFOiRN8yakThaGQbYOywazQ0kGZ39SNr2gNNzsTxbZOUudBMYNo+IrtscbA==", - "dependencies": { - "Nito.AsyncEx.Tasks": "5.0.0", - "Nito.Collections.Deque": "1.0.4", - "Nito.Disposables": "2.0.0" - } - }, - "Nito.AsyncEx.Interop.WaitHandles": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "roX7jQ7AAEw3CUq/oRj/ACcN1XtfO6fSbYSAjMtjvacN9pqY7Uq2reBFaosbMaMt16EcW+Xw3PwczKzHdZFPRA==", - "dependencies": { - "Nito.AsyncEx.Tasks": "5.0.0" - } - }, - "Nito.AsyncEx.Oop": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "SKyHsxzXD8b69tPPgMDh7mgMx7GdaSfJ1h2eNS+z2Z/vHsutXTl1sYLOO30fiIkv1umvI1g8GySvYLpVlpt6yA==", - "dependencies": { - "Nito.AsyncEx.Coordination": "5.0.0" - } - }, - "Nito.AsyncEx.Tasks": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "ZtvotignafOLteP4oEjVcF3k2L8h73QUCaFpVKWbU+EOlW/I+JGkpMoXIl0rlwPcDmR84RxzggLRUNMaWlOosA==", - "dependencies": { - "Nito.Disposables": "2.0.0" - } - }, - "Nito.Cancellation": { - "type": "Transitive", - "resolved": "1.0.5", - "contentHash": "/MehN8HvuOgPZsNmqyu0UdPWXCAJVqcy0LEqw1Ch1++ag1h0qPt5YLH+BCIMFDC5UMW/4RzJW2GdRDYg7Vi2yA==", - "dependencies": { - "Nito.Disposables": "1.2.3" - } - }, - "Nito.Collections.Deque": { - "type": "Transitive", - "resolved": "1.0.4", - "contentHash": "yGDKqCQ61i97MyfEUYG6+ln5vxpx11uA5M9+VV9B7stticbFm19YMI/G9w4AFYVBj5PbPi138P8IovkMFAL0Aw==" - }, - "Nito.Disposables": { - "type": "Transitive", - "resolved": "2.0.0", - "contentHash": "ExJl/jTjegSLHGcwnmaYaI5xIlrefAsVdeLft7VLtXI2+W5irihiu36LizWvlaUpzY1/llo+YSh09uSHMu2VFw==", - "dependencies": { - "System.Collections.Immutable": "1.4.0" - } - }, - "prometheus-net": { - "type": "Transitive", - "resolved": "3.1.3", - "contentHash": "gZNREH51/UrfArdwOA6sVNfA1cRFzZwtFrCwy9o4oShYVnmvd0HRQr3QgdG5+F3kedY7aOoJ3ZU0sYTmpuZy1A==" - }, - "protobuf-net": { - "type": "Transitive", - "resolved": "2.4.0", - "contentHash": "j37MD1p1s9NdX8P5+IaY2J9p2382xiL1VP3mxYu0g+G/kf2YM2grFa1jJPO+0WDJNl1XhNPO0Q5yBEcbX77hBQ==", - "dependencies": { - "System.ServiceModel.Primitives": "4.5.3" - } - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g==" - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw==" - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg==" - }, - "runtime.native.System": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.IO.Compression": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.Net.Http": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.Security.Cryptography.Apple": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", - "dependencies": { - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" - } - }, - "runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==", - "dependencies": { - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" - } - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ==" - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA==" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w==" - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg==" - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw==" - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w==" - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" - }, - "Serilog": { - "type": "Transitive", - "resolved": "2.5.0", - "contentHash": "JwwkgNYNFKT4kQZ3qBV3VqPgchUg1A6FnlFa9hgyanylwBhJ7eTFl3pgLVxijFEb+oHLImRcMaTsMzBt2AG0aQ==", - "dependencies": { - "Microsoft.CSharp": "4.0.1", - "System.Collections": "4.0.11", - "System.Collections.NonGeneric": "4.0.1", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "Serilog.Extensions.Logging": { - "type": "Transitive", - "resolved": "2.0.2", - "contentHash": "PYAkzUn/VV16Es7U06BfEhNZEltnYWu0WFCM4d2lLY/dvlA7xMwFXBuGRxR0XvEBPoOxPorjhFLy9txwiMO6rg==", - "dependencies": { - "Microsoft.Extensions.Logging": "2.0.0", - "Serilog": "2.3.0" - } - }, - "Serilog.Sinks.Console": { - "type": "Transitive", - "resolved": "3.1.1", - "contentHash": "56mI5AqvyF/i/c2451nvV71kq370XOCE4Uu5qiaJ295sOhMb9q3BWwG7mWLOVSnmpWiq0SBT3SXfgRXGNP6vzA==", - "dependencies": { - "Serilog": "2.5.0", - "System.Console": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0" - } - }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.164", - "contentHash": "3WJ5JvRP9QjdrwspeLFjwD2AZw2CcDmYLQ7x8oofxvOzXvboZdFlPsSV8h56hLyK0lnMFvtpb48nxz7oQ4RgCQ==" - }, - "System.AppContext": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Buffers": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==", - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.ClientModel": { - "type": "Transitive", - "resolved": "1.8.0", - "contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "System.Memory.Data": "8.0.1" - } - }, - "System.Collections": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Collections.Concurrent": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Collections.Immutable": { - "type": "Transitive", - "resolved": "1.5.0", - "contentHash": "EXKiDFsChZW0RjrZ4FYHu9aW6+P4MCgEDCklsVseRfhoO0F+dXeMSsMRAlVXIo06kGJ/zv+2w1a2uc2+kxxSaQ==" - }, - "System.Collections.NonGeneric": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "System.ComponentModel.Annotations": { - "type": "Transitive", - "resolved": "4.4.1", - "contentHash": "ToiYqSCioqhtspq2O/jYKtyTC/T0uwWHBTYlzCi6PRbSSHArN1IaRWeHffDamvms5sye5FDUWCfNZgubQpNRsA==" - }, - "System.Configuration.ConfigurationManager": { - "type": "Transitive", - "resolved": "4.4.1", - "contentHash": "jz3TWKMAeuDEyrPCK5Jyt4bzQcmzUIMcY9Ud6PkElFxTfnsihV+9N/UCqvxe1z5gc7jMYAnj7V1COMS9QKIuHQ==", - "dependencies": { - "System.Security.Cryptography.ProtectedData": "4.4.0" - } - }, - "System.Console": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Diagnostics.Contracts": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "eelRRbnm+OloiQvp9CXS0ixjNQldjjkHO4iIkR5XH2VIP8sUB/SIpa1TdUW6/+HDcQ+MlhP3pNa1u5SbzYuWGA==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Diagnostics.Debug": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "6.0.1", - "contentHash": "KiLYDu2k2J82Q9BJpWiuQqCkFjRBWVq4jDzKKWawVi9KWzyD0XG3cmfX0vqTQlL14Wi9EufJrbL0+KCLTbqWiQ==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QaQAhEk18QSBPSu4VjXcznvjlg45IoXcJJNS5hcoqyyLj58g/SzQwpYXUrdzo+UtHV0grmOzFwABxhCYSTTp5Q==", - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.Win32.Registry": "4.5.0", - "System.Security.Permissions": "4.5.0", - "System.Security.Principal.Windows": "4.5.0", - "System.Threading.AccessControl": "4.5.0" - } - }, - "System.Diagnostics.Process": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "J0wOX07+QASQblsfxmIMFc9Iq7KTXYL3zs2G/Xc704Ylv3NpuVdo6gij6V3PGiptTxqsK0K7CdXenRvKUnkA2g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.Win32.Primitives": "4.3.0", - "Microsoft.Win32.Registry": "4.3.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Thread": "4.3.0", - "System.Threading.ThreadPool": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Diagnostics.Tools": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Diagnostics.TraceSource": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "VnYp1NxGx8Ww731y2LJ1vpfb/DKVNKEZ8Jsh5SgQTZREL/YpWRArgh9pI8CDLmgHspZmLL697CaLvH85qQpRiw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Diagnostics.Tracing": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Dynamic.Runtime": { - "type": "Transitive", - "resolved": "4.0.11", - "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "System.Globalization": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization.Calendars": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0" - } - }, - "System.IdentityModel.Tokens.Jwt": { - "type": "Transitive", - "resolved": "5.4.0", - "contentHash": "3iSL/4C+K4d9k700URwCoAEXFesI1Ho0DP/QSr9nmzJZY69oi48qYlglXbl2zz3lB+XfgPiuYoSJ6qIdYBPFzQ==", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "5.4.0", - "Microsoft.IdentityModel.Tokens": "5.4.0", - "Newtonsoft.Json": "10.0.1" - } - }, - "System.IO": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.Compression": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Buffers": "4.3.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.IO.Compression": "4.3.0" - } - }, - "System.IO.Compression.ZipFile": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", - "dependencies": { - "System.Buffers": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.IO.FileSystem": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.FileSystem.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.IO.Hashing": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "Rfm2jYCaUeGysFEZjDe7j1R4x6Z6BzumS/vUT5a1AA/AWJuGX71PoGB0RmpyX3VmrGqVnAwtfMn39OHR8Y/5+g==" - }, - "System.Linq": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Linq.Expressions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Emit.Lightweight": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Memory.Data": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" - }, - "System.Net.Http": { - "type": "Transitive", - "resolved": "4.3.4", - "contentHash": "aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.1", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.DiagnosticSource": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" - } - }, - "System.Net.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Net.Sockets": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.ObjectModel": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Private.DataContractSerialization": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "yDaJ2x3mMmjdZEDB4IbezSnCsnjQ4BxinKhRAaP6kEgL6Bb6jANWphs5SzyD8imqeC/3FxgsuXT6ykkiH1uUmA==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Emit.Lightweight": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Serialization.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XDocument": "4.3.0", - "System.Xml.XmlDocument": "4.3.0", - "System.Xml.XmlSerializer": "4.3.0" - } - }, - "System.Private.ServiceModel": { - "type": "Transitive", - "resolved": "4.5.3", - "contentHash": "ancrQgJagx+yC4SZbuE+eShiEAUIF0E1d21TRSoy1C/rTwafAVcBr/fKibkq5TQzyy9uNil2tx2/iaUxsy0S9g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.0", - "System.Reflection.DispatchProxy": "4.5.0", - "System.Security.Principal.Windows": "4.5.0" - } - }, - "System.Reflection": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.DispatchProxy": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "+UW1hq11TNSeb+16rIk8hRQ02o339NFyzMc4ma/FqmxBzM30l1c2IherBB4ld1MNcenS48fz8tbt50OW4rVULA==" - }, - "System.Reflection.Emit": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", - "dependencies": { - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit.ILGeneration": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit.Lightweight": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.TypeExtensions": { - "type": "Transitive", - "resolved": "4.5.1", - "contentHash": "fO8GMEkgoKioJ7cglZbhcnBgkCWWn9poS3G2jevS+fuwW9xJXMx7/1kr7dkwOJfo0pWqxLFWVcxlOr+WeK5ipA==" - }, - "System.Resources.ResourceManager": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime": { - "type": "Transitive", - "resolved": "4.3.1", - "contentHash": "abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.1", - "Microsoft.NETCore.Targets": "1.1.3" - } - }, - "System.Runtime.CompilerServices.Unsafe": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" - }, - "System.Runtime.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Handles": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.InteropServices": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Runtime.InteropServices.RuntimeInformation": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Runtime.Loader": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "DHMaRn8D8YCK2GG2pw+UzNxn/OHVfaWx7OTLBD/hPegHZZgcZh3H6seWegrC4BYwsfuGrywIuT+MQs+rPqRLTQ==", - "dependencies": { - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Numerics": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", - "dependencies": { - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Runtime.Serialization.Json": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "CpVfOH0M/uZ5PH+M9+Gu56K0j9lJw3M+PKRegTkcrY/stOIvRUeonggxNrfBYLA5WOHL2j15KNJuTuld3x4o9w==", - "dependencies": { - "System.IO": "4.3.0", - "System.Private.DataContractSerialization": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Serialization.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "Wz+0KOukJGAlXjtKr+5Xpuxf8+c8739RI1C+A2BoQZT+wMCCoMDDdO8/4IRHfaVINqL78GO8dW8G2lW/e45Mcw==", - "dependencies": { - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Serialization.Xml": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "nUQx/5OVgrqEba3+j7OdiofvVq9koWZAC7Z3xGI8IIViZqApWnZ5+lLcwYgTlbkobrl/Rat+Jb8GeD4WQESD2A==", - "dependencies": { - "System.IO": "4.3.0", - "System.Private.DataContractSerialization": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Serialization.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "System.Security.AccessControl": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "vW8Eoq0TMyz5vAG/6ce483x/CP83fgm4SJe5P8Tb1tZaobcvPrbMEL7rhH1DRdrYbbb6F0vq3OlzmK0Pkwks5A==", - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.Security.Principal.Windows": "4.5.0" - } - }, - "System.Security.Claims": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "P/+BR/2lnc4PNDHt/TPBAWHVMLMRHsyYZbU1NphW4HIWzCggz8mJbTQQ3MKljFE7LS3WagmVFuBgoLcFzYXlkA==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Security.Principal": "4.3.0" - } - }, - "System.Security.Cryptography.Algorithms": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.Apple": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Cng": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Security.Cryptography.Csp": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Security.Cryptography.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Linq": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", - "dependencies": { - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Security.Cryptography.ProtectedData": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" - }, - "System.Security.Cryptography.X509Certificates": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Cng": "4.3.0", - "System.Security.Cryptography.Csp": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Permissions": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==", - "dependencies": { - "System.Security.AccessControl": "4.5.0" - } - }, - "System.Security.Principal": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "I1tkfQlAoMM2URscUtpcRo/hX0jinXx6a/KUtEQoz3owaYwl3qwsO8cbzYVVnjxrzxjHo3nJC+62uolgeGIS9A==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "U77HfRXlZlOeIXd//Yoj6Jnk8AXlbeisf1oq1os+hxOGVnuG+lGSfGqTwTZBoORFF6j/0q7HXIl8cqwQ9aUGqQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0" - } - }, - "System.Security.SecureString": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "PnXp38O9q/2Oe4iZHMH60kinScv6QiiL2XH54Pj2t0Y6c2zKPEiAZsM/M3wBOHLNTBDFP0zfy13WN2M0qFz5jg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.ServiceModel.Primitives": { - "type": "Transitive", - "resolved": "4.5.3", - "contentHash": "Wc9Hgg4Cmqi416zvEgq2sW1YYCGuhwWzspDclJWlFZqY6EGhFUPZU+kVpl5z9kAgrSOQP7/Uiik+PtSQtmq+5A==", - "dependencies": { - "System.Private.ServiceModel": "4.5.3" - } - }, - "System.Text.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Text.Encoding.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "5.0.1", - "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==" - }, - "System.Text.Json": { - "type": "Transitive", - "resolved": "4.7.2", - "contentHash": "TcMd95wcrubm9nHvJEQs70rC0H/8omiSGGpU4FQ/ZA1URIqD4pjmFJh2Mfv1yH1eHgJDWTi2hMDXwTET+zOOyg==" - }, - "System.Text.RegularExpressions": { - "type": "Transitive", - "resolved": "4.3.1", - "contentHash": "N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==", - "dependencies": { - "System.Runtime": "4.3.1" - } - }, - "System.Threading": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", - "dependencies": { - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.AccessControl": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "ZU4JNV9eHPw3TAdIJCDH07u9EfGFGgNJnaga8aFjcdvIIZKq4A+ZqaQNvUMFIbdCMPceYzt8JT5MdYIXAOlJ9A==", - "dependencies": { - "System.Security.AccessControl": "4.5.0", - "System.Security.Principal.Windows": "4.5.0" - } - }, - "System.Threading.Tasks": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Thread": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "OHmbT+Zz065NKII/ZHcH9XO1dEuLGI1L2k7uYss+9C1jLxTC9kTZZuzUOyXHayRk+dft9CiDf3I/QZ0t8JKyBQ==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Threading.ThreadPool": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "k/+g4b7vjdd4aix83sTgC9VG6oXYKAktSfNIJUNGxPEj7ryEOfzHHhfnmsZvjxawwcD9HyWXKCXmPjX8U4zeSw==", - "dependencies": { - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Threading.Timer": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.ValueTuple": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==" - }, - "System.Xml.ReaderWriter": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Tasks.Extensions": "4.3.0" - } - }, - "System.Xml.XDocument": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "System.Xml.XmlDocument": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "System.Xml.XmlSerializer": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "MYoTCP7EZ98RrANESW05J5ZwskKDoN0AuZ06ZflnowE50LTpbR5yRg3tHckTVm5j/m47stuGgCrCHWePyHS70Q==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XmlDocument": "4.3.0" - } - }, - "xunit.abstractions": { - "type": "Transitive", - "resolved": "2.0.3", - "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==" - }, - "xunit.assert": { - "type": "Transitive", - "resolved": "2.4.1", - "contentHash": "O/Oe0BS5RmSsM+LQOb041TzuPo5MdH2Rov+qXGS37X+KFG1Hxz7kopYklM5+1Y+tRGeXrOx5+Xne1RuqLFQoyQ==", - "dependencies": { - "NETStandard.Library": "1.6.1" - } - }, - "xunit.extensibility.core": { - "type": "Transitive", - "resolved": "2.4.1", - "contentHash": "yKZKm/8QNZnBnGZFD9SewkllHBiK0DThybQD/G4PiAmQjKtEZyHi6ET70QPU9KtSMJGRYS6Syk7EyR2EVDU4Kg==", - "dependencies": { - "NETStandard.Library": "1.6.1", - "xunit.abstractions": "2.0.3" - } - }, - "es6numberserializer": { - "type": "Project" - }, - "jsoncanonicalizer": { - "type": "Project", - "dependencies": { - "es6numberserializer": "[1.0.0, )" - } - }, - "microsoft.azure.devices.edge.test.common": { - "type": "Project", - "dependencies": { - "Azure.Identity": "[1.17.1, )", - "Microsoft.Azure.Devices": "[1.41.0, )", - "Microsoft.Azure.Devices.Client": "[1.36.10, )", - "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", - "Microsoft.Azure.EventHubs": "[4.3.2, )", - "Microsoft.Extensions.Configuration.Binder": "[5.0.0, )", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", - "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", - "Nett": "[0.15.0, )", - "Newtonsoft.Json": "[13.0.3, )", - "System.ServiceProcess.ServiceController": "[4.5.0, )" - } - }, - "microsoft.azure.devices.edge.util": { - "type": "Project", - "dependencies": { - "App.Metrics.Formatters.Prometheus": "[4.3.0, )", - "Microsoft.Extensions.Configuration.Binder": "[5.0.0, )", - "Microsoft.Extensions.Logging": "[5.0.0, )", - "Newtonsoft.Json": "[13.0.2, )", - "Nito.AsyncEx": "[5.0.0, )", - "Serilog.Extensions.Logging": "[2.0.2, )", - "Serilog.Sinks.Console": "[3.1.1, )", - "System.Runtime.Loader": "[4.3.0, )", - "System.Text.RegularExpressions": "[4.3.1, )", - "System.ValueTuple": "[4.5.0, )", - "es6numberserializer": "[1.0.0, )", - "jsoncanonicalizer": "[1.0.0, )", - "prometheus-net": "[3.1.3, )" - } - }, - "microsoft.azure.devices.edge.util.test.common": { - "type": "Project", - "dependencies": { - "Microsoft.Azure.Devices.Edge.Util": "[1.0.0, )", - "Microsoft.Azure.KeyVault": "[3.0.5, )", - "Microsoft.Extensions.Configuration": "[5.0.0, )", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "[5.0.0, )", - "Microsoft.Extensions.Configuration.Json": "[5.0.0, )", - "Microsoft.IdentityModel.Clients.ActiveDirectory": "[4.5.1, )", - "Microsoft.IdentityModel.Tokens": "[5.4.0, )", - "Newtonsoft.Json": "[13.0.2, )", - "System.Text.Encodings.Web": "[5.0.1, )", - "xunit.assert": "[2.4.1, )", - "xunit.extensibility.core": "[2.4.1, )" - } - } - } + "net8.0": {} } } \ No newline at end of file diff --git a/test/modules/Modules.Test/packages.lock.json b/test/modules/Modules.Test/packages.lock.json index c8f03652b50..2b85700078a 100644 --- a/test/modules/Modules.Test/packages.lock.json +++ b/test/modules/Modules.Test/packages.lock.json @@ -113,6 +113,16 @@ "System.Memory.Data": "8.0.1" } }, + "Azure.Core.Amqp": { + "type": "Transitive", + "resolved": "1.3.1", + "contentHash": "AY1ZM4WwLBb9L2WwQoWs7wS2XKYg83tp3yVVdgySdebGN0FuIszuEqCy3Nhv6qHpbkjx/NGuOTsUbF/oNGBgwA==", + "dependencies": { + "Microsoft.Azure.Amqp": "2.6.7", + "System.Memory": "4.5.4", + "System.Memory.Data": "1.0.2" + } + }, "Azure.Identity": { "type": "Transitive", "resolved": "1.17.1", @@ -123,6 +133,17 @@ "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" } }, + "Azure.Messaging.EventHubs": { + "type": "Transitive", + "resolved": "5.12.2", + "contentHash": "vmrkhHAcGigX/xVMvPqC6dZeWEhxEBzGEkF/ti7RxdVcIANRaPS6EpEtIHRxcgoaLukvmirkdE0Svq++ljh5Tg==", + "dependencies": { + "Azure.Core": "1.46.2", + "Azure.Core.Amqp": "1.3.1", + "Microsoft.Azure.Amqp": "2.7.0", + "System.Reflection.TypeExtensions": "4.7.0" + } + }, "Azure.Storage.Blobs": { "type": "Transitive", "resolved": "12.19.1", @@ -230,8 +251,8 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.6.9", - "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" + "resolved": "2.7.0", + "contentHash": "gm/AEakujttMzrDhZ5QpRz3fICVkYDn/oDG9SmxDP+J7R8JDBXYU9WWG7hr6wQy40mY+wjUF0yUGXDPRDRNJwQ==" }, "Microsoft.Azure.Devices": { "type": "Transitive", @@ -1206,6 +1227,11 @@ "System.Threading": "4.0.11" } }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==" + }, "System.Memory.Data": { "type": "Transitive", "resolved": "8.0.1", @@ -1387,8 +1413,8 @@ }, "System.Reflection.TypeExtensions": { "type": "Transitive", - "resolved": "4.5.1", - "contentHash": "fO8GMEkgoKioJ7cglZbhcnBgkCWWn9poS3G2jevS+fuwW9xJXMx7/1kr7dkwOJfo0pWqxLFWVcxlOr+WeK5ipA==" + "resolved": "4.7.0", + "contentHash": "VybpaOQQhqE6siHppMktjfGBw1GCwvCqiufqmP8F1nj7fTUNtW35LOEt3UZTEsECfo+ELAl/9o9nJx3U91i7vA==" }, "System.Resources.ResourceManager": { "type": "Transitive", @@ -2038,6 +2064,7 @@ "type": "Project", "dependencies": { "Azure.Identity": "[1.17.1, )", + "Azure.Messaging.EventHubs": "[5.12.2, )", "Azure.Storage.Blobs": "[12.19.1, )", "Microsoft.AspNetCore.Mvc.NewtonsoftJson": "[3.1.3, )", "Microsoft.Azure.Devices": "[1.41.0, )", diff --git a/test/modules/TestResultCoordinator/Services/PartitionReceiverHandler.cs b/test/modules/TestResultCoordinator/Services/PartitionReceiverHandler.cs index 8a6c783528f..5ba0a339699 100644 --- a/test/modules/TestResultCoordinator/Services/PartitionReceiverHandler.cs +++ b/test/modules/TestResultCoordinator/Services/PartitionReceiverHandler.cs @@ -4,14 +4,14 @@ namespace TestResultCoordinator.Services using System; using System.Collections.Generic; using System.Threading.Tasks; + using Azure.Messaging.EventHubs; using Microsoft.Azure.Devices.Edge.ModuleUtil; using Microsoft.Azure.Devices.Edge.ModuleUtil.TestResults; using Microsoft.Azure.Devices.Edge.Util; - using Microsoft.Azure.EventHubs; using Microsoft.Extensions.Logging; using TestResultCoordinator.Storage; - class PartitionReceiveHandler : IPartitionReceiveHandler + class PartitionReceiveHandler { const string DeviceIdPropertyName = "iothub-connection-device-id"; const string ModuleIdPropertyName = "iothub-connection-module-id"; diff --git a/test/modules/TestResultCoordinator/Services/TestResultEventReceivingService.cs b/test/modules/TestResultCoordinator/Services/TestResultEventReceivingService.cs index da813df91bf..9085172bc89 100644 --- a/test/modules/TestResultCoordinator/Services/TestResultEventReceivingService.cs +++ b/test/modules/TestResultCoordinator/Services/TestResultEventReceivingService.cs @@ -4,10 +4,12 @@ namespace TestResultCoordinator.Services using System; using System.Threading; using System.Threading.Tasks; + using Azure.Identity; + using Azure.Messaging.EventHubs.Consumer; + using Azure.Messaging.EventHubs.Primitives; using Microsoft.Azure.Devices.Edge.ModuleUtil; using Microsoft.Azure.Devices.Edge.Test.Common; using Microsoft.Azure.Devices.Edge.Util; - using Microsoft.Azure.EventHubs; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using TestResultCoordinator.Storage; @@ -36,19 +38,43 @@ protected override async Task ExecuteAsync(CancellationToken cancellationToken) this.logger.LogInformation("Test Result Event Receiving Service running."); DateTime eventEnqueuedFrom = DateTime.UtcNow; - var builder = new EventHubsConnectionStringBuilder(this.serviceSpecificSettings.EventHubConnectionString); - this.logger.LogDebug($"Receiving events from device '{Settings.Current.DeviceId}' on Event Hub '{builder.EntityPath}' enqueued on or after {eventEnqueuedFrom}"); - EventHubClient eventHubClient = EventHubClient.CreateFromConnectionString(builder.ToString()); - PartitionReceiver eventHubReceiver = eventHubClient.CreateReceiver( + var consumer = new EventHubConsumerClient( + EventHubConsumerClient.DefaultConsumerGroupName, + this.serviceSpecificSettings.FullyQualifiedNamespace, + this.serviceSpecificSettings.EventHubName, + new AzureCliCredential()); + int numPartitions = (await consumer.GetPartitionIdsAsync()).Length; + await consumer.CloseAsync(); + + var receiver = new PartitionReceiver( this.serviceSpecificSettings.ConsumerGroupName, - EventHubPartitionKeyResolver.ResolveToPartition(Settings.Current.DeviceId, (await eventHubClient.GetRuntimeInformationAsync()).PartitionCount), - EventPosition.FromEnqueuedTime(eventEnqueuedFrom)); - eventHubReceiver.SetReceiveHandler(new PartitionReceiveHandler(Settings.Current.TrackingId, Settings.Current.DeviceId, this.storage)); + EventHubPartitionKeyResolver.ResolveToPartition(Settings.Current.DeviceId, numPartitions), + EventPosition.FromEnqueuedTime(eventEnqueuedFrom), + this.serviceSpecificSettings.FullyQualifiedNamespace, + this.serviceSpecificSettings.EventHubName, + new AzureCliCredential()); + var handler = new PartitionReceiveHandler(Settings.Current.TrackingId, Settings.Current.DeviceId, this.storage); - await cancellationToken.WhenCanceled(); + this.logger.LogDebug($"Receiving events from device '{Settings.Current.DeviceId}' on Event Hub '{this.serviceSpecificSettings.EventHubName}' enqueued on or after {eventEnqueuedFrom}"); - this.logger.LogInformation($"Finish ExecuteAsync method in {nameof(TestResultEventReceivingService)}"); + try + { + while (!cancellationToken.IsCancellationRequested) + { + var batch = await receiver.ReceiveBatchAsync(50, cancellationToken); + await handler.ProcessEventsAsync(batch); + } + } + catch (TaskCanceledException) + { + // This is expected when the service is stopping. + } + finally + { + await receiver.CloseAsync(); + this.logger.LogInformation($"Finish ExecuteAsync method in {nameof(TestResultEventReceivingService)}"); + } } } } diff --git a/test/modules/TestResultCoordinator/Settings.cs b/test/modules/TestResultCoordinator/Settings.cs index 2db3063eda8..dbb285fdd95 100644 --- a/test/modules/TestResultCoordinator/Settings.cs +++ b/test/modules/TestResultCoordinator/Settings.cs @@ -32,7 +32,8 @@ class Settings string trackingId, bool useTestResultReportingService, bool useResultEventReceivingService, - string eventHubConnectionString, + string fullyQualifiedNamespace, + string eventHubName, string iotHubHostname, string deviceId, string moduleId, @@ -63,7 +64,8 @@ class Settings { this.TestResultEventReceivingServiceSettings = Option.Some(new TestResultEventReceivingServiceSettings() { - EventHubConnectionString = Preconditions.CheckNonWhiteSpace(eventHubConnectionString, nameof(eventHubConnectionString)), + FullyQualifiedNamespace = Preconditions.CheckNonWhiteSpace(fullyQualifiedNamespace, nameof(fullyQualifiedNamespace)), + EventHubName = Preconditions.CheckNonWhiteSpace(eventHubName, nameof(eventHubName)), ConsumerGroupName = "$Default" }); } @@ -150,7 +152,8 @@ static Settings Create() configuration.GetValue("trackingId"), configuration.GetValue("useTestResultReportingService", true), configuration.GetValue("useResultEventReceivingService", true), - configuration.GetValue("eventHubConnectionString"), + configuration.GetValue("fullyQualifiedNamespace"), + configuration.GetValue("eventHubName"), configuration.GetValue("IOT_HUB_HOSTNAME"), configuration.GetValue("IOTEDGE_DEVICEID"), configuration.GetValue("IOTEDGE_MODULEID"), @@ -233,7 +236,12 @@ public override string ToString() { nameof(this.MqttBrokerEnabled), this.MqttBrokerEnabled.ToString() } }; - this.TestResultEventReceivingServiceSettings.ForEach(settings => fields.Add(nameof(settings.ConsumerGroupName), settings.ConsumerGroupName)); + this.TestResultEventReceivingServiceSettings.ForEach(settings => + { + fields.Add(nameof(settings.FullyQualifiedNamespace), settings.FullyQualifiedNamespace); + fields.Add(nameof(settings.EventHubName), settings.EventHubName); + fields.Add(nameof(settings.ConsumerGroupName), settings.ConsumerGroupName); + }); this.LongHaulSpecificSettings.ForEach(settings => { fields.Add(nameof(settings.SendReportFrequency), settings.SendReportFrequency.ToString()); @@ -277,7 +285,8 @@ internal async Task> GetResultSourcesAsync(ILogger logger) internal struct TestResultEventReceivingServiceSettings { - public string EventHubConnectionString; + public string FullyQualifiedNamespace; + public string EventHubName; public string ConsumerGroupName; } diff --git a/test/modules/TestResultCoordinator/TestResultCoordinator.csproj b/test/modules/TestResultCoordinator/TestResultCoordinator.csproj index 1c8f2f0fdf0..4ecedf2e0e8 100644 --- a/test/modules/TestResultCoordinator/TestResultCoordinator.csproj +++ b/test/modules/TestResultCoordinator/TestResultCoordinator.csproj @@ -19,6 +19,7 @@ + diff --git a/test/modules/TestResultCoordinator/packages.lock.json b/test/modules/TestResultCoordinator/packages.lock.json index e1f0702cf7d..32902f38e53 100644 --- a/test/modules/TestResultCoordinator/packages.lock.json +++ b/test/modules/TestResultCoordinator/packages.lock.json @@ -13,6 +13,18 @@ "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" } }, + "Azure.Messaging.EventHubs": { + "type": "Direct", + "requested": "[5.12.2, )", + "resolved": "5.12.2", + "contentHash": "vmrkhHAcGigX/xVMvPqC6dZeWEhxEBzGEkF/ti7RxdVcIANRaPS6EpEtIHRxcgoaLukvmirkdE0Svq++ljh5Tg==", + "dependencies": { + "Azure.Core": "1.46.2", + "Azure.Core.Amqp": "1.3.1", + "Microsoft.Azure.Amqp": "2.7.0", + "System.Reflection.TypeExtensions": "4.7.0" + } + }, "Azure.Storage.Blobs": { "type": "Direct", "requested": "[12.19.1, )", @@ -127,6 +139,16 @@ "System.Memory.Data": "8.0.1" } }, + "Azure.Core.Amqp": { + "type": "Transitive", + "resolved": "1.3.1", + "contentHash": "AY1ZM4WwLBb9L2WwQoWs7wS2XKYg83tp3yVVdgySdebGN0FuIszuEqCy3Nhv6qHpbkjx/NGuOTsUbF/oNGBgwA==", + "dependencies": { + "Microsoft.Azure.Amqp": "2.6.7", + "System.Memory": "4.5.4", + "System.Memory.Data": "1.0.2" + } + }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.18.1", @@ -207,8 +229,8 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.6.9", - "contentHash": "5i9XzfqxK1H5IBl+OuOV1jwJdrOvi5RUwsZgVOryZm0GCzcM9NWPNRxzPAbsSeaR2T6+1gGvdT3vR+Vbha6KFQ==" + "resolved": "2.7.0", + "contentHash": "gm/AEakujttMzrDhZ5QpRz3fICVkYDn/oDG9SmxDP+J7R8JDBXYU9WWG7hr6wQy40mY+wjUF0yUGXDPRDRNJwQ==" }, "Microsoft.Azure.Devices.Client": { "type": "Transitive", @@ -1200,6 +1222,11 @@ "System.Threading": "4.3.0" } }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==" + }, "System.Memory.Data": { "type": "Transitive", "resolved": "8.0.1", @@ -1389,8 +1416,8 @@ }, "System.Reflection.TypeExtensions": { "type": "Transitive", - "resolved": "4.5.1", - "contentHash": "fO8GMEkgoKioJ7cglZbhcnBgkCWWn9poS3G2jevS+fuwW9xJXMx7/1kr7dkwOJfo0pWqxLFWVcxlOr+WeK5ipA==" + "resolved": "4.7.0", + "contentHash": "VybpaOQQhqE6siHppMktjfGBw1GCwvCqiufqmP8F1nj7fTUNtW35LOEt3UZTEsECfo+ELAl/9o9nJx3U91i7vA==" }, "System.Resources.ResourceManager": { "type": "Transitive",