File: top_status_test.go

package info (click to toggle)
prometheus-mongodb-exporter 1.0.0%2Bgit20180522.e755a44-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 668 kB
  • sloc: sh: 65; makefile: 27
file content (105 lines) | stat: -rw-r--r-- 2,908 bytes parent folder | download | duplicates (3)
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)
	}
}