diff --git a/types/services/routine.go b/types/services/routine.go index ff298c94..ae908a0b 100644 --- a/types/services/routine.go +++ b/types/services/routine.go @@ -208,9 +208,9 @@ func CheckGrpc(s *Service, record bool) (*Service, error) { s.Online = true if s.GrpcHealthCheck.Bool { - if s.ExpectedStatus != s.LastStatusCode { + if *s.ExpectedStatus != s.LastStatusCode { if record { - RecordFailure(s, fmt.Sprintf("GRPC Service: '%s', Status Code: expected '%v', got '%v'", s.Name, s.ExpectedStatus, s.LastStatusCode), "response_code") + RecordFailure(s, fmt.Sprintf("GRPC Service: '%s', Status Code: expected '%v', got '%v'", s.Name, *s.ExpectedStatus, s.LastStatusCode), "response_code") } return s, nil } @@ -381,9 +381,9 @@ func CheckHttp(s *Service, record bool) (*Service, error) { return s, err } } - if s.ExpectedStatus != res.StatusCode { + if *s.ExpectedStatus != res.StatusCode { if record { - RecordFailure(s, fmt.Sprintf("HTTP Status Code %v did not match %v", res.StatusCode, s.ExpectedStatus), "status_code") + RecordFailure(s, fmt.Sprintf("HTTP Status Code %v did not match %v", res.StatusCode, *s.ExpectedStatus), "status_code") } return s, err } @@ -462,9 +462,9 @@ func CheckSsh(s *Service, record bool) (*Service, error) { s.Online = true if s.SshHealthCheck.Bool { - if s.ExpectedStatus != s.LastStatusCode { + if *s.ExpectedStatus != s.LastStatusCode { if record { - RecordFailure(s, fmt.Sprintf("SSH Service: '%s', Exit Code: expected '%v', got '%v'", s.Name, s.ExpectedStatus, s.LastStatusCode), "response_code") + RecordFailure(s, fmt.Sprintf("SSH Service: '%s', Exit Code: expected '%v', got '%v'", s.Name, *s.ExpectedStatus, s.LastStatusCode), "response_code") } return s, nil } diff --git a/types/services/routine_test.go b/types/services/routine_test.go index 92f1035c..9e1174a7 100644 --- a/types/services/routine_test.go +++ b/types/services/routine_test.go @@ -31,7 +31,7 @@ var testdata = []struct { Domain: "localhost", Port: 50053, Expected: null.NewNullString("status:SERVING"), - ExpectedStatus: 1, + ExpectedStatus: &[]int{1}[0], Type: "grpc", Timeout: 3, VerifySSL: null.NewNullBool(false), @@ -47,7 +47,7 @@ var testdata = []struct { Domain: "localhost", Port: 50054, Expected: null.NewNullString(""), - ExpectedStatus: 0, + ExpectedStatus: &[]int{0}[0], Type: "grpc", Timeout: 1, VerifySSL: null.NewNullBool(true), @@ -63,7 +63,7 @@ var testdata = []struct { Domain: "localhost", Port: 50055, Expected: null.NewNullString(""), - ExpectedStatus: 0, + ExpectedStatus: &[]int{0}[0], Type: "grpc", Timeout: 1, VerifySSL: null.NewNullBool(false), @@ -78,7 +78,7 @@ var testdata = []struct { Domain: "localhost", Port: 1000, Expected: null.NewNullString(""), - ExpectedStatus: 0, + ExpectedStatus: &[]int{0}[0], Type: "grpc", Timeout: 1, VerifySSL: null.NewNullBool(false), @@ -94,7 +94,7 @@ var testdata = []struct { Domain: "localhost", Port: 1000, Expected: null.NewNullString(""), - ExpectedStatus: 0, + ExpectedStatus: &[]int{0}[0], Type: "grpc", Timeout: 1, VerifySSL: null.NewNullBool(true), @@ -110,7 +110,7 @@ var testdata = []struct { Domain: "http://localhost", Port: 50058, Expected: null.NewNullString("status:SERVING"), - ExpectedStatus: 1, + ExpectedStatus: &[]int{1}[0], Type: "grpc", Timeout: 1, VerifySSL: null.NewNullBool(false), @@ -126,7 +126,7 @@ var testdata = []struct { Domain: "http://local//host", Port: 50059, Expected: null.NewNullString(""), - ExpectedStatus: 0, + ExpectedStatus: &[]int{0}[0], Type: "grpc", Timeout: 1, VerifySSL: null.NewNullBool(false), @@ -142,7 +142,7 @@ var testdata = []struct { Domain: "https://google.com", Port: 443, Expected: null.NewNullString(""), - ExpectedStatus: 0, + ExpectedStatus: &[]int{0}[0], Type: "grpc", Timeout: 1, VerifySSL: null.NewNullBool(false), @@ -157,7 +157,7 @@ var testdata = []struct { Domain: "http://localhost", Port: 50061, Expected: null.NewNullString(""), - ExpectedStatus: 0, + ExpectedStatus: &[]int{0}[0], Type: "grpc", Timeout: 1, VerifySSL: null.NewNullBool(false), @@ -194,7 +194,7 @@ func TestCheckGrpc(t *testing.T) { server := v.grpcService(v.clientChecker.Port, v.clientChecker.GrpcHealthCheck.Bool) defer server.Stop() v.clientChecker.CheckService(false) - if v.clientChecker.LastStatusCode != v.clientChecker.ExpectedStatus || strings.TrimSpace(v.clientChecker.LastResponse) != v.clientChecker.Expected.String { + if v.clientChecker.LastStatusCode != *v.clientChecker.ExpectedStatus || strings.TrimSpace(v.clientChecker.LastResponse) != v.clientChecker.Expected.String { t.Errorf("Expected message: '%v', Got message: '%v' , Expected Status: '%v', Got Status: '%v'", v.clientChecker.Expected.String, v.clientChecker.LastResponse, v.clientChecker.ExpectedStatus, v.clientChecker.LastStatusCode) } }) diff --git a/types/services/samples.go b/types/services/samples.go index 1ed482b4..0f5f60fe 100644 --- a/types/services/samples.go +++ b/types/services/samples.go @@ -12,7 +12,7 @@ func Example(online bool) Service { Name: "Statping Example", Domain: "https://statping.com", Expected: null.NewNullString(""), - ExpectedStatus: 200, + ExpectedStatus: &[]int{200}[0], Interval: int(time.Duration(15 * time.Second).Seconds()), Type: "http", Method: "get", @@ -63,7 +63,7 @@ func Samples() error { s1 := &Service{ Name: "Google", Domain: "https://google.com", - ExpectedStatus: 200, + ExpectedStatus: &[]int{200}[0], Interval: 10, Type: "http", Method: "GET", @@ -84,7 +84,7 @@ func Samples() error { s2 := &Service{ Name: "Statping Github", Domain: "https://github.com/statping/statping", - ExpectedStatus: 200, + ExpectedStatus: &[]int{200}[0], Interval: 30, Type: "http", Method: "GET", @@ -103,7 +103,7 @@ func Samples() error { s3 := &Service{ Name: "JSON Users Test", Domain: "https://jsonplaceholder.typicode.com/users", - ExpectedStatus: 200, + ExpectedStatus: &[]int{200}[0], Interval: 60, Type: "http", Method: "GET", @@ -122,7 +122,7 @@ func Samples() error { s4 := &Service{ Name: "JSON API Tester", Domain: "https://jsonplaceholder.typicode.com/posts", - ExpectedStatus: 201, + ExpectedStatus: &[]int{201}[0], Expected: null.NewNullString(`(title)": "((\\"|[statping])*)"`), Interval: 30, Type: "http", diff --git a/types/services/services_test.go b/types/services/services_test.go index 637e2088..c53ceaea 100644 --- a/types/services/services_test.go +++ b/types/services/services_test.go @@ -26,7 +26,7 @@ import ( var example = &Service{ Name: "Example Service", Domain: "https://statping.com", - ExpectedStatus: 200, + ExpectedStatus: &[]int{200}[0], Interval: 30, Type: "http", Method: "GET", @@ -237,7 +237,7 @@ func TestServices(t *testing.T) { e := &Service{ Name: "Example HTTP", Domain: "http://localhost:15000", - ExpectedStatus: 200, + ExpectedStatus: &[]int{200}[0], Type: "http", Method: "GET", Timeout: 5, @@ -255,7 +255,7 @@ func TestServices(t *testing.T) { e := &Service{ Name: "Example TLS", Domain: "http://localhost:15001", - ExpectedStatus: 200, + ExpectedStatus: &[]int{200}[0], Type: "http", Method: "GET", Timeout: 5, @@ -276,7 +276,7 @@ func TestServices(t *testing.T) { e := &Service{ Name: "Example TLS HTTP", Domain: "https://localhost:15001", - ExpectedStatus: 200, + ExpectedStatus: &[]int{200}[0], Type: "http", Method: "GET", Timeout: 15, @@ -487,7 +487,7 @@ func TestServices(t *testing.T) { example := &Service{ Name: "Example Service 2", Domain: "https://slack.statping.com", - ExpectedStatus: 200, + ExpectedStatus: &[]int{200}[0], Interval: 10, Type: "http", Method: "GET", diff --git a/types/services/struct.go b/types/services/struct.go index 0594c019..74cec9b3 100644 --- a/types/services/struct.go +++ b/types/services/struct.go @@ -16,7 +16,7 @@ type Service struct { Name string `gorm:"column:name" json:"name" yaml:"name"` Domain string `gorm:"column:domain" json:"domain" yaml:"domain" private:"true" scope:"user,admin"` Expected null.NullString `gorm:"column:expected" json:"expected" yaml:"expected" scope:"user,admin"` - ExpectedStatus int `gorm:"default:200;column:expected_status" json:"expected_status" yaml:"expected_status" scope:"user,admin"` + ExpectedStatus *int `gorm:"column:expected_status" json:"expected_status" yaml:"expected_status" scope:"user,admin"` Interval int `gorm:"default:30;column:check_interval" json:"check_interval" yaml:"check_interval"` Type string `gorm:"column:check_type" json:"type" scope:"user,admin" yaml:"type"` Method string `gorm:"column:method" json:"method" scope:"user,admin" yaml:"method"`