Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<LangVersion>7.1</LangVersion>
<TargetFramework>net6.0</TargetFramework>
<LangVersion>latest</LangVersion>
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
<PackageReference Include="MSTest.TestAdapter" Version="2.1.2" />
<PackageReference Include="MSTest.TestFramework" Version="2.1.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.1" />
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
</ItemGroup>

<ItemGroup>
Expand Down
13 changes: 7 additions & 6 deletions src/Forte.Functions.Testable/Forte.Functions.Testable.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<LangVersion>7.1</LangVersion>
<TargetFramework>net6.0</TargetFramework>
<LangVersion>latest</LangVersion>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>Fredrik Kalseth</Authors>
<Company>Forte Technology</Company>
Expand All @@ -12,11 +12,12 @@
<RepositoryUrl>https://github.com/fortedigital/Forte.Functions.Testable</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>azure functions azure-functions azure-functions-v2 durable-functions unit-testing</PackageTags>
<AssemblyVersion>2.5.0.0</AssemblyVersion>
<FileVersion>2.5.0.0</FileVersion>
<AssemblyVersion>2.6.0.0</AssemblyVersion>
<FileVersion>2.6.0.0</FileVersion>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<Description>
Changelog:
2.6 Updated for Microsoft.Azure.DurableTask.Core 2.13.0 and Microsoft.Azure.WebJobs.Extensions.DurableTask 2.10.0
2.5 Updated for Microsoft.Azure.DurableTask.Core 2.9.0 and Microsoft.Azure.WebJobs.Extensions.DurableTask 2.7.0
2.4 Added WaitForCustomStatus(predicate). Updated for DurableTask.Core 2.6.0
2.3 Added WaitForOrchestrationToReachStatus(status[]) and WaitForOrchestrationToFinish. Added TaskFailed history event to orchestration start failures.
Expand All @@ -31,9 +32,9 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Azure.DurableTask.Core" Version="2.9.0" />
<PackageReference Include="Microsoft.Azure.DurableTask.Core" Version="2.13.0" />
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.7.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.10.0" />
</ItemGroup>

</Project>
41 changes: 40 additions & 1 deletion src/Forte.Functions.Testable/InMemoryOrchestrationClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,31 @@ public Task TerminateAsync(string instanceId, string reason)
return Task.CompletedTask;
}

public Task SuspendAsync(string instanceId, string reason)
{
if (_instances.TryGetValue(instanceId, out var instance))
{
instance.Suspend(reason);
}
return Task.CompletedTask;
}

public Task ResumeAsync(string instanceId, string reason)
{
if (_instances.TryGetValue(instanceId, out var instance))
{
instance.Resume(reason);
}
return Task.CompletedTask;
}

public Task RewindAsync(string instanceId, string reason)
{
throw new NotImplementedException();
if (_instances.TryGetValue(instanceId, out var instance))
{
instance.Rewind(reason);
}
return Task.CompletedTask;
}

public Task<DurableOrchestrationStatus> GetStatusAsync(string instanceId, bool showHistory = true, bool showHistoryOutput = true, bool showInput = true)
Expand All @@ -136,6 +158,18 @@ public Task<DurableOrchestrationStatus> GetStatusAsync(string instanceId, bool s

}

public Task<IList<DurableOrchestrationStatus>> GetStatusAsync(IEnumerable<string> instanceIds, bool showHistory = false, bool showHistoryOutput = false,
bool showInput = false)
{
var statuses =
instanceIds
.Select(instanceId => GetStatusAsync(instanceId, showHistory, showHistoryOutput, showInput))
.ToArray();
Task.WaitAll(statuses);
IList<DurableOrchestrationStatus> result = statuses.Select(status => status.Result).ToList();
return Task.FromResult(result);
}

public Task<IList<DurableOrchestrationStatus>> GetStatusAsync(DateTime? createdTimeFrom, DateTime? createdTimeTo, IEnumerable<OrchestrationRuntimeStatus> runtimeStatus,
CancellationToken cancellationToken = new CancellationToken())
{
Expand All @@ -154,6 +188,11 @@ public Task<PurgeHistoryResult> PurgeInstanceHistoryAsync(string instanceId)
throw new NotImplementedException();
}

public Task<PurgeHistoryResult> PurgeInstanceHistoryAsync(IEnumerable<string> instanceIds)
{
throw new NotImplementedException();
}

public Task<PurgeHistoryResult> PurgeInstanceHistoryAsync(DateTime createdTimeFrom, DateTime? createdTimeTo, IEnumerable<OrchestrationStatus> runtimeStatus)
{
throw new NotImplementedException();
Expand Down
17 changes: 17 additions & 0 deletions src/Forte.Functions.Testable/InMemoryOrchestrationContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -588,5 +588,22 @@ private IEnumerable<object> ParametersForFunction(string functionName, MethodInf
}
}
}

public void Suspend(string reason)
{
Status = OrchestrationRuntimeStatus.Suspended;
History.Add(new ExecutionSuspendedEvent(History.Count, reason));
}

public void Resume(string reason)
{
Status = OrchestrationRuntimeStatus.Pending;
History.Add(new ExecutionResumedEvent(History.Count, reason));
}

public void Rewind(string reason)
{
Status = OrchestrationRuntimeStatus.Running;
}
}
}