2020-05-17 13:30:52 +00:00
|
|
|
package merger_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"fmt"
|
|
|
|
"net"
|
|
|
|
"net/http"
|
2020-05-17 15:34:32 +00:00
|
|
|
"sort"
|
|
|
|
"strings"
|
2020-05-17 13:30:52 +00:00
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
prom "github.com/prometheus/client_model/go"
|
|
|
|
|
|
|
|
"github.com/vadv/prometheus-exporter-merger/merger"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
data1 = `
|
|
|
|
# TYPE fluentbit_filter_add_records_total counter
|
|
|
|
fluentbit_filter_add_records_total{name="kubernetes.0"} 0 1589716338403
|
|
|
|
fluentbit_filter_add_records_total{name="lua.1"} 0 1589716338403
|
|
|
|
fluentbit_filter_add_records_total{name="lua.2"} 0 1589716338403
|
|
|
|
fluentbit_filter_add_records_total{name="lua.3"} 0 1589716338403
|
|
|
|
fluentbit_filter_add_records_total{name="kubernetes.0"} 0 1589716338417
|
|
|
|
`
|
|
|
|
data2 = `
|
|
|
|
# TYPE fluentbit_filter_add_records_total counter
|
|
|
|
fluentbit_filter_add_records_total{name="lua.1"} 0 1589716338417
|
|
|
|
fluentbit_filter_add_records_total{name="rewrite_tag.2"} 0 1589716338417
|
|
|
|
`
|
2020-05-17 15:34:32 +00:00
|
|
|
result = `
|
|
|
|
# TYPE fluentbit_filter_add_records_total counter
|
2020-05-17 13:30:52 +00:00
|
|
|
fluentbit_filter_add_records_total{name="kubernetes.0",url="value1"} 0 1589716338403
|
2020-05-17 15:34:32 +00:00
|
|
|
fluentbit_filter_add_records_total{name="kubernetes.0",url="value1"} 0 1589716338417
|
2020-05-17 13:30:52 +00:00
|
|
|
fluentbit_filter_add_records_total{name="lua.1",url="value1"} 0 1589716338403
|
2020-05-17 15:34:32 +00:00
|
|
|
fluentbit_filter_add_records_total{name="lua.1",url="value2"} 0 1589716338417
|
2020-05-17 13:30:52 +00:00
|
|
|
fluentbit_filter_add_records_total{name="lua.2",url="value1"} 0 1589716338403
|
|
|
|
fluentbit_filter_add_records_total{name="lua.3",url="value1"} 0 1589716338403
|
2020-05-17 15:34:32 +00:00
|
|
|
fluentbit_filter_add_records_total{name="rewrite_tag.2",url="value2"} 0 1589716338417`
|
2020-05-17 13:30:52 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func Test_Merger(t *testing.T) {
|
|
|
|
|
|
|
|
listener, err := net.Listen("tcp", ":0")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
http.HandleFunc("/data_1", func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
fmt.Fprintf(w, data1)
|
|
|
|
})
|
|
|
|
http.HandleFunc("/data_2", func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
fmt.Fprintf(w, data2)
|
|
|
|
})
|
|
|
|
go http.Serve(listener, nil)
|
|
|
|
|
|
|
|
urlPrefix := fmt.Sprintf("http://127.0.0.1:%d", listener.Addr().(*net.TCPAddr).Port)
|
|
|
|
|
|
|
|
url, value1, value2 := "url", "value1", "value2"
|
|
|
|
label1 := []*prom.LabelPair{{Name: &url, Value: &value1}}
|
|
|
|
label2 := []*prom.LabelPair{{Name: &url, Value: &value2}}
|
|
|
|
|
|
|
|
m := merger.New(time.Second)
|
|
|
|
m.AddSource(urlPrefix+"/data_1", label1)
|
|
|
|
m.AddSource(urlPrefix+"/data_2", label2)
|
|
|
|
|
|
|
|
out := bytes.NewBuffer(make([]byte, 0))
|
|
|
|
m.Merge(out)
|
|
|
|
|
2020-05-17 15:34:32 +00:00
|
|
|
outStrs := strings.Split(out.String(), "\n")
|
|
|
|
sort.Strings(outStrs)
|
|
|
|
if result != strings.Join(outStrs, "\n") {
|
|
|
|
t.Fatalf("out:\n%s\n", strings.Join(outStrs, "\n"))
|
2020-05-17 13:30:52 +00:00
|
|
|
}
|
|
|
|
}
|