Merge pull request #7 from linhvo/index-frame-statsD

Index frame stats d
This commit is contained in:
Michael Baird 2017-04-28 09:24:03 -05:00 committed by GitHub
commit c064919b33
5 changed files with 128 additions and 15 deletions

View file

@ -338,6 +338,8 @@ func (h *Handler) handleDeleteIndex(w http.ResponseWriter, r *http.Request) {
if err := json.NewEncoder(w).Encode(deleteIndexResponse{}); err != nil {
h.logger().Printf("response encoding error: %s", err)
}
h.Holder.Stats.Count("deleteIndex", 1)
}
type deleteIndexResponse struct{}
@ -381,6 +383,8 @@ func (h *Handler) handlePostIndex(w http.ResponseWriter, r *http.Request) {
if err := json.NewEncoder(w).Encode(postIndexResponse{}); err != nil {
h.logger().Printf("response encoding error: %s", err)
}
h.Holder.Stats.Count("createIndex", 1)
}
// handlePatchIndexTimeQuantum handles PATCH /index/time_quantum request.
@ -531,6 +535,9 @@ func (h *Handler) handlePostFrame(w http.ResponseWriter, r *http.Request) {
if err := json.NewEncoder(w).Encode(postFrameResponse{}); err != nil {
h.logger().Printf("response encoding error: %s", err)
}
h.Holder.Stats.CountWithCustomTags("createFrame", 1, []string{fmt.Sprintf("index:%s", indexName)})
}
type _postFrameRequest postFrameRequest
@ -612,6 +619,8 @@ func (h *Handler) handleDeleteFrame(w http.ResponseWriter, r *http.Request) {
if err := json.NewEncoder(w).Encode(deleteFrameResponse{}); err != nil {
h.logger().Printf("response encoding error: %s", err)
}
h.Holder.Stats.CountWithCustomTags("deleteFrame", 1, []string{fmt.Sprintf("index:%s", indexName)})
}
type deleteFrameResponse struct{}

View file

@ -94,8 +94,6 @@ func (h *Holder) Open() error {
return fmt.Errorf("open index: name=%s, err=%s", index.Name(), err)
}
h.indexes[index.Name()] = index
h.Stats.Count("indexN", 1)
}
// Periodically flush cache.
@ -234,8 +232,6 @@ func (h *Holder) createIndex(name string, opt IndexOptions) (*Index, error) {
h.indexes[index.Name()] = index
h.Stats.Count("indexN", 1)
return index, nil
}
@ -274,8 +270,6 @@ func (h *Holder) DeleteIndex(name string) error {
// Remove reference.
delete(h.indexes, name)
h.Stats.Count("indexN", -1)
return nil
}

View file

@ -164,8 +164,6 @@ func (i *Index) openFrames() error {
return fmt.Errorf("open frame: name=%s, err=%s", fr.Name(), err)
}
i.frames[fr.Name()] = fr
i.Stats.Count("frameN", 1)
}
return nil
}
@ -405,8 +403,6 @@ func (i *Index) createFrame(name string, opt FrameOptions) (*Frame, error) {
// Add to index's frame lookup.
i.frames[name] = f
i.Stats.Count("frameN", 1)
return f, nil
}
@ -445,8 +441,6 @@ func (i *Index) DeleteFrame(name string) error {
// Remove reference.
delete(i.frames, name)
i.Stats.Count("frameN", -1)
return nil
}

View file

@ -201,7 +201,6 @@ func (s *Server) monitorAntiEntropy() {
continue
}
// Record successful sync in log.
s.logger().Printf("holder sync complete")
}

View file

@ -2,10 +2,11 @@ package pilosa_test
import (
"context"
"github.com/pilosa/pilosa"
"net/http"
"strings"
"testing"
"time"
"github.com/pilosa/pilosa"
)
func TestStatsCount_TopN(t *testing.T) {
@ -135,6 +136,122 @@ func TestStatsCount_SetProfileAttrs(t *testing.T) {
}
}
func TestStatsCount_CreateIndex(t *testing.T) {
hldr := MustOpenHolder()
defer hldr.Close()
s := NewServer()
s.Handler.Holder = hldr.Holder
defer s.Close()
called := false
s.Handler.Holder.Stats = &MockStats{
mockCount: func(name string, value int64) {
if name != "createIndex" {
t.Errorf("Expected createIndex, Results %s", name)
}
called = true
return
},
}
http.DefaultClient.Do(MustNewHTTPRequest("POST", s.URL+"/index/i", nil))
if !called {
t.Error("Count isn't called")
}
}
func TestStatsCount_DeleteIndex(t *testing.T) {
hldr := MustOpenHolder()
defer hldr.Close()
s := NewServer()
s.Handler.Holder = hldr.Holder
defer s.Close()
// Create index.
if _, err := hldr.CreateIndexIfNotExists("i", pilosa.IndexOptions{}); err != nil {
t.Fatal(err)
}
called := false
s.Handler.Holder.Stats = &MockStats{
mockCount: func(name string, value int64) {
if name != "deleteIndex" {
t.Errorf("Expected deleteIndex, Results %s", name)
}
called = true
return
},
}
http.DefaultClient.Do(MustNewHTTPRequest("DELETE", s.URL+"/index/i", strings.NewReader("")))
if !called {
t.Error("Count isn't called")
}
}
func TestStatsCount_CreateFrame(t *testing.T) {
hldr := MustOpenHolder()
defer hldr.Close()
s := NewServer()
s.Handler.Holder = hldr.Holder
defer s.Close()
// Create index.
if _, err := hldr.CreateIndexIfNotExists("i", pilosa.IndexOptions{}); err != nil {
t.Fatal(err)
}
called := false
s.Handler.Holder.Stats = &MockStats{
mockCountWithTags: func(name string, value int64, index []string) {
if name != "createFrame" {
t.Errorf("Expected createFrame, Results %s", name)
}
if index[0] != "index:i" {
t.Errorf("Expected index:i, Results %s", index)
}
called = true
return
},
}
http.DefaultClient.Do(MustNewHTTPRequest("POST", s.URL+"/index/i/frame/f", nil))
if !called {
t.Error("Count isn't called")
}
}
func TestStatsCount_DeleteFrame(t *testing.T) {
hldr := MustOpenHolder()
defer hldr.Close()
s := NewServer()
s.Handler.Holder = hldr.Holder
defer s.Close()
called := false
// Create index.
indx, _ := hldr.CreateIndexIfNotExists("i", pilosa.IndexOptions{})
if _, err := indx.CreateFrameIfNotExists("test", pilosa.FrameOptions{}); err != nil {
t.Fatal(err)
}
s.Handler.Holder.Stats = &MockStats{
mockCountWithTags: func(name string, value int64, index []string) {
if name != "deleteFrame" {
t.Errorf("Expected deleteFrame, Results %s", name)
}
if index[0] != "index:i" {
t.Errorf("Expected index:i, Results %s", index)
}
called = true
return
},
}
http.DefaultClient.Do(MustNewHTTPRequest("DELETE", s.URL+"/index/i/frame/f", strings.NewReader("")))
if !called {
t.Error("Count isn't called")
}
}
type MockStats struct {
mockCount func(name string, value int64)
mockCountWithTags func(name string, value int64, tags []string)