Beispiel #1
0
func checkEmission(t *testing.T, coll string, h handler.Handler, expected bool) {
	m := metric.Metric{
		Name:       "test",
		Value:      1,
		Dimensions: map[string]string{"collector": coll},
	}
	writeToHandlers([]handler.Handler{h}, m)
	_, ok := h.CollectorEndpoints()[coll]
	if !expected && ok {
		assert.Fail(t, fmt.Sprintf("Was not expecting a collector channel for %s", coll))
	}
	if expected && !ok {
		assert.Fail(t, fmt.Sprintf("Was expecting a collector channel for %s", coll))
	}
}
Beispiel #2
0
func checkEmission(t *testing.T, coll string, h handler.Handler, expected bool) {
	m := metric.Metric{
		Name:       "test",
		Value:      1,
		Dimensions: map[string]string{"collector": coll},
	}
	writeToHandlers([]handler.Handler{h}, m)

	select {
	case res := <-h.Channel():
		if !expected {
			assert.Fail(t, fmt.Sprintf("Did not expect metric %s", res.Name))
		}
	default:
		if expected {
			assert.Fail(t, "Was expecting the metric to go through")
		}
	}
}
Beispiel #3
0
func canSendMetric(handler handler.Handler, metric metric.Metric) bool {
	// If the handler's whitelist is set, then only metrics from collectors in it will be emitted. If the same
	// collector is also in the blacklist, it will be skipped.
	// If the handler's whitelist is not set and its blacklist is not empty, only metrics from collectors not in
	// the blacklist will be emitted.
	value, _ := metric.GetDimensionValue("collector")
	isWhiteListed, _ := handler.IsCollectorWhiteListed(value)
	isBlackListed, _ := handler.IsCollectorBlackListed(value)

	// If the handler's whitelist is not nil and not empty, only the whitelisted collectors should be considered
	if handler.CollectorWhiteList() != nil && len(handler.CollectorWhiteList()) > 0 {
		if isWhiteListed && !isBlackListed {
			return true
		}
		return false
	}

	// If the handler's whitelist is nil, all collector except the ones in the blacklist are enabled
	if !isBlackListed {
		return true
	}
	return false
}
Beispiel #4
0
func sendMetrics(handler handler.Handler, metrics []metric.Metric) {
	for _, m := range metrics {
		handler.Channel() <- m
	}
}