2024-02-29 12:03:24 +00:00
|
|
|
package firehose
|
|
|
|
|
|
|
|
import (
|
2024-02-29 22:23:54 +00:00
|
|
|
"bytes"
|
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal"
|
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/protoparser/opentelemetry/stream"
|
|
|
|
"strings"
|
2024-02-29 12:03:24 +00:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestProcessRequestBody(t *testing.T) {
|
2024-02-29 22:23:54 +00:00
|
|
|
data := []byte(`{"requestId":"94885867-d282-4110-a3c5-4af3f9ce1150","timestamp":1709217414040,"records":[{"data":"oB0KnR0KuwEKFwoOY2xvdWQucHJvdmlkZXISBQoDYXdzCiIKEGNsb3VkLmFjY291bnQuaWQSDgoMNjc3NDM1ODkwNTk4ChsKDGNsb3VkLnJlZ2lvbhILCgl1cy1lYXN0LTEKXwoQYXdzLmV4cG9ydGVyLmFybhJLCklhcm46YXdzOmNsb3Vkd2F0Y2g6dXMtZWFzdC0xOjY3NzQzNTg5MDU5ODptZXRyaWMtc3RyZWFtL2N1c3RvbV9lYnNfbWV0cmljEtwbErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMDg2Y2ZjMTA4NTQwOGUwZGMRABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMDZkMDc4YWIxYmNjMDBlYzMRABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMGJkMTU0NjVkNjljMjNhOWERABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMDM3YjdmMjg3ZWViNzlmYTkRABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMGJlZWY0OWRlMGQ2OGYzMmMRABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMDMzMTMzMjU5ZGY2N2JiOTcRABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMDljZDEwMGIxNTliYjI1ZDYRABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMGU4MzgzMTkyMWQ3MzU1NjMRABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMDIzZWQzMjZhZTg2MDA1NWERABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMGJjYTQ2ZTAyMjQzZjdhNTQRABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMGZmOGMzODkzNDNmZTZlMGYRABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMDYyZDE4MmE5ZTNkNjk3MWYRABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErEBCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAQp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMDAzMDUyZjNiMzlkNjI3OWMRABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/ErECCiNhbWF6b25hd3MuY29tL0FXUy9FQlMvVm9sdW1lUmVhZE9wcxoHe0NvdW50fVqAAgp+ChQKCU5hbWVzcGFjZRIHQVdTL0VCUwobCgpNZXRyaWNOYW1lEg1Wb2x1bWVSZWFkT3BzCiEKCFZvbHVtZUlkEhV2b2wtMGM0NDEwOTk3YmUyMzEzNDARABjlKfhbuBcZAHAsIgZcuBchAQAAAAAAAAAyADIJCQAAAAAAAPA/Cn4KFAoJTmFtZXNwYWNlEgdBV1MvRUJTChsKCk1ldHJpY05hbWUSDVZvbHVtZVJlYWRPcHMKIQoIVm9sdW1lSWQSFXZvbC0wYzQ0MTA5OTdiZTIzMTM0MBEAwJ0x6lu4FxkAGOUp+Fu4FyEBAAAAAAAAADIAMgkJAAAAAAAA8D8SsQEKI2FtYXpvbmF3cy5jb20vQVdTL0VCUy9Wb2x1bWVSZWFkT3BzGgd7Q291bnR9WoABCn4KFAoJTmFtZXNwYWNlEgdBV1MvRUJTChsKCk1ldHJpY05hbWUSDVZvbHVtZVJlYWRPcHMKIQoIVm9sdW1lSWQSFXZvbC0wM2VlNzM1Y2VkZjFmNDZj
|
|
|
|
var totalTss []prompbmarshal.TimeSeries
|
|
|
|
err := stream.ParseStream(bytes.NewReader(data), false, ProcessRequestBody, func(tss []prompbmarshal.TimeSeries) error {
|
|
|
|
totalTss = append(totalTss, tss...)
|
|
|
|
for _, ts := range tss {
|
|
|
|
for _, label := range ts.Labels {
|
|
|
|
if label.Name == "__name__" {
|
|
|
|
if !strings.HasPrefix(label.Value, "amazonaws.com/AWS/EBS/VolumeReadOps") {
|
|
|
|
t.Fatalf("got %q, expected prefix amazonaws.com/AWS/EBS/VolumeReadOps", label.Value)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
})
|
2024-02-29 12:03:24 +00:00
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("unexpected error: %v", err)
|
|
|
|
}
|
2024-02-29 22:23:54 +00:00
|
|
|
if len(totalTss) == 0 {
|
|
|
|
t.Fatalf("unexpected number of series: %d", len(totalTss))
|
2024-02-29 12:03:24 +00:00
|
|
|
}
|
|
|
|
}
|