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
Expand Up @@ -11,82 +11,82 @@ public class EffectIdTests
[TestMethod]
public void EffectIdWithStateCanBeDeserialized()
{
var effectId = new EffectId("SomeValue", EffectType.State, Context: "");
var effectId = new EffectId("SomeValue", "");
var serializedId = effectId.Serialize();
var deserializedId = EffectId.Deserialize(serializedId);

deserializedId.ShouldBe(effectId);
}

[TestMethod]
public void EffectIdWithContextCanBeDeserialized()
{
var parentEffect = new EffectId("SomeParentId", EffectType.Effect, Context: "ESomeParentContext");
var effectId = new EffectId("SomeValue", EffectType.State, Context: parentEffect.Serialize().Value);
var parentEffect = new EffectId("SomeParentId", "ESomeParentContext");
var effectId = new EffectId("SomeValue", parentEffect.Serialize().Value);
var serializedId = effectId.Serialize();
var deserializedId = EffectId.Deserialize(serializedId);

deserializedId.ShouldBe(effectId);
}

[TestMethod]
public void EffectIdWithContextAndEscapedCharactersCanBeDeserialized()
{
var parentEffect = new EffectId("SomeParentId", EffectType.Effect, Context: "");
var effectId = new EffectId("Some.Value\\WithBackSlash", EffectType.State, Context: parentEffect.Serialize().Value);
var parentEffect = new EffectId("SomeParentId", "");
var effectId = new EffectId("Some.Value\\WithBackSlash", parentEffect.Serialize().Value);
var serializedId = effectId.Serialize();
var deserializedId = EffectId.Deserialize(serializedId);

deserializedId.ShouldBe(effectId);
}

[TestMethod]
public void EffectIdWithBackslashIsSerializedCorrectly()
{
var effectId = new EffectId("\\", EffectType.State, Context: "");
var effectId = new EffectId("\\", "");
var serializedId = effectId.Serialize();
serializedId.Value.ShouldBe("S\\\\");
serializedId.Value.ShouldBe("E\\\\");
var deserializedId = EffectId.Deserialize(serializedId);
deserializedId.ShouldBe(effectId);
}

[TestMethod]
public void EffectIdWithDotIsSerializedCorrectly()
{
var effectId = new EffectId(".", EffectType.State, Context: "");
var effectId = new EffectId(".", "");
var serializedId = effectId.Serialize();
serializedId.Value.ShouldBe("S\\.");
serializedId.Value.ShouldBe("E\\.");
var deserializedId = EffectId.Deserialize(serializedId);
deserializedId.ShouldBe(effectId);
}

[TestMethod]
public void EffectIdWithoutStateCanBeDeserialized()
{
var effectId = new EffectId("SomeValue", EffectType.Effect, Context: "");
var effectId = new EffectId("SomeValue", "");
var serializedId = effectId.Serialize();
var deserializedId = EffectId.Deserialize(serializedId);

deserializedId.ShouldBe(effectId);
}

[TestMethod]
public void StoredEffectIdIsBasedOnSerializedEffectIdValue()
{
var effectId = new EffectId("SomeId", EffectType.Effect, Context: new EffectId("SomeParentId", EffectType.Effect, Context: "ESomeParentContext").Serialize().Value);
var effectId = new EffectId("SomeId", new EffectId("SomeParentId", "ESomeParentContext").Serialize().Value);
var serializedEffectId = effectId.Serialize();

var storedEffectId = effectId.ToStoredEffectId();
storedEffectId.Value.ShouldBe(StoredIdFactory.FromString(serializedEffectId.Value));
}

