Commit 6fafc83f authored by Kevin Di Lallo's avatar Kevin Di Lallo
Browse files

updated ut

parent ac60b37a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -144,7 +144,7 @@ func (u *destination) compute() (st stat) {
	mean := int32(math.Round(float64(st.mean) / 1000000.0))

	// Store latency metric
	err := metricStore.SetLatencyMetric(u.hostName, u.remoteName, lat, mean)
	err := metricStore.SetLatencyMetric(u.hostName, u.remoteName, lat)
	if err != nil {
		log.Error("Failed to set latency metric")
	}
+22 −9
Original line number Diff line number Diff line
@@ -26,12 +26,8 @@ const metricEvent = "events"

// SetEventMetric
func (ms *MetricStore) SetEventMetric(eventType string, eventStr string) error {
	tags := map[string]string{
		"type": eventType,
	}
	fields := map[string]interface{}{
		"event": eventStr,
	}
	tags := map[string]string{"type": eventType}
	fields := map[string]interface{}{"event": eventStr}
	return ms.SetMetric(metricEvent, tags, fields)
}

@@ -44,9 +40,7 @@ func (ms *MetricStore) GetLastEventMetric(eventType string) (event string, err e
	}

	// Get latest Net metric
	tags := map[string]string{
		"type": eventType,
	}
	tags := map[string]string{"type": eventType}
	fields := []string{"event"}
	valuesArray, err := ms.GetMetric(metricEvent, tags, fields, "", 1)
	if err != nil {
@@ -61,3 +55,22 @@ func (ms *MetricStore) GetLastEventMetric(eventType string) (event string, err e
	}
	return event, nil
}

// GetLatencyMetrics
func (ms *MetricStore) GetEventMetrics(eventType string, duration string, count int) (metrics []map[string]interface{}, err error) {
	// Make sure we have set a store
	if ms.name == "" {
		err = errors.New("Store name not specified")
		return
	}

	// Get Traffic metrics
	tags := map[string]string{"type": eventType}
	fields := []string{"event"}
	metrics, err = ms.GetMetric(metricEvent, tags, fields, duration, count)
	if err != nil {
		log.Error("Failed to retrieve metrics with error: ", err.Error())
		return
	}
	return
}
+43 −3
Original line number Diff line number Diff line
@@ -52,26 +52,66 @@ func TestEventsMetricsGetSet(t *testing.T) {
	if err != nil {
		t.Errorf("Unable to set event metric")
	}
	err = ms.SetEventMetric("MOBILITY", "event4")
	if err != nil {
		t.Errorf("Unable to set event metric")
	}
	err = ms.SetEventMetric("NETWORK-CHARACTERISTIC-UPDATE", "event5")
	if err != nil {
		t.Errorf("Unable to set event metric")
	}
	err = ms.SetEventMetric("POAS-IN-RANGE", "event6")
	if err != nil {
		t.Errorf("Unable to set event metric")
	}

	fmt.Println("Get event metrics")
	event, err := ms.GetLastEventMetric("MOBILITY")
	if err != nil {
		t.Errorf("Event metric should exist")
	} else if event != "event1" {
	} else if event != "event4" {
		t.Errorf("Invalid metric values")
	}
	event, err = ms.GetLastEventMetric("NETWORK-CHARACTERISTIC-UPDATE")
	if err != nil {
		t.Errorf("Event metric should exist")
	} else if event != "event2" {
	} else if event != "event5" {
		t.Errorf("Invalid metric values")
	}
	event, err = ms.GetLastEventMetric("POAS-IN-RANGE")
	if err != nil {
		t.Errorf("Event metric should exist")
	} else if event != "event3" {
	} else if event != "event6" {
		t.Errorf("Invalid metric values")
	}

	fmt.Println("Get event metrics")

	_, err = ms.GetEventMetrics("MOBILITY", "1ms", 0)
	if err == nil {
		t.Errorf("No metrics should be found in the last 1 ms")
	}
	result, err := ms.GetEventMetrics("MOBILITY", "", 1)
	if err != nil || len(result) != 1 {
		t.Errorf("Failed to get metric")
	}
	if !validateEventsMetric(result[0], "event4") {
		t.Errorf("Invalid result")
	}
	result, err = ms.GetEventMetrics("MOBILITY", "", 0)
	if err != nil || len(result) != 2 {
		t.Errorf("Failed to get metric")
	}
	if !validateEventsMetric(result[0], "event4") {
		t.Errorf("Invalid result")
	}
	if !validateEventsMetric(result[1], "event1") {
		t.Errorf("Invalid result")
	}

	// t.Errorf("DONE")
}

func validateEventsMetric(result map[string]interface{}, v1 string) bool {
	return !(result["event"] != v1)
}
+6 −2
Original line number Diff line number Diff line
@@ -55,11 +55,15 @@ func TestMetricStoreNew(t *testing.T) {
		t.Errorf("Unable to create Metric Store")
	}
	fmt.Println("Invoke API before setting store")
	_, _, err = ms.GetLastLatencyMetric("node1", "node2")
	getTags := map[string]string{tag1: "tag1", tag2: "tag2"}
	getFields := []string{field1, field2, field3, field4}
	_, err = ms.GetMetric(metric, getTags, getFields, "", 0)
	if err == nil {
		t.Errorf("API call should fail if no store is set")
	}
	err = ms.SetLatencyMetric("node1", "node2", 1, 2)
	setTags := map[string]string{tag1: "tag1", tag2: "tag2"}
	setFields := map[string]interface{}{field1: true, field2: "val1", field3: 0, field4: 0.0}
	err = ms.SetMetric(metric, setTags, setFields)
	if err == nil {
		t.Errorf("API call should fail if no store is set")
	}
+24 −6
Original line number Diff line number Diff line
@@ -27,14 +27,14 @@ const metricLatency = "latency"
const metricTraffic = "traffic"

// SetLatencyMetric
func (ms *MetricStore) SetLatencyMetric(src string, dest string, lat int32, mean int32) error {
func (ms *MetricStore) SetLatencyMetric(src string, dest string, lat int32) error {
	tags := map[string]string{"src": src, "dest": dest}
	fields := map[string]interface{}{"lat": lat, "mean": mean}
	fields := map[string]interface{}{"lat": lat}
	return ms.SetMetric(metricLatency, tags, fields)
}

// GetLastLatencyMetric
func (ms *MetricStore) GetLastLatencyMetric(src string, dest string) (lat int32, mean int32, err error) {
func (ms *MetricStore) GetLastLatencyMetric(src string, dest string) (lat int32, err error) {
	// Make sure we have set a store
	if ms.name == "" {
		err = errors.New("Store name not specified")
@@ -43,7 +43,7 @@ func (ms *MetricStore) GetLastLatencyMetric(src string, dest string) (lat int32,

	// Get latest Latency metric
	tags := map[string]string{"src": src, "dest": dest}
	fields := []string{"lat", "mean"}
	fields := []string{"lat"}
	var valuesArray []map[string]interface{}
	valuesArray, err = ms.GetMetric(metricLatency, tags, fields, "", 1)
	if err != nil {
@@ -54,7 +54,6 @@ func (ms *MetricStore) GetLastLatencyMetric(src string, dest string) (lat int32,
	// Take first & only values
	values := valuesArray[0]
	lat = JsonNumToInt32(values["lat"].(json.Number))
	mean = JsonNumToInt32(values["mean"].(json.Number))
	return
}

@@ -68,7 +67,7 @@ func (ms *MetricStore) GetLatencyMetrics(src string, dest string, duration strin

	// Get Latency metrics
	tags := map[string]string{"src": src, "dest": dest}
	fields := []string{"lat", "mean"}
	fields := []string{"lat"}
	metrics, err = ms.GetMetric(metricLatency, tags, fields, duration, count)
	if err != nil {
		log.Error("Failed to retrieve metrics with error: ", err.Error())
@@ -108,3 +107,22 @@ func (ms *MetricStore) GetLastTrafficMetric(src string, dest string) (tput float
	loss = JsonNumToFloat64(values["loss"].(json.Number))
	return
}

// GetLatencyMetrics
func (ms *MetricStore) GetTrafficMetrics(src string, dest string, duration string, count int) (metrics []map[string]interface{}, err error) {
	// Make sure we have set a store
	if ms.name == "" {
		err = errors.New("Store name not specified")
		return
	}

	// Get Traffic metrics
	tags := map[string]string{"src": src, "dest": dest}
	fields := []string{"tput", "loss"}
	metrics, err = ms.GetMetric(metricTraffic, tags, fields, duration, count)
	if err != nil {
		log.Error("Failed to retrieve metrics with error: ", err.Error())
		return
	}
	return
}
Loading