This is an automated email from the ASF dual-hosted git repository.
rawlin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git
The following commit(s) were added to refs/heads/master by this push:
new 4ab262f2b1 Refactor Server Checks Tests (#6922)
4ab262f2b1 is described below
commit 4ab262f2b108b8ea01e0a4ff01ca14ffc17ab224
Author: Eric Holguin <[email protected]>
AuthorDate: Thu Jun 30 11:33:22 2022 -0600
Refactor Server Checks Tests (#6922)
* Refactor server checks tests
* add key to field
---
traffic_ops/testing/api/v3/serverchecks_test.go | 225 ++++++++--------
traffic_ops/testing/api/v4/serverchecks_test.go | 324 ++++++++++--------------
2 files changed, 261 insertions(+), 288 deletions(-)
diff --git a/traffic_ops/testing/api/v3/serverchecks_test.go
b/traffic_ops/testing/api/v3/serverchecks_test.go
index 64327316cc..e017f76ff1 100644
--- a/traffic_ops/testing/api/v3/serverchecks_test.go
+++ b/traffic_ops/testing/api/v3/serverchecks_test.go
@@ -16,130 +16,153 @@ package v3
*/
import (
+ "encoding/json"
+ "net/http"
"testing"
- "time"
"github.com/apache/trafficcontrol/lib/go-tc"
- "github.com/apache/trafficcontrol/lib/go-util"
+ "github.com/apache/trafficcontrol/traffic_ops/testing/api/assert"
+ "github.com/apache/trafficcontrol/traffic_ops/testing/api/utils"
+ "github.com/apache/trafficcontrol/traffic_ops/toclientlib"
)
func TestServerChecks(t *testing.T) {
WithObjs(t, []TCObj{CDNs, Types, Parameters, Profiles, Statuses,
Divisions, Regions, PhysLocations, CacheGroups, Servers, ServerCheckExtensions,
ServerChecks}, func() {
- CreateTestInvalidServerChecks(t)
- UpdateTestServerChecks(t)
- GetTestServerChecks(t)
- })
-}
-
-func CreateTestServerChecks(t *testing.T) {
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
- for _, servercheck := range testData.Serverchecks {
- resp, _, err := TOSession.InsertServerCheckStatus(servercheck)
- t.Logf("Response: %v host_name %v check %v",
*servercheck.HostName, *servercheck.Name, resp)
- if err != nil {
- t.Errorf("could not CREATE servercheck: %v", err)
+ extensionSession := utils.CreateV3Session(t,
Config.TrafficOps.URL, Config.TrafficOps.Users.Extension,
Config.TrafficOps.UserPassword, Config.Default.Session.TimeoutInSecs)
+
+ methodTests := utils.V3TestCase{
+ "GET": {
+ "OK when VALID request": {
+ ClientSession: extensionSession,
+ Expectations:
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK),
utils.ResponseLengthGreaterOrEqual(1),
+
validateServerCheckFields("atlanta-edge-01", map[string]int{"ORT": 13})),
+ },
+ },
+ "POST": {
+ "OK when UPDATING EXISTING SERVER CHECK": {
+ ClientSession: extensionSession,
+ RequestBody: map[string]interface{}{
+ "servercheck_short_name": "ILO",
+ "host_name":
"atlanta-edge-01",
+ "value": 0,
+ },
+ Expectations:
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK),
+
validateServerCheckCreateFields("atlanta-edge-01", map[string]int{"ORT": 13,
"ILO": 0})),
+ },
+ "BAD REQUEST when NO SERVER ID": {
+ ClientSession: extensionSession,
+ RequestBody: map[string]interface{}{
+ "id": nil,
+ "servercheck_short_name": "ILO",
+ "value": 1,
+ },
+ Expectations:
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+ },
+ "BAD REQUEST when INVALID SERVER ID": {
+ ClientSession: extensionSession,
+ RequestBody: map[string]interface{}{
+ "host_name":
"atlanta-edge-01",
+ "id": -1,
+ "servercheck_short_name": "ILO",
+ "value": 1,
+ },
+ Expectations:
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+ },
+ "BAD REQUEST when INVALID SERVERCHECK SHORT
NAME": {
+ ClientSession: extensionSession,
+ RequestBody: map[string]interface{}{
+ "host_name":
"atlanta-edge-01",
+ "servercheck_short_name":
"BOGUS",
+ "value": 1,
+ },
+ Expectations:
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+ },
+ "FORBIDDEN when NON EXTENSION USER": {
+ ClientSession: TOSession,
+ RequestBody: map[string]interface{}{
+ "host_name":
"atlanta-edge-01",
+ "id":
GetServerID(t, "atlanta-edge-01")(),
+ "servercheck_short_name":
"TEST",
+ "value": 1,
+ },
+ Expectations:
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusForbidden)),
+ },
+ },
}
- }
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
-}
-
-func CreateTestInvalidServerChecks(t *testing.T) {
- toReqTimeout := time.Second *
time.Duration(Config.Default.Session.TimeoutInSecs)
- _, _, err := TOSession.InsertServerCheckStatus(testData.Serverchecks[0])
- if err == nil {
- t.Error("expected to receive error with non extension user")
- }
-
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
-
- invalidServerCheck := tc.ServercheckRequestNullable{
- Name: util.StrPtr("BOGUS"),
- Value: util.IntPtr(1),
- ID: util.IntPtr(-1),
- HostName: util.StrPtr("bogus_hostname"),
- }
-
- // Attempt to create a ServerCheck with invalid server ID
- _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck)
- if err == nil {
- t.Error("expected to receive error with invalid id")
- }
-
- invalidServerCheck.ID = nil
- // Attempt to create a ServerCheck with invalid host name
- _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck)
- if err == nil {
- t.Error("expected to receive error with invalid host name")
- }
-
- // get valid name to get past host check
- invalidServerCheck.Name = testData.Serverchecks[0].Name
-
- // Attempt to create a ServerCheck with invalid servercheck name
- _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck)
- if err == nil {
- t.Error("expected to receive error with invalid servercheck
name")
- }
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
+ for method, testCases := range methodTests {
+ t.Run(method, func(t *testing.T) {
+ for name, testCase := range testCases {
+ serverCheck :=
tc.ServercheckRequestNullable{}
+
+ if testCase.RequestBody != nil {
+ dat, err :=
json.Marshal(testCase.RequestBody)
+ assert.NoError(t, err, "Error
occurred when marshalling request body: %v", err)
+ err = json.Unmarshal(dat,
&serverCheck)
+ assert.NoError(t, err, "Error
occurred when unmarshalling request body: %v", err)
+ }
+
+ switch method {
+ case "GET":
+ t.Run(name, func(t *testing.T) {
+ resp, alerts, reqInf,
err := testCase.ClientSession.GetServersChecks()
+ for _, check := range
testCase.Expectations {
+ check(t,
reqInf, resp, alerts, err)
+ }
+ })
+ case "POST":
+ t.Run(name, func(t *testing.T) {
+ _, reqInf, err :=
testCase.ClientSession.InsertServerCheckStatus(serverCheck)
+ for _, check := range
testCase.Expectations {
+ check(t,
reqInf, nil, tc.Alerts{}, err)
+ }
+ })
+ }
+ }
+ })
+ }
+ })
}
-func UpdateTestServerChecks(t *testing.T) {
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
- for _, servercheck := range testData.Serverchecks {
- *servercheck.Value--
- resp, _, err := TOSession.InsertServerCheckStatus(servercheck)
- t.Logf("Response: %v host_name %v check %v",
*servercheck.HostName, *servercheck.Name, resp)
- if err != nil {
- t.Errorf("could not update servercheck: %v", err)
+func validateServerCheckFields(hostName string, expectedChecks map[string]int)
utils.CkReqFunc {
+ return func(t *testing.T, _ toclientlib.ReqInf, resp interface{}, _
tc.Alerts, _ error) {
+ assert.RequireNotNil(t, resp, "Expected Server Check response
to not be nil.")
+ serverCheckResp := resp.([]tc.GenericServerCheck)
+ found := false
+ for _, serverCheck := range serverCheckResp {
+ if hostName == serverCheck.HostName {
+ found = true
+ for name, value := range expectedChecks {
+ assert.RequireNotNil(t,
serverCheck.Checks[name], "Expected Checks[%s] value to not be nil.", name)
+ assert.Equal(t, value,
*serverCheck.Checks[name], "Expected Checks ILO Value to be %d, but got %s",
value, *serverCheck.Checks[name])
+ }
+ }
}
+ assert.Equal(t, true, found, "Expected to find hostname %s in
response.", hostName)
}
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
}
-func GetTestServerChecks(t *testing.T) {
- hostname := testData.Serverchecks[0].HostName
- // Get server checks
- serverChecksResp, alerts, _, err := TOSession.GetServersChecks()
- if err != nil {
- t.Fatalf("could not GET serverchecks: %v (alerts: %+v)", err,
alerts)
+func validateServerCheckCreateFields(hostName string, expectedChecks
map[string]int) utils.CkReqFunc {
+ return func(t *testing.T, _ toclientlib.ReqInf, resp interface{}, _
tc.Alerts, _ error) {
+ serverChecks, alerts, _, err := TOSession.GetServersChecks()
+ assert.RequireNoError(t, err, "Error getting Server Checks: %v
- alerts: %+v", err, alerts)
+ assert.RequireGreaterOrEqual(t, len(serverChecks), 1, "Expected
one Server Check returned Got: %d", len(serverChecks))
+ validateServerCheckFields(hostName, expectedChecks)(t,
toclientlib.ReqInf{}, serverChecks, tc.Alerts{}, nil)
}
- found := false
- for _, sc := range serverChecksResp {
- if sc.HostName == *hostname {
- found = true
-
- if sc.Checks == nil {
- t.Errorf("server %s had no checks - expected it
to have at least two", *hostname)
- break
- }
+}
- if ort, ok := sc.Checks["ORT"]; !ok {
- t.Error("no 'ORT' servercheck exists - expected
it to exist")
- } else if ort == nil {
- t.Error("'null' returned for ORT value
servercheck - expected pointer to 12")
- } else if *ort != 12 {
- t.Errorf("%v returned for ORT value servercheck
- expected 12", *ort)
- }
+func CreateTestServerChecks(t *testing.T) {
+ extensionSession := utils.CreateV3Session(t, Config.TrafficOps.URL,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword,
Config.Default.Session.TimeoutInSecs)
- if ilo, ok := sc.Checks["ILO"]; !ok {
- t.Error("no 'ILO' servercheck exists - expected
it to exist")
- } else if ilo == nil {
- t.Error("'null' returned for ILO value
servercheck - expected pointer to 0")
- } else if *ilo != 0 {
- t.Errorf("%v returned for ILO value servercheck
- expected 0", *ilo)
- }
- break
- }
- }
- if !found {
- t.Errorf("expected to find servercheck for host %v", hostname)
+ for _, servercheck := range testData.Serverchecks {
+ resp, _, err :=
extensionSession.InsertServerCheckStatus(servercheck)
+ assert.RequireNoError(t, err, "Could not insert Servercheck: %v
- alerts: %+v", err, resp.Alerts)
}
}
// Need to define no-op function as TCObj interface expects a delete function
// There is no delete path for serverchecks
-func DeleteTestServerChecks(t *testing.T) {
+func DeleteTestServerChecks(*testing.T) {
return
}
diff --git a/traffic_ops/testing/api/v4/serverchecks_test.go
b/traffic_ops/testing/api/v4/serverchecks_test.go
index 12fde42f65..1c971953e0 100644
--- a/traffic_ops/testing/api/v4/serverchecks_test.go
+++ b/traffic_ops/testing/api/v4/serverchecks_test.go
@@ -16,217 +16,167 @@ package v4
*/
import (
+ "encoding/json"
+ "net/http"
+ "net/url"
"strconv"
"testing"
- "time"
"github.com/apache/trafficcontrol/lib/go-tc"
- "github.com/apache/trafficcontrol/lib/go-util"
+ "github.com/apache/trafficcontrol/traffic_ops/testing/api/assert"
+ "github.com/apache/trafficcontrol/traffic_ops/testing/api/utils"
+ "github.com/apache/trafficcontrol/traffic_ops/toclientlib"
client "github.com/apache/trafficcontrol/traffic_ops/v4-client"
)
func TestServerChecks(t *testing.T) {
WithObjs(t, []TCObj{CDNs, Types, Parameters, Profiles, Statuses,
Divisions, Regions, PhysLocations, CacheGroups, Servers, ServerCheckExtensions,
ServerChecks}, func() {
- CreateTestInvalidServerChecks(t)
- UpdateTestServerChecks(t)
- GetTestServerChecks(t)
- GetTestServerChecksWithName(t)
- GetTestServerChecksWithID(t)
- })
-}
-
-func CreateTestServerChecks(t *testing.T) {
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
- for _, servercheck := range testData.Serverchecks {
- resp, _, err := TOSession.InsertServerCheckStatus(servercheck,
client.RequestOptions{})
- if err != nil {
- t.Errorf("could not insert Servercheck: %v - alerts:
%+v", err, resp.Alerts)
+ extensionSession := utils.CreateV4Session(t,
Config.TrafficOps.URL, Config.TrafficOps.Users.Extension,
Config.TrafficOps.UserPassword, Config.Default.Session.TimeoutInSecs)
+
+ methodTests := utils.V4TestCase{
+ "GET": {
+ "OK when VALID request": {
+ ClientSession: extensionSession,
+ Expectations:
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK),
utils.ResponseLengthGreaterOrEqual(1)),
+ },
+ "OK when VALID HOSTNAME parameter": {
+ ClientSession: extensionSession,
+ RequestOpts:
client.RequestOptions{QueryParameters: url.Values{"hostName":
{"atlanta-edge-01"}}},
+ Expectations:
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK),
utils.ResponseHasLength(1),
+
validateServerCheckFields(map[string]interface{}{"HostName": "atlanta-edge-01",
"Checks": map[string]int{"ORT": 13}})),
+ },
+ "OK when VALID ID parameter": {
+ ClientSession: extensionSession,
+ RequestOpts:
client.RequestOptions{QueryParameters: url.Values{"id":
{strconv.Itoa(GetServerID(t, "atlanta-edge-01")())}}},
+ Expectations:
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK),
utils.ResponseHasLength(1)),
+ },
+ },
+ "POST": {
+ "OK when UPDATING EXISTING SERVER CHECK": {
+ ClientSession: extensionSession,
+ RequestBody: map[string]interface{}{
+ "servercheck_short_name": "ILO",
+ "host_name":
"atlanta-edge-01",
+ "value": 0,
+ },
+ Expectations:
utils.CkRequest(utils.NoError(), utils.HasStatus(http.StatusOK),
+
validateServerCheckCreateFields("atlanta-edge-01",
map[string]interface{}{"HostName": "atlanta-edge-01", "Checks":
map[string]int{"ORT": 13, "ILO": 0}})),
+ },
+ "BAD REQUEST when NO SERVER ID": {
+ ClientSession: extensionSession,
+ RequestBody: map[string]interface{}{
+ "id": nil,
+ "servercheck_short_name": "ILO",
+ "value": 1,
+ },
+ Expectations:
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+ },
+ "BAD REQUEST when INVALID SERVER ID": {
+ ClientSession: extensionSession,
+ RequestBody: map[string]interface{}{
+ "host_name":
"atlanta-edge-01",
+ "id": -1,
+ "servercheck_short_name": "ILO",
+ "value": 1,
+ },
+ Expectations:
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+ },
+ "BAD REQUEST when INVALID SERVERCHECK SHORT
NAME": {
+ ClientSession: extensionSession,
+ RequestBody: map[string]interface{}{
+ "host_name":
"atlanta-edge-01",
+ "servercheck_short_name":
"BOGUS",
+ "value": 1,
+ },
+ Expectations:
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusBadRequest)),
+ },
+ "FORBIDDEN when NON EXTENSION USER": {
+ ClientSession: TOSession,
+ RequestBody: map[string]interface{}{
+ "host_name":
"atlanta-edge-01",
+ "id":
GetServerID(t, "atlanta-edge-01")(),
+ "servercheck_short_name":
"TEST",
+ "value": 1,
+ },
+ Expectations:
utils.CkRequest(utils.HasError(), utils.HasStatus(http.StatusForbidden)),
+ },
+ },
}
- }
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
-}
-
-func CreateTestInvalidServerChecks(t *testing.T) {
- if len(testData.Serverchecks) < 1 {
- t.Fatal("Need at least one Servercheck to test creating an
invalid Servercheck")
- }
- toReqTimeout := time.Second *
time.Duration(Config.Default.Session.TimeoutInSecs)
-
- _, _, err :=
TOSession.InsertServerCheckStatus(testData.Serverchecks[0],
client.RequestOptions{})
- if err == nil {
- t.Error("expected to receive error with non extension user")
- }
-
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
-
- invalidServerCheck := tc.ServercheckRequestNullable{
- Name: util.StrPtr("BOGUS"),
- Value: util.IntPtr(1),
- ID: util.IntPtr(-1),
- HostName: util.StrPtr("bogus_hostname"),
- }
- // Attempt to create a ServerCheck with invalid server ID
- _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck,
client.RequestOptions{})
- if err == nil {
- t.Error("expected to receive error with invalid id")
- }
-
- invalidServerCheck.ID = nil
- // Attempt to create a ServerCheck with invalid host name
- _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck,
client.RequestOptions{})
- if err == nil {
- t.Error("expected to receive error with invalid host name")
- }
-
- // get valid name to get past host check
- invalidServerCheck.Name = testData.Serverchecks[0].Name
-
- // Attempt to create a ServerCheck with invalid servercheck name
- _, _, err = TOSession.InsertServerCheckStatus(invalidServerCheck,
client.RequestOptions{})
- if err == nil {
- t.Error("expected to receive error with invalid servercheck
name")
- }
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
-}
-
-func UpdateTestServerChecks(t *testing.T) {
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword)
- for _, servercheck := range testData.Serverchecks {
- if servercheck.Value == nil {
- t.Error("Found servercheck in the testing data with
null or undefined Value")
- continue
+ for method, testCases := range methodTests {
+ t.Run(method, func(t *testing.T) {
+ for name, testCase := range testCases {
+ serverCheck :=
tc.ServercheckRequestNullable{}
+
+ if testCase.RequestBody != nil {
+ dat, err :=
json.Marshal(testCase.RequestBody)
+ assert.NoError(t, err, "Error
occurred when marshalling request body: %v", err)
+ err = json.Unmarshal(dat,
&serverCheck)
+ assert.NoError(t, err, "Error
occurred when unmarshalling request body: %v", err)
+ }
+
+ switch method {
+ case "GET":
+ t.Run(name, func(t *testing.T) {
+ resp, reqInf, err :=
testCase.ClientSession.GetServersChecks(testCase.RequestOpts)
+ for _, check := range
testCase.Expectations {
+ check(t,
reqInf, resp.Response, resp.Alerts, err)
+ }
+ })
+ case "POST":
+ t.Run(name, func(t *testing.T) {
+ resp, reqInf, err :=
testCase.ClientSession.InsertServerCheckStatus(serverCheck,
testCase.RequestOpts)
+ for _, check := range
testCase.Expectations {
+ check(t,
reqInf, nil, tc.Alerts{Alerts: resp.Alerts}, err)
+ }
+ })
+ }
+ }
+ })
}
- *servercheck.Value--
- resp, _, err := TOSession.InsertServerCheckStatus(servercheck,
client.RequestOptions{})
- if err != nil {
- if servercheck.Name != nil {
- t.Logf("Servercheck Name: %s",
*servercheck.Name)
- }
- if servercheck.HostName != nil {
- t.Logf("Servercheck Host Name: %s",
*servercheck.HostName)
- }
- t.Errorf("could not update servercheck: %v - alerts:
%+v", err, resp.Alerts)
- }
- }
- SwitchSession(toReqTimeout, Config.TrafficOps.URL,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword,
Config.TrafficOps.Users.Admin, Config.TrafficOps.UserPassword)
+ })
}
-func GetTestServerChecks(t *testing.T) {
- if len(testData.Serverchecks) < 1 {
- t.Fatal("Need at least one Servercheck to test creating an
getting Serverchecks")
- }
- if testData.Serverchecks[0].HostName == nil {
- t.Fatal("Found a Servercheck in the testing data wih null or
undefined Host Name")
- }
- hostname := *testData.Serverchecks[0].HostName
-
- // Get server checks
- serverChecksResp, _, err :=
TOSession.GetServersChecks(client.RequestOptions{})
- if err != nil {
- t.Fatalf("could not get Serverchecks: %v - alerts: %+v", err,
serverChecksResp.Alerts)
- }
- found := false
- for _, sc := range serverChecksResp.Response {
- if sc.HostName == hostname {
- found = true
-
- if sc.Checks == nil {
- t.Errorf("server %s had no checks - expected it
to have at least two", hostname)
- break
- }
-
- if ort, ok := sc.Checks["ORT"]; !ok {
- t.Error("no 'ORT' servercheck exists - expected
it to exist")
- } else if ort == nil {
- t.Error("'null' returned for ORT value
servercheck - expected pointer to 12")
- } else if *ort != 12 {
- t.Errorf("%d returned for ORT value servercheck
- expected 12", *ort)
- }
-
- if ilo, ok := sc.Checks["ILO"]; !ok {
- t.Error("no 'ILO' servercheck exists - expected
it to exist")
- } else if ilo == nil {
- t.Error("'null' returned for ILO value
servercheck - expected pointer to 0")
- } else if *ilo != 0 {
- t.Errorf("%d returned for ILO value servercheck
- expected 0", *ilo)
+func validateServerCheckFields(expectedResp map[string]interface{})
utils.CkReqFunc {
+ return func(t *testing.T, _ toclientlib.ReqInf, resp interface{}, _
tc.Alerts, _ error) {
+ assert.RequireNotNil(t, resp, "Expected Server Check response
to not be nil.")
+ serverCheckResp := resp.([]tc.GenericServerCheck)
+ for field, expected := range expectedResp {
+ for _, serverCheck := range serverCheckResp {
+ switch field {
+ case "HostName":
+ assert.Equal(t, expected,
serverCheck.HostName, "Expected HostName to be %v, but got %s", expected,
serverCheck.HostName)
+ case "Checks":
+ for name, value := range
expected.(map[string]int) {
+ assert.RequireNotNil(t,
serverCheck.Checks[name], "Expected Checks[%s] value to not be nil.", name)
+ assert.Equal(t, value,
*serverCheck.Checks[name], "Expected Checks ILO Value to be %d, but got %s",
value, *serverCheck.Checks[name])
+ }
+ default:
+ t.Errorf("Expected field: %v, does not
exist in response", field)
+ }
}
- break
}
}
- if !found {
- t.Errorf("expected to find servercheck for host %s", hostname)
- }
}
-func GetTestServerChecksWithName(t *testing.T) {
- opts := client.NewRequestOptions()
- opts.QueryParameters.Set("hostName", "atlanta-edge-01")
-
- // Get server checks
- scResp, _, err := TOSession.GetServersChecks(opts)
- if len(scResp.Response) == 0 {
- t.Fatal("no server checks in response, quitting")
- }
- if err != nil {
- t.Fatalf("could not get Serverchecks filtered by name
'atlanta-edge-01': %v - alerts: %+v", err, scResp.Alerts)
- }
-
- //Add unknown param key
- opts.QueryParameters.Add("foo", "car")
- // Get server checks
- resp, _, err := TOSession.GetServersChecks(opts)
- if len(resp.Response) == 0 {
- t.Fatal("no server checks in response, quitting")
- }
- if err != nil {
- t.Fatalf("could not get Serverchecks filtered by server Host
Name '%s': %v - alerts: %+v", resp.Response[0].HostName, err, resp.Alerts)
- }
-
- if len(scResp.Response) != len(resp.Response) {
- t.Fatalf("expected: Both response lengths should be equal, got:
first resp: %d - second resp: %d", len(scResp.Response), len(resp.Response))
+func validateServerCheckCreateFields(hostName string, expectedResp
map[string]interface{}) utils.CkReqFunc {
+ return func(t *testing.T, _ toclientlib.ReqInf, resp interface{}, _
tc.Alerts, _ error) {
+ opts := client.NewRequestOptions()
+ opts.QueryParameters.Set("hostName", hostName)
+ serverChecks, _, err := TOSession.GetServersChecks(opts)
+ assert.RequireNoError(t, err, "Error getting Server Checks: %v
- alerts: %+v", err, serverChecks.Alerts)
+ assert.RequireEqual(t, 1, len(serverChecks.Response), "Expected
one Server Check returned Got: %d", len(serverChecks.Response))
+ validateServerCheckFields(expectedResp)(t,
toclientlib.ReqInf{}, serverChecks.Response, tc.Alerts{}, nil)
}
}
-func GetTestServerChecksWithID(t *testing.T) {
- serverChecksResp, _, err :=
TOSession.GetServersChecks(client.RequestOptions{})
- if err != nil {
- t.Errorf("Unexpected error getting Serverchecks: %v - alerts:
%+v", err, serverChecksResp.Alerts)
- }
- if len(serverChecksResp.Response) == 0 {
- t.Fatal("no server checks in response, quitting")
- }
- if serverChecksResp.Response[0].ID == 0 {
- t.Fatal("ID of the response server is nil, quitting")
- }
- id := serverChecksResp.Response[0].ID
-
- opts := client.NewRequestOptions()
- opts.QueryParameters.Set("id", strconv.Itoa(id))
-
- // Get server checks
- scResp, _, err := TOSession.GetServersChecks(opts)
- if len(scResp.Response) == 0 {
- t.Fatal("no server checks in response, quitting")
- }
- if err != nil {
- t.Fatalf("could not get Serverchecks by ID %d: %v - alerts:
%+v", scResp.Response[0].ID, err, scResp.Alerts)
- }
-
- //Add unknown param key
- opts.QueryParameters.Add("foo", "car")
- // Get server checks
- resp, _, err := TOSession.GetServersChecks(opts)
- if len(resp.Response) == 0 {
- t.Fatal("no server checks in response, quitting")
- }
- if err != nil {
- t.Fatalf("could not get Serverchecks filtered by ID %d with
extraneous 'foo' parameter: %v - alerts: %+v", resp.Response[0].ID, err,
resp.Alerts)
- }
+func CreateTestServerChecks(t *testing.T) {
+ extensionSession := utils.CreateV4Session(t, Config.TrafficOps.URL,
Config.TrafficOps.Users.Extension, Config.TrafficOps.UserPassword,
Config.Default.Session.TimeoutInSecs)
- if len(scResp.Response) != len(resp.Response) {
- t.Fatalf("expected: Both response lengths should be equal, got:
first resp:%v-second resp:%v", len(scResp.Response), len(resp.Response))
+ for _, servercheck := range testData.Serverchecks {
+ resp, _, err :=
extensionSession.InsertServerCheckStatus(servercheck, client.RequestOptions{})
+ assert.RequireNoError(t, err, "Could not insert Servercheck: %v
- alerts: %+v", err, resp.Alerts)
}
}