mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 17:50:12 +00:00
test(agentcompat): capture FD observations in process samples
Co-authored-by: naiba/CloudCode <hi+cloudcode@nai.ba>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
//go:build linux
|
||||
|
||||
package process
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestSampleProcessWithFDObservations_CapturesEverySuccessfulNonStdioReadlink(t *testing.T) {
|
||||
// Given / When
|
||||
sample, err := SampleProcessWithFDObservations(os.Getpid())
|
||||
|
||||
// Then
|
||||
requireNoError(t, err)
|
||||
if len(sample.FDObservations) != sample.NonStdioFDCount {
|
||||
t.Fatalf("FD observations = %d, non-stdio FD count = %d", len(sample.FDObservations), sample.NonStdioFDCount)
|
||||
}
|
||||
if sample.SampledAt.IsZero() {
|
||||
t.Fatal("sampled at is zero")
|
||||
}
|
||||
encoded, err := json.Marshal(sample)
|
||||
requireNoError(t, err)
|
||||
var evidence map[string]json.RawMessage
|
||||
requireNoError(t, json.Unmarshal(encoded, &evidence))
|
||||
if _, exists := evidence["sampled_at"]; exists {
|
||||
t.Fatalf("sampled_at leaked into evidence JSON: %s", encoded)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSampleWindowWithFDObservations_RecordsCompletionTimeForEverySample(t *testing.T) {
|
||||
// Given / When
|
||||
window, err := SampleWindow(context.Background(), WindowSpec{PID: os.Getpid(), Interval: time.Nanosecond, CaptureFDObservations: true})
|
||||
|
||||
// Then
|
||||
requireNoError(t, err)
|
||||
for index, sample := range window.Samples {
|
||||
if sample.SampledAt.IsZero() {
|
||||
t.Fatalf("sample %d sampled at is zero", index+1)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user