mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
Merge pull request #7 from linhvo/index-frame-statsD
Index frame stats d
This commit is contained in:
commit
c064919b33
5 changed files with 128 additions and 15 deletions
|
|
@ -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{}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
6
index.go
6
index.go
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -201,7 +201,6 @@ func (s *Server) monitorAntiEntropy() {
|
|||
continue
|
||||
}
|
||||
|
||||
|
||||
// Record successful sync in log.
|
||||
s.logger().Printf("holder sync complete")
|
||||
}
|
||||
|
|
|
|||
121
stats_test.go
121
stats_test.go
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue