diff --git a/builds/e2e/connectivity.yaml b/builds/e2e/connectivity.yaml index 8baa6b8f0dd..7efbc27195b 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: '$(azure.subscription)' release.label: 'ct$(agent.group)' test.buildNumber: '$(Build.BuildNumber)' test.buildId: '$(Build.BuildId)' @@ -224,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)' @@ -407,6 +408,7 @@ jobs: # Deploy connectivity test - template: templates/connectivity-deploy.yaml parameters: + connection.arm: '$(azure.subscription)' release.label: 'ct$(agent.group)' test.buildNumber: '$(Build.BuildNumber)' test.buildId: '$(Build.BuildId)' @@ -420,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 92c44c2ff14..f6e7ad566b6 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: '' @@ -13,8 +14,9 @@ parameters: container.registry.username: '' container.registry.password: '' testResultCoordinator.blobStorageAccountUriWithSasToken: '' - iotHub.connectionString: '' - eventHub.connectionString: '' + iotHub.hostName: '' + eventHub.namespace: '' + eventHub.name: '' upstream.protocol: '' networkController.description: '' networkController.frequencies: '' @@ -86,12 +88,17 @@ 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: ${{ parameters['connection.arm'] }} + addSpnToEnvironment: true + 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" @@ -116,8 +123,9 @@ steps: -containerRegistry "${{ parameters['container.registry'] }}" \ -containerRegistryUsername "${{ parameters['container.registry.username'] }}" \ -containerRegistryPassword "${{ parameters['container.registry.password'] }}" \ - -iotHubConnectionString "${{ parameters['iotHub.connectionString'] }}" \ - -eventHubConnectionString "${{ parameters['eventHub.connectionString'] }}" \ + -iotHubHostName "${{ parameters['iotHub.hostName'] }}" \ + -eventHubNamespace "${{ parameters['eventHub.namespace'] }}" \ + -eventHubName "${{ parameters['eventHub.name'] }}" \ -upstreamProtocol "${{ parameters['upstream.protocol'] }}" \ -testDuration "${{ parameters['testDuration'] }}" \ -networkControllerFrequency "${{ parameters['networkController.frequencies'] }}" \ @@ -142,14 +150,15 @@ steps: -repoPath "${{ parameters['build.repo.path'] }}" \ -topology "${{ parameters['topology'] }}" \ -waitForTestComplete \ - -cleanAll + -cleanAll \ + -tenantId "$tenantId" \ + -clientId "$servicePrincipalId" \ + -clientSecret "$idToken" scriptExitCode=$? echo "script exit code=$scriptExitCode" exit $scriptExitCode - workingDirectory: "$(Agent.BuildDirectory)/.." - env: E2E_nestedEdgeTest: $(nestededge) E2E_trustedCaCerts: $(TrustBundle) diff --git a/e2e_deployment_files/connectivity_deployment.template.json b/e2e_deployment_files/connectivity_deployment.template.json index 43e3556c7e8..199b4b10437 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" @@ -165,11 +165,20 @@ }, "DirectMethodFrequency": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -205,8 +214,8 @@ "InvocationSource": { "value": "Cloud" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "TargetModuleId": { "value": "directMethodReceiver2" @@ -225,11 +234,20 @@ }, "DirectMethodFrequency": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -268,8 +286,8 @@ "InvocationSource": { "value": "Cloud" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "TargetModuleId": { "value": "$edgeAgent" @@ -288,11 +306,20 @@ }, "DirectMethodFrequency": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -364,8 +391,8 @@ "verificationDelay": { "value": "" }, - "eventHubConnectionString": { - "value": "" + "eventHubNamespace": { + "value": "" }, "ConsumerGroupName": { "value": "" @@ -382,8 +409,8 @@ "logAnalyticsLogType": { "value": "" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "logUploadEnabled": { "value": "" @@ -399,11 +426,20 @@ }, "topology": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -427,8 +463,8 @@ "testDuration": { "value": "" }, - "ServiceClientConnectionString": { - "value": "" + "IotHubHostname": { + "value": "" }, "TargetModuleId": { "value": "twinTester2" @@ -441,11 +477,20 @@ }, "StorageOptimizeForPerformance": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -469,8 +514,8 @@ "testDuration": { "value": "" }, - "ServiceClientConnectionString": { - "value": "" + "IotHubHostname": { + "value": "" }, "TransportType": { "value": "Amqp" @@ -483,11 +528,20 @@ }, "StorageOptimizeForPerformance": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -511,8 +565,8 @@ "testDuration": { "value": "" }, - "ServiceClientConnectionString": { - "value": "" + "IotHubHostname": { + "value": "" }, "TargetModuleId": { "value": "twinTester4" @@ -525,11 +579,20 @@ }, "StorageOptimizeForPerformance": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -553,8 +616,8 @@ "testDuration": { "value": "" }, - "ServiceClientConnectionString": { - "value": "" + "IotHubHostname": { + "value": "" }, "TransportType": { "value": "Mqtt" @@ -567,11 +630,20 @@ }, "StorageOptimizeForPerformance": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -589,8 +661,8 @@ "testDuration": { "value": "" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "trackingId": { "value": "" @@ -603,11 +675,20 @@ }, "DEPLOYMENT_UPDATE_PERIOD": { "value": "" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -640,8 +721,8 @@ "C2DMESSAGE_TESTER_MODE": { "value": "Sender" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "trackingId": { "value": "" @@ -654,11 +735,20 @@ }, "ReportingEndpointUrl": { "value": "http://localhost:5001" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -670,19 +760,28 @@ "C2DMESSAGE_TESTER_MODE": { "value": "Receiver" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "transportType": { "value": "Amqp" }, "ReportingEndpointUrl": { "value": "http://testResultCoordinator:5001" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -694,8 +793,8 @@ "C2DMESSAGE_TESTER_MODE": { "value": "Sender" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "trackingId": { "value": "" @@ -711,11 +810,20 @@ }, "ReportingEndpointUrl": { "value": "http://localhost:5001" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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": { @@ -727,19 +835,28 @@ "C2DMESSAGE_TESTER_MODE": { "value": "Receiver" }, - "IOT_HUB_CONNECTION_STRING": { - "value": "" + "IOT_HUB_HOSTNAME": { + "value": "" }, "transportType": { "value": "Mqtt" }, "ReportingEndpointUrl": { "value": "http://testResultCoordinator:5001" + }, + "AZURE_TENANT_ID": { + "value": "" + }, + "AZURE_CLIENT_ID": { + "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/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/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); diff --git a/scripts/linux/trcE2ETest.sh b/scripts/linux/trcE2ETest.sh index 7e8d35112a2..f1b5b0f8d5d 100755 --- a/scripts/linux/trcE2ETest.sh +++ b/scripts/linux/trcE2ETest.sh @@ -15,8 +15,9 @@ 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 ' -eventHubConnectionString Event hub connection string for receive D2C messages.' + echo ' -iotHubHostName Hostname of IoT hub where edge device will be created.' + 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' @@ -56,6 +57,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; } @@ -162,6 +166,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" @@ -171,12 +178,15 @@ 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" 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@@$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" @@ -189,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" @@ -360,10 +371,13 @@ 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" + 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" @@ -488,6 +502,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;; @@ -497,8 +520,9 @@ function process_args() { '-containerRegistry' ) saveNextArg=4;; '-containerRegistryUsername' ) saveNextArg=5;; '-containerRegistryPassword' ) saveNextArg=6;; - '-iotHubConnectionString' ) saveNextArg=7;; - '-eventHubConnectionString' ) saveNextArg=8;; + '-iotHubHostName' ) saveNextArg=7;; + '-eventHubNamespace' ) saveNextArg=8;; + '-eventHubName' ) saveNextArg=53;; '-eventHubConsumerGroupId' ) saveNextArg=9;; '-testDuration' ) saveNextArg=10;; '-testStartDelay' ) saveNextArg=11;; @@ -542,6 +566,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" @@ -558,8 +585,9 @@ 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 "$IOT_HUB_CONNECTION_STRING" ]] && { print_error 'IoT 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; } [[ -z "$LOG_ANALYTICS_LOGTYPE" ]] && { print_error 'Log analytics log type is required'; exit 1; } @@ -571,10 +599,13 @@ 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' - if [ -z "$TRACKING_ID"]; then + if [ -z "$TRACKING_ID" ]; then TRACKING_ID=$(cat /proc/sys/kernel/random/uuid) fi } @@ -648,32 +679,32 @@ 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_NAMESPACE" \ + -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" \ - -e "$EVENTHUB_CONNECTION_STRING" \ + --iothub-hostname "$IOT_HUB_HOSTNAME" \ + -e "$EVENTHUB_NAMESPACE" \ -r "$CONTAINER_REGISTRY" \ -u "$CONTAINER_REGISTRY_USERNAME" \ -p "$CONTAINER_REGISTRY_PASSWORD" \ @@ -797,8 +828,8 @@ function run_longhaul_test() { "$quickstart_working_folder/IotEdgeQuickstart" \ -d "$device_id" \ -a "$E2E_TEST_DIR/artifacts/" \ - -c "$IOT_HUB_CONNECTION_STRING" \ - -e "$EVENTHUB_CONNECTION_STRING" \ + --iothub-hostname "$IOT_HUB_HOSTNAME" \ + -e "$EVENTHUB_NAMESPACE" \ -r "$CONTAINER_REGISTRY" \ -u "$CONTAINER_REGISTRY_USERNAME" \ -p "$CONTAINER_REGISTRY_PASSWORD" \ @@ -823,8 +854,8 @@ function run_longhaul_test() { "$quickstart_working_folder/IotEdgeQuickstart" \ -d "$device_id" \ -a "$E2E_TEST_DIR/artifacts/" \ - -c "$IOT_HUB_CONNECTION_STRING" \ - -e "$EVENTHUB_CONNECTION_STRING" \ + --iothub-hostname "$IOT_HUB_HOSTNAME" \ + -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 0fd7e5d0a0b..a60eaffc233 100644 --- a/smoke/IotEdgeQuickstart/IotEdgeQuickstart.csproj +++ b/smoke/IotEdgeQuickstart/IotEdgeQuickstart.csproj @@ -9,11 +9,13 @@ + + - + + - 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 2e84eb5eca7..62bf452f819 100644 --- a/smoke/IotEdgeQuickstart/details/Details.cs +++ b/smoke/IotEdgeQuickstart/details/Details.cs @@ -9,13 +9,15 @@ namespace IotEdgeQuickstart.Details using System.Text.RegularExpressions; 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; @@ -110,7 +112,7 @@ public class Details readonly Option credentials; - readonly string iothubConnectionString; + readonly string iothubHostName; readonly Option dpsAttestation; @@ -151,7 +153,7 @@ public class Details protected Details( IBootstrapper bootstrapper, Option credentials, - string iothubConnectionString, + string iothubHostName, string eventhubCompatibleEndpointWithEntityPath, UpstreamProtocolType upstreamProtocol, Option proxy, @@ -173,7 +175,7 @@ protected Details( { this.bootstrapper = bootstrapper; this.credentials = credentials; - this.iothubConnectionString = iothubConnectionString; + this.iothubHostName = iothubHostName; this.dpsAttestation = dpsAttestation; this.eventhubCompatibleEndpointWithEntityPath = eventhubCompatibleEndpointWithEntityPath; @@ -235,15 +237,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.CreateFromConnectionString(builder.ToString(), 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 { @@ -251,7 +252,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 { @@ -267,11 +268,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,7 +311,7 @@ protected async Task VerifyEdgeAgentIsConnectedToIotHub() this.proxy.ForEach(p => settings.HttpProxy = p); ServiceClient serviceClient = - ServiceClient.CreateFromConnectionString(this.context.IotHubConnectionString, this.serviceClientTransportType, settings); + ServiceClient.Create(this.iothubHostName, new AzureCliCredential(), this.serviceClientTransportType, settings); while (!cts.IsCancellationRequested) { @@ -377,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 @@ -542,8 +557,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); @@ -554,7 +568,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() @@ -625,20 +639,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; } @@ -647,7 +661,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 66fedef33f2..807ab822b67 100644 --- a/smoke/IotEdgeQuickstart/packages.lock.json +++ b/smoke/IotEdgeQuickstart/packages.lock.json @@ -1,1990 +1,6 @@ { "version": 1, "dependencies": { - "net8.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.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", - "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.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", - "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" - } - }, - "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.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" - }, - "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.27.2", - "contentHash": "nE6JbS1nEwOJmjVLRzOe0Fj757hQDJKmzchDkSSuiIegmmTeYuM5jhz8T3prQBiwEpmN55ScJBiAyRtWdGf1bw==", - "dependencies": { - "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "12.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": "1.1.1", - "contentHash": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==" - }, - "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": "5.0.0", - "contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==" - }, - "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": "5.0.0", - "contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w==" - }, - "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.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.21", - "contentHash": "KDYlgTyO693V6pi6SGk9eg+dDvKjuOgmkapbHdpnB1SmTPKpvWxVLIMyARJsCFLfB6axyURUJHOfvxBQ0yJKeg==", - "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.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" - }, - "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.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": "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.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.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, - "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.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" - }, - "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.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" - }, - "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": { - "Microsoft.Azure.Devices": "[1.31.6, )", - "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.2, )", - "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/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/LeafDevice.csproj b/smoke/LeafDevice/LeafDevice.csproj index 5bff0abafd3..abbe673778e 100644 --- a/smoke/LeafDevice/LeafDevice.csproj +++ b/smoke/LeafDevice/LeafDevice.csproj @@ -9,8 +9,9 @@ + - + 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 15ae31b2112..da3f15e0079 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; @@ -36,7 +37,7 @@ public enum DeviceProtocol public class Details { - readonly string iothubConnectionString; + readonly string iothubHostName; readonly string eventhubCompatibleEndpointWithEntityPath; readonly string deviceId; readonly string trustedCACertificateFileName; @@ -53,7 +54,7 @@ public class Details Option proxy; protected Details( - string iothubConnectionString, + string iothubHostName, string eventhubCompatibleEndpointWithEntityPath, string deviceId, string trustedCACertificateFileName, @@ -64,13 +65,13 @@ protected Details( Option clientCertificatePaths, Option> thumbprintCertificatePaths) { - this.iothubConnectionString = iothubConnectionString; + this.iothubHostName = iothubHostName; this.eventhubCompatibleEndpointWithEntityPath = eventhubCompatibleEndpointWithEntityPath; this.deviceId = deviceId; 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); } @@ -152,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); @@ -217,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.CreateFromConnectionString(builder.ToString(), settings); + RegistryManager rm = RegistryManager.Create(this.iothubHostName, new AzureCliCredential(), settings); Option edgeScope = await this.edgeDeviceId .Map(id => GetScopeIfExitsAsync(rm, id)) @@ -227,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) { @@ -246,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,7 +320,7 @@ protected async Task VerifyDirectMethodAsync() var settings = new ServiceClientTransportSettings(); this.proxy.ForEach(p => settings.HttpProxy = p); ServiceClient serviceClient = - ServiceClient.CreateFromConnectionString(this.context.IotHubConnectionString, this.serviceClientTransportType, settings); + ServiceClient.Create(this.iothubHostName, new AzureCliCredential(), this.serviceClientTransportType, settings); // Call a direct method TimeSpan testDuration = TimeSpan.FromSeconds(300); @@ -530,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); @@ -539,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() @@ -553,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 9b6f5d0f7e2..348fa397dd2 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, )", @@ -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" } @@ -105,16 +117,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": { @@ -197,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": { @@ -264,8 +272,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 +347,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 +386,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 +406,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", @@ -462,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" } @@ -555,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", @@ -818,6 +852,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 +1215,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 +1275,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 +1668,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 +1827,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", @@ -1944,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, )", @@ -1952,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..0eb6cd4b753 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 WorkloadIdentityCredential()); 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..1ffad407329 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 WorkloadIdentityCredential()); 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..f65fbb0d003 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 WorkloadIdentityCredential()); 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..cbfb60f735f 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 WorkloadIdentityCredential(), 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..502743f2f05 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 WorkloadIdentityCredential()); List edgeHubConnectorTests = new List(); diff --git a/test/modules/EdgeHubRestartTester/src/Settings.cs b/test/modules/EdgeHubRestartTester/src/Settings.cs index 88008b0eea8..6ce29b0ff1b 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 WorkloadIdentityCredential()); 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..e52e917339b 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 WorkloadIdentityCredential()); 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..2b85700078a 100644 --- a/test/modules/Modules.Test/packages.lock.json +++ b/test/modules/Modules.Test/packages.lock.json @@ -105,16 +105,43 @@ }, "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.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", + "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.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": { @@ -224,18 +251,19 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.7.0", + "contentHash": "gm/AEakujttMzrDhZ5QpRz3fICVkYDn/oDG9SmxDP+J7R8JDBXYU9WWG7hr6wQy40mY+wjUF0yUGXDPRDRNJwQ==" }, "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 +285,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 +347,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 +427,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 +466,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 +486,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 +576,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 +644,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 +911,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", @@ -1164,14 +1227,15 @@ "System.Threading": "4.0.11" } }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==" + }, "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 +1281,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", @@ -1354,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", @@ -1620,8 +1679,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 +1821,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 +2013,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 +2022,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 +2063,11 @@ "testresultcoordinator": { "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.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..821569f8327 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/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/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..dbb285fdd95 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; @@ -31,8 +32,9 @@ class Settings string trackingId, bool useTestResultReportingService, bool useResultEventReceivingService, - string eventHubConnectionString, - string iotHubConnectionString, + string fullyQualifiedNamespace, + string eventHubName, + string iotHubHostname, string deviceId, string moduleId, ushort webHostPort, @@ -62,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" }); } @@ -106,7 +109,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)); @@ -149,8 +152,9 @@ static Settings Create() configuration.GetValue("trackingId"), configuration.GetValue("useTestResultReportingService", true), configuration.GetValue("useResultEventReceivingService", true), - configuration.GetValue("eventHubConnectionString"), - configuration.GetValue("IOT_HUB_CONNECTION_STRING"), + configuration.GetValue("fullyQualifiedNamespace"), + configuration.GetValue("eventHubName"), + configuration.GetValue("IOT_HUB_HOSTNAME"), configuration.GetValue("IOTEDGE_DEVICEID"), configuration.GetValue("IOTEDGE_MODULEID"), configuration.GetValue("webhostPort", DefaultWebHostPort), @@ -175,7 +179,7 @@ static Settings Create() configuration.GetValue("eventHubDelayTolerance", TimeSpan.FromHours(1))); } - public string IoTHubConnectionString { get; } + public string IotHubHostname { get; } public string DeviceId { get; } @@ -232,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()); @@ -252,7 +261,7 @@ internal async Task> GetReportMetadataListAsync(ILogge { if (this.reportMetadatas == null) { - RegistryManager rm = RegistryManager.CreateFromConnectionString(this.IoTHubConnectionString); + 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); } @@ -276,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/TestReportUtil.cs b/test/modules/TestResultCoordinator/TestReportUtil.cs index b3534751a2e..4afffe11739 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 WorkloadIdentityCredential()); CloudToDeviceMethod uploadLogRequest = new CloudToDeviceMethod("UploadModuleLogs"); diff --git a/test/modules/TestResultCoordinator/TestResultCoordinator.csproj b/test/modules/TestResultCoordinator/TestResultCoordinator.csproj index bc4a548b377..4ecedf2e0e8 100644 --- a/test/modules/TestResultCoordinator/TestResultCoordinator.csproj +++ b/test/modules/TestResultCoordinator/TestResultCoordinator.csproj @@ -18,9 +18,11 @@ + + - + diff --git a/test/modules/TestResultCoordinator/packages.lock.json b/test/modules/TestResultCoordinator/packages.lock.json index 52cfcc2632c..32902f38e53 100644 --- a/test/modules/TestResultCoordinator/packages.lock.json +++ b/test/modules/TestResultCoordinator/packages.lock.json @@ -2,6 +2,29 @@ "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.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, )", @@ -25,14 +48,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 +131,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": "8.0.0", + "System.ClientModel": "1.8.0", + "System.Memory.Data": "8.0.1" + } + }, + "Azure.Core.Amqp": { + "type": "Transitive", + "resolved": "1.3.1", + "contentHash": "AY1ZM4WwLBb9L2WwQoWs7wS2XKYg83tp3yVVdgySdebGN0FuIszuEqCy3Nhv6qHpbkjx/NGuOTsUbF/oNGBgwA==", "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.Azure.Amqp": "2.6.7", + "System.Memory": "4.5.4", + "System.Memory.Data": "1.0.2" } }, "Azure.Storage.Common": { @@ -199,8 +229,8 @@ }, "Microsoft.Azure.Amqp": { "type": "Transitive", - "resolved": "2.5.12", - "contentHash": "0SlEl+TSQdpjXWf9/37dXWAa0zk6R1EJKmGtGZeKUAH7WEQpJOWMxJ9I43igcBCnTkFwa28CdPnpSCjFZVQlkw==" + "resolved": "2.7.0", + "contentHash": "gm/AEakujttMzrDhZ5QpRz3fICVkYDn/oDG9SmxDP+J7R8JDBXYU9WWG7hr6wQy40mY+wjUF0yUGXDPRDRNJwQ==" }, "Microsoft.Azure.Devices.Client": { "type": "Transitive", @@ -219,11 +249,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 +282,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 +357,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 +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", @@ -372,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": "3.14.2", @@ -436,8 +492,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 +575,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 +866,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", @@ -1157,14 +1222,15 @@ "System.Threading": "4.3.0" } }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==" + }, "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 +1289,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", @@ -1355,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", @@ -1621,8 +1682,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 +1778,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 +1821,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 +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, )", @@ -1925,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/test/modules/TwinTester/Program.cs b/test/modules/TwinTester/Program.cs index 4d806f18574..d9bdbf99d59 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 WorkloadIdentityCredential())) { 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",