mirror of
https://github.com/TwiN/gatus.git
synced 2024-11-21 23:43:27 +01:00
Minor improvements
This commit is contained in:
parent
315791151e
commit
1b23b0dd1d
@ -2,10 +2,8 @@ package config
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"math"
|
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/TwinProduction/gatus/alerting"
|
"github.com/TwinProduction/gatus/alerting"
|
||||||
@ -257,26 +255,3 @@ func GetAlertingProviderByAlertType(config *Config, alertType core.AlertType) pr
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// webConfig is the structure which supports the configuration of the endpoint
|
|
||||||
// which provides access to the web frontend
|
|
||||||
type webConfig struct {
|
|
||||||
// Address to listen on (defaults to 0.0.0.0 specified by DefaultAddress)
|
|
||||||
Address string `yaml:"address"`
|
|
||||||
|
|
||||||
// Port to listen on (default to 8080 specified by DefaultPort)
|
|
||||||
Port int `yaml:"port"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// validateAndSetDefaults checks and sets missing values based on the defaults
|
|
||||||
// in given in DefaultAddress and DefaultPort if necessary
|
|
||||||
func (web *webConfig) validateAndSetDefaults() {
|
|
||||||
if len(web.Address) == 0 {
|
|
||||||
web.Address = DefaultAddress
|
|
||||||
}
|
|
||||||
if web.Port == 0 {
|
|
||||||
web.Port = DefaultPort
|
|
||||||
} else if web.Port < 0 || web.Port > math.MaxUint16 {
|
|
||||||
panic(fmt.Sprintf("port has an invalid: value should be between %d and %d", 0, math.MaxUint16))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -103,11 +103,9 @@ services:
|
|||||||
if config.Services[0].Interval != 60*time.Second {
|
if config.Services[0].Interval != 60*time.Second {
|
||||||
t.Errorf("Interval should have been %s, because it is the default value", 60*time.Second)
|
t.Errorf("Interval should have been %s, because it is the default value", 60*time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Web.Address != DefaultAddress {
|
if config.Web.Address != DefaultAddress {
|
||||||
t.Errorf("Bind address should have been %s, because it is the default value", DefaultAddress)
|
t.Errorf("Bind address should have been %s, because it is the default value", DefaultAddress)
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Web.Port != DefaultPort {
|
if config.Web.Port != DefaultPort {
|
||||||
t.Errorf("Port should have been %d, because it is the default value", DefaultPort)
|
t.Errorf("Port should have been %d, because it is the default value", DefaultPort)
|
||||||
}
|
}
|
||||||
@ -190,7 +188,7 @@ web:
|
|||||||
address: 127.0.0.1
|
address: 127.0.0.1
|
||||||
services:
|
services:
|
||||||
- name: twinnation
|
- name: twinnation
|
||||||
url: https://twinnation.org/actuator/health
|
url: https://twinnation.org/health
|
||||||
conditions:
|
conditions:
|
||||||
- "[STATUS] == 200"
|
- "[STATUS] == 200"
|
||||||
`))
|
`))
|
||||||
@ -203,17 +201,15 @@ services:
|
|||||||
if config.Metrics {
|
if config.Metrics {
|
||||||
t.Error("Metrics should've been false by default")
|
t.Error("Metrics should've been false by default")
|
||||||
}
|
}
|
||||||
if config.Services[0].URL != "https://twinnation.org/actuator/health" {
|
if config.Services[0].URL != "https://twinnation.org/health" {
|
||||||
t.Errorf("URL should have been %s", "https://twinnation.org/actuator/health")
|
t.Errorf("URL should have been %s", "https://twinnation.org/health")
|
||||||
}
|
}
|
||||||
if config.Services[0].Interval != 60*time.Second {
|
if config.Services[0].Interval != 60*time.Second {
|
||||||
t.Errorf("Interval should have been %s, because it is the default value", 60*time.Second)
|
t.Errorf("Interval should have been %s, because it is the default value", 60*time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Web.Address != "127.0.0.1" {
|
if config.Web.Address != "127.0.0.1" {
|
||||||
t.Errorf("Bind address should have been %s, because it is specified in config", "127.0.0.1")
|
t.Errorf("Bind address should have been %s, because it is specified in config", "127.0.0.1")
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Web.Port != 12345 {
|
if config.Web.Port != 12345 {
|
||||||
t.Errorf("Port should have been %d, because it is specified in config", 12345)
|
t.Errorf("Port should have been %d, because it is specified in config", 12345)
|
||||||
}
|
}
|
||||||
@ -221,18 +217,16 @@ services:
|
|||||||
|
|
||||||
func TestParseAndValidateConfigBytesWithInvalidPort(t *testing.T) {
|
func TestParseAndValidateConfigBytesWithInvalidPort(t *testing.T) {
|
||||||
defer func() { recover() }()
|
defer func() { recover() }()
|
||||||
|
_, _ = parseAndValidateConfigBytes([]byte(`
|
||||||
parseAndValidateConfigBytes([]byte(`
|
|
||||||
web:
|
web:
|
||||||
port: 65536
|
port: 65536
|
||||||
address: 127.0.0.1
|
address: 127.0.0.1
|
||||||
services:
|
services:
|
||||||
- name: twinnation
|
- name: twinnation
|
||||||
url: https://twinnation.org/actuator/health
|
url: https://twinnation.org/health
|
||||||
conditions:
|
conditions:
|
||||||
- "[STATUS] == 200"
|
- "[STATUS] == 200"
|
||||||
`))
|
`))
|
||||||
|
|
||||||
t.Fatal("Should've panicked because the configuration specifies an invalid port value")
|
t.Fatal("Should've panicked because the configuration specifies an invalid port value")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -260,11 +254,9 @@ services:
|
|||||||
if config.Services[0].Interval != 60*time.Second {
|
if config.Services[0].Interval != 60*time.Second {
|
||||||
t.Errorf("Interval should have been %s, because it is the default value", 60*time.Second)
|
t.Errorf("Interval should have been %s, because it is the default value", 60*time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Web.Address != DefaultAddress {
|
if config.Web.Address != DefaultAddress {
|
||||||
t.Errorf("Bind address should have been %s, because it is the default value", DefaultAddress)
|
t.Errorf("Bind address should have been %s, because it is the default value", DefaultAddress)
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Web.Port != DefaultPort {
|
if config.Web.Port != DefaultPort {
|
||||||
t.Errorf("Port should have been %d, because it is the default value", DefaultPort)
|
t.Errorf("Port should have been %d, because it is the default value", DefaultPort)
|
||||||
}
|
}
|
||||||
@ -275,7 +267,7 @@ func TestParseAndValidateConfigBytesWithMetricsAndHostAndPort(t *testing.T) {
|
|||||||
metrics: true
|
metrics: true
|
||||||
services:
|
services:
|
||||||
- name: twinnation
|
- name: twinnation
|
||||||
url: https://twinnation.org/actuator/health
|
url: https://twinnation.org/health
|
||||||
conditions:
|
conditions:
|
||||||
- "[STATUS] == 200"
|
- "[STATUS] == 200"
|
||||||
web:
|
web:
|
||||||
@ -291,17 +283,15 @@ web:
|
|||||||
if !config.Metrics {
|
if !config.Metrics {
|
||||||
t.Error("Metrics should have been true")
|
t.Error("Metrics should have been true")
|
||||||
}
|
}
|
||||||
if config.Services[0].URL != "https://twinnation.org/actuator/health" {
|
if config.Services[0].URL != "https://twinnation.org/health" {
|
||||||
t.Errorf("URL should have been %s", "https://twinnation.org/actuator/health")
|
t.Errorf("URL should have been %s", "https://twinnation.org/health")
|
||||||
}
|
}
|
||||||
if config.Services[0].Interval != 60*time.Second {
|
if config.Services[0].Interval != 60*time.Second {
|
||||||
t.Errorf("Interval should have been %s, because it is the default value", 60*time.Second)
|
t.Errorf("Interval should have been %s, because it is the default value", 60*time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Web.Address != "192.168.0.1" {
|
if config.Web.Address != "192.168.0.1" {
|
||||||
t.Errorf("Bind address should have been %s, because it is the default value", "192.168.0.1")
|
t.Errorf("Bind address should have been %s, because it is the default value", "192.168.0.1")
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Web.Port != 9090 {
|
if config.Web.Port != 9090 {
|
||||||
t.Errorf("Port should have been %d, because it is specified in config", 9090)
|
t.Errorf("Port should have been %d, because it is specified in config", 9090)
|
||||||
}
|
}
|
||||||
|
34
config/web.go
Normal file
34
config/web.go
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"math"
|
||||||
|
)
|
||||||
|
|
||||||
|
// webConfig is the structure which supports the configuration of the endpoint
|
||||||
|
// which provides access to the web frontend
|
||||||
|
type webConfig struct {
|
||||||
|
// Address to listen on (defaults to 0.0.0.0 specified by DefaultAddress)
|
||||||
|
Address string `yaml:"address"`
|
||||||
|
|
||||||
|
// Port to listen on (default to 8080 specified by DefaultPort)
|
||||||
|
Port int `yaml:"port"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// validateAndSetDefaults checks and sets missing values based on the defaults
|
||||||
|
// in given in DefaultAddress and DefaultPort if necessary
|
||||||
|
func (web *webConfig) validateAndSetDefaults() {
|
||||||
|
if len(web.Address) == 0 {
|
||||||
|
web.Address = DefaultAddress
|
||||||
|
}
|
||||||
|
if web.Port == 0 {
|
||||||
|
web.Port = DefaultPort
|
||||||
|
} else if web.Port < 0 || web.Port > math.MaxUint16 {
|
||||||
|
panic(fmt.Sprintf("port has an invalid: value should be between %d and %d", 0, math.MaxUint16))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SocketAddress returns the combination of the Address and the Port
|
||||||
|
func (web *webConfig) SocketAddress() string {
|
||||||
|
return fmt.Sprintf("%s:%d", web.Address, web.Port)
|
||||||
|
}
|
6
main.go
6
main.go
@ -3,7 +3,6 @@ package main
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"compress/gzip"
|
"compress/gzip"
|
||||||
"fmt"
|
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
@ -36,10 +35,9 @@ func main() {
|
|||||||
if cfg.Metrics {
|
if cfg.Metrics {
|
||||||
http.Handle("/metrics", promhttp.Handler())
|
http.Handle("/metrics", promhttp.Handler())
|
||||||
}
|
}
|
||||||
|
log.Printf("[main][main] Listening on %s\n", cfg.Web.SocketAddress())
|
||||||
log.Printf("[main][main] Listening on %s:%d\r\n", cfg.Web.Address, cfg.Web.Port)
|
|
||||||
go watchdog.Monitor(cfg)
|
go watchdog.Monitor(cfg)
|
||||||
log.Fatal(http.ListenAndServe(fmt.Sprintf("%s:%d", cfg.Web.Address, cfg.Web.Port), nil))
|
log.Fatal(http.ListenAndServe(cfg.Web.SocketAddress(), nil))
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadConfiguration() *config.Config {
|
func loadConfiguration() *config.Config {
|
||||||
|
Loading…
Reference in New Issue
Block a user