Add timeout customization

This commit is contained in:
Faiz Shukri
2016-06-16 13:38:51 +08:00
parent 20e4dd1414
commit 3f4b9ced77
4 changed files with 11 additions and 3 deletions

View File

@@ -13,8 +13,8 @@ import (
"time"
)
const HttpTimeout = time.Duration(time.Second)
const DefaultInterval = 60
const DefaultTimeout = 1
const DefaultTimeFormat = "15:04:05 Jan 2 MST"
// Monitor data model
@@ -24,6 +24,7 @@ type Monitor struct {
Method string `json:"method"`
StrictTLS bool `json:"strict_tls"`
CheckInterval time.Duration `json:"interval"`
HttpTimeout time.Duration `json:"timeout"`
MetricID int `json:"metric_id"`
ComponentID int `json:"component_id"`
@@ -100,7 +101,7 @@ func (monitor *Monitor) Tick() {
func (monitor *Monitor) doRequest() bool {
client := &http.Client{
Timeout: HttpTimeout,
Timeout: time.Duration(monitor.HttpTimeout * time.Second),
}
if monitor.StrictTLS == false {
client.Transport = &http.Transport{
@@ -213,6 +214,10 @@ func (monitor *Monitor) ValidateConfiguration() error {
monitor.CheckInterval = DefaultInterval
}
if monitor.HttpTimeout < 1 {
monitor.HttpTimeout = DefaultTimeout
}
monitor.Method = strings.ToUpper(monitor.Method)
switch monitor.Method {
case "GET", "POST", "DELETE", "OPTIONS", "HEAD":