1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
package collector
import (
"testing"
"gopkg.in/mgo.v2/bson"
)
func Test_ParserTopStatus(t *testing.T) {
data := LoadFixture("top_status.bson")
collections := []string{
"admin.system.roles",
"admin.system.version",
"dummy.collection",
"dummy.users",
"local.oplog.rs",
"local.startup_log",
"local.system.replset",
}
topStatus := &TopStatus{}
loadTopStatusFromBson(data, topStatus)
topStats := topStatus.TopStats["dummy.users"]
if len(topStatus.TopStats) != len(collections) {
t.Error("All database collections were not loaded")
}
for cid := range collections {
if _, ok := topStatus.TopStats[collections[cid]]; !ok {
t.Errorf("Database collection '%s' is missing", collections[cid])
}
}
if topStats.Total.Time != 1095531 {
t.Error("Wrong total operation time value for dummy user collection")
}
if topStats.Total.Count != 17428 {
t.Error("Wrong total operation count value for dummy user collection")
}
if topStats.ReadLock.Time != 267953 {
t.Error("Wrong read lock operation time value for dummy user collection")
}
if topStats.ReadLock.Count != 17420 {
t.Error("Wrong read lock operation count value for dummy user collection")
}
if topStats.WriteLock.Time != 827578 {
t.Error("Wrong write lock operation time value for dummy user collection")
}
if topStats.WriteLock.Count != 8 {
t.Error("Wrong write lock operation count value for dummy user collection")
}
if topStats.Queries.Time != 899 {
t.Error("Wrong queries operation time value for dummy user collection")
}
if topStats.Queries.Count != 10 {
t.Error("Wrong queries operation count value for dummy user collection")
}
if topStats.GetMore.Time != 0 {
t.Error("Wrong get more operation time value for dummy user collection")
}
if topStats.GetMore.Count != 0 {
t.Error("Wrong get more operation count value for dummy user collection")
}
if topStats.Insert.Time != 826929 {
t.Error("Wrong insert operation time value for dummy user collection")
}
if topStats.Insert.Count != 5 {
t.Error("Wrong insert operation count value for dummy user collection")
}
if topStats.Update.Time != 456 {
t.Error("Wrong update operation time value for dummy user collection")
}
if topStats.Update.Count != 2 {
t.Error("Wrong update operation count value for dummy user collection")
}
if topStats.Remove.Time != 193 {
t.Error("Wrong remove operation time value for dummy user collection")
}
if topStats.Remove.Count != 1 {
t.Error("Wrong remove operation count value for dummy user collection")
}
if topStats.Commands.Time != 0 {
t.Error("Wrong commands operation time value for dummy user collection")
}
if topStats.Commands.Count != 0 {
t.Error("Wrong commands operation count value for dummy user collection")
}
}
func loadTopStatusFromBson(data []byte, status *TopStatus) {
err := bson.Unmarshal(data, status)
if err != nil {
panic(err)
}
}
|