Fix run log ingest and terminal console layout
This commit is contained in:
@@ -56,16 +56,80 @@ func TestCoreServiceLogBatchDuplicateAck(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCoreServiceAcceptsAutoCreatedRunJobLogStreams(t *testing.T) {
|
||||
svc, sessionToken := newRegisteredLogIngestService(t)
|
||||
job, err := svc.CreateJob(domain.Job{
|
||||
ID: "job-run-logs",
|
||||
ServerInstanceID: "server-1",
|
||||
RunEndpointID: "run-local",
|
||||
Capability: domain.LifecycleCapabilityStart,
|
||||
IdempotencyKey: "job-run-logs",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("create job: %v", err)
|
||||
}
|
||||
streamID := jobLogStreamID(job.ID, "stderr")
|
||||
stream, err := svc.GetLogStream(streamID)
|
||||
if err != nil {
|
||||
t.Fatalf("get auto-created job log stream: %v", err)
|
||||
}
|
||||
if stream.StreamKey != "stderr" || stream.Source != domain.LogStreamSourceProcess {
|
||||
t.Fatalf("unexpected stream metadata: %+v", stream)
|
||||
}
|
||||
|
||||
entry := domain.LogEntry{Seq: 2, Timestamp: time.Date(2026, 7, 3, 12, 0, 2, 0, time.UTC), Level: "info", Line: "stderr:server-ready"}
|
||||
batch := domain.LogBatchIngest{
|
||||
RunEndpointID: "run-local",
|
||||
SessionToken: sessionToken,
|
||||
LogStreamID: streamID,
|
||||
ServerInstanceID: "server-1",
|
||||
StreamKey: "stderr",
|
||||
Source: domain.LogStreamSourceProcess,
|
||||
FirstSeq: entry.Seq,
|
||||
LastSeq: entry.Seq,
|
||||
Compression: "none",
|
||||
Checksum: validator.LogLineChecksum(entry.Line),
|
||||
Entries: []domain.LogEntry{entry},
|
||||
}
|
||||
ack, err := svc.IngestLogBatch(batch)
|
||||
if err != nil {
|
||||
t.Fatalf("ingest run job log batch: %v", err)
|
||||
}
|
||||
if !ack.Accepted || ack.LatestSeq != entry.Seq {
|
||||
t.Fatalf("unexpected ack: %+v", ack)
|
||||
}
|
||||
duplicate, err := svc.IngestLogBatch(batch)
|
||||
if err != nil {
|
||||
t.Fatalf("ingest duplicate run job log batch: %v", err)
|
||||
}
|
||||
if !duplicate.Duplicate {
|
||||
t.Fatalf("expected duplicate ack, got %+v", duplicate)
|
||||
}
|
||||
query, err := svc.QueryLogStream(domain.LogStreamCursorQuery{LogStreamID: streamID, AfterSeq: 0, Limit: 10})
|
||||
if err != nil {
|
||||
t.Fatalf("query auto-created job log stream: %v", err)
|
||||
}
|
||||
if len(query.Entries) != 1 || query.Entries[0].Line != entry.Line || query.NextSeq != entry.Seq {
|
||||
t.Fatalf("unexpected query result: %+v", query)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCoreServiceRejectsOutOfOrderAndConflictingLogBatches(t *testing.T) {
|
||||
svc, sessionToken := newRegisteredLogIngestService(t)
|
||||
createLogStreamFixture(t, svc)
|
||||
gap := validLogBatch(t, sessionToken, 2, 2)
|
||||
first := validLogBatch(t, sessionToken, 1, 1)
|
||||
if _, err := svc.IngestLogBatch(first); err != nil {
|
||||
t.Fatalf("ingest first batch: %v", err)
|
||||
}
|
||||
gap := validLogBatch(t, sessionToken, 3, 3)
|
||||
|
||||
_, err := svc.IngestLogBatch(gap)
|
||||
if err == nil || !strings.Contains(err.Error(), "firstSeq") {
|
||||
t.Fatalf("expected out-of-order rejection, got %v", err)
|
||||
}
|
||||
|
||||
svc, sessionToken = newRegisteredLogIngestService(t)
|
||||
createLogStreamFixture(t, svc)
|
||||
batch := validLogBatch(t, sessionToken, 1, 2)
|
||||
if _, err := svc.IngestLogBatch(batch); err != nil {
|
||||
t.Fatalf("ingest first batch: %v", err)
|
||||
@@ -139,7 +203,9 @@ func newRegisteredLogIngestService(t *testing.T) (*CoreService, string) {
|
||||
}); err != nil {
|
||||
t.Fatalf("create server instance: %v", err)
|
||||
}
|
||||
hello, err := svc.RegisterRunHello(validRunControlHello())
|
||||
helloRequest := validRunControlHello()
|
||||
helloRequest.CapabilityReport.Capabilities = append(helloRequest.CapabilityReport.Capabilities, domain.LifecycleCapabilityStart)
|
||||
hello, err := svc.RegisterRunHello(helloRequest)
|
||||
if err != nil {
|
||||
t.Fatalf("register run hello: %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user