Skip to content

Commit

Permalink
Check event name in UpdateEvent()
Browse files Browse the repository at this point in the history
  • Loading branch information
raphink committed Aug 10, 2016
1 parent 1880add commit def3e52
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 8 deletions.
2 changes: 1 addition & 1 deletion engines/duplicity.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ func (d *DuplicityEngine) verify() (err error) {
}

metric := d.Handler.MetricsHandler.NewMetric("conplicity_verifyExitCode", "gauge")
metric.UpdateEvent(
err = metric.UpdateEvent(
&metrics.Event{
Labels: map[string]string{
"volume": v.Name,
Expand Down
5 changes: 4 additions & 1 deletion handler/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,14 +122,17 @@ func (c *Conplicity) GetVolumes() (volumes []*volume.Volume, err error) {
func (c *Conplicity) LogTime(vol *volume.Volume, event string) (err error) {
metricName := fmt.Sprintf("conplicity_%s", event)
startTimeMetric := c.MetricsHandler.NewMetric(metricName, "counter")
startTimeMetric.UpdateEvent(
err = startTimeMetric.UpdateEvent(
&metrics.Event{
Labels: map[string]string{
"volume": vol.Name,
},
Value: strconv.FormatInt(time.Now().Unix(), 10),
},
)
if err != nil {
return
}
err = c.MetricsHandler.Push()
return
}
Expand Down
13 changes: 10 additions & 3 deletions metrics/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,13 @@ func (e *Event) Equals(newEvent *Event) bool {
}

// UpdateEvent adds an event, or updates it if the event already exists
func (m *Metric) UpdateEvent(event *Event) {
event.Name = m.Name
func (m *Metric) UpdateEvent(event *Event) error {
if event.Name == "" {
event.Name = m.Name
}
if event.Name != m.Name {
return fmt.Errorf("cannot add event %s to metric %s", event.Name, m.Name)
}
for i, e := range m.Events {
if e.Equals(event) {
log.WithFields(log.Fields{
Expand All @@ -73,14 +78,16 @@ func (m *Metric) UpdateEvent(event *Event) {
"new_event": event.String(),
}).Debug("Replacing event")
m.Events[i] = event
return
return nil
}
}
log.WithFields(log.Fields{
"metric": m.Name,
"event": event.String(),
}).Debug("Adding event")
m.Events = append(m.Events, event)

return nil
}

// NewMetric adds a new metric if it doesn't exist yet
Expand Down
32 changes: 29 additions & 3 deletions metrics/metrics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ func TestParseEvent(t *testing.T) {
}

func TestMetricUpdateEvent(t *testing.T) {
var err error
m := &Metric{
Name: "foo",
}
Expand All @@ -150,7 +151,10 @@ func TestMetricUpdateEvent(t *testing.T) {
},
Value: "bar",
}
m.UpdateEvent(e1)
err = m.UpdateEvent(e1)
if err != nil {
t.Fatalf("Expected no error, got %v", err)
}
if len(m.Events) != 1 {
t.Fatalf("Expected one event, got %v", len(m.Events))
}
Expand All @@ -168,7 +172,10 @@ func TestMetricUpdateEvent(t *testing.T) {
},
Value: "qux",
}
m.UpdateEvent(e2)
err = m.UpdateEvent(e2)
if err != nil {
t.Fatalf("Expected no error, got %v", err)
}
if len(m.Events) != 1 {
t.Fatalf("Expected one event, got %v", len(m.Events))
}
Expand All @@ -186,7 +193,10 @@ func TestMetricUpdateEvent(t *testing.T) {
},
Value: "quxx",
}
m.UpdateEvent(e3)
err = m.UpdateEvent(e3)
if err != nil {
t.Fatalf("Expected no error, got %v", err)
}
if len(m.Events) != 2 {
t.Fatalf("Expected two events, got %v", len(m.Events))
}
Expand All @@ -196,4 +206,20 @@ func TestMetricUpdateEvent(t *testing.T) {
if m.Events[1].Value != "quxx" {
t.Fatalf("Expected event value to be quxx, got %s", m.Events[1].Value)
}

// Add event with wrong name
e4 := &Event{
Name: "bar",
Labels: map[string]string{
"volume": "fooddd",
},
Value: "quxx",
}
err = m.UpdateEvent(e4)
if err == nil {
t.Fatal("Expected an error, got nil")
}
if len(m.Events) != 2 {
t.Fatalf("Expected two events, got %v", len(m.Events))
}
}

0 comments on commit def3e52

Please sign in to comment.