feat: deliver durable live signal intents
This commit is contained in:
@@ -300,6 +300,30 @@ func TestControlStdinIntentReplaysAndAcknowledges_HP_DISPATCH_08(t *testing.T) {
|
||||
if err := persistence.DB().QueryRow(`SELECT acknowledged FROM stdin_writes WHERE issue_uuid = ? AND write_seq = 2`, parsedIssue[:]).Scan(&closeAcknowledged); err != nil || closeAcknowledged != 1 {
|
||||
t.Fatalf("stdin close acknowledgement = %d, %v", closeAcknowledged, err)
|
||||
}
|
||||
signalRequestID := fixedIssueID(0x7d)
|
||||
signalResponse, err := controlService.SignalCommand(ctx, &rvboxv1.ControlSignalCommandRequest{ClientId: hello.GetClientId(), IssueUuid: issue, RequestId: signalRequestID, Signal: rvboxv1.SignalKind_SIGNAL_TERM})
|
||||
if err != nil || signalResponse.GetCommandRevision() != 1 {
|
||||
t.Fatalf("active signal request = %#v, %v", signalResponse, err)
|
||||
}
|
||||
encoded, err = transport.Read(readContext)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
signalEnvelope, err := agentproto.DecodeEnvelope(encoded, agentproto.DefaultLimits(), rvboxv1.Platform_PLATFORM_WINDOWS)
|
||||
if err != nil || signalEnvelope.GetSignalCommand() == nil || signalEnvelope.GetSignalCommand().GetIssueUuid() != issue || signalEnvelope.GetSignalCommand().GetCommandRevision() != 1 || signalEnvelope.GetSignalCommand().GetSignal() != rvboxv1.SignalKind_SIGNAL_TERM {
|
||||
t.Fatalf("signal delivery = %#v, %v", signalEnvelope, err)
|
||||
}
|
||||
signalAck := &rvboxv1.CommandEvent{IssueUuid: issue, EventSeq: 3, ObservedAt: timestamppb.Now(), Payload: &rvboxv1.CommandEvent_SignalResult{SignalResult: &rvboxv1.SignalResult{Signal: rvboxv1.SignalKind_SIGNAL_TERM, Accepted: true, GracefulDeliveryAttempted: true, CommandRevision: 1, Detail: "delivered"}}}
|
||||
if err := agent.SendCommandEvent(ctx, transport, accepted, signalAck, agentproto.DefaultLimits()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := transport.Read(readContext); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var signalAcknowledged int
|
||||
if err := persistence.DB().QueryRow(`SELECT acknowledged FROM signal_intents WHERE issue_uuid = ? AND command_revision = 1 AND signal = ?`, parsedIssue[:], rvboxv1.SignalKind_SIGNAL_TERM).Scan(&signalAcknowledged); err != nil || signalAcknowledged != 1 {
|
||||
t.Fatalf("signal acknowledgement = %d, %v", signalAcknowledged, err)
|
||||
}
|
||||
}
|
||||
|
||||
func fixedIssueID(last byte) string {
|
||||
|
||||
Reference in New Issue
Block a user