master
go 64 lines 1.65 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package testrandom
4
5 import (
6 "errors"
7
8 "github.com/netdata/netdata/go/plugins/plugin/framework/collectorapi"
9 )
10
11 func (c *Collector) validateConfig() error {
12 if c.Config.Charts.Num <= 0 && c.Config.HiddenCharts.Num <= 0 {
13 return errors.New("'charts->num' or `hidden_charts->num` must be > 0")
14 }
15 if c.Config.Charts.Num > 0 && c.Config.Charts.Dims <= 0 {
16 return errors.New("'charts->dimensions' must be > 0")
17 }
18 if c.Config.HiddenCharts.Num > 0 && c.Config.HiddenCharts.Dims <= 0 {
19 return errors.New("'hidden_charts->dimensions' must be > 0")
20 }
21 return nil
22 }
23
24 func (c *Collector) initCharts() (*collectorapi.Charts, error) {
25 charts := &collectorapi.Charts{}
26
27 var ctx int
28 v := calcContextEvery(c.Config.Charts.Num, c.Config.Charts.Contexts)
29 for i := 0; i < c.Config.Charts.Num; i++ {
30 if i != 0 && v != 0 && ctx < (c.Config.Charts.Contexts-1) && i%v == 0 {
31 ctx++
32 }
33 chart := newChart(i, ctx, c.Config.Charts.Labels, collectorapi.ChartType(c.Config.Charts.Type))
34
35 if err := charts.Add(chart); err != nil {
36 return nil, err
37 }
38 }
39
40 ctx = 0
41 v = calcContextEvery(c.Config.HiddenCharts.Num, c.Config.HiddenCharts.Contexts)
42 for i := 0; i < c.Config.HiddenCharts.Num; i++ {
43 if i != 0 && v != 0 && ctx < (c.Config.HiddenCharts.Contexts-1) && i%v == 0 {
44 ctx++
45 }
46 chart := newHiddenChart(i, ctx, c.Config.HiddenCharts.Labels, collectorapi.ChartType(c.Config.HiddenCharts.Type))
47
48 if err := charts.Add(chart); err != nil {
49 return nil, err
50 }
51 }
52
53 return charts, nil
54 }
55
56 func calcContextEvery(charts, contexts int) int {
57 if contexts <= 1 {
58 return 0
59 }
60 if contexts > charts {
61 return 1
62 }
63 return charts / contexts
64 }