Skip to content

Commit 9fd3330

Browse files
committed
Added tests
1 parent dcb05ee commit 9fd3330

File tree

5 files changed

+138
-11
lines changed

5 files changed

+138
-11
lines changed

Core/Cleipnir.ResilientFunctions.Tests/InMemoryTests/StoreTests.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,14 @@ public override Task RestartExecutionWorksWithEmptyEffectsAndMessages()
229229
=> RestartExecutionWorksWithEmptyEffectsAndMessages(FunctionStoreFactory.Create());
230230

231231
[TestMethod]
232-
public override Task EffectAndMessagesArePersistedOnSuspendFunction()
233-
=> EffectAndMessagesArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
232+
public override Task EffectsAndMessagesArePersistedOnSuspendFunction()
233+
=> EffectsAndMessagesArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
234+
235+
[TestMethod]
236+
public override Task MessagesOnlyArePersistedOnSuspendFunction()
237+
=> MessagesOnlyArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
238+
239+
[TestMethod]
240+
public override Task EffectsOnlyArePersistedOnSuspendFunction()
241+
=> EffectsOnlyArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
234242
}

Core/Cleipnir.ResilientFunctions.Tests/TestTemplates/StoreTests.cs

Lines changed: 98 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1845,8 +1845,8 @@ await store.CreateFunction(
18451845
messages.Count.ShouldBe(0);
18461846
}
18471847

