This is an automated email from the ASF dual-hosted git repository.

ocket8888 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 4175a92  Adds TO client api tests for DS automation (#5736)
4175a92 is described below

commit 4175a92212f06ce994e7ca7c87fa5652c8d78fd7
Author: dmohan001c <[email protected]>
AuthorDate: Tue May 4 02:06:58 2021 +0530

    Adds TO client api tests for DS automation (#5736)
    
    * added test case for CacheGroup Pagination functionalites
    
    * added tests for get delivery services by cdn
    
    * Formatted the code using gofmt
    
    * removed codes to check for errors
    
    * formatted the code using go fmt
    
    * added invalid scenarios for ds get
    
    * added tests for profile and logs enabled
    
    * formatted using go fmt
    
    * added tests for get ds by tenant,type,xml id and sort functionality
    
    * removed xml, type, tenant tests
    
    * removed sort desc function
    
    * removed sort desc function
    
    * removed sort functionality
    
    * removed unused import
    
    * formatted using go fmt
    
    * Added tests for ds by logs enabled
    
    * formatted the code using go fmt
    
    * added tests for get ds by profile
    
    * added profile name in pre-requisite
    
    * added tests for ds tenant,xmlid, type
    
    * adding logs to check errors
    
    * added git diff
    
    * Added newline at the EOF
---
 .github/actions/to-integration-tests/entrypoint.sh |  19 +-
 .../testing/api/v4/deliveryservices_test.go        | 337 ++++++++++++++++++++-
 traffic_ops/testing/api/v4/tc-fixtures.json        |   2 +-
 3 files changed, 349 insertions(+), 9 deletions(-)

diff --git a/.github/actions/to-integration-tests/entrypoint.sh 
b/.github/actions/to-integration-tests/entrypoint.sh
index 1638c21..4479d33 100755
--- a/.github/actions/to-integration-tests/entrypoint.sh
+++ b/.github/actions/to-integration-tests/entrypoint.sh
@@ -16,6 +16,8 @@
 # specific language governing permissions and limitations
 # under the License.
 
++set -e
++
 download_go() {
        . build/functions.sh
        if verify_and_set_go_version; then
@@ -179,13 +181,16 @@ envsubst <"${resources}/riak.json" >riak.conf
 truncate --size=0 warning.log error.log # Removes output from previous API 
versions and makes sure files exist
 ./traffic_ops_golang --cfg ./cdn.conf --dbcfg ./database.conf -riakcfg 
riak.conf &
 
-# TODO - Make these logs build artifacts
-# 2>&1 makes terminal output go faster, even though stderr will not contain 
anything
-tail -f warning.log 2>&1 | color_and_prefix "${yellow_bg}" 'Traffic Ops' &
-tail -f error.log 2>&1 | color_and_prefix "${red_bg}" 'Traffic Ops' &
-
-
 cd "../testing/api/v$INPUT_VERSION"
 
 cp "${resources}/traffic-ops-test.json" traffic-ops-test.conf
-go test -test.v --cfg traffic-ops-test.conf
+go test -test.v --cfg traffic-ops-test.conf || code="$?" && code="$?"
+
+# TODO - Make these logs build artifacts
+# 2>&1 makes terminal output go faster, even though stderr will not contain 
anything
+echo "------------ TRAFFIC OPS LOGS ------------"
+cd -
+color_and_prefix "${yellow_bg}" 'Traffic Ops' <warning.log 2>&1
+color_and_prefix "${red_bg}" 'Traffic Ops' <error.log 2>&1
+
+exit "$code"
diff --git a/traffic_ops/testing/api/v4/deliveryservices_test.go 
b/traffic_ops/testing/api/v4/deliveryservices_test.go
index 498ea9d..80ced6f 100644
--- a/traffic_ops/testing/api/v4/deliveryservices_test.go
+++ b/traffic_ops/testing/api/v4/deliveryservices_test.go
@@ -21,6 +21,7 @@ import (
        "net/http"
        "net/url"
        "reflect"
+       "sort"
        "strconv"
        "strings"
        "testing"
@@ -45,6 +46,7 @@ func TestDeliveryServices(t *testing.T) {
                        SSLDeliveryServiceCDNUpdateTest(t)
                        GetTestDeliveryServicesURLSigKeys(t)
                }
+
                GetTestDeliveryServicesIMS(t)
                GetAccessibleToTest(t)
                UpdateTestDeliveryServices(t)
@@ -67,6 +69,20 @@ func TestDeliveryServices(t *testing.T) {
                header.Set(rfc.IfMatch, etag)
                UpdateTestDeliveryServicesWithHeaders(t, header)
                VerifyPaginationSupportDS(t)
+               GetDeliveryServiceByCdn(t)
+               GetDeliveryServiceByInvalidCdn(t)
+               GetDeliveryServiceByInvalidProfile(t)
+               GetDeliveryServiceByInvalidTenant(t)
+               GetDeliveryServiceByInvalidType(t)
+               GetDeliveryServiceByInvalidAccessibleTo(t)
+               GetDeliveryServiceByInvalidXmlId(t)
+               GetDeliveryServiceByLogsEnabled(t)
+               GetDeliveryServiceByValidProfile(t)
+               GetDeliveryServiceByValidTenant(t)
+               GetDeliveryServiceByValidType(t)
+               GetDeliveryServiceByValidXmlId(t)
+               SortTestDeliveryServicesDesc(t)
+               SortTestDeliveryServices(t)
        })
 }
 
@@ -1205,7 +1221,7 @@ func VerifyPaginationSupportDS(t *testing.T) {
        qparams.Set("page", "2")
        deliveryserviceWithPage, _, err := TOSession.GetDeliveryServices(nil, 
qparams)
        if !reflect.DeepEqual(deliveryservice[1:2], deliveryserviceWithPage) {
-               t.Error("expected GET cachegroup with limit = 1, page = 2 to 
return second result")
+               t.Error("expected GET deliveryservice with limit = 1, page = 2 
to return second result")
        }
 
        qparams = url.Values{}
@@ -1238,6 +1254,111 @@ func VerifyPaginationSupportDS(t *testing.T) {
        }
 }
 
+func GetDeliveryServiceByCdn(t *testing.T) {
+
+       if len(testData.DeliveryServices) > 0 {
+               firstDS := testData.DeliveryServices[0]
+
+               if firstDS.CDNName != nil {
+                       if firstDS.CDNID == nil {
+                               cdns, _, err := 
TOSession.GetCDNByName(*firstDS.CDNName, nil)
+                               if err != nil {
+                                       t.Errorf("Error in Getting CDN by Name: 
%v", err)
+                               }
+                               if len(cdns) == 0 {
+                                       t.Errorf("no CDN named %v" + 
*firstDS.CDNName)
+                               }
+                               firstDS.CDNID = &cdns[0].ID
+                       }
+                       resp, _, err := 
TOSession.GetDeliveryServicesByCDNID(*firstDS.CDNID, nil)
+                       if err != nil {
+                               t.Errorf("Error in Getting DeliveryServices by 
CDN ID: %v - %v", err, resp)
+                       }
+                       if len(resp) == 0 {
+                               t.Errorf("No delivery service available for the 
CDN %v", *firstDS.CDNName)
+                       } else {
+                               if resp[0].CDNName == nil {
+                                       t.Errorf("CDN Name is not available in 
response")
+                               } else {
+                                       if *resp[0].CDNName != *firstDS.CDNName 
{
+                                               t.Errorf("CDN Name expected: 
%s, actual: %s", *firstDS.CDNName, *resp[0].CDNName)
+                                       }
+                               }
+                       }
+               } else {
+                       t.Errorf("CDN Name is nil in the pre-requisites")
+               }
+       }
+}
+
+func GetDeliveryServiceByInvalidCdn(t *testing.T) {
+       resp, _, err := TOSession.GetDeliveryServicesByCDNID(10000, nil)
+       if err != nil {
+               t.Errorf("Error!! Getting CDN by Invalid ID %v", err)
+       }
+       if len(resp) >= 1 {
+               t.Errorf("Error!! Invalid CDN shouldn't have any response %v 
Error %v", resp, err)
+       }
+}
+
+func GetDeliveryServiceByInvalidProfile(t *testing.T) {
+       qparams := url.Values{}
+       qparams.Set("profile", "10000")
+       resp, _, err := TOSession.GetDeliveryServices(nil, qparams)
+       if err != nil {
+               t.Errorf("Error!! Getting deliveryservice by Invalid Profile ID 
%v", err)
+       }
+       if len(resp) >= 1 {
+               t.Errorf("Error!! Invalid Profile shouldn't have any response 
%v Error %v", resp, err)
+       }
+}
+
+func GetDeliveryServiceByInvalidTenant(t *testing.T) {
+       qparams := url.Values{}
+       qparams.Set("tenant", "10000")
+       resp, _, err := TOSession.GetDeliveryServices(nil, qparams)
+       if err != nil {
+               t.Errorf("Error!! Getting Deliveryservice by Invalid Tenant ID 
%v", err)
+       }
+       if len(resp) >= 1 {
+               t.Errorf("Error!! Invalid Tenant shouldn't have any response %v 
Error %v", resp, err)
+       }
+}
+
+func GetDeliveryServiceByInvalidType(t *testing.T) {
+       qparams := url.Values{}
+       qparams.Set("type", "10000")
+       resp, _, err := TOSession.GetDeliveryServices(nil, qparams)
+       if err != nil {
+               t.Errorf("Error!! Getting Deliveryservice by Invalid Type ID 
%v", err)
+       }
+       if len(resp) >= 1 {
+               t.Errorf("Error!! Invalid Type shouldn't have any response %v 
Error %v", resp, err)
+       }
+}
+
+func GetDeliveryServiceByInvalidAccessibleTo(t *testing.T) {
+       qparams := url.Values{}
+       qparams.Set("accessibleTo", "10000")
+       resp, _, err := TOSession.GetDeliveryServices(nil, qparams)
+       if err != nil {
+               t.Errorf("Error!! Getting Deliveryservice by Invalid 
AccessibleTo %v", err)
+       }
+       if len(resp) >= 1 {
+               t.Errorf("Error!! Invalid AccessibleTo shouldn't have any 
response %v Error %v", resp, err)
+       }
+}
+
+func GetDeliveryServiceByInvalidXmlId(t *testing.T) {
+       resp, _, err := TOSession.GetDeliveryServiceByXMLID("test", nil)
+       if err != nil {
+               t.Errorf("Error!! Getting Delivery service by Invalid ID %v", 
err)
+       }
+       if len(resp) >= 1 {
+               t.Errorf("Error!! Invalid Xml Id shouldn't have any response %v 
Error %v", resp, err)
+       }
+}
+
 func GetTestDeliveryServicesURLSigKeys(t *testing.T) {
        if len(testData.DeliveryServices) == 0 {
                t.Fatal("couldn't get the xml ID of test DS")
@@ -1252,3 +1373,217 @@ func GetTestDeliveryServicesURLSigKeys(t *testing.T) {
                t.Error("failed to get url sig keys: " + err.Error())
        }
 }
+
+func GetDeliveryServiceByLogsEnabled(t *testing.T) {
+       if len(testData.DeliveryServices) > 0 {
+               firstDS := testData.DeliveryServices[0]
+
+               if firstDS.LogsEnabled != nil {
+                       qparams := url.Values{}
+                       qparams.Set("logsEnabled", 
strconv.FormatBool(*firstDS.LogsEnabled))
+                       resp, _, err := TOSession.GetDeliveryServices(nil, 
qparams)
+                       if err != nil {
+                               t.Errorf("Error in Getting deliveryservice by 
logsEnabled: %v - %v", err, resp)
+                       }
+                       if len(resp) == 0 {
+                               t.Errorf("No delivery service available for the 
Logs Enabled %v", *firstDS.LogsEnabled)
+                       } else {
+                               if resp[0].LogsEnabled == nil {
+                                       t.Errorf("Logs Enabled is not available 
in response")
+                               } else {
+                                       if *resp[0].LogsEnabled != 
*firstDS.LogsEnabled {
+                                               t.Errorf("Logs enabled status 
expected: %t, actual: %t", *firstDS.LogsEnabled, *resp[0].LogsEnabled)
+                                       }
+                               }
+                       }
+               } else {
+                       t.Errorf("Logs Enabled is nil in the pre-requisites ")
+               }
+       }
+}
+
+func GetDeliveryServiceByValidProfile(t *testing.T) {
+       if len(testData.DeliveryServices) > 0 {
+               firstDS := testData.DeliveryServices[0]
+
+               if firstDS.ProfileName == nil {
+                       t.Errorf("Profile name is nil in the Pre-requisites")
+               } else {
+                       if firstDS.ProfileID == nil {
+                               profile, _, err := 
TOSession.GetProfileByName(*firstDS.ProfileName, nil)
+                               if err != nil {
+                                       t.Errorf("Error in Getting Profile by 
Name: %v", err)
+                               }
+                               if len(profile) == 0 {
+                                       t.Errorf("no Profile named %v" + 
*firstDS.ProfileName)
+                               }
+                               firstDS.ProfileID = &profile[0].ID
+                       }
+                       qparams := url.Values{}
+                       qparams.Set("profile", strconv.Itoa(*firstDS.ProfileID))
+                       resp, _, err := TOSession.GetDeliveryServices(nil, 
qparams)
+                       if err != nil {
+                               t.Errorf("Error in Getting deliveryservice by 
Profile: %v - %v", err, resp)
+                       }
+                       if len(resp) == 0 {
+                               t.Errorf("No delivery service available for the 
Profile %v", *firstDS.ProfileName)
+                       } else {
+                               if resp[0].ProfileName == nil {
+                                       t.Errorf("Profile Name is not available 
in response")
+                               } else {
+                                       if *resp[0].ProfileName != 
*firstDS.ProfileName {
+                                               t.Errorf("Profile name 
expected: %s, actual: %s", *firstDS.ProfileName, *resp[0].ProfileName)
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
+func GetDeliveryServiceByValidTenant(t *testing.T) {
+       if len(testData.DeliveryServices) > 0 {
+               firstDS := testData.DeliveryServices[0]
+
+               if firstDS.Tenant != nil {
+                       if firstDS.TenantID == nil {
+                               tenant, _, err := 
TOSession.GetTenantByName(*firstDS.Tenant, nil)
+                               if err != nil {
+                                       t.Errorf("Error in Getting Tenant by 
Name: %v", err)
+                               }
+                               firstDS.TenantID = &tenant.ID
+                       }
+                       qparams := url.Values{}
+                       qparams.Set("tenant", strconv.Itoa(*firstDS.TenantID))
+                       resp, _, err := TOSession.GetDeliveryServices(nil, 
qparams)
+                       if err != nil {
+                               t.Errorf("Error in Getting Deliveryservice by 
Tenant:%v - %v", err, resp)
+                       }
+                       if len(resp) == 0 {
+                               t.Errorf("No delivery service available for the 
Tenant %v", *firstDS.CDNName)
+                       } else {
+                               if resp[0].Tenant == nil {
+                                       t.Errorf("Tenant Name is not available 
in response")
+                               } else {
+                                       if *resp[0].Tenant != *firstDS.Tenant {
+                                               t.Errorf("name expected: %s, 
actual: %s", *firstDS.Tenant, *resp[0].Tenant)
+                                       }
+                               }
+                       }
+               } else {
+                       t.Errorf("Tenant name is nil in the Pre-requisites")
+               }
+       }
+}
+
+func GetDeliveryServiceByValidType(t *testing.T) {
+       if len(testData.DeliveryServices) > 0 {
+               firstDS := testData.DeliveryServices[0]
+
+               if firstDS.Type != nil {
+                       if firstDS.TypeID == nil {
+                               ty, _, err := 
TOSession.GetTypeByName(firstDS.Type.String(), nil)
+                               if err != nil {
+                                       t.Errorf("Error in Getting Type by 
Name: %v", err)
+                               }
+                               if len(ty) == 0 {
+                                       t.Errorf("no Type named %v" + 
firstDS.Type.String())
+                               }
+                               firstDS.TypeID = &ty[0].ID
+                       }
+                       qparams := url.Values{}
+                       qparams.Set("type", strconv.Itoa(*firstDS.TypeID))
+                       resp, _, err := TOSession.GetDeliveryServices(nil, 
qparams)
+                       if err != nil {
+                               t.Errorf("Error in Getting Deliveryservice by 
Type:%v - %v", err, resp)
+                       }
+                       if len(resp) == 0 {
+                               t.Errorf("No delivery service available for the 
Type %v", *firstDS.CDNName)
+                       } else {
+                               if resp[0].Type == nil {
+                                       t.Errorf("Type is not available in 
response")
+                               } else {
+                                       if *resp[0].Type != *firstDS.Type {
+                                               t.Errorf("Type expected: %s, 
actual: %s", *firstDS.Type, *resp[0].Type)
+                                       }
+                               }
+                       }
+               } else {
+                       t.Errorf("Type name is nil in the Pre-requisites")
+               }
+       }
+}
+
+func GetDeliveryServiceByValidXmlId(t *testing.T) {
+       if len(testData.DeliveryServices) > 0 {
+               firstDS := testData.DeliveryServices[0]
+
+               if firstDS.XMLID != nil {
+                       resp, _, err := 
TOSession.GetDeliveryServiceByXMLID(*firstDS.XMLID, nil)
+                       if err != nil {
+                               t.Errorf("Error in Getting DeliveryServices by 
XML ID: %v - %v", err, resp)
+                       }
+                       if len(resp) == 0 {
+                               t.Errorf("No delivery service available for the 
XML ID %v", *firstDS.XMLID)
+                       } else {
+                               if resp[0].XMLID == nil {
+                                       t.Errorf("XML ID is not available in 
response")
+                               } else {
+                                       if *resp[0].XMLID != *firstDS.XMLID {
+                                               t.Errorf("Delivery Service Name 
expected: %s, actual: %s", *firstDS.XMLID, *resp[0].XMLID)
+                                       }
+                               }
+                       }
+               } else {
+                       t.Errorf("XML ID is nil in the Pre-requisites")
+               }
+       }
+}
+
+func SortTestDeliveryServicesDesc(t *testing.T) {
+
+       var header http.Header
+       respAsc, _, err1 := TOSession.GetDeliveryServices(header, nil)
+       params := url.Values{}
+       params.Set("sortOrder", "desc")
+       respDesc, _, err2 := TOSession.GetDeliveryServices(header, params)
+
+       if err1 != nil {
+               t.Errorf("Expected no error, but got error in DS Ascending %v", 
err1)
+       }
+       if err2 != nil {
+               t.Errorf("Expected no error, but got error in DS Descending 
%v", err2)
+       }
+
+       if len(respAsc) > 0 && len(respDesc) > 0 {
+               // reverse the descending-sorted response and compare it to the 
ascending-sorted one
+               for start, end := 0, len(respDesc)-1; start < end; start, end = 
start+1, end-1 {
+                       respDesc[start], respDesc[end] = respDesc[end], 
respDesc[start]
+               }
+               if respDesc[0].XMLID != nil && respAsc[0].XMLID != nil {
+                       if !reflect.DeepEqual(respDesc[0].XMLID, 
respAsc[0].XMLID) {
+                               t.Errorf("Role responses are not equal after 
reversal: %v - %v", *respDesc[0].XMLID, *respAsc[0].XMLID)
+                       }
+               }
+       } else {
+               t.Errorf("No Response returned from GET Delivery Service using 
SortOrder")
+       }
+}
+
+func SortTestDeliveryServices(t *testing.T) {
+       var header http.Header
+       var sortedList []string
+       resp, _, err := TOSession.GetDeliveryServices(header, nil)
+       if err != nil {
+               t.Errorf("Expected no error, but got %v", err)
+       }
+       for i, _ := range resp {
+               sortedList = append(sortedList, *resp[i].XMLID)
+       }
+
+       res := sort.SliceIsSorted(sortedList, func(p, q int) bool {
+               return sortedList[p] < sortedList[q]
+       })
+       if res != true {
+               t.Errorf("list is not sorted by their XML Id: %v", sortedList)
+       }
+}
diff --git a/traffic_ops/testing/api/v4/tc-fixtures.json 
b/traffic_ops/testing/api/v4/tc-fixtures.json
index dc3ca8b..6cbc85d 100644
--- a/traffic_ops/testing/api/v4/tc-fixtures.json
+++ b/traffic_ops/testing/api/v4/tc-fixtures.json
@@ -462,7 +462,7 @@
             "orgServerFqdn": "http://origin.example.net";,
             "originShield": null,
             "profileDescription": null,
-            "profileName": null,
+            "profileName": "ATS_EDGE_TIER_CACHE",
             "protocol": 2,
             "qstringIgnore": 1,
             "rangeRequestHandling": 0,

Reply via email to