72 lines
2.2 KiB
Go
72 lines
2.2 KiB
Go
|
package merger_test
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"fmt"
|
||
|
"net"
|
||
|
"net/http"
|
||
|
"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
|
||
|
`
|
||
|
result = `# TYPE fluentbit_filter_add_records_total counter
|
||
|
fluentbit_filter_add_records_total{name="lua.1",url="value2"} 0 1589716338417
|
||
|
fluentbit_filter_add_records_total{name="rewrite_tag.2",url="value2"} 0 1589716338417
|
||
|
fluentbit_filter_add_records_total{name="kubernetes.0",url="value1"} 0 1589716338403
|
||
|
fluentbit_filter_add_records_total{name="lua.1",url="value1"} 0 1589716338403
|
||
|
fluentbit_filter_add_records_total{name="lua.2",url="value1"} 0 1589716338403
|
||
|
fluentbit_filter_add_records_total{name="lua.3",url="value1"} 0 1589716338403
|
||
|
fluentbit_filter_add_records_total{name="kubernetes.0",url="value1"} 0 1589716338417
|
||
|
`
|
||
|
)
|
||
|
|
||
|
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)
|
||
|
|
||
|
if out.String() != result {
|
||
|
t.Fatalf("get:\n%s\nexcept:\n%s\n", out.String(), result)
|
||
|
}
|
||
|
}
|