add test for traffic_monitor_config
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/e47bbe1a Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/e47bbe1a Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/e47bbe1a Branch: refs/heads/master Commit: e47bbe1a2805631d1d989f1aa15440d3419fb304 Parents: 93df9fb Author: David Neuman <david.neuma...@gmail.com> Authored: Tue Dec 6 13:08:59 2016 -0700 Committer: Dan Kirkwood <dang...@gmail.com> Committed: Sun Jan 8 21:05:00 2017 -0700 ---------------------------------------------------------------------- .../client/tests/integration/cachegroup_test.go | 2 +- .../client/tests/integration/cdn_test.go | 2 +- .../integration/traffic_monitor_config_test.go | 160 +++++++++++++++++++ 3 files changed, 162 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/e47bbe1a/traffic_ops/client/tests/integration/cachegroup_test.go ---------------------------------------------------------------------- diff --git a/traffic_ops/client/tests/integration/cachegroup_test.go b/traffic_ops/client/tests/integration/cachegroup_test.go index fbf19a5..4bff049 100644 --- a/traffic_ops/client/tests/integration/cachegroup_test.go +++ b/traffic_ops/client/tests/integration/cachegroup_test.go @@ -31,8 +31,8 @@ func TestCachegroups(t *testing.T) { t.Errorf("Array lengths from client and API are different...API = %d, Client = %d\n", len(apiCgs), len(clientCgs)) } - matchFound := false for _, apiCg := range apiCgs { + matchFound := false for _, clientCg := range clientCgs { if clientCg.Name != apiCg.Name { continue http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/e47bbe1a/traffic_ops/client/tests/integration/cdn_test.go ---------------------------------------------------------------------- diff --git a/traffic_ops/client/tests/integration/cdn_test.go b/traffic_ops/client/tests/integration/cdn_test.go index 04ad768..62d8cd2 100644 --- a/traffic_ops/client/tests/integration/cdn_test.go +++ b/traffic_ops/client/tests/integration/cdn_test.go @@ -32,8 +32,8 @@ func TestCDNs(t *testing.T) { t.Errorf("Array lengths from client and API are different...API = %s, Client = %s\n", apiCDNs, clientCDNs) } - matchFound := false for _, apiCDN := range apiCDNs { + matchFound := false for _, clientCDN := range clientCDNs { if clientCDN.Name != apiCDN.Name { continue http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/e47bbe1a/traffic_ops/client/tests/integration/traffic_monitor_config_test.go ---------------------------------------------------------------------- diff --git a/traffic_ops/client/tests/integration/traffic_monitor_config_test.go b/traffic_ops/client/tests/integration/traffic_monitor_config_test.go new file mode 100644 index 0000000..341e53a --- /dev/null +++ b/traffic_ops/client/tests/integration/traffic_monitor_config_test.go @@ -0,0 +1,160 @@ +package integration + +import ( + "encoding/json" + "fmt" + "testing" + + traffic_ops "github.com/apache/incubator-trafficcontrol/traffic_ops/client" +) + +func TestTrafficMonitorConfig(t *testing.T) { + cdn, err := GetCdn() + if err != nil { + t.Errorf("Could not get CDN, error was: %v\n", err) + } + uri := fmt.Sprintf("/api/1.2/cdns/%s/configs/monitoring.json", cdn.Name) + resp, err := Request(*to, "GET", uri, nil) + if err != nil { + t.Errorf("Could not get %s reponse was: %v\n", uri, err) + t.FailNow() + } + + defer resp.Body.Close() + var apiTMConfigRes traffic_ops.TMConfigResponse + if err := json.NewDecoder(resp.Body).Decode(&apiTMConfigRes); err != nil { + t.Errorf("Could not decode Traffic Monitor Config response. Error is: %v\n", err) + t.FailNow() + } + apiTMConfig := apiTMConfigRes.Response + + clientTMConfig, err := to.TrafficMonitorConfig(cdn.Name) + if err != nil { + t.Errorf("Could not get Traffic Monitor Config from client. Error is: %v\n", err) + t.FailNow() + } + + if len(apiTMConfig.CacheGroups) != len(clientTMConfig.CacheGroups) { + t.Errorf("Length of Traffic Monitor config cachegroups do not match! Expected %v, got %v\n", len(apiTMConfig.CacheGroups), len(clientTMConfig.CacheGroups)) + } + + for _, apiCg := range apiTMConfig.CacheGroups { + match := false + for _, clientCg := range clientTMConfig.CacheGroups { + if apiCg == clientCg { + match = true + } + } + if !match { + t.Errorf("Did not get a cachegroup matching %+v\n", apiCg) + } + } + + if len(apiTMConfig.DeliveryServices) != len(clientTMConfig.DeliveryServices) { + t.Errorf("Length of Traffic Monitor config deliveryserivces do not match! Expected %v, got %v\n", len(apiTMConfig.DeliveryServices), len(clientTMConfig.DeliveryServices)) + } + + for _, apiDs := range apiTMConfig.DeliveryServices { + match := false + for _, clientDs := range clientTMConfig.DeliveryServices { + if apiDs == clientDs { + match = true + } + } + if !match { + t.Errorf("Did not get a Deliveryservice matching %+v\n", apiDs) + } + } + + if len(apiTMConfig.Profiles) != len(clientTMConfig.Profiles) { + t.Errorf("Length of Traffic Monitor config profiles do not match! Expected %v, got %v\n", len(apiTMConfig.Profiles), len(clientTMConfig.Profiles)) + } + + for _, apiProfile := range apiTMConfig.Profiles { + match := false + for _, clientProfile := range clientTMConfig.Profiles { + if apiProfile == clientProfile { + match = true + } + } + if !match { + t.Errorf("Did not get a Profile matching %+v\n", apiProfile) + } + } + + if len(apiTMConfig.TrafficMonitors) != len(clientTMConfig.TrafficMonitors) { + t.Errorf("Length of Traffic Monitor config traffic monitors does not match! Expected %v, got %v\n", len(apiTMConfig.TrafficMonitors), len(clientTMConfig.TrafficMonitors)) + } + + for _, apiTM := range apiTMConfig.TrafficMonitors { + match := false + for _, clientTM := range clientTMConfig.TrafficMonitors { + if apiTM == clientTM { + match = true + } + } + if !match { + t.Errorf("Did not get a Traffic Monitor matching %+v\n", apiTM) + } + } + + if len(apiTMConfig.TrafficServers) != len(clientTMConfig.TrafficServers) { + t.Errorf("Length of Traffic Monitor config traffic servers does not match! Expected %v, got %v\n", len(apiTMConfig.TrafficServers), len(clientTMConfig.TrafficServers)) + } + + for _, apiTS := range apiTMConfig.TrafficServers { + match := false + for _, clientTS := range clientTMConfig.TrafficServers { + if apiTS.HostName == clientTS.HostName { + match = true + if apiTS.CacheGroup != clientTS.CacheGroup { + t.Errorf("Cachegroup -- Expected %v, got %v\n", apiTS.CacheGroup, clientTS.CacheGroup) + } + if len(apiTS.DeliveryServices) != len(clientTS.DeliveryServices) { + t.Errorf("len DeliveryServices -- Expected %v, got %v\n", len(apiTS.DeliveryServices), len(clientTS.DeliveryServices)) + } + for _, apiDS := range apiTS.DeliveryServices { + dsMatch := false + for _, clientDS := range clientTS.DeliveryServices { + if apiDS.Xmlid == clientDS.Xmlid && len(apiDS.Remaps) == len(clientDS.Remaps) { + dsMatch = true + } + } + if !dsMatch { + t.Errorf("Could not finding a matching DS for %v\n", apiDS.Xmlid) + } + } + if apiTS.FQDN != clientTS.FQDN { + t.Errorf("FQDN -- Expected %v, got %v\n", apiTS.FQDN, clientTS.FQDN) + } + if apiTS.HashID != clientTS.HashID { + t.Errorf("HashID -- Expected %v, got %v\n", apiTS.HashID, clientTS.HashID) + } + if apiTS.IP != clientTS.IP { + t.Errorf("IP -- Expected %v, got %v\n", apiTS.IP, clientTS.IP) + } + if apiTS.IP6 != clientTS.IP6 { + t.Errorf("IP6 -- Expected %v, got %v\n", apiTS.IP6, clientTS.IP6) + } + if apiTS.InterfaceName != clientTS.InterfaceName { + t.Errorf("Interface Name -- Expected %v, got %v\n", apiTS.InterfaceName, clientTS.InterfaceName) + } + if apiTS.Port != clientTS.Port { + t.Errorf("Port -- Expected %v, got %v\n", apiTS.Port, clientTS.Port) + } + if apiTS.Profile != clientTS.Profile { + t.Errorf("Profile -- Expected %v, got %v\n", apiTS.Profile, clientTS.Profile) + } + if apiTS.Status != clientTS.Status { + t.Errorf("Status -- Expected %v, got %v\n", apiTS.Status, clientTS.Status) + } + if apiTS.Type != clientTS.Type { + t.Errorf("Type -- Expected %v, got %v\n", apiTS.Type, clientTS.Type) + } + } + } + if !match { + t.Errorf("Did not get a Traffic Server matching %+v\n", apiTS) + } + } +}