Skip to content

Commit

Permalink
Added Clear-method to Activities
Browse files Browse the repository at this point in the history
  • Loading branch information
stidsborg committed Jan 20, 2024
1 parent 5bfa775 commit 05c427b
Show file tree
Hide file tree
Showing 8 changed files with 67 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,8 @@ public override Task ExceptionThrowingActionTest()
[TestMethod]
public override Task TaskWhenAnyFuncTest()
=> TaskWhenAnyFuncTest(new InMemoryFunctionStore().CastTo<IFunctionStore>().ToTask());

[TestMethod]
public override Task ClearActivityTest()
=> ClearActivityTest(new InMemoryFunctionStore().CastTo<IFunctionStore>().ToTask());
}
Original file line number Diff line number Diff line change
Expand Up @@ -250,4 +250,39 @@ async Task<int> (string param, Context context) =>
storedActivity.WorkStatus.ShouldBe(WorkStatus.Completed);
storedActivity.Result!.DeserializeFromJsonTo<int>().ShouldBe(2);
}

public abstract Task ClearActivityTest();
public async Task ClearActivityTest(Task<IFunctionStore> storeTask)
{
var store = await storeTask;
using var rFunctions = new RFunctions(store);
var functionId = TestFunctionId.Create();
var (functionTypeId, functionInstanceId) = functionId;

await store.CreateFunction(
functionId,
Test.SimpleStoredParameter,
Test.SimpleStoredScrapbook,
leaseExpiration: DateTime.Now.Ticks,
postponeUntil: null,
timestamp: DateTime.Now.Ticks
);

var registration = rFunctions.RegisterAction(
functionTypeId,
async Task (string param, Context context) =>
{
var (activities, _) = context;
await activities.Clear("SomeActivity");
});

var controlPanel = await registration.ControlPanel(functionId.InstanceId);
controlPanel.ShouldNotBeNull();

await controlPanel.Activities.SetSucceeded("SomeActivity");
await controlPanel.ReInvoke();

await controlPanel.Refresh();
controlPanel.Activities.All.Count.ShouldBe(0);
}
}
2 changes: 1 addition & 1 deletion Core/Cleipnir.ResilientFunctions.Tests/Utils/Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace Cleipnir.ResilientFunctions.Tests.Utils;
public static class Test
{
public static StoredParameter SimpleStoredParameter { get; } =
new(ParamJson: "hello world", ParamType: typeof(string).SimpleQualifiedName());
new(ParamJson: "hello world".ToJson(), ParamType: typeof(string).SimpleQualifiedName());

public static StoredScrapbook SimpleStoredScrapbook { get; }
= new(ScrapbookJson: new RScrapbook().ToJson(), ScrapbookType: typeof(RScrapbook).SimpleQualifiedName());
Expand Down
11 changes: 11 additions & 0 deletions Core/Cleipnir.ResilientFunctions/Domain/Activities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,17 @@ await _activityStore.SetActivityResult(

return result;
}

public async Task Clear(string id)
{
lock (_sync)
if (!_activityResults.ContainsKey(id))
return;

await _activityStore.DeleteActivityResult(_functionId, id);
lock (_sync)
_activityResults.Remove(id);
}

public Task<T> WhenAny<T>(string id, params Task<T>[] tasks)
=> Do(id, async () => await await Task.WhenAny(tasks));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,8 @@ public override Task ExceptionThrowingActionTest()
[TestMethod]
public override Task TaskWhenAnyFuncTest()
=> TaskWhenAnyFuncTest(FunctionStoreFactory.Create());

[TestMethod]
public override Task ClearActivityTest()
=> ClearActivityTest(FunctionStoreFactory.Create());
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,8 @@ public override Task ExceptionThrowingActionTest()
[TestMethod]
public override Task TaskWhenAnyFuncTest()
=> TaskWhenAnyFuncTest(FunctionStoreFactory.Create());

[TestMethod]
public override Task ClearActivityTest()
=> ClearActivityTest(FunctionStoreFactory.Create());
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,8 @@ public override Task ExceptionThrowingActionTest()
[TestMethod]
public override Task TaskWhenAnyFuncTest()
=> TaskWhenAnyFuncTest(FunctionStoreFactory.Create());

[TestMethod]
public override Task ClearActivityTest()
=> ClearActivityTest(FunctionStoreFactory.Create());
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,8 @@ public override Task ExceptionThrowingActionTest()
[TestMethod]
public override Task TaskWhenAnyFuncTest()
=> TaskWhenAnyFuncTest(FunctionStoreFactory.Create());

[TestMethod]
public override Task ClearActivityTest()
=> ClearActivityTest(FunctionStoreFactory.Create());
}

0 comments on commit 05c427b

Please sign in to comment.