|
|
|
@ -9,48 +9,33 @@ import ( |
|
|
|
|
|
|
|
|
|
var ( |
|
|
|
|
simpleDashboardConfig string = "./test-configs/dashboards-from-disk" |
|
|
|
|
oldVersion string = "./test-configs/version-0" |
|
|
|
|
brokenConfigs string = "./test-configs/broken-configs" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
func TestDashboardsAsConfig(t *testing.T) { |
|
|
|
|
Convey("Dashboards as configuration", t, func() { |
|
|
|
|
logger := log.New("test-logger") |
|
|
|
|
|
|
|
|
|
Convey("Can read config file", func() { |
|
|
|
|
|
|
|
|
|
cfgProvider := configReader{path: simpleDashboardConfig, log: log.New("test-logger")} |
|
|
|
|
Convey("Can read config file version 1 format", func() { |
|
|
|
|
cfgProvider := configReader{path: simpleDashboardConfig, log: logger} |
|
|
|
|
cfg, err := cfgProvider.readConfig() |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("readConfig return an error %v", err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
So(len(cfg), ShouldEqual, 2) |
|
|
|
|
|
|
|
|
|
ds := cfg[0] |
|
|
|
|
So(err, ShouldBeNil) |
|
|
|
|
|
|
|
|
|
So(ds.Name, ShouldEqual, "general dashboards") |
|
|
|
|
So(ds.Type, ShouldEqual, "file") |
|
|
|
|
So(ds.OrgId, ShouldEqual, 2) |
|
|
|
|
So(ds.Folder, ShouldEqual, "developers") |
|
|
|
|
So(ds.Editable, ShouldBeTrue) |
|
|
|
|
|
|
|
|
|
So(len(ds.Options), ShouldEqual, 1) |
|
|
|
|
So(ds.Options["path"], ShouldEqual, "/var/lib/grafana/dashboards") |
|
|
|
|
|
|
|
|
|
ds2 := cfg[1] |
|
|
|
|
validateDashboardAsConfig(cfg) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
So(ds2.Name, ShouldEqual, "default") |
|
|
|
|
So(ds2.Type, ShouldEqual, "file") |
|
|
|
|
So(ds2.OrgId, ShouldEqual, 1) |
|
|
|
|
So(ds2.Folder, ShouldEqual, "") |
|
|
|
|
So(ds2.Editable, ShouldBeFalse) |
|
|
|
|
Convey("Can read config file in version 0 format", func() { |
|
|
|
|
cfgProvider := configReader{path: oldVersion, log: logger} |
|
|
|
|
cfg, err := cfgProvider.readConfig() |
|
|
|
|
So(err, ShouldBeNil) |
|
|
|
|
|
|
|
|
|
So(len(ds2.Options), ShouldEqual, 1) |
|
|
|
|
So(ds2.Options["path"], ShouldEqual, "/var/lib/grafana/dashboards") |
|
|
|
|
validateDashboardAsConfig(cfg) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
Convey("Should skip invalid path", func() { |
|
|
|
|
|
|
|
|
|
cfgProvider := configReader{path: "/invalid-directory", log: log.New("test-logger")} |
|
|
|
|
cfgProvider := configReader{path: "/invalid-directory", log: logger} |
|
|
|
|
cfg, err := cfgProvider.readConfig() |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("readConfig return an error %v", err) |
|
|
|
@ -61,7 +46,7 @@ func TestDashboardsAsConfig(t *testing.T) { |
|
|
|
|
|
|
|
|
|
Convey("Should skip broken config files", func() { |
|
|
|
|
|
|
|
|
|
cfgProvider := configReader{path: brokenConfigs, log: log.New("test-logger")} |
|
|
|
|
cfgProvider := configReader{path: brokenConfigs, log: logger} |
|
|
|
|
cfg, err := cfgProvider.readConfig() |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("readConfig return an error %v", err) |
|
|
|
@ -71,3 +56,23 @@ func TestDashboardsAsConfig(t *testing.T) { |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
func validateDashboardAsConfig(cfg []*DashboardsAsConfig) { |
|
|
|
|
So(len(cfg), ShouldEqual, 2) |
|
|
|
|
|
|
|
|
|
ds := cfg[0] |
|
|
|
|
So(ds.Name, ShouldEqual, "general dashboards") |
|
|
|
|
So(ds.Type, ShouldEqual, "file") |
|
|
|
|
So(ds.OrgId, ShouldEqual, 2) |
|
|
|
|
So(ds.Folder, ShouldEqual, "developers") |
|
|
|
|
So(ds.Editable, ShouldBeTrue) |
|
|
|
|
So(len(ds.Options), ShouldEqual, 1) |
|
|
|
|
So(ds.Options["path"], ShouldEqual, "/var/lib/grafana/dashboards") |
|
|
|
|
ds2 := cfg[1] |
|
|
|
|
So(ds2.Name, ShouldEqual, "default") |
|
|
|
|
So(ds2.Type, ShouldEqual, "file") |
|
|
|
|
So(ds2.OrgId, ShouldEqual, 1) |
|
|
|
|
So(ds2.Folder, ShouldEqual, "") |
|
|
|
|
So(ds2.Editable, ShouldBeFalse) |
|
|
|
|
So(len(ds2.Options), ShouldEqual, 1) |
|
|
|
|
So(ds2.Options["path"], ShouldEqual, "/var/lib/grafana/dashboards") |
|
|
|
|
} |
|
|
|
|