[TestMethod]
public void EffectIdWithEmptyIdAndContextCanBeDeserialized()
{
var effectId = new EffectId("", EffectType.State, Context: "");
var effectId = new EffectId("", "");
var serializedId = effectId.Serialize();
var deserializedId = EffectId.Deserialize(serializedId);

deserializedId.ShouldBe(effectId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public class StoredEffectSerializationTests
[TestMethod]
public void CompletedStoredEffectWithResultCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("SomeEffect", EffectType.Effect, Context: "");
var effectId = new EffectId("SomeEffect", "");
var result = "SomeResult"u8.ToArray();
var storedEffect = StoredEffect.CreateCompleted(effectId, result);

Expand All @@ -27,7 +27,7 @@ public void CompletedStoredEffectWithResultCanBeSerializedAndDeserialized()
[TestMethod]
public void CompletedStoredEffectWithoutResultCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("SomeEffect", EffectType.Effect, Context: "");
var effectId = new EffectId("SomeEffect", "");
var storedEffect = StoredEffect.CreateCompleted(effectId);

var serialized = storedEffect.Serialize();
Expand All @@ -42,7 +42,7 @@ public void CompletedStoredEffectWithoutResultCanBeSerializedAndDeserialized()
[TestMethod]
public void StartedStoredEffectCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("SomeEffect", EffectType.Effect, Context: "");
var effectId = new EffectId("SomeEffect", "");
var storedEffect = StoredEffect.CreateStarted(effectId);

var serialized = storedEffect.Serialize();
Expand All @@ -57,7 +57,7 @@ public void StartedStoredEffectCanBeSerializedAndDeserialized()
[TestMethod]
public void FailedStoredEffectWithExceptionCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("SomeEffect", EffectType.Effect, Context: "");
var effectId = new EffectId("SomeEffect", "");
var storedException = new StoredException(
ExceptionMessage: "Something went wrong",
ExceptionStackTrace: "at SomeMethod() in SomeFile.cs:line 42",
Expand All @@ -77,27 +77,11 @@ public void FailedStoredEffectWithExceptionCanBeSerializedAndDeserialized()
deserialized.StoredException.ExceptionType.ShouldBe("System.InvalidOperationException");
}

[TestMethod]
public void StoredEffectWithStateTypeCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("SomeState", EffectType.State, Context: "");
var result = "{\"key\":\"value\"}"u8.ToArray();
var storedEffect = StoredEffect.CreateCompleted(effectId, result);

var serialized = storedEffect.Serialize();
var deserialized = StoredEffect.Deserialize(serialized);

deserialized.EffectId.ShouldBe(effectId);
deserialized.EffectId.Type.ShouldBe(EffectType.State);
deserialized.WorkStatus.ShouldBe(WorkStatus.Completed);
deserialized.Result.ShouldBe(result);
}

[TestMethod]
public void StoredEffectWithContextCanBeSerializedAndDeserialized()
{
var parentEffect = new EffectId("ParentEffect", EffectType.Effect, Context: "");
var effectId = new EffectId("ChildEffect", EffectType.Effect, Context: parentEffect.Serialize().Value);
var parentEffect = new EffectId("ParentEffect", "");
var effectId = new EffectId("ChildEffect", parentEffect.Serialize().Value);
var result = "SomeData"u8.ToArray();
var storedEffect = StoredEffect.CreateCompleted(effectId, result);

Expand All @@ -110,52 +94,10 @@ public void StoredEffectWithContextCanBeSerializedAndDeserialized()
deserialized.Result.ShouldBe(result);
}

[TestMethod]
public void StoredEffectWithTimeoutTypeCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("SomeTimeout", EffectType.Timeout, Context: "");
var storedEffect = StoredEffect.CreateStarted(effectId);

var serialized = storedEffect.Serialize();
var deserialized = StoredEffect.Deserialize(serialized);

deserialized.EffectId.ShouldBe(effectId);
deserialized.EffectId.Type.ShouldBe(EffectType.Timeout);
deserialized.WorkStatus.ShouldBe(WorkStatus.Started);
}

[TestMethod]
public void StoredEffectWithRetryTypeCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("SomeRetry", EffectType.Retry, Context: "");
var storedEffect = StoredEffect.CreateCompleted(effectId);

var serialized = storedEffect.Serialize();
var deserialized = StoredEffect.Deserialize(serialized);

deserialized.EffectId.ShouldBe(effectId);
deserialized.EffectId.Type.ShouldBe(EffectType.Retry);
deserialized.WorkStatus.ShouldBe(WorkStatus.Completed);
}

[TestMethod]
public void StoredEffectWithSystemTypeCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("SomeSystem", EffectType.System, Context: "");
var storedEffect = StoredEffect.CreateCompleted(effectId);

var serialized = storedEffect.Serialize();
var deserialized = StoredEffect.Deserialize(serialized);

deserialized.EffectId.ShouldBe(effectId);
deserialized.EffectId.Type.ShouldBe(EffectType.System);
deserialized.WorkStatus.ShouldBe(WorkStatus.Completed);
}

[TestMethod]
public void StoredEffectWithLargeResultCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("LargeEffect", EffectType.Effect, Context: "");
var effectId = new EffectId("LargeEffect", "");
var largeResult = new byte[10000];
for (int i = 0; i < largeResult.Length; i++)
largeResult[i] = (byte)(i % 256);
Expand All @@ -173,7 +115,7 @@ public void StoredEffectWithLargeResultCanBeSerializedAndDeserialized()
[TestMethod]
public void StoredEffectWithSpecialCharactersInIdCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("Effect.With\\Special.Characters", EffectType.Effect, Context: "");
var effectId = new EffectId("Effect.With\\Special.Characters", "");
var result = "Data"u8.ToArray();
var storedEffect = StoredEffect.CreateCompleted(effectId, result);

