From 327b86bf26ada802927d0096f870cf6dcb77ddf1 Mon Sep 17 00:00:00 2001
From: torosent <17064840+torosent@users.noreply.github.com>
Date: Fri, 13 Mar 2026 15:13:05 -0700
Subject: [PATCH 1/2] Update all NuGet dependencies to latest versions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Updated packages in Directory.Packages.props to latest compatible versions:
- Azure.Core 1.44.1→1.51.1, Azure.Storage.Blobs 12.24→12.27, Queues 12.22→12.25
- Microsoft.Bcl.AsyncInterfaces, Extensions.DI, Collections.Immutable,
DiagnosticSource, Text.Json → 10.0.5
- Microsoft.Extensions.Logging/Configuration/Hosting → 10.0.5
(unified net8.0 and non-net8.0 conditional versions)
- Microsoft.ServiceFabric 6.4→11.3, Data/Services 3.3→8.3
- Microsoft.SourceLink.GitHub 1.0→10.0.201
- System.Linq.Async 6.0→7.0, System.Reactive 4.4→6.1
- MSTest 3.5→3.11.1, Moq 4.10→4.20.72
- Azure.Identity 1.12→1.19, OpenTelemetry exporters 1.1→1.15
- Azure.Monitor.OpenTelemetry.Exporter 1.0-beta.4→1.6.0 (now stable)
- ImpromptuInterface 6.2/7.0→8.0.6 (unified, no conditional needed)
- Newtonsoft.Json 13.0.1→13.0.4, Moq 4.10→4.20.72
- Various other minor/patch bumps
Code fixes for breaking API changes:
- OrchestrationSessionManager: Fix ToDictionaryAsync for System.Linq.Async 7.0
- Test files: [DataTestMethod]→[TestMethod], ThrowsException→ThrowsExactly (MSTest 3.11)
- Azure Storage tests: Fix GetBlobsAsync/GetBlobsByHierarchyAsync required params
- DeploymentHelper: Suppress CS0618 for deprecated ServiceFabric API
- ApplicationInsightsSample: Remove DiagnosticSource VersionOverride
- AzureStorageScenarioTests: Fix incorrect 4-arg Assert.AreEqual
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---
Directory.Packages.props | 104 +++++++-------
.../DurableTaskStorageExceptionTests.cs | 2 +-
.../ApplicationInsightsSample.csproj | 2 +-
.../OrchestrationSessionManager.cs | 2 +-
.../DeploymentUtil/DeploymentHelper.cs | 2 +
...zureServiceFabric.Integration.Tests.csproj | 2 +-
.../AsyncAutoResetEventTests.cs | 2 +-
.../AzureStorageScaleTests.cs | 8 +-
.../AzureStorageScenarioTests.cs | 132 +++++++++---------
.../Correlation/CorrelationScenarioTest.cs | 22 +--
.../Correlation/StringExtensionsTest.cs | 2 +-
.../KeySanitationTests.cs | 2 +-
.../MessageManagerTests.cs | 6 +-
.../Net/UriPathTests.cs | 2 +-
.../StressTests.cs | 2 +-
.../DispatcherMiddlewareTests.cs | 2 +-
.../ExceptionHandlingIntegrationTests.cs | 4 +-
.../RetryInterceptorTests.cs | 6 +-
.../TraceContextBaseTest.cs | 2 +-
.../EmulatorFunctionalTests.cs | 4 +-
.../SampleScenarioTests.cs | 6 +-
21 files changed, 157 insertions(+), 159 deletions(-)
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 2bdd483f9..7041494bd 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -9,114 +9,108 @@
-
+
-
-
+
+
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/Test/DurableTask.AzureStorage.Tests/Storage/DurableTaskStorageExceptionTests.cs b/Test/DurableTask.AzureStorage.Tests/Storage/DurableTaskStorageExceptionTests.cs
index f57918638..399ccd2d8 100644
--- a/Test/DurableTask.AzureStorage.Tests/Storage/DurableTaskStorageExceptionTests.cs
+++ b/Test/DurableTask.AzureStorage.Tests/Storage/DurableTaskStorageExceptionTests.cs
@@ -30,7 +30,7 @@ public void MissingRequestFailedException()
Assert.IsFalse(exception.LeaseLost);
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(true, HttpStatusCode.Conflict, nameof(BlobErrorCode.LeaseLost))]
[DataRow(false, HttpStatusCode.Conflict, nameof(BlobErrorCode.LeaseNotPresentWithBlobOperation))]
[DataRow(false, HttpStatusCode.NotFound, nameof(BlobErrorCode.BlobNotFound))]
diff --git a/samples/DistributedTraceSample/ApplicationInsights/ApplicationInsightsSample.csproj b/samples/DistributedTraceSample/ApplicationInsights/ApplicationInsightsSample.csproj
index efbc910c6..19b2a63e8 100644
--- a/samples/DistributedTraceSample/ApplicationInsights/ApplicationInsightsSample.csproj
+++ b/samples/DistributedTraceSample/ApplicationInsights/ApplicationInsightsSample.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/src/DurableTask.AzureStorage/OrchestrationSessionManager.cs b/src/DurableTask.AzureStorage/OrchestrationSessionManager.cs
index abf7a58b2..b69593c80 100644
--- a/src/DurableTask.AzureStorage/OrchestrationSessionManager.cs
+++ b/src/DurableTask.AzureStorage/OrchestrationSessionManager.cs
@@ -277,7 +277,7 @@ async Task> DedupeExecutionStartedMessagesAsync(
// "Remote" -> the instance ID info comes from the Instances table that we're querying
IAsyncEnumerable instances = this.trackingStore.FetchInstanceStatusAsync(instanceIds, cancellationToken);
IDictionary remoteOrchestrationsById =
- await instances.ToDictionaryAsync(o => o.State.OrchestrationInstance.InstanceId, cancellationToken);
+ await instances.ToDictionaryAsync(o => o.State.OrchestrationInstance.InstanceId, comparer: null, cancellationToken);
foreach (MessageData message in executionStartedMessages)
{
diff --git a/test/DurableTask.AzureServiceFabric.Integration.Tests/DeploymentUtil/DeploymentHelper.cs b/test/DurableTask.AzureServiceFabric.Integration.Tests/DeploymentUtil/DeploymentHelper.cs
index 20cb25ef8..e2921fa10 100644
--- a/test/DurableTask.AzureServiceFabric.Integration.Tests/DeploymentUtil/DeploymentHelper.cs
+++ b/test/DurableTask.AzureServiceFabric.Integration.Tests/DeploymentUtil/DeploymentHelper.cs
@@ -54,7 +54,9 @@ public static async Task CleanAsync()
var replicas = (await client.QueryManager.GetDeployedReplicaListAsync(node.NodeName, application.ApplicationName)).OfType();
foreach (var replica in replicas)
{
+ #pragma warning disable CS0618 // RemoveReplicaAsync overload is deprecated
await client.ServiceManager.RemoveReplicaAsync(node.NodeName, replica.Partitionid, replica.ReplicaId);
+ #pragma warning restore CS0618
}
}
}
diff --git a/test/DurableTask.AzureServiceFabric.Integration.Tests/DurableTask.AzureServiceFabric.Integration.Tests.csproj b/test/DurableTask.AzureServiceFabric.Integration.Tests/DurableTask.AzureServiceFabric.Integration.Tests.csproj
index 09d30327f..3864bd43e 100644
--- a/test/DurableTask.AzureServiceFabric.Integration.Tests/DurableTask.AzureServiceFabric.Integration.Tests.csproj
+++ b/test/DurableTask.AzureServiceFabric.Integration.Tests/DurableTask.AzureServiceFabric.Integration.Tests.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/test/DurableTask.AzureStorage.Tests/AsyncAutoResetEventTests.cs b/test/DurableTask.AzureStorage.Tests/AsyncAutoResetEventTests.cs
index 29d0b0ef9..7b5cb1918 100644
--- a/test/DurableTask.AzureStorage.Tests/AsyncAutoResetEventTests.cs
+++ b/test/DurableTask.AzureStorage.Tests/AsyncAutoResetEventTests.cs
@@ -21,7 +21,7 @@ namespace DurableTask.AzureStorage.Tests
[TestClass]
public class AsyncAutoResetEventTests
{
- [DataTestMethod]
+ [TestMethod]
[DataRow(false, false)]
[DataRow(true, true)]
public async Task InitialState(bool initiallySignaled, bool expectedResult)
diff --git a/test/DurableTask.AzureStorage.Tests/AzureStorageScaleTests.cs b/test/DurableTask.AzureStorage.Tests/AzureStorageScaleTests.cs
index 854aa3007..7c6b9a4e0 100644
--- a/test/DurableTask.AzureStorage.Tests/AzureStorageScaleTests.cs
+++ b/test/DurableTask.AzureStorage.Tests/AzureStorageScaleTests.cs
@@ -195,7 +195,7 @@ async Task EnsureTaskHubAsync(
private async Task EnsureLeasesMatchControlQueue(string directoryReference, BlobContainerClient taskHubContainer, ControlQueue[] controlQueues)
{
- BlobItem[] leaseBlobs = await taskHubContainer.GetBlobsAsync(prefix: directoryReference).ToArrayAsync();
+ BlobItem[] leaseBlobs = await taskHubContainer.GetBlobsAsync(BlobTraits.None, BlobStates.None, directoryReference, default).ToArrayAsync();
Assert.AreEqual(controlQueues.Length, leaseBlobs.Length, "Expected to see the same number of control queues and lease blobs.");
foreach (BlobItem blobItem in leaseBlobs)
{
@@ -210,7 +210,7 @@ private async Task EnsureLeasesMatchControlQueue(string directoryReference, Blob
/// REQUIREMENT: Workers can be added or removed at any time and control-queue partitions are load-balanced automatically.
/// REQUIREMENT: No two workers will ever process the same control queue.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(PartitionManagerType.V1Legacy, 30)]
[DataRow(PartitionManagerType.V2Safe, 180)]
public async Task MultiWorkerLeaseMovement(PartitionManagerType partitionManagerType, int timeoutInSeconds)
@@ -586,7 +586,7 @@ await TestHelpers.WaitFor(
await service2.CompleteTaskOrchestrationWorkItemAsync(workItem2, runtimeState, new List(), new List(), new List(), null, null);
// Now worker 1 will attempt to complete the same work item. Since this is the first attempt to complete a work item and add a history for the orchestration (by worker 1),
// there is no etag stored for the OrchestrationSession, and so the a "conflict" exception will be thrown as worker 2 already created a history for the orchestration.
- SessionAbortedException exception = await Assert.ThrowsExceptionAsync(async () =>
+ SessionAbortedException exception = await Assert.ThrowsExactlyAsync(async () =>
await service1.CompleteTaskOrchestrationWorkItemAsync(workItem1, runtimeState, new List(), new List(), new List(), null, null)
);
Assert.IsInstanceOfType(exception.InnerException, typeof(DurableTaskStorageException));
@@ -629,7 +629,7 @@ await TestHelpers.WaitFor(
await service1.CompleteTaskOrchestrationWorkItemAsync(workItem1, runtimeState, new List(), new List(), new List(), null, null);
// Now worker 2 attempts to complete the same work item. Since this is not the first work item for the orchestration, now an etag exists for the OrchestrationSession, and the exception
// that is thrown will be "precondition failed" as the Etag is stale after worker 1 completed the work item.
- exception = await Assert.ThrowsExceptionAsync(async () =>
+ exception = await Assert.ThrowsExactlyAsync(async () =>
await service2.CompleteTaskOrchestrationWorkItemAsync(workItem2, runtimeState, new List(), new List(), new List(), null, null)
);
Assert.IsInstanceOfType(exception.InnerException, typeof(DurableTaskStorageException));
diff --git a/test/DurableTask.AzureStorage.Tests/AzureStorageScenarioTests.cs b/test/DurableTask.AzureStorage.Tests/AzureStorageScenarioTests.cs
index 3a48ee5ff..1ecd5056f 100644
--- a/test/DurableTask.AzureStorage.Tests/AzureStorageScenarioTests.cs
+++ b/test/DurableTask.AzureStorage.Tests/AzureStorageScenarioTests.cs
@@ -50,7 +50,7 @@ public class AzureStorageScenarioTests
///
/// End-to-end test which validates a simple orchestrator function which doesn't call any activity functions.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task HelloWorldOrchestration_Inline(bool enableExtendedSessions)
@@ -73,7 +73,7 @@ public async Task HelloWorldOrchestration_Inline(bool enableExtendedSessions)
///
/// End-to-end test which runs a simple orchestrator function that calls a single activity function.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task HelloWorldOrchestration_Activity(bool enableExtendedSessions)
@@ -157,7 +157,7 @@ public async Task ParentOfSequentialOrchestration()
///
/// End-to-end test which runs a slow orchestrator that causes work item renewal
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task LongRunningOrchestrator(bool enableExtendedSessions)
@@ -266,7 +266,7 @@ public async Task NoInstancesGetAllOrchestrationStatusesNullContinuationToken()
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(false, false)]
[DataRow(true, false)]
[DataRow(false, true)]
@@ -287,7 +287,7 @@ public async Task EventConversation(bool enableExtendedSessions, bool useFireAnd
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(false)]
[DataRow(true)]
public async Task AutoStart(bool enableExtendedSessions)
@@ -308,7 +308,7 @@ public async Task AutoStart(bool enableExtendedSessions)
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(false)]
[DataRow(true)]
public async Task ContinueAsNewThenTimer(bool enableExtendedSessions)
@@ -557,7 +557,7 @@ private async Task GetBlobCount(string containerName, string directoryName)
var containerClient = client.GetBlobContainerClient(containerName);
await containerClient.CreateIfNotExistsAsync();
- return await containerClient.GetBlobsAsync(traits: BlobTraits.Metadata, prefix: directoryName).CountAsync();
+ return await containerClient.GetBlobsAsync(BlobTraits.Metadata, BlobStates.None, directoryName, default).CountAsync();
}
@@ -640,7 +640,7 @@ public async Task PurgeInstanceHistoryForTimePeriodDeletePartially()
/// End-to-end test which validates parallel function execution by enumerating all files in the current directory
/// in parallel and getting the sum total of all file sizes.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task ParallelOrchestration(bool enableExtendedSessions)
@@ -660,7 +660,7 @@ public async Task ParallelOrchestration(bool enableExtendedSessions)
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task LargeFanOutOrchestration(bool enableExtendedSessions)
@@ -699,7 +699,7 @@ public async Task FanOutOrchestration_LargeHistoryBatches()
///
/// End-to-end test which validates the ContinueAsNew functionality by implementing a counter actor pattern.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task ActorOrchestration(bool enableExtendedSessions)
@@ -747,7 +747,7 @@ public async Task ActorOrchestration(bool enableExtendedSessions)
///
/// End-to-end test which validates the ContinueAsNew functionality by implementing character counter actor pattern.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task ActorOrchestrationForLargeInput(bool enableExtendedSessions)
@@ -758,7 +758,7 @@ public async Task ActorOrchestrationForLargeInput(bool enableExtendedSessions)
///
/// End-to-end test which validates the deletion of all data generated by the ContinueAsNew functionality in the character counter actor pattern.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task ActorOrchestrationDeleteAllLargeMessageBlobs(bool enableExtendedSessions)
@@ -872,7 +872,7 @@ private async Task> ValidateCharacterCoun
///
/// End-to-end test which validates the Terminate functionality.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task TerminateOrchestration(bool enableExtendedSessions)
@@ -902,7 +902,7 @@ public async Task TerminateOrchestration(bool enableExtendedSessions)
///
/// End-to-end test which validates the Suspend-Resume functionality.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task SuspendResumeOrchestration(bool enableExtendedSessions)
@@ -941,7 +941,7 @@ public async Task SuspendResumeOrchestration(bool enableExtendedSessions)
///
/// Test that a suspended orchestration can be terminated.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task TerminateSuspendedOrchestration(bool enableExtendedSessions)
@@ -970,7 +970,7 @@ public async Task TerminateSuspendedOrchestration(bool enableExtendedSessions)
/// Test that a pending orchestration can be terminated (including tests with a large termination reason that will need to be
/// stored in blob storage).
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true, true)]
[DataRow(false, true)]
[DataRow(true, false)]
@@ -1277,7 +1277,7 @@ public async Task RewindNestedSubOrchestrationTest()
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task TimerCancellation(bool enableExtendedSessions)
@@ -1305,7 +1305,7 @@ public async Task TimerCancellation(bool enableExtendedSessions)
///
/// End-to-end test which validates the handling of durable timer expiration.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task TimerExpiration(bool enableExtendedSessions)
@@ -1331,7 +1331,7 @@ public async Task TimerExpiration(bool enableExtendedSessions)
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task TimerDelay(bool useUtc)
@@ -1359,7 +1359,7 @@ public async Task TimerDelay(bool useUtc)
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(false)]
[DataRow(true)]
public async Task OrchestratorStartAtAcceptsAllDateTimeKinds(bool useUtc)
@@ -1399,7 +1399,7 @@ public async Task OrchestratorStartAtAcceptsAllDateTimeKinds(bool useUtc)
///
/// End-to-end test which validates that orchestrations run concurrently of each other (up to 100 by default).
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task OrchestrationConcurrency(bool enableExtendedSessions)
@@ -1438,7 +1438,7 @@ public async Task OrchestrationConcurrency(bool enableExtendedSessions)
///
/// End-to-end test which validates the orchestrator's exception handling behavior.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task HandledActivityException(bool enableExtendedSessions)
@@ -1461,7 +1461,7 @@ public async Task HandledActivityException(bool enableExtendedSessions)
///
/// End-to-end test which validates the handling of unhandled exceptions generated from orchestrator code.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task UnhandledOrchestrationException(bool enableExtendedSessions)
@@ -1484,7 +1484,7 @@ public async Task UnhandledOrchestrationException(bool enableExtendedSessions)
///
/// End-to-end test which validates the handling of unhandled exceptions generated from activity code.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task UnhandledActivityException(bool enableExtendedSessions)
@@ -1507,7 +1507,7 @@ public async Task UnhandledActivityException(bool enableExtendedSessions)
///
/// Fan-out/fan-in test which ensures each operation is run only once.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task FanOutToTableStorage(bool enableExtendedSessions)
@@ -1551,7 +1551,7 @@ public void ValidateEventSource()
///
/// End-to-end test which validates that orchestrations with <=60KB text message sizes can run successfully.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task SmallTextMessagePayloads(bool enableExtendedSessions)
@@ -1587,7 +1587,7 @@ public async Task SmallTextMessagePayloads(bool enableExtendedSessions)
///
/// End-to-end test which validates that orchestrations with > 60KB text message sizes can run successfully.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task LargeQueueTextMessagePayloads_BlobUrl(bool enableExtendedSessions)
@@ -1614,7 +1614,7 @@ public async Task LargeQueueTextMessagePayloads_BlobUrl(bool enableExtendedSessi
///
/// End-to-end test which validates that orchestrations with > 60KB text message sizes can run successfully.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task LargeTableTextMessagePayloads_SizeViolation_BlobUrl(bool enableExtendedSessions)
@@ -1698,7 +1698,7 @@ public async Task TagsAreAvailableInOrchestrationState()
///
/// End-to-end test which validates that orchestrations with > 60KB text message sizes can run successfully.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task LargeOverallTextMessagePayloads_BlobUrl(bool enableExtendedSessions)
@@ -1735,7 +1735,7 @@ await ValidateLargeMessageBlobUrlAsync(
///
/// End-to-end test which validates that orchestrations with > 60KB text message sizes can run successfully.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task LargeTextMessagePayloads_FetchLargeMessages(bool enableExtendedSessions)
@@ -1759,7 +1759,7 @@ public async Task LargeTextMessagePayloads_FetchLargeMessages(bool enableExtende
///
/// End-to-end test which validates that orchestrations with > 60KB text message sizes can run successfully.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task LargeTableTextMessagePayloads_FetchLargeMessages(bool enableExtendedSessions)
@@ -1811,7 +1811,7 @@ public async Task LargeOrchestrationTags()
///
/// End-to-end test which validates that orchestrations with > 60KB text message sizes can run successfully.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task NonBlobUriPayload_FetchLargeMessages_RetainsOriginalPayload(bool enableExtendedSessions)
@@ -1835,7 +1835,7 @@ public async Task NonBlobUriPayload_FetchLargeMessages_RetainsOriginalPayload(bo
///
/// End-to-end test which validates that orchestrations with > 60KB text message sizes can run successfully.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task LargeTextMessagePayloads_FetchLargeMessages_QueryState(bool enableExtendedSessions)
@@ -1863,7 +1863,7 @@ public async Task LargeTextMessagePayloads_FetchLargeMessages_QueryState(bool en
/// End-to-end test which validates that exception messages that are considered valid Urls in the Uri.TryCreate() method
/// are handled with an additional Uri format check
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task LargeTextMessagePayloads_URIFormatCheck(bool enableExtendedSessions)
@@ -1927,7 +1927,7 @@ private StringBuilder GenerateMediumRandomStringPayload(int numChars = 128 * 102
///
/// End-to-end test which validates that orchestrations with > 60KB binary bytes message sizes can run successfully.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task LargeBinaryByteMessagePayloads(bool enableExtendedSessions)
@@ -1957,7 +1957,7 @@ public async Task LargeBinaryByteMessagePayloads(bool enableExtendedSessions)
///
/// End-to-end test which validates that orchestrations with > 60KB binary string message sizes can run successfully.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task LargeBinaryStringMessagePayloads(bool enableExtendedSessions)
@@ -1989,7 +1989,7 @@ public async Task LargeBinaryStringMessagePayloads(bool enableExtendedSessions)
///
/// End-to-end test which validates that a completed singleton instance can be recreated.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task RecreateCompletedInstance(bool enableExtendedSessions)
@@ -2027,7 +2027,7 @@ public async Task RecreateCompletedInstance(bool enableExtendedSessions)
///
/// End-to-end test which validates that a failed singleton instance can be recreated.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task RecreateFailedInstance(bool enableExtendedSessions)
@@ -2062,7 +2062,7 @@ public async Task RecreateFailedInstance(bool enableExtendedSessions)
///
/// End-to-end test which validates that a terminated orchestration can be recreated.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task RecreateTerminatedInstance(bool enableExtendedSessions)
@@ -2106,7 +2106,7 @@ public async Task RecreateTerminatedInstance(bool enableExtendedSessions)
///
/// End-to-end test which validates that a running orchestration can be recreated.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task RecreateRunningInstance(bool enableExtendedSessions)
@@ -2203,7 +2203,7 @@ public async Task ExtendedSessions_SessionTimeout()
/// Tests an orchestration that does two consecutive fan-out, fan-ins.
/// This is a regression test for https://github.com/Azure/durabletask/issues/241.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task DoubleFanOut(bool enableExtendedSessions)
@@ -2236,7 +2236,7 @@ private static async Task ValidateLargeMessageBlobUrlAsync(string taskHubName, s
BlobContainerClient container = serviceClient.GetBlobContainerClient(containerName);
Assert.IsTrue(await container.ExistsAsync(), $"Blob container {containerName} is expected to exist.");
BlobItem blob = await container
- .GetBlobsByHierarchyAsync(BlobTraits.Metadata, prefix: sanitizedInstanceId)
+ .GetBlobsByHierarchyAsync(BlobTraits.Metadata, BlobStates.None, default, sanitizedInstanceId, default)
.Where(x => x.IsBlob && x.Blob.Name == sanitizedInstanceId + "/" + blobName)
.Select(x => x.Blob)
.SingleOrDefaultAsync();
@@ -2251,7 +2251,7 @@ private static async Task ValidateLargeMessageBlobUrlAsync(string taskHubName, s
///
/// Tests the behavior of from orchestrations and activities.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task AbortOrchestrationAndActivity(bool enableExtendedSessions)
@@ -2276,7 +2276,7 @@ public async Task AbortOrchestrationAndActivity(bool enableExtendedSessions)
///
///
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task ScheduledStart_Inline(bool enableExtendedSessions)
@@ -2317,7 +2317,7 @@ public async Task ScheduledStart_Inline(bool enableExtendedSessions)
///
///
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task ScheduledStart_Activity(bool enableExtendedSessions)
@@ -2358,7 +2358,7 @@ public async Task ScheduledStart_Activity(bool enableExtendedSessions)
///
///
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task ScheduledStart_Activity_GetStatus_Returns_ScheduledStart(bool enableExtendedSessions)
@@ -2403,7 +2403,7 @@ await Task.WhenAll(
/// To recover from this, users may set `AllowReplayingTerminalInstances` to true. When this is set, DTFx will not discard
/// events for terminal orchestrators, forcing a replay which eventually updates the instances table to the right state.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true, true, true)]
[DataRow(true, true, false)]
[DataRow(true, false, true)]
@@ -2501,7 +2501,7 @@ public async Task TestAllowReplayingTerminalInstances(bool enableExtendedSession
/// the tracking store context object that is part of the orchestration session state which keeps track of the blobs.
///
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true, true)]
[DataRow(false, true)]
[DataRow(true, false)]
@@ -2593,7 +2593,7 @@ public async Task TestWorkerFailingDuringCompleteWorkItemCallCompletedOrchestrat
/// Same as but for a failed orchestration.
///
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true, true)]
[DataRow(false, true)]
[DataRow(true, false)]
@@ -2685,7 +2685,7 @@ public async Task TestWorkerFailingDuringCompleteWorkItemCallFailedOrchestration
///
/// Same as but for a terminated orchestration.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true, true)]
[DataRow(false, true)]
[DataRow(true, false)]
@@ -2779,7 +2779,7 @@ public async Task TestWorkerFailingDuringCompleteWorkItemCallTerminatedOrchestra
/// Same as but for an orchestration with large input
/// and output, which will need to be stored in blob storage.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true, true)]
[DataRow(false, true)]
[DataRow(true, false)]
@@ -2872,7 +2872,7 @@ public async Task TestWorkerFailingDuringCompleteWorkItemCallLargeInputOutput(bo
/// Same as but for a large termination reason that
/// will need to be stored in blob storage.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true, true)]
[DataRow(false, true)]
[DataRow(true, false)]
@@ -2969,7 +2969,7 @@ public async Task TestWorkerFailingDuringCompleteWorkItemCallLargeTerminationRea
/// Same as but for a large exception message that will need
/// to be stored in blob storage.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true, true)]
[DataRow(false, true)]
[DataRow(true, false)]
@@ -3161,7 +3161,7 @@ public async Task OrchestrationRejectsWithVersionMismatch()
///
/// The value to use for
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task WorkerAttemptingToUpdateInstanceTableAfterStalling(bool useInstanceEtag)
@@ -3225,7 +3225,7 @@ await service.CreateTaskOrchestrationAsync(
if (useInstanceEtag)
{
// Confirm an exception is thrown due to the etag mismatch for the instance table when the worker attempts to complete the work item
- SessionAbortedException exception = await Assert.ThrowsExceptionAsync(async () =>
+ SessionAbortedException exception = await Assert.ThrowsExactlyAsync(async () =>
await service.CompleteTaskOrchestrationWorkItemAsync(workItem, runtimeState, new List(), new List(), new List(), null, null)
);
Assert.IsInstanceOfType(exception.InnerException, typeof(DurableTaskStorageException));
@@ -3276,7 +3276,7 @@ await service.CreateTaskOrchestrationAsync(
///
/// The value to use for
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task WorkerAttemptingToUpdateInstanceTableAfterStallingForSubOrchestration(bool useInstanceEtag)
@@ -3383,7 +3383,7 @@ await service.CreateTaskOrchestrationAsync(
{
// Confirm an exception is thrown because the worker attempts to insert a new entity for the suborchestration into the instance table
// when one already exists
- SessionAbortedException exception = await Assert.ThrowsExceptionAsync(async () =>
+ SessionAbortedException exception = await Assert.ThrowsExactlyAsync(async () =>
await service.CompleteTaskOrchestrationWorkItemAsync(workItem, runtimeState, new List(), new List(), new List(), null, null)
);
Assert.IsInstanceOfType(exception.InnerException, typeof(DurableTaskStorageException));
@@ -3417,7 +3417,7 @@ await service.CreateTaskOrchestrationAsync(
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task WorkerAttemptingToDequeueMessageForNonExistentInstance(bool extendedSessionsEnabled)
@@ -3469,7 +3469,7 @@ await service.SendTaskOrchestrationMessageAsync(
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(true, true)]
[DataRow(false, true)]
[DataRow(true, false)]
@@ -3562,7 +3562,7 @@ await service.SendTaskOrchestrationMessageAsync(
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(true, true)]
[DataRow(false, true)]
[DataRow(true, false)]
@@ -3675,7 +3675,7 @@ await service.SendTaskOrchestrationMessageAsync(
/// End-to-end test which validates a simple orchestrator function that calls an activity function
/// and checks the OpenTelemetry trace information
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task OpenTelemetry_SayHelloWithActivity(bool enableExtendedSessions)
@@ -3749,14 +3749,16 @@ public async Task OpenTelemetry_SayHelloWithActivity(bool enableExtendedSessions
Assert.AreEqual(activity9.SpanId, activity8.ParentSpanId);
// Checking trace ID values
- Assert.AreEqual(activity2.TraceId.ToString(), activity5.TraceId.ToString(), activity8.TraceId.ToString(), activity9.TraceId.ToString());
+ Assert.AreEqual(activity2.TraceId.ToString(), activity5.TraceId.ToString());
+ Assert.AreEqual(activity2.TraceId.ToString(), activity8.TraceId.ToString());
+ Assert.AreEqual(activity2.TraceId.ToString(), activity9.TraceId.ToString());
}
///
/// End-to-end test which validates a simple orchestrator function that waits for an external event
/// raised through the RaiseEvent API and checks the OpenTelemetry trace information
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task OpenTelemetry_ExternalEvent_RaiseEvent(bool enableExtendedSessions)
@@ -3838,7 +3840,7 @@ public async Task OpenTelemetry_ExternalEvent_RaiseEvent(bool enableExtendedSess
///
/// End-to-end test which validates a simple orchestrator function that fires a timer and checks the OpenTelemetry trace information
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task OpenTelemetry_TimerFired(bool enableExtendedSessions)
@@ -3917,7 +3919,7 @@ public async Task OpenTelemetry_TimerFired(bool enableExtendedSessions)
/// End-to-end test which validates a simple orchestrator function that waits for an external event
/// raised by calling SendEvent and checks the OpenTelemetry trace information
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task OpenTelemetry_ExternalEvent_SendEvent(bool enableExtendedSessions)
diff --git a/test/DurableTask.AzureStorage.Tests/Correlation/CorrelationScenarioTest.cs b/test/DurableTask.AzureStorage.Tests/Correlation/CorrelationScenarioTest.cs
index 91643511d..758c76745 100644
--- a/test/DurableTask.AzureStorage.Tests/Correlation/CorrelationScenarioTest.cs
+++ b/test/DurableTask.AzureStorage.Tests/Correlation/CorrelationScenarioTest.cs
@@ -31,7 +31,7 @@ namespace DurableTask.AzureStorage.Tests.Correlation
[TestClass]
public class CorrelationScenarioTest
{
- [DataTestMethod]
+ [TestMethod]
[DataRow(Protocol.W3CTraceContext, false)]
[DataRow(Protocol.HttpCorrelationProtocol, false)]
[DataRow(Protocol.W3CTraceContext, true)]
@@ -78,7 +78,7 @@ protected override string Execute(TaskContext context, string input)
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(Protocol.W3CTraceContext, false)]
[DataRow(Protocol.HttpCorrelationProtocol, false)]
[DataRow(Protocol.W3CTraceContext, true)]
@@ -113,7 +113,7 @@ public async Task SingleOrchestrationWithThrowingExceptionAsync(Protocol protoco
);
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(Protocol.W3CTraceContext, false)]
[DataRow(Protocol.HttpCorrelationProtocol, false)]
[DataRow(Protocol.W3CTraceContext, true)]
@@ -173,7 +173,7 @@ protected override async Task ExecuteAsync(TaskContext context, string i
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(Protocol.W3CTraceContext, false)]
[DataRow(Protocol.HttpCorrelationProtocol, false)]
[DataRow(Protocol.W3CTraceContext, true)]
@@ -217,7 +217,7 @@ public override Task RunTask(OrchestrationContext context, string input)
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(Protocol.W3CTraceContext, false)]
[DataRow(Protocol.HttpCorrelationProtocol, false)]
[DataRow(Protocol.W3CTraceContext, true)]
@@ -274,7 +274,7 @@ public override async Task RunTask(OrchestrationContext context, string
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(Protocol.W3CTraceContext, false)]
[DataRow(Protocol.HttpCorrelationProtocol, false)]
[DataRow(Protocol.W3CTraceContext, true)]
@@ -338,7 +338,7 @@ protected override string Execute(TaskContext context, string input)
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(Protocol.W3CTraceContext, false)]
[DataRow(Protocol.HttpCorrelationProtocol, false)]
[DataRow(Protocol.W3CTraceContext, true)]
@@ -447,7 +447,7 @@ protected override string Execute(TaskContext context, string input)
//[TestMethod] ContinueAsNew
- [DataTestMethod]
+ [TestMethod]
[DataRow(Protocol.W3CTraceContext, false)]
[DataRow(Protocol.HttpCorrelationProtocol, false)]
[DataRow(Protocol.W3CTraceContext, true)]
@@ -502,7 +502,7 @@ internal static void Reset()
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(Protocol.W3CTraceContext, false)]
[DataRow(Protocol.HttpCorrelationProtocol, false)]
[DataRow(Protocol.W3CTraceContext, true)]
@@ -576,7 +576,7 @@ internal static void Reset()
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(Protocol.W3CTraceContext, false)]
[DataRow(Protocol.HttpCorrelationProtocol, false)]
[DataRow(Protocol.W3CTraceContext, true)]
@@ -718,7 +718,7 @@ internal static void Reset()
}
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(Protocol.W3CTraceContext, false)]
[DataRow(Protocol.HttpCorrelationProtocol, false)]
[DataRow(Protocol.W3CTraceContext, true)]
diff --git a/test/DurableTask.AzureStorage.Tests/Correlation/StringExtensionsTest.cs b/test/DurableTask.AzureStorage.Tests/Correlation/StringExtensionsTest.cs
index 164e7ebc0..2ba468c19 100644
--- a/test/DurableTask.AzureStorage.Tests/Correlation/StringExtensionsTest.cs
+++ b/test/DurableTask.AzureStorage.Tests/Correlation/StringExtensionsTest.cs
@@ -35,7 +35,7 @@ public void TestParseTraceParent()
public void TestParseTraceParentThrowsException()
{
string wrongTraceparentString = "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7";
- Assert.ThrowsException(
+ Assert.ThrowsExactly(
() => { wrongTraceparentString.ToTraceParent(); });
}
diff --git a/test/DurableTask.AzureStorage.Tests/KeySanitationTests.cs b/test/DurableTask.AzureStorage.Tests/KeySanitationTests.cs
index 326ffc1e3..d631241ac 100644
--- a/test/DurableTask.AzureStorage.Tests/KeySanitationTests.cs
+++ b/test/DurableTask.AzureStorage.Tests/KeySanitationTests.cs
@@ -24,7 +24,7 @@ namespace DurableTask.AzureStorage.Tests
[TestClass]
public class KeySanitationTests
{
- [DataTestMethod]
+ [TestMethod]
[DataRow("\r")]
[DataRow("")]
[DataRow("hello")]
diff --git a/test/DurableTask.AzureStorage.Tests/MessageManagerTests.cs b/test/DurableTask.AzureStorage.Tests/MessageManagerTests.cs
index 008a9eac7..e16d13526 100644
--- a/test/DurableTask.AzureStorage.Tests/MessageManagerTests.cs
+++ b/test/DurableTask.AzureStorage.Tests/MessageManagerTests.cs
@@ -23,7 +23,7 @@ namespace DurableTask.AzureStorage.Tests
[TestClass]
public class MessageManagerTests
{
- [DataTestMethod]
+ [TestMethod]
[DataRow("System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.String, System.Private.CoreLib]]")]
[DataRow("System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.String, mscorlib]]")]
public void DeserializesStandardTypes(string dictionaryType)
@@ -49,7 +49,7 @@ public void FailsDeserializingUnknownTypes()
var messageManager = SetupMessageManager(new KnownTypeBinder());
// When/Then
- Assert.ThrowsException(() => messageManager.DeserializeMessageData(message));
+ Assert.ThrowsExactly(() => messageManager.DeserializeMessageData(message));
}
@@ -69,7 +69,7 @@ public void DeserializesCustomTypes()
Assert.AreEqual("tagValue", startedEvent.Tags["tag1"]);
}
- [DataTestMethod]
+ [TestMethod]
[DataRow("blob.bin", "blob.bin")]
[DataRow("@#$%!", "%40%23%24%25%21")]
[DataRow("foo/bar/b@z.tar.gz", "foo/bar/b%40z.tar.gz")]
diff --git a/test/DurableTask.AzureStorage.Tests/Net/UriPathTests.cs b/test/DurableTask.AzureStorage.Tests/Net/UriPathTests.cs
index 78703d5fd..4f528070a 100644
--- a/test/DurableTask.AzureStorage.Tests/Net/UriPathTests.cs
+++ b/test/DurableTask.AzureStorage.Tests/Net/UriPathTests.cs
@@ -18,7 +18,7 @@ namespace DurableTask.AzureStorage.Net
[TestClass]
public class UriPathTests
{
- [DataTestMethod]
+ [TestMethod]
[DataRow("", "", "")]
[DataRow("", "bar/baz", "bar/baz")]
[DataRow("foo", "", "foo")]
diff --git a/test/DurableTask.AzureStorage.Tests/StressTests.cs b/test/DurableTask.AzureStorage.Tests/StressTests.cs
index 101dc6b51..9bdbf5542 100644
--- a/test/DurableTask.AzureStorage.Tests/StressTests.cs
+++ b/test/DurableTask.AzureStorage.Tests/StressTests.cs
@@ -49,7 +49,7 @@ public void Cleanup()
/// both in the case where they all share the same instance ID and when they have unique
/// instance IDs.
///
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public async Task ConcurrentOrchestrationStarts(bool useSameInstanceId)
diff --git a/test/DurableTask.Core.Tests/DispatcherMiddlewareTests.cs b/test/DurableTask.Core.Tests/DispatcherMiddlewareTests.cs
index e91b7ef84..b1ff65076 100644
--- a/test/DurableTask.Core.Tests/DispatcherMiddlewareTests.cs
+++ b/test/DurableTask.Core.Tests/DispatcherMiddlewareTests.cs
@@ -339,7 +339,7 @@ public async Task EnsureActivityDispatcherMiddlewareHasAccessToRuntimeState()
Assert.AreEqual("Value", executionContext?.OrchestrationTags?["Test"]);
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(OrchestrationStatus.Completed)]
[DataRow(OrchestrationStatus.Failed)]
[DataRow(OrchestrationStatus.Terminated)]
diff --git a/test/DurableTask.Core.Tests/ExceptionHandlingIntegrationTests.cs b/test/DurableTask.Core.Tests/ExceptionHandlingIntegrationTests.cs
index a82897ca1..04745390d 100644
--- a/test/DurableTask.Core.Tests/ExceptionHandlingIntegrationTests.cs
+++ b/test/DurableTask.Core.Tests/ExceptionHandlingIntegrationTests.cs
@@ -49,7 +49,7 @@ public ExceptionHandlingIntegrationTests()
this.client = new TaskHubClient(service, loggerFactory: loggerFactory);
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(ErrorPropagationMode.SerializeExceptions)]
[DataRow(ErrorPropagationMode.UseFailureDetails)]
public async Task CatchInvalidOperationException(ErrorPropagationMode mode)
@@ -123,7 +123,7 @@ await this.worker
Assert.AreEqual(1, retryPolicyInvokedCount);
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(ErrorPropagationMode.SerializeExceptions)]
[DataRow(ErrorPropagationMode.UseFailureDetails)]
public async Task FailureDetailsOnUnhandled(ErrorPropagationMode mode)
diff --git a/test/DurableTask.Core.Tests/RetryInterceptorTests.cs b/test/DurableTask.Core.Tests/RetryInterceptorTests.cs
index eddd9b12c..d82ad53cc 100644
--- a/test/DurableTask.Core.Tests/RetryInterceptorTests.cs
+++ b/test/DurableTask.Core.Tests/RetryInterceptorTests.cs
@@ -28,10 +28,10 @@ public async Task Invoke_WithFailingRetryCall_ShouldThrowCorrectException()
var interceptor = new RetryInterceptor