Skip to content

Commit

Permalink
πŸ› monitor middleware - fix ignore custom settings (#2024)
Browse files Browse the repository at this point in the history
* πŸ› fix: ignore custom settings

* πŸ› fix: ignore custom settings

* βœ… chore: add tests for config default
  • Loading branch information
wangjq4214 committed Aug 19, 2022
1 parent 1fec875 commit 32d311c
Show file tree
Hide file tree
Showing 2 changed files with 165 additions and 9 deletions.
20 changes: 11 additions & 9 deletions middleware/monitor/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,15 +96,8 @@ func configDefault(config ...Config) Config {
if cfg.ChartJsURL == "" {
cfg.ChartJsURL = defaultChartJsURL
}
if cfg.Title == ConfigDefault.Title && cfg.Refresh == ConfigDefault.Refresh {
cfg.index = ConfigDefault.index
} else {
if cfg.Refresh < minRefresh {
cfg.Refresh = minRefresh
}
// update cfg.index with custom title/refresh
cfg.index = newIndex(viewBag{cfg.Title,
cfg.Refresh, cfg.FontURL, cfg.ChartJsURL, cfg.CustomHead})
if cfg.Refresh < minRefresh {
cfg.Refresh = minRefresh
}

if cfg.Next == nil {
Expand All @@ -115,5 +108,14 @@ func configDefault(config ...Config) Config {
cfg.APIOnly = ConfigDefault.APIOnly
}

// update cfg.index with custom title/refresh
cfg.index = newIndex(viewBag{
title: cfg.Title,
refresh: cfg.Refresh,
fontUrl: cfg.FontURL,
chartJsUrl: cfg.ChartJsURL,
customHead: cfg.CustomHead,
})

return cfg
}
154 changes: 154 additions & 0 deletions middleware/monitor/config_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
package monitor

import (
"testing"
"time"

"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/utils"
)

func Test_Config_Default(t *testing.T) {
t.Parallel()

t.Run("use default", func(t *testing.T) {
cfg := configDefault()

utils.AssertEqual(t, defaultTitle, cfg.Title)
utils.AssertEqual(t, defaultRefresh, cfg.Refresh)
utils.AssertEqual(t, defaultFontURL, cfg.FontURL)
utils.AssertEqual(t, defaultChartJsURL, cfg.ChartJsURL)
utils.AssertEqual(t, defaultCustomHead, cfg.CustomHead)
utils.AssertEqual(t, false, cfg.APIOnly)
utils.AssertEqual(t, (func(*fiber.Ctx) bool)(nil), cfg.Next)
utils.AssertEqual(t, newIndex(viewBag{defaultTitle, defaultRefresh, defaultFontURL, defaultChartJsURL, defaultCustomHead}), cfg.index)
})

t.Run("set title", func(t *testing.T) {
title := "title"
cfg := configDefault(Config{
Title: title,
})

utils.AssertEqual(t, title, cfg.Title)
utils.AssertEqual(t, defaultRefresh, cfg.Refresh)
utils.AssertEqual(t, defaultFontURL, cfg.FontURL)
utils.AssertEqual(t, defaultChartJsURL, cfg.ChartJsURL)
utils.AssertEqual(t, defaultCustomHead, cfg.CustomHead)
utils.AssertEqual(t, false, cfg.APIOnly)
utils.AssertEqual(t, (func(*fiber.Ctx) bool)(nil), cfg.Next)
utils.AssertEqual(t, newIndex(viewBag{title, defaultRefresh, defaultFontURL, defaultChartJsURL, defaultCustomHead}), cfg.index)
})

t.Run("set refresh less than default", func(t *testing.T) {
cfg := configDefault(Config{
Refresh: 100 * time.Millisecond,
})

utils.AssertEqual(t, defaultTitle, cfg.Title)
utils.AssertEqual(t, minRefresh, cfg.Refresh)
utils.AssertEqual(t, defaultFontURL, cfg.FontURL)
utils.AssertEqual(t, defaultChartJsURL, cfg.ChartJsURL)
utils.AssertEqual(t, defaultCustomHead, cfg.CustomHead)
utils.AssertEqual(t, false, cfg.APIOnly)
utils.AssertEqual(t, (func(*fiber.Ctx) bool)(nil), cfg.Next)
utils.AssertEqual(t, newIndex(viewBag{defaultTitle, minRefresh, defaultFontURL, defaultChartJsURL, defaultCustomHead}), cfg.index)
})

t.Run("set refresh", func(t *testing.T) {
refresh := time.Second
cfg := configDefault(Config{
Refresh: refresh,
})

utils.AssertEqual(t, defaultTitle, cfg.Title)
utils.AssertEqual(t, refresh, cfg.Refresh)
utils.AssertEqual(t, defaultFontURL, cfg.FontURL)
utils.AssertEqual(t, defaultChartJsURL, cfg.ChartJsURL)
utils.AssertEqual(t, defaultCustomHead, cfg.CustomHead)
utils.AssertEqual(t, false, cfg.APIOnly)
utils.AssertEqual(t, (func(*fiber.Ctx) bool)(nil), cfg.Next)
utils.AssertEqual(t, newIndex(viewBag{defaultTitle, refresh, defaultFontURL, defaultChartJsURL, defaultCustomHead}), cfg.index)
})

t.Run("set font url", func(t *testing.T) {
fontUrl := "https://example.com"
cfg := configDefault(Config{
FontURL: fontUrl,
})

utils.AssertEqual(t, defaultTitle, cfg.Title)
utils.AssertEqual(t, defaultRefresh, cfg.Refresh)
utils.AssertEqual(t, fontUrl, cfg.FontURL)
utils.AssertEqual(t, defaultChartJsURL, cfg.ChartJsURL)
utils.AssertEqual(t, defaultCustomHead, cfg.CustomHead)
utils.AssertEqual(t, false, cfg.APIOnly)
utils.AssertEqual(t, (func(*fiber.Ctx) bool)(nil), cfg.Next)
utils.AssertEqual(t, newIndex(viewBag{defaultTitle, defaultRefresh, fontUrl, defaultChartJsURL, defaultCustomHead}), cfg.index)
})

t.Run("set chart js url", func(t *testing.T) {
chartUrl := "http://example.com"
cfg := configDefault(Config{
ChartJsURL: chartUrl,
})

utils.AssertEqual(t, defaultTitle, cfg.Title)
utils.AssertEqual(t, defaultRefresh, cfg.Refresh)
utils.AssertEqual(t, defaultFontURL, cfg.FontURL)
utils.AssertEqual(t, chartUrl, cfg.ChartJsURL)
utils.AssertEqual(t, defaultCustomHead, cfg.CustomHead)
utils.AssertEqual(t, false, cfg.APIOnly)
utils.AssertEqual(t, (func(*fiber.Ctx) bool)(nil), cfg.Next)
utils.AssertEqual(t, newIndex(viewBag{defaultTitle, defaultRefresh, defaultFontURL, chartUrl, defaultCustomHead}), cfg.index)
})

t.Run("set custom head", func(t *testing.T) {
head := "head"
cfg := configDefault(Config{
CustomHead: head,
})

utils.AssertEqual(t, defaultTitle, cfg.Title)
utils.AssertEqual(t, defaultRefresh, cfg.Refresh)
utils.AssertEqual(t, defaultFontURL, cfg.FontURL)
utils.AssertEqual(t, defaultChartJsURL, cfg.ChartJsURL)
utils.AssertEqual(t, head, cfg.CustomHead)
utils.AssertEqual(t, false, cfg.APIOnly)
utils.AssertEqual(t, (func(*fiber.Ctx) bool)(nil), cfg.Next)
utils.AssertEqual(t, newIndex(viewBag{defaultTitle, defaultRefresh, defaultFontURL, defaultChartJsURL, head}), cfg.index)
})

t.Run("set api only", func(t *testing.T) {
cfg := configDefault(Config{
APIOnly: true,
})

utils.AssertEqual(t, defaultTitle, cfg.Title)
utils.AssertEqual(t, defaultRefresh, cfg.Refresh)
utils.AssertEqual(t, defaultFontURL, cfg.FontURL)
utils.AssertEqual(t, defaultChartJsURL, cfg.ChartJsURL)
utils.AssertEqual(t, defaultCustomHead, cfg.CustomHead)
utils.AssertEqual(t, true, cfg.APIOnly)
utils.AssertEqual(t, (func(*fiber.Ctx) bool)(nil), cfg.Next)
utils.AssertEqual(t, newIndex(viewBag{defaultTitle, defaultRefresh, defaultFontURL, defaultChartJsURL, defaultCustomHead}), cfg.index)
})

t.Run("set next", func(t *testing.T) {
f := func(c *fiber.Ctx) bool {
return true
}
cfg := configDefault(Config{
Next: f,
})

utils.AssertEqual(t, defaultTitle, cfg.Title)
utils.AssertEqual(t, defaultRefresh, cfg.Refresh)
utils.AssertEqual(t, defaultFontURL, cfg.FontURL)
utils.AssertEqual(t, defaultChartJsURL, cfg.ChartJsURL)
utils.AssertEqual(t, defaultCustomHead, cfg.CustomHead)
utils.AssertEqual(t, false, cfg.APIOnly)
utils.AssertEqual(t, f(nil), cfg.Next(nil))
utils.AssertEqual(t, newIndex(viewBag{defaultTitle, defaultRefresh, defaultFontURL, defaultChartJsURL, defaultCustomHead}), cfg.index)
})
}

1 comment on commit 32d311c

@ReneWerner87
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 2.

Benchmark suite Current: 32d311c Previous: be38feb Ratio
Benchmark_Ctx_Protocol 15.96 ns/op 0 B/op 0 allocs/op 2.627 ns/op 0 B/op 0 allocs/op 6.08
Benchmark_StatusMessage/default 11.68 ns/op 0 B/op 0 allocs/op 4.47 ns/op 0 B/op 0 allocs/op 2.61

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.