package promscrape

import (
	"fmt"
	"testing"

	"github.com/VictoriaMetrics/VictoriaMetrics/lib/promutil"
)

func BenchmarkGetScrapeWork(b *testing.B) {
	swc := &scrapeWorkConfig{
		jobName:              "job-1",
		scheme:               "http",
		metricsPath:          "/metrics",
		scrapeIntervalString: "30s",
		scrapeTimeoutString:  "10s",
	}
	target := "host1.com:1234"
	extraLabels := promutil.NewLabelsFromMap(map[string]string{
		"env":        "prod",
		"datacenter": "dc-foo",
	})
	metaLabels := promutil.NewLabelsFromMap(map[string]string{
		"__meta_foo":                         "bar",
		"__meta_kubernetes_namespace":        "default",
		"__address__":                        "foobar.com",
		"__meta_sfdfdf_dsfds_fdfdfds_fdfdfd": "true",
	})
	b.ReportAllocs()
	b.SetBytes(1)
	b.RunParallel(func(pb *testing.PB) {
		for pb.Next() {
			sw, err := swc.getScrapeWork(target, extraLabels, metaLabels)
			if err != nil {
				panic(fmt.Errorf("BUG: getScrapeWork returned non-nil error: %w", err))
			}
			if sw == nil {
				panic(fmt.Errorf("BUG: getScrapeWork returned nil ScrapeWork"))
			}
		}
	})
}
