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

rshah 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 af86550f70 Crconfig test coverage (#7401)
af86550f70 is described below

commit af86550f700aef7f20a7e8b154eacaea8da30d7c
Author: Kurtis Michie <[email protected]>
AuthorDate: Tue Mar 14 09:44:05 2023 -0600

    Crconfig test coverage (#7401)
    
    * Test for createMaxmindDefaultOverrideObj
    
    * Test success for TestGetSnapshotMonitoring
    
    * Created test case for TestGetSnapshot in snapshot_test.go
    
    * Created test case for TestGetSnapshotMonitoring in snapshot_test.go
    
    * Changed %s to %v in snapshot_test.go and reorganized import in 
config_test.go
---
 .../traffic_ops_golang/crconfig/config_test.go     |  33 ++++
 .../traffic_ops_golang/crconfig/snapshot_test.go   | 182 ++++++++++++++++-----
 2 files changed, 177 insertions(+), 38 deletions(-)

diff --git a/traffic_ops/traffic_ops_golang/crconfig/config_test.go 
b/traffic_ops/traffic_ops_golang/crconfig/config_test.go
index 9414baf970..0880676793 100644
--- a/traffic_ops/traffic_ops_golang/crconfig/config_test.go
+++ b/traffic_ops/traffic_ops_golang/crconfig/config_test.go
@@ -21,12 +21,14 @@ package crconfig
 
 import (
        "context"
+       "errors"
        "reflect"
        "strings"
        "testing"
        "time"
 
        "github.com/apache/trafficcontrol/lib/go-tc"
+       "github.com/apache/trafficcontrol/lib/go-util"
        "github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/test"
 
        "gopkg.in/DATA-DOG/go-sqlmock.v1"
@@ -146,3 +148,34 @@ func TestMakeCRConfigConfig(t *testing.T) {
                t.Errorf("makeCRConfigConfig expected: %+v, actual: %+v", 
expected, actual)
        }
 }
+
+func TestCreateMaxmindDefaultOverrideObj(t *testing.T) {
+       errs := ""
+       separator := ", "
+       testCases := []string{
+               "US;12.345,-12.345",
+               "US",
+               "US;12.345",
+               "US;abc,-12.345",
+               "US;1,abc",
+       }
+
+       for _, v := range testCases {
+               _, err := createMaxmindDefaultOverrideObj(v)
+               if err != nil {
+                       errs += util.JoinErrsStr([]error{err}) + separator
+               }
+       }
+       errs = errs[:len(errs)-len(separator)]
+
+       expectedErrs := util.JoinErrsStr([]error{
+               errors.New(`malformed maxmind.default.override parameter: 
'US'`),
+               errors.New(`malformed maxmind.default.override parameter 
coordinates 'US;12.345'`),
+               errors.New(`malformed maxmind.default.override parameter 
coordinates, latitude not a number: 'US;abc,-12.345'`),
+               errors.New(`malformed maxmind.default.override parameter 
coordinates, longitude not an number: 'US;1,abc'`),
+       })
+
+       if !reflect.DeepEqual(expectedErrs, errs) {
+               t.Errorf("expected %s, got %s", expectedErrs, errs)
+       }
+}
diff --git a/traffic_ops/traffic_ops_golang/crconfig/snapshot_test.go 
b/traffic_ops/traffic_ops_golang/crconfig/snapshot_test.go
index 4a59a3bfa1..9c67806e4b 100644
--- a/traffic_ops/traffic_ops_golang/crconfig/snapshot_test.go
+++ b/traffic_ops/traffic_ops_golang/crconfig/snapshot_test.go
@@ -25,6 +25,7 @@ import (
        "database/sql/driver"
        "encoding/json"
        "reflect"
+       "strings"
        "testing"
        "time"
 
@@ -37,56 +38,161 @@ func ExpectedGetSnapshot(crc *tc.CRConfig) ([]byte, error) 
{
        return json.Marshal(crc)
 }
 
-func ExpectedGetMontioringSnapshot(crc *tc.CRConfig, tx *sql.Tx) ([]byte, 
error) {
+func ExpectedGetMonitoringSnapshot(crc *tc.CRConfig, tx *sql.Tx) ([]byte, 
error) {
        tm, _ := monitoring.GetMonitoringJSON(tx, *crc.Stats.CDNName)
        return json.Marshal(tm)
 }
 
-func MockGetSnapshot(mock sqlmock.Sqlmock, expected []byte, cdn string) {
-       rows := sqlmock.NewRows([]string{"snapshot"})
-       rows = rows.AddRow(expected)
-       rows = rows.AddRow(expected)
-       mock.ExpectQuery("SELECT").WithArgs(cdn).WillReturnRows(rows)
+func MockGetSnapshotTestCases(mock sqlmock.Sqlmock, expected []byte, cdn 
string) {
+       if expected != nil {
+               rows := sqlmock.NewRows([]string{"snapshot"})
+               rows = rows.AddRow(expected)
+               mock.ExpectQuery("SELECT").WithArgs(cdn).WillReturnRows(rows)
+       } else if expected == nil {
+               rows := sqlmock.NewRows([]string{"snapshot"})
+               mock.ExpectQuery("SELECT").WithArgs(cdn).WillReturnRows(rows)
+       }
 }
 
 func TestGetSnapshot(t *testing.T) {
-       db, mock, err := sqlmock.New()
-       if err != nil {
-               t.Fatalf("an error '%s' was not expected when opening a stub 
database connection", err)
-       }
-       defer db.Close()
+       testCases := []string{"success", "emptyRows", "badCdnName"}
 
-       cdn := "mycdn"
+       for _, v := range testCases {
+               db, mock, err := sqlmock.New()
+               if err != nil {
+                       t.Fatalf("an error '%v' was not expected when opening a 
stub database connection", err)
+               }
+               defer db.Close()
 
-       crc := &tc.CRConfig{}
-       crc.Stats.CDNName = &cdn
+               cdn := "mycdn"
 
-       mock.ExpectBegin()
-       expected, err := ExpectedGetSnapshot(crc)
-       if err != nil {
-               t.Fatalf("GetSnapshot creating expected err expected: nil, 
actual: %v", err)
-       }
-       MockGetSnapshot(mock, expected, cdn)
-       mock.ExpectCommit()
+               crc := &tc.CRConfig{}
+               crc.Stats.CDNName = &cdn
 
-       dbCtx, cancelTx := context.WithTimeout(context.TODO(), 10*time.Second)
-       defer cancelTx()
-       tx, err := db.BeginTx(dbCtx, nil)
-       if err != nil {
-               t.Fatalf("creating transaction: %v", err)
-       }
-       defer tx.Commit()
+               mock.ExpectBegin()
 
-       actual, exists, err := GetSnapshot(tx, cdn)
-       if err != nil {
-               t.Fatalf("GetSnapshot err expected: nil, actual: %v", err)
-       }
-       if !exists {
-               t.Fatalf("GetSnapshot exists expected: true, actual: false")
+               expected, err := ExpectedGetSnapshot(crc)
+
+               if err != nil {
+                       t.Fatalf("GetSnapshot creating expected err expected: 
nil, actual: %v", err)
+               }
+               if v == "success" {
+                       MockGetSnapshotTestCases(mock, expected, cdn)
+               } else if v == "emptyRows" {
+                       MockGetSnapshotTestCases(mock, nil, cdn)
+               } else if v == "badCdnName" {
+                       MockGetSnapshotTestCases(mock, expected, "bad")
+               } else {
+                       t.Fatalf("GetSnapshot testCase %v not found", v)
+               }
+               mock.ExpectCommit()
+
+               dbCtx, cancelTx := context.WithTimeout(context.TODO(), 
10*time.Second)
+               defer cancelTx()
+               tx, err := db.BeginTx(dbCtx, nil)
+
+               actual, exists, err := GetSnapshot(tx, cdn)
+
+               if v == "success" {
+                       if err != nil {
+                               t.Fatalf("GetSnapshot err expected: nil, 
actual: %v", err)
+                       }
+                       if !exists {
+                               t.Fatalf("GetSnapshot exists expected: true, 
actual: false")
+                       }
+                       if !reflect.DeepEqual(string(expected), actual) {
+                               t.Errorf("GetSnapshot expected: %+v, actual: 
%+v", string(expected), actual)
+                       }
+               } else if v == "emptyRows" {
+                       if err != nil {
+                               t.Fatalf("GetSnapshot err expected: nil, 
actual: %v", err)
+                       }
+                       if !reflect.DeepEqual("", actual) {
+                               t.Errorf("GetSnapshot expected an empty string, 
actual: %+v", actual)
+                       }
+               } else if v == "badCdnName" {
+                       if err == nil && strings.Contains("does not match 
actual [string - mycdn]", err.Error()) {
+                               t.Errorf("Expected a mismatched error when 
supplying a bad CDN name in GetSnapshot")
+                       }
+                       if !reflect.DeepEqual("", actual) {
+                               t.Errorf("GetSnapshot expected an empty string, 
actual: %+v", actual)
+                       }
+               } else {
+                       t.Fatalf("Test case %v not correctly accounted for", v)
+               }
+
+               defer tx.Commit()
        }
+}
+
+func TestGetSnapshotMonitoring(t *testing.T) {
+       testCases := []string{"success", "emptyRows", "badCdnName"}
+
+       for _, v := range testCases {
+               db, mock, err := sqlmock.New()
+               if err != nil {
+                       t.Fatalf("an error '%v' was not expected when opening a 
stub database connection", err)
+               }
+               defer db.Close()
+
+               cdn := "mycdn"
+
+               crc := &tc.CRConfig{}
+               crc.Stats.CDNName = &cdn
+
+               mock.ExpectBegin()
+
+               expected, err := ExpectedGetSnapshot(crc)
+
+               if err != nil {
+                       t.Fatalf("GetSnapshotMonitoring creating expected err 
expected: nil, actual: %v", err)
+               }
+               if v == "success" {
+                       MockGetSnapshotTestCases(mock, expected, cdn)
+               } else if v == "emptyRows" {
+                       MockGetSnapshotTestCases(mock, nil, cdn)
+               } else if v == "badCdnName" {
+                       MockGetSnapshotTestCases(mock, expected, "bad")
+               } else {
+                       t.Fatalf("GetSnapshotMonitoring testCase %v not found", 
v)
+               }
+               mock.ExpectCommit()
+
+               dbCtx, cancelTx := context.WithTimeout(context.TODO(), 
10*time.Second)
+               defer cancelTx()
+               tx, err := db.BeginTx(dbCtx, nil)
+
+               actual, exists, err := GetSnapshotMonitoring(tx, cdn)
+
+               if v == "success" {
+                       if err != nil {
+                               t.Fatalf("GetSnapshotMonitoring err expected: 
nil, actual: %v", err)
+                       }
+                       if !exists {
+                               t.Fatalf("GetSnapshotMonitoring exists 
expected: true, actual: false")
+                       }
+                       if !reflect.DeepEqual(string(expected), actual) {
+                               t.Errorf("GetSnapshotMonitoring expected: %+v, 
actual: %+v", string(expected), actual)
+                       }
+               } else if v == "emptyRows" {
+                       if err != nil {
+                               t.Fatalf("GetSnapshotMonitoring err expected: 
nil, actual: %v", err)
+                       }
+                       if !reflect.DeepEqual("", actual) {
+                               t.Errorf("GetSnapshotMonitoring expected an 
empty string, actual: %+v", actual)
+                       }
+               } else if v == "badCdnName" {
+                       if err == nil && strings.Contains("does not match 
actual [string - mycdn]", err.Error()) {
+                               t.Errorf("Expected a mismatched error when 
supplying a bad CDN name in GetSnapshotMonitoring")
+                       }
+                       if !reflect.DeepEqual("", actual) {
+                               t.Errorf("GetSnapshotMonitoring expected an 
empty string, actual: %+v", actual)
+                       }
+               } else {
+                       t.Fatalf("Test case %v not correctly accounted for", v)
+               }
 
-       if !reflect.DeepEqual(string(expected), actual) {
-               t.Errorf("GetSnapshot expected: %+v, actual: %+v", 
string(expected), actual)
+               defer tx.Commit()
        }
 }
 
@@ -112,7 +218,7 @@ func MockSnapshot(mock sqlmock.Sqlmock, expected []byte, 
expectedtm []byte, cdn
 func TestSnapshot(t *testing.T) {
        db, mock, err := sqlmock.New()
        if err != nil {
-               t.Fatalf("an error '%s' was not expected when opening a stub 
database connection", err)
+               t.Fatalf("an error '%v' was not expected when opening a stub 
database connection", err)
        }
        defer db.Close()
 
@@ -134,7 +240,7 @@ func TestSnapshot(t *testing.T) {
                t.Fatalf("GetSnapshot creating expected err expected: nil, 
actual: %v", err)
        }
 
-       expectedtm, err := ExpectedGetMontioringSnapshot(crc, tx)
+       expectedtm, err := ExpectedGetMonitoringSnapshot(crc, tx)
        if err != nil {
                t.Fatalf("GetSnapshotMonitor creating expected err expected: 
nil, actual: %v", err)
        }

Reply via email to