Skip to content

Commit

Permalink
fix: overflow probe history
Browse files Browse the repository at this point in the history
  • Loading branch information
macrat committed Apr 25, 2021
1 parent 12f5de4 commit 14ce7f7
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 4 deletions.
8 changes: 4 additions & 4 deletions store/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ type ProbeHistory struct {

type ProbeHistoryMap map[string]*ProbeHistory

func (hs ProbeHistoryMap) append(r Record) {
func (hs ProbeHistoryMap) Append(r Record) {
target := r.Target.String()

if h, ok := hs[target]; ok {
if len(h.Records) > PROBE_HISTORY_LEN {
if len(h.Records) >= PROBE_HISTORY_LEN {
h.Records = h.Records[1:]
}

Expand Down Expand Up @@ -156,7 +156,7 @@ func (s *Store) appendWithoutLock(rs []Record) {
_, s.lastError = s.file.Write(msg)

if r.Target.Scheme != "alert" {
s.probeHistory.append(r)
s.probeHistory.Append(r)
s.setIncidentIfNeed(r, true)
}
}
Expand Down Expand Up @@ -190,7 +190,7 @@ func (s *Store) Restore() error {
}

if r.Target.Scheme != "alert" {
s.probeHistory.append(r)
s.probeHistory.Append(r)
s.setIncidentIfNeed(r, false)
}
}
Expand Down
34 changes: 34 additions & 0 deletions store/store_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,40 @@ import (
"github.com/macrat/ayd/store"
)

func TestProbeHistoryMap(t *testing.T) {
m := make(store.ProbeHistoryMap)

for i := 1; i <= 100; i++ {
m.Append(store.Record{
Target: &url.URL{Scheme: "dummy", Opaque: "append-test"},
Message: fmt.Sprint(i),
})
}

if hs, ok := m["dummy:append-test"]; !ok {
t.Errorf("failed to get history\n%#v", m)
} else if len(hs.Records) != store.PROBE_HISTORY_LEN {
t.Errorf("unexpected number of records: %d", len(hs.Records))
} else if hs.Records[len(hs.Records)-1].Message != "100" {
t.Errorf("unexpected message of latest record: %#v", hs.Records[len(hs.Records)-1])
}

for i := 1; i <= 10; i++ {
m.Append(store.Record{
Target: &url.URL{Scheme: "dummy", Opaque: "append-test-another"},
Message: fmt.Sprint(i),
})
}

if hs, ok := m["dummy:append-test-another"]; !ok {
t.Errorf("failed to get history\n%#v", m)
} else if len(hs.Records) != 10 {
t.Errorf("unexpected number of records: %d", len(hs.Records))
} else if hs.Records[len(hs.Records)-1].Message != "10" {
t.Errorf("unexpected message of latest record: %#v", hs.Records[len(hs.Records)-1])
}
}

func TestStore_restore(t *testing.T) {
f, err := os.CreateTemp("", "ayd-test-*")
if err != nil {
Expand Down

0 comments on commit 14ce7f7

Please sign in to comment.