diff --git a/test/Dapr.IntegrationTest.Workflow/ActivityCompletionAcknowledgementTests.cs b/test/Dapr.IntegrationTest.Workflow/ActivityCompletionAcknowledgementTests.cs index 79275831c..3989246c0 100644 --- a/test/Dapr.IntegrationTest.Workflow/ActivityCompletionAcknowledgementTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/ActivityCompletionAcknowledgementTests.cs @@ -14,6 +14,7 @@ using System.Collections.Concurrent; using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -22,7 +23,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class ActivityCompletionAcknowledgementTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ActivityCompletion_ShouldNotBeRetried_WhenAcknowledged() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/ActivityCompletionLoadTests.cs b/test/Dapr.IntegrationTest.Workflow/ActivityCompletionLoadTests.cs index 96b180329..c24ed5da7 100644 --- a/test/Dapr.IntegrationTest.Workflow/ActivityCompletionLoadTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/ActivityCompletionLoadTests.cs @@ -14,6 +14,7 @@ using System.Collections.Concurrent; using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -23,7 +24,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class ActivityCompletionLoadTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ActivityCompletions_ShouldBeAcknowledged_UnderLoad() { const int activityCount = 50; diff --git a/test/Dapr.IntegrationTest.Workflow/ActivitySleepTests.cs b/test/Dapr.IntegrationTest.Workflow/ActivitySleepTests.cs index 4edbcff55..9b2dee8d9 100644 --- a/test/Dapr.IntegrationTest.Workflow/ActivitySleepTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/ActivitySleepTests.cs @@ -14,6 +14,7 @@ using System.Diagnostics; using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -22,7 +23,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class ActivitySleepTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldHandleActivitySleep() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/ChildWorkflowRetryPolicyBackoffTests.cs b/test/Dapr.IntegrationTest.Workflow/ChildWorkflowRetryPolicyBackoffTests.cs index 48a2f19cc..583cf9592 100644 --- a/test/Dapr.IntegrationTest.Workflow/ChildWorkflowRetryPolicyBackoffTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/ChildWorkflowRetryPolicyBackoffTests.cs @@ -14,6 +14,7 @@ using System.Collections.Concurrent; using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -27,7 +28,7 @@ public sealed class ChildWorkflowRetryPolicyBackoffTests private static readonly TimeSpan FirstRetryInterval = TimeSpan.FromSeconds(5); private static readonly TimeSpan AllowedSkew = TimeSpan.FromSeconds(1); - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldRetryChildWorkflowWithBackoff() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/ContinueAsNewCarryoverEventsTests.cs b/test/Dapr.IntegrationTest.Workflow/ContinueAsNewCarryoverEventsTests.cs index 041f6ca0d..ca42bfe62 100644 --- a/test/Dapr.IntegrationTest.Workflow/ContinueAsNewCarryoverEventsTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/ContinueAsNewCarryoverEventsTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -35,7 +36,7 @@ public sealed class ContinueAsNewCarryoverEventsTests /// After the fix the full buffer is captured once all events are processed, so every /// signal survives as a carryover event and the workflow counts down to zero. /// - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ContinueAsNew_ShouldCarryOverEvents_WhenMultipleSignalsArriveTogether() { const int signalCount = 250; diff --git a/test/Dapr.IntegrationTest.Workflow/ContinueAsNewTests.cs b/test/Dapr.IntegrationTest.Workflow/ContinueAsNewTests.cs index 2b3946f3e..63c8d0970 100644 --- a/test/Dapr.IntegrationTest.Workflow/ContinueAsNewTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/ContinueAsNewTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -21,7 +22,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class ContinueAsNewTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldContinueAsNewUntilComplete() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/CurrentUtcDateTimeConsistencyTests.cs b/test/Dapr.IntegrationTest.Workflow/CurrentUtcDateTimeConsistencyTests.cs index 9ca126d48..5a7b0ff91 100644 --- a/test/Dapr.IntegrationTest.Workflow/CurrentUtcDateTimeConsistencyTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/CurrentUtcDateTimeConsistencyTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -53,7 +54,7 @@ public sealed class CurrentUtcDateTimeConsistencyTests /// while checkpoint (2) returns the second turn's timestamp, so the /// sequence is not monotonically non-decreasing and the assertion fails. /// - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task CurrentUtcDateTime_IsMonotonicallyNonDecreasing_AcrossReplays() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/DaprApiTokenWorkflowTests.cs b/test/Dapr.IntegrationTest.Workflow/DaprApiTokenWorkflowTests.cs index 22b8d727a..0521f9b4d 100644 --- a/test/Dapr.IntegrationTest.Workflow/DaprApiTokenWorkflowTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/DaprApiTokenWorkflowTests.cs @@ -14,6 +14,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Common.Options; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -24,7 +25,7 @@ public sealed class DaprApiTokenWorkflowTests { private const string DaprApiTokenEnvVarName = "DAPR_API_TOKEN"; - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldRunWorkflowWithDaprApiTokenFromEnvVar() { const string daprApiToken = "workflow-env-token"; diff --git a/test/Dapr.IntegrationTest.Workflow/ErrorHandlingTests.cs b/test/Dapr.IntegrationTest.Workflow/ErrorHandlingTests.cs index 660319899..c74adbb8e 100644 --- a/test/Dapr.IntegrationTest.Workflow/ErrorHandlingTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/ErrorHandlingTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -21,7 +22,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class ErrorHandlingTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldRetryFailedActivityAndSucceed() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -63,7 +64,7 @@ public async Task ShouldRetryFailedActivityAndSucceed() Assert.Equal("Success after retries", output); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldCancelTimerOnExternalEvent() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/ExternalEventDoesNotBlockConcurrencySlotTests.cs b/test/Dapr.IntegrationTest.Workflow/ExternalEventDoesNotBlockConcurrencySlotTests.cs index 4b96454a4..8e01aa5a3 100644 --- a/test/Dapr.IntegrationTest.Workflow/ExternalEventDoesNotBlockConcurrencySlotTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/ExternalEventDoesNotBlockConcurrencySlotTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -34,7 +35,7 @@ public sealed class ExternalEventDoesNotBlockConcurrencySlotTests /// 3 workflows that each wait on an external event, then schedule a 4th workflow and /// confirm it completes before releasing the waiting ones. /// - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task FourthWorkflow_ShouldComplete_WhileFirstThreeAreWaitingOnExternalEvent() { const int concurrencyLimit = 3; diff --git a/test/Dapr.IntegrationTest.Workflow/ExternalInputWorkflowTests.cs b/test/Dapr.IntegrationTest.Workflow/ExternalInputWorkflowTests.cs index cd48f8672..49233c917 100644 --- a/test/Dapr.IntegrationTest.Workflow/ExternalInputWorkflowTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/ExternalInputWorkflowTests.cs @@ -13,6 +13,7 @@ using Dapr.Client; using Dapr.Testcontainers.Common; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -30,7 +31,7 @@ public sealed partial class ExternalInputWorkflowTests new("Computers", 500, 100) ]; - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldHandleMultipleExternalEvents_Simple() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -77,7 +78,7 @@ public async Task ShouldHandleMultipleExternalEvents_Simple() Assert.Equal("FirstData-42-True", output); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldHandleStandardWorkflowsWithDependencyInjection() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -173,7 +174,7 @@ await daprWorkflowClient.ScheduleNewWorkflowAsync(nameof(OrderProcessingWorkflow Assert.True(resultValue.Processed); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldHandleExternalEventTimeout() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -216,7 +217,7 @@ public async Task ShouldHandleExternalEventTimeout() Assert.Equal("Timeout", output); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldHandleExternalEventWithDefaultValue() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -317,7 +318,7 @@ public enum ApprovalResult Rejected = 2 } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldHandleMultipleExternalEvents() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/FanOutFanInTests.cs b/test/Dapr.IntegrationTest.Workflow/FanOutFanInTests.cs index dffcc869f..bc064781f 100644 --- a/test/Dapr.IntegrationTest.Workflow/FanOutFanInTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/FanOutFanInTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -23,7 +24,7 @@ public sealed class FanOutFanInTests { private const string CompletedMessage = "Workflow completed!"; - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldFanOutAndFanIn() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/MaxConcurrentActivitiesTests.cs b/test/Dapr.IntegrationTest.Workflow/MaxConcurrentActivitiesTests.cs index ae13e38ec..897c61e2c 100644 --- a/test/Dapr.IntegrationTest.Workflow/MaxConcurrentActivitiesTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/MaxConcurrentActivitiesTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -25,7 +26,7 @@ public sealed class MaxConcurrentActivitiesTests /// Verifies that = 1 limits /// activity execution to a single concurrent activity even when the workflow fans out more. /// - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldRespectMaxConcurrentActivitiesLimitOfOne() { const int limit = 1; @@ -82,7 +83,7 @@ public async Task ShouldRespectMaxConcurrentActivitiesLimitOfOne() /// Verifies that = 3 allows up to /// 3 concurrent activities and that all activities complete successfully. /// - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldRespectMaxConcurrentActivitiesLimitOfThree() { const int limit = 3; diff --git a/test/Dapr.IntegrationTest.Workflow/MaxConcurrentWorkflowsTests.cs b/test/Dapr.IntegrationTest.Workflow/MaxConcurrentWorkflowsTests.cs index c1e34a998..cfec310a2 100644 --- a/test/Dapr.IntegrationTest.Workflow/MaxConcurrentWorkflowsTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/MaxConcurrentWorkflowsTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -25,7 +26,7 @@ public sealed class MaxConcurrentWorkflowsTests /// Verifies that setting to 1 /// does not deadlock the runtime and that all scheduled workflows eventually complete. /// - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldCompleteAllWorkflowsWhenLimitIsOne() { const int workflowCount = 3; @@ -86,7 +87,7 @@ await Task.WhenAll(workflowInstanceIds.Select(id => /// Verifies that a custom value /// greater than 1 does not deadlock the runtime and that all scheduled workflows complete. /// - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldCompleteAllWorkflowsWithCustomConcurrencyLimit() { const int limit = 2; diff --git a/test/Dapr.IntegrationTest.Workflow/MultiAppActivityTests.cs b/test/Dapr.IntegrationTest.Workflow/MultiAppActivityTests.cs index 5f2e28b00..1051fe858 100644 --- a/test/Dapr.IntegrationTest.Workflow/MultiAppActivityTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/MultiAppActivityTests.cs @@ -14,6 +14,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Common.Options; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -22,7 +23,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class MultiAppActivityTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldScheduleActivityOnRemoteAppUsingAppId() { var guid = Guid.NewGuid().ToString("N"); diff --git a/test/Dapr.IntegrationTest.Workflow/MultiAppChildWorkflowAndActivityTests.cs b/test/Dapr.IntegrationTest.Workflow/MultiAppChildWorkflowAndActivityTests.cs index 9ea19699f..a7d4cef45 100644 --- a/test/Dapr.IntegrationTest.Workflow/MultiAppChildWorkflowAndActivityTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/MultiAppChildWorkflowAndActivityTests.cs @@ -14,6 +14,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Common.Options; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -27,7 +28,7 @@ public sealed class MultiAppChildWorkflowAndActivityTests private static readonly string App2Id = $"workflow-app-2-{UniqueId}"; private static readonly string App3Id = $"workflow-app-3-{UniqueId}"; - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldScheduleChildWorkflowOnRemoteApp_ThatCallsActivityOnAnotherRemoteApp_UsingAppIds() { var options1 = new DaprRuntimeOptions().WithAppId(App1Id); diff --git a/test/Dapr.IntegrationTest.Workflow/MultiAppChildWorkflowTests.cs b/test/Dapr.IntegrationTest.Workflow/MultiAppChildWorkflowTests.cs index 1a4c2ff08..662a96d70 100644 --- a/test/Dapr.IntegrationTest.Workflow/MultiAppChildWorkflowTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/MultiAppChildWorkflowTests.cs @@ -14,6 +14,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Common.Options; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -22,7 +23,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class MultiAppChildWorkflowTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldScheduleChildWorkflowOnRemoteAppUsingAppId() { var guid = Guid.NewGuid().ToString("N"); diff --git a/test/Dapr.IntegrationTest.Workflow/ParallelExecutionTests.cs b/test/Dapr.IntegrationTest.Workflow/ParallelExecutionTests.cs index 806ee0e60..cca458b86 100644 --- a/test/Dapr.IntegrationTest.Workflow/ParallelExecutionTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/ParallelExecutionTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -21,7 +22,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class ParallelExecutionTests { - [Fact] + [MinimumDaprRuntimeFact("1.17.0")] public async Task ShouldExecuteActivitiesInParallel() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -70,7 +71,7 @@ public async Task ShouldExecuteActivitiesInParallel() Assert.True(duration.TotalSeconds < 5, $"Expected parallel execution to complete in < 5 seconds, took {duration.TotalSeconds}"); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldFanOutFanInWithActivities() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/PauseResumeTests.cs b/test/Dapr.IntegrationTest.Workflow/PauseResumeTests.cs index 1bc41a7be..b36ca8f8a 100644 --- a/test/Dapr.IntegrationTest.Workflow/PauseResumeTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/PauseResumeTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -21,7 +22,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class PauseResumeTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldReportPausedStatusWhenWorkflowIsSuspended() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -63,7 +64,7 @@ public async Task ShouldReportPausedStatusWhenWorkflowIsSuspended() Assert.Equal(WorkflowRuntimeStatus.Suspended, pausedState.RuntimeStatus); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldPauseAndResumeWorkflow() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/PurgeTests.cs b/test/Dapr.IntegrationTest.Workflow/PurgeTests.cs index 6c847f11b..07e9f767c 100644 --- a/test/Dapr.IntegrationTest.Workflow/PurgeTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/PurgeTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Grpc.Core; using Microsoft.Extensions.Configuration; @@ -22,7 +23,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class PurgeTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldPurgeCompletedWorkflowInstance() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -68,7 +69,7 @@ public async Task ShouldPurgeCompletedWorkflowInstance() Assert.Null(stateAfterPurge); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task PurgeShouldNotWorkOnSuspendedWorkflowInstance() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -112,7 +113,7 @@ await Assert.ThrowsAnyAsync(() => await daprWorkflowClient.TerminateWorkflowAsync(workflowInstanceId, cancellation: TestContext.Current.CancellationToken); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldPurgeTerminatedWorkflowInstance() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/ReplaySafetyTests.cs b/test/Dapr.IntegrationTest.Workflow/ReplaySafetyTests.cs index f5b8f208e..9f9ace5e6 100644 --- a/test/Dapr.IntegrationTest.Workflow/ReplaySafetyTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/ReplaySafetyTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -22,7 +23,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed partial class ReplaySafetyTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ReplaySafeLogger_ShouldNotDuplicateLogsOnReplay() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -64,7 +65,7 @@ public async Task ReplaySafeLogger_ShouldNotDuplicateLogsOnReplay() Assert.Equal("Completed", output); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task Workflow_ShouldUseDeterministicGuidGeneration() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -110,7 +111,7 @@ public async Task Workflow_ShouldUseDeterministicGuidGeneration() Assert.All(guids, g => Assert.NotEqual(Guid.Empty, g)); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task NewGuid_ShouldRemainStableAcrossReplays() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/SubworkflowTests.cs b/test/Dapr.IntegrationTest.Workflow/SubworkflowTests.cs index 63644579a..ab845dc0b 100644 --- a/test/Dapr.IntegrationTest.Workflow/SubworkflowTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/SubworkflowTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -21,7 +22,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class SubworkflowTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldHandleSubworkflow() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -68,7 +69,7 @@ public async Task ShouldHandleSubworkflow() Assert.True(subworkflowResultValue); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldHandleMultipleParallelSubworkflows() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/TaskChainingWorkflowTests.cs b/test/Dapr.IntegrationTest.Workflow/TaskChainingWorkflowTests.cs index 20c0bc7ad..5d913e901 100644 --- a/test/Dapr.IntegrationTest.Workflow/TaskChainingWorkflowTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/TaskChainingWorkflowTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -23,7 +24,7 @@ public sealed class TaskChainingWorkflowTests { private static readonly int[] expected = [43, 45, 90]; - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldHandleTaskChaining() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/TaskExecutionKeyTests.cs b/test/Dapr.IntegrationTest.Workflow/TaskExecutionKeyTests.cs index 29362e6f3..b21a63916 100644 --- a/test/Dapr.IntegrationTest.Workflow/TaskExecutionKeyTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/TaskExecutionKeyTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -21,7 +22,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class TaskExecutionKeyTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ActivityContext_ShouldContainTaskExecutionKey() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/TerminateWorkflowTests.cs b/test/Dapr.IntegrationTest.Workflow/TerminateWorkflowTests.cs index 933afa14c..cb83f2610 100644 --- a/test/Dapr.IntegrationTest.Workflow/TerminateWorkflowTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/TerminateWorkflowTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -21,7 +22,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class TerminateWorkflowTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldTerminateRunningWorkflow() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); @@ -77,7 +78,7 @@ await Assert.ThrowsAnyAsync(() => Assert.Equal(WorkflowRuntimeStatus.Terminated, result.RuntimeStatus); } - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldReturnFromTerminateGrpcCall() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/TimerTests.cs b/test/Dapr.IntegrationTest.Workflow/TimerTests.cs index 905392656..4ef6535c0 100644 --- a/test/Dapr.IntegrationTest.Workflow/TimerTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/TimerTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -24,7 +25,7 @@ public sealed class TimerTests private const string InitialMessage = "Test1"; private const string FinalMessage = "Test2"; - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ValidateStatusMessagesWithDelay() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/WorkflowMonitorTests.cs b/test/Dapr.IntegrationTest.Workflow/WorkflowMonitorTests.cs index 03fe6d8bb..727386ea6 100644 --- a/test/Dapr.IntegrationTest.Workflow/WorkflowMonitorTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/WorkflowMonitorTests.cs @@ -13,6 +13,7 @@ using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -21,7 +22,7 @@ namespace Dapr.IntegrationTest.Workflow; public sealed class WorkflowMonitorTests { - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldHandleContinueAsNew() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components"); diff --git a/test/Dapr.IntegrationTest.Workflow/WorkflowRetryPolicyBackoffTests.cs b/test/Dapr.IntegrationTest.Workflow/WorkflowRetryPolicyBackoffTests.cs index a95d1539a..2622eb2ec 100644 --- a/test/Dapr.IntegrationTest.Workflow/WorkflowRetryPolicyBackoffTests.cs +++ b/test/Dapr.IntegrationTest.Workflow/WorkflowRetryPolicyBackoffTests.cs @@ -14,6 +14,7 @@ using System.Collections.Concurrent; using Dapr.Testcontainers.Common; using Dapr.Testcontainers.Harnesses; +using Dapr.Testcontainers.Xunit.Attributes; using Dapr.Workflow; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -27,7 +28,7 @@ public sealed class WorkflowRetryPolicyBackoffTests private static readonly TimeSpan FirstRetryInterval = TimeSpan.FromSeconds(5); private static readonly TimeSpan AllowedSkew = TimeSpan.FromSeconds(1); - [Fact] + [MinimumDaprRuntimeFact("1.17")] public async Task ShouldRetryActivityWithBackoff() { var componentsDir = TestDirectoryManager.CreateTestDirectory("workflow-components");