Expand All @@ -189,7 +131,7 @@ public void StoredEffectWithSpecialCharactersInIdCanBeSerializedAndDeserialized(
[TestMethod]
public void StoredEffectWithEmptyIdCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("", EffectType.Effect, Context: "");
var effectId = new EffectId("", "");
var storedEffect = StoredEffect.CreateCompleted(effectId);

var serialized = storedEffect.Serialize();
Expand All @@ -203,7 +145,7 @@ public void StoredEffectWithEmptyIdCanBeSerializedAndDeserialized()
[TestMethod]
public void StoredEffectWithNullStackTraceCanBeSerializedAndDeserialized()
{
var effectId = new EffectId("FailedEffect", EffectType.Effect, Context: "");
var effectId = new EffectId("FailedEffect", "");
var storedException = new StoredException(
ExceptionMessage: "Error occurred",
ExceptionStackTrace: null,
Expand All @@ -221,4 +163,4 @@ public void StoredEffectWithNullStackTraceCanBeSerializedAndDeserialized()
deserialized.StoredException.ExceptionStackTrace.ShouldBeNull();
deserialized.StoredException.ExceptionType.ShouldBe("System.Exception");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1154,7 +1154,7 @@ protected async Task EffectsAreUpdatedAfterRefresh(Task<IFunctionStore> storeTas

await secondControlPanel.Refresh();
await secondControlPanel.Effects.GetValue<string>("Id").ShouldBeAsync("SomeResult");
await secondControlPanel.Effects.GetStatus("Id".ToEffectId(EffectType.Effect)).ShouldBeAsync(WorkStatus.Completed);
await secondControlPanel.Effects.GetStatus("Id".ToEffectId()).ShouldBeAsync(WorkStatus.Completed);

unhandledExceptionCatcher.ShouldNotHaveExceptions();
}
Expand Down Expand Up @@ -1429,7 +1429,7 @@ await workflow.Effect.Capture("AlwaysFail", () =>

try
{
var timeoutEvent = new TimeoutEvent(EffectId.CreateWithRootContext("SomeTimeout", EffectType.Timeout), DateTime.UtcNow)
var timeoutEvent = new TimeoutEvent(EffectId.CreateWithRootContext("SomeTimeout"), DateTime.UtcNow)
.ToMessageAndIdempotencyKey();

await registration.Invoke(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -621,25 +621,21 @@ public async Task DelayedFlushIsReflectedInUnderlyingStoreForSet(Task<IFunctionS
session
);

var effectId1 = new EffectId("Id1", EffectType.Effect, Context: "");
var storedEffect1 = new StoredEffect(
var effectId1 = new EffectId("Id1", "");
var storedEffect1 = StoredEffect.CreateCompleted(
effectId1,
WorkStatus.Completed,
Result: "hello world".ToUtf8Bytes(),
StoredException: null
"hello world".ToUtf8Bytes()
);
await effectResults.Set(storedEffect1, flush: false);
await effectStore
.GetEffectResults(storedId)
.SelectAsync(r => r.Count == 0)
.ShouldBeTrueAsync();

var effectId2 = new EffectId("Id2", EffectType.Effect, Context: "");
var storedEffect2 = new StoredEffect(
var effectId2 = new EffectId("Id2", "");
var storedEffect2 = StoredEffect.CreateCompleted(
effectId2,
WorkStatus.Completed,
Result: "hello universe".ToUtf8Bytes(),
StoredException: null
"hello universe".ToUtf8Bytes()
);
await effectResults.Set(storedEffect2, flush: true);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ await controlPanel.BusyWaitUntil(cp =>

var id = registeredTimeout.TimeoutId;
id.Id.ShouldBe("TimeoutId4321");
id.Type.ShouldBe(EffectType.Timeout);
// Type is Timeout (guaranteed by RegisteredTimeouts API)

await controlPanel.RegisteredTimeouts.Remove(id);

Expand Down Expand Up @@ -208,7 +208,7 @@ protected async Task PendingTimeoutCanBeUpdatedFromControlPanel(Task<IFunctionS

var id = registeredTimeout.TimeoutId;
id.Id.ShouldBe("TimeoutId4321");
id.Type.ShouldBe(EffectType.Timeout);
// Type is Timeout (guaranteed by RegisteredTimeouts API)

await controlPanel.RegisteredTimeouts.Upsert(id, new DateTime(2100, 1, 1, 0, 0, 0, DateTimeKind.Utc));

Expand Down
Loading
Loading