feat(whitelist): Converted black to whitelist
* Defined global var for holding default metric groups * Refactor removeGroup() to work with the whitelist * Refactor TestRemoveGroup()
This commit is contained in:
parent
4b604d8d54
commit
f7dda9742f
|
@ -21,6 +21,11 @@ type Mesos struct {
|
||||||
MetricsCol []string `toml:"metrics_collection"`
|
MetricsCol []string `toml:"metrics_collection"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var defaultMetrics = []string{
|
||||||
|
"resources", "master", "system", "slaves", "frameworks",
|
||||||
|
"tasks", "messages", "evqueue", "messages", "registrar",
|
||||||
|
}
|
||||||
|
|
||||||
// SampleConfig returns a sample configuration block
|
// SampleConfig returns a sample configuration block
|
||||||
func (m *Mesos) SampleConfig() string {
|
func (m *Mesos) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
|
@ -66,6 +71,27 @@ func (m *Mesos) Gather(acc telegraf.Accumulator) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func metricsDiff(w []string) []string {
|
||||||
|
b := []string{}
|
||||||
|
s := make(map[string]bool)
|
||||||
|
|
||||||
|
if len(w) == 0 {
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v := range w {
|
||||||
|
s[v] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, d := range defaultMetrics {
|
||||||
|
if _, ok := s[d]; !ok {
|
||||||
|
b = append(b, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
func masterBlocks(g string) []string {
|
func masterBlocks(g string) []string {
|
||||||
var m map[string][]string
|
var m map[string][]string
|
||||||
|
|
||||||
|
@ -215,23 +241,20 @@ var sampleConfig = `
|
||||||
servers = ["localhost:5050"]
|
servers = ["localhost:5050"]
|
||||||
# Metrics groups to be collected.
|
# Metrics groups to be collected.
|
||||||
# Default, all enabled.
|
# Default, all enabled.
|
||||||
metrics_collection = ["resources","master","system","slaves","frameworks","messages","evqueues","registrar"]
|
metrics_collection = ["resources","master","system","slaves","frameworks","messages","evqueue","registrar"]
|
||||||
`
|
`
|
||||||
|
|
||||||
// removeGroup(), remove blacklisted groups
|
// removeGroup(), remove blacklisted groups
|
||||||
func (m *Mesos) removeGroup(j *map[string]interface{}) {
|
func (m *Mesos) removeGroup(j *map[string]interface{}) {
|
||||||
var ok bool
|
var ok bool
|
||||||
u := map[string]bool{}
|
|
||||||
|
|
||||||
for _, v := range m.MetricsCol {
|
b := metricsDiff(m.MetricsCol)
|
||||||
for _, k := range masterBlocks(v) {
|
|
||||||
u[k] = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for k, _ := range u {
|
for _, k := range b {
|
||||||
if _, ok = (*j)[k]; ok {
|
for _, v := range masterBlocks(k) {
|
||||||
delete((*j), k)
|
if _, ok = (*j)[v]; ok {
|
||||||
|
delete((*j), v)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,29 +89,25 @@ func TestRemoveGroup(t *testing.T) {
|
||||||
//t.Skip("needs refactoring")
|
//t.Skip("needs refactoring")
|
||||||
// FIXME: removeGroup() behavior is the opposite as it was,
|
// FIXME: removeGroup() behavior is the opposite as it was,
|
||||||
// this test has to be refactored
|
// this test has to be refactored
|
||||||
j := []string{
|
|
||||||
"resources", "master",
|
|
||||||
"system", "slaves", "frameworks",
|
|
||||||
"tasks", "messages", "evqueue",
|
|
||||||
"messages", "registrar",
|
|
||||||
}
|
|
||||||
|
|
||||||
generateMetrics()
|
generateMetrics()
|
||||||
|
|
||||||
for _, v := range j {
|
m := Mesos{
|
||||||
m := Mesos{
|
MetricsCol: []string{
|
||||||
MetricsCol: []string{v},
|
"resources", "master", "registrar",
|
||||||
}
|
},
|
||||||
m.removeGroup(&mesosMetrics)
|
}
|
||||||
|
b := []string{
|
||||||
|
"system", "slaves", "frameworks",
|
||||||
|
"messages", "evqueue",
|
||||||
|
}
|
||||||
|
|
||||||
|
m.removeGroup(&mesosMetrics)
|
||||||
|
|
||||||
|
for _, v := range b {
|
||||||
for _, x := range masterBlocks(v) {
|
for _, x := range masterBlocks(v) {
|
||||||
if _, ok := mesosMetrics[x]; ok {
|
if _, ok := mesosMetrics[x]; ok {
|
||||||
t.Errorf("Found key %s, it should be gone.", x)
|
t.Errorf("Found key %s, it should be gone.", x)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(mesosMetrics) > 0 {
|
|
||||||
t.Error("Keys were left at slice sample")
|
|
||||||
}
|
|
||||||
//Test for wrong keys
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue