Tentacle support enhancements.

This commit is contained in:
Storm Dragon committed 2026-11-04 12:10:41 -05:00
1 parent 4cf3335017
commit 24261edb3d
12 files changed
+560 -30

No files matched your search

+48
View File
@@ -123,6 +123,54 @@ func remoteCall(t *testing.T, session *Session, method string, params any) (json
return result.Value, result.Code
}
func TestRemoteWorkflowEpochCleanup(t *testing.T) {
manager, err := NewManager(DefaultLimits(), nil)
if err != nil {
t.Fatal(err)
}
t.Cleanup(func() {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := manager.Shutdown(ctx); err != nil {
t.Error(err)
}
})
session := startSessionSDK(t, manager, "go", "workflow")
first, err := session.AuthorizeRemote("controller", []string{"remote-present"})
if err != nil {
t.Fatal(err)
}
second, err := session.AuthorizeRemote("controller", []string{"remote-present"})
if err != nil {
t.Fatal(err)
}
session.RevokeRemoteEpoch(first.Epoch)
raw, code := remoteCall(t, session, "remote.open", tentaclewire.RemoteOpen{Action: second.Action, Epoch: second.Epoch, Role: second.Role, Grants: second.Grants})
var lease tentaclewire.RemoteLease
if code != 0 || json.Unmarshal(raw, &lease) != nil {
t.Fatal("old workflow revoked its replacement")
}
delivery, err := session.RemoteContext(lease, "remote-present")
if err != nil {
t.Fatal(err)
}
session.RevokeRemoteEpoch(second.Epoch)
if delivery.Err() == nil {
t.Fatal("workflow close retained its live lease")
}
// Pending actions also release exclusive ownership on close, before their
// timeout and without requiring a remote.open/remote.close pair.
pending, err := session.AuthorizeRemote("controller", []string{"remote-present"})
if err != nil {
t.Fatal(err)
}
session.RevokeRemoteEpoch(pending.Epoch)
other := startSessionSDK(t, manager, "go", "other-workflow")
if _, err := other.AuthorizeRemote("controlled", []string{"output-observe"}); err != nil {
t.Fatal("closed setup retained exclusive ownership", err)
}
}
func openRemote(t *testing.T, session *Session) tentaclewire.RemoteLease {
t.Helper()
action, err := session.AuthorizeRemote("controlled", []string{"output-observe"})