1848-
public abstract Task EffectAndMessagesArePersistedOnSuspendFunction();
1849-
protected async Task EffectAndMessagesArePersistedOnSuspendFunction(Task<IFunctionStore> storeTask)
1848+
public abstract Task EffectsAndMessagesArePersistedOnSuspendFunction();
1849+
protected async Task EffectsAndMessagesArePersistedOnSuspendFunction(Task<IFunctionStore> storeTask)
18501850
{
18511851
var storedId = TestStoredId.Create();
18521852

@@ -1874,7 +1874,7 @@ await store.CreateFunction(
18741874
var storedMessages = new List<StoredMessage>
18751875
{
18761876
new("Hallo".ToUtf8Bytes(), typeof(string).SimpleQualifiedName().ToUtf8Bytes()),
1877-
new("Hallo".ToUtf8Bytes(), typeof(string).SimpleQualifiedName().ToUtf8Bytes())
1877+
new("World".ToUtf8Bytes(), typeof(string).SimpleQualifiedName().ToUtf8Bytes())
18781878
};
18791879

18801880
await store.SuspendFunction(
@@ -1888,7 +1888,102 @@ await store.SuspendFunction(
18881888

18891889
var fetchedEffects = await store.EffectsStore.GetEffectResults(storedId);
18901890
fetchedEffects.Count.ShouldBe(2);
1891+
var fetchedEffect1 = fetchedEffects.Single(s => s.EffectId == effectId1);
1892+
fetchedEffect1.Result!.ToStringFromUtf8Bytes().ShouldBe("Hallo");
1893+
var fetchedEffect2 = fetchedEffects.Single(s => s.EffectId == effectId2);
1894+
fetchedEffect2.Result!.ToStringFromUtf8Bytes().ShouldBe("World");
1895+
1896+
var fetchedMessages = await store.MessageStore.GetMessages(storedId, skip: 0);
1897+
fetchedMessages.Count.ShouldBe(2);
1898+
fetchedMessages[0].MessageContent.ToStringFromUtf8Bytes().ShouldBe("Hallo");
1899+
fetchedMessages[1].MessageContent.ToStringFromUtf8Bytes().ShouldBe("World");
1900+
}
1901+
1902+
public abstract Task MessagesOnlyArePersistedOnSuspendFunction();
1903+
protected async Task MessagesOnlyArePersistedOnSuspendFunction(Task<IFunctionStore> storeTask)
1904+
{
1905+
var storedId = TestStoredId.Create();
1906+
1907+
var store = await storeTask;
1908+
var paramJson = PARAM.ToJson();
1909+
1910+
await store.CreateFunction(
1911+
storedId,
1912+
"humanInstanceId",
1913+
paramJson.ToUtf8Bytes(),
1914+
leaseExpiration: DateTime.UtcNow.Ticks,
1915+
postponeUntil: null,
1916+
timestamp: DateTime.UtcNow.Ticks,
1917+
parent: null
1918+
).ShouldBeTrueAsync();
1919+
1920+
var storedMessages = new List<StoredMessage>
1921+
{
1922+
new("Hallo".ToUtf8Bytes(), typeof(string).SimpleQualifiedName().ToUtf8Bytes()),
1923+
new("World".ToUtf8Bytes(), typeof(string).SimpleQualifiedName().ToUtf8Bytes())
1924+
};
1925+
1926+
await store.SuspendFunction(
1927+
storedId,
1928+
timestamp: DateTime.UtcNow.Ticks,
1929+
expectedEpoch: 0,
1930+
effects: null,
1931+
storedMessages,
1932+
complimentaryState: new ComplimentaryState(() => null, LeaseLength: 0)
1933+
).ShouldBeTrueAsync();
1934+
1935+
var fetchedEffects = await store.EffectsStore.GetEffectResults(storedId);
1936+
fetchedEffects.Count.ShouldBe(0);
1937+
18911938
var fetchedMessages = await store.MessageStore.GetMessages(storedId, skip: 0);
18921939
fetchedMessages.Count.ShouldBe(2);
1940+
fetchedMessages[0].MessageContent.ToStringFromUtf8Bytes().ShouldBe("Hallo");
1941+
fetchedMessages[1].MessageContent.ToStringFromUtf8Bytes().ShouldBe("World");
1942+
}
1943+
1944+
public abstract Task EffectsOnlyArePersistedOnSuspendFunction();
1945+
protected async Task EffectsOnlyArePersistedOnSuspendFunction(Task<IFunctionStore> storeTask)
1946+
{
1947+
var storedId = TestStoredId.Create();
1948+
1949+
var store = await storeTask;
1950+
var paramJson = PARAM.ToJson();
1951+
1952+
await store.CreateFunction(
1953+
storedId,
1954+
"humanInstanceId",
1955+
paramJson.ToUtf8Bytes(),
1956+
leaseExpiration: DateTime.UtcNow.Ticks,
1957+
postponeUntil: null,
1958+
timestamp: DateTime.UtcNow.Ticks,
1959+
parent: null
1960+
).ShouldBeTrueAsync();
1961+
1962+
var effectId1 = new EffectId("EffectId#1", EffectType.Effect, Context: "");
1963+
var effectId2 = new EffectId("EffectId#2", EffectType.Effect, Context: "");
1964+
var storedEffects = new List<StoredEffectChange>
1965+
{
1966+
new(storedId, effectId1.ToStoredEffectId(), CrudOperation.Insert, new StoredEffect(effectId1, effectId1.ToStoredEffectId(), WorkStatus.Completed, Result: "Hallo".ToUtf8Bytes(), StoredException: null)),
1967+
new(storedId, effectId2.ToStoredEffectId(), CrudOperation.Insert, new StoredEffect(effectId2, effectId2.ToStoredEffectId(), WorkStatus.Completed, Result: "World".ToUtf8Bytes(), StoredException: null)),
1968+
};
1969+
1970+
await store.SuspendFunction(
1971+
storedId,
1972+
timestamp: DateTime.UtcNow.Ticks,
1973+
expectedEpoch: 0,
1974+
storedEffects,
1975+
messages: null,
1976+
complimentaryState: new ComplimentaryState(() => null, LeaseLength: 0)
1977+
).ShouldBeTrueAsync();
1978+
1979+
var fetchedEffects = await store.EffectsStore.GetEffectResults(storedId);
1980+
fetchedEffects.Count.ShouldBe(2);
1981+
var fetchedEffect1 = fetchedEffects.Single(s => s.EffectId == effectId1);
1982+
fetchedEffect1.Result!.ToStringFromUtf8Bytes().ShouldBe("Hallo");
1983+
var fetchedEffect2 = fetchedEffects.Single(s => s.EffectId == effectId2);
1984+
fetchedEffect2.Result!.ToStringFromUtf8Bytes().ShouldBe("World");
1985+
1986+
var fetchedMessages = await store.MessageStore.GetMessages(storedId, skip: 0);
1987+
fetchedMessages.Count.ShouldBe(0);
18931988
}
18941989
}

Stores/MariaDB/Cleipnir.ResilientFunctions.MariaDB.Tests/StoreTests.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,14 @@ public override Task RestartExecutionWorksWithEmptyEffectsAndMessages()
220220
=> RestartExecutionWorksWithEmptyEffectsAndMessages(FunctionStoreFactory.Create());
221221

222222
[TestMethod]
223-
public override Task EffectAndMessagesArePersistedOnSuspendFunction()
224-
=> EffectAndMessagesArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
223+
public override Task EffectsAndMessagesArePersistedOnSuspendFunction()
224+
=> EffectsAndMessagesArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
225+
226+
[TestMethod]
227+
public override Task MessagesOnlyArePersistedOnSuspendFunction()
228+
=> MessagesOnlyArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
229+
230+
[TestMethod]
231+
public override Task EffectsOnlyArePersistedOnSuspendFunction()
232+
=> EffectsOnlyArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
225233
}

Stores/PostgreSQL/Cleipnir.ResilientFunctions.PostgreSQL.Tests/StoreTests.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,14 @@ public override Task RestartExecutionWorksWithEmptyEffectsAndMessages()
222222
=> RestartExecutionWorksWithEmptyEffectsAndMessages(FunctionStoreFactory.Create());
223223

224224
[TestMethod]
225-
public override Task EffectAndMessagesArePersistedOnSuspendFunction()
226-
=> EffectAndMessagesArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
225+
public override Task EffectsAndMessagesArePersistedOnSuspendFunction()
226+
=> EffectsAndMessagesArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
227+
228+
[TestMethod]
229+
public override Task MessagesOnlyArePersistedOnSuspendFunction()
230+
=> MessagesOnlyArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
231+
232+
[TestMethod]
233+
public override Task EffectsOnlyArePersistedOnSuspendFunction()
234+
=> EffectsOnlyArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
227235
}

Stores/SqlServer/Cleipnir.ResilientFunctions.SqlServer.Tests/StoreTests.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,14 @@ public override Task RestartExecutionWorksWithEmptyEffectsAndMessages()
221221
=> RestartExecutionWorksWithEmptyEffectsAndMessages(FunctionStoreFactory.Create());
222222

223223
[TestMethod]
224-
public override Task EffectAndMessagesArePersistedOnSuspendFunction()
225-
=> EffectAndMessagesArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
224+
public override Task EffectsAndMessagesArePersistedOnSuspendFunction()
225+
=> EffectsAndMessagesArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
226+
227+
[TestMethod]
228+
public override Task MessagesOnlyArePersistedOnSuspendFunction()
229+
=> MessagesOnlyArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
230+
231+
[TestMethod]
232+
public override Task EffectsOnlyArePersistedOnSuspendFunction()
233+
=> EffectsOnlyArePersistedOnSuspendFunction(FunctionStoreFactory.Create());
226234
}

0 commit comments

Comments
 (0)