initial commit of integration tests

Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/3fa2b81e
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/3fa2b81e
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/3fa2b81e

Branch: refs/heads/master
Commit: 3fa2b81e3231dafc11662c7c5d094e6a19e65f6f
Parents: 5b40c9a
Author: David Neuman <david.neuma...@gmail.com>
Authored: Tue Nov 29 15:42:37 2016 -0700
Committer: Dan Kirkwood <dang...@gmail.com>
Committed: Sun Jan 8 21:04:59 2017 -0700

----------------------------------------------------------------------
 .../client/tests/integration/cachegroup_test.go |  68 +++++
 .../client/tests/integration/cdn_test.go        |  91 +++++++
 .../client/tests/integration/crconfig_test.go   |  25 ++
 .../tests/integration/deliveryservice_test.go   | 267 +++++++++++++++++++
 .../tests/integration/integration_helper.go     |  89 +++++++
 5 files changed, 540 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/3fa2b81e/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
new file mode 100644
index 0000000..fbf19a5
--- /dev/null
+++ b/traffic_ops/client/tests/integration/cachegroup_test.go
@@ -0,0 +1,68 @@
+package integration
+
+import (
+       "encoding/json"
+       "testing"
+
+       traffic_ops 
"github.com/apache/incubator-trafficcontrol/traffic_ops/client"
+)
+
+//TestCachegroupResults compares the results of the Cachegroup api and 
Cachegroup client
+func TestCachegroups(t *testing.T) {
+       //Get Cachegroups Data from API
+       resp, err := Request(*to, "GET", "/api/1.2/cachegroups.json", nil)
+       if err != nil {
+               t.Errorf("Could not get cachegroups.json reponse was: %v\n", 
err)
+       }
+
+       defer resp.Body.Close()
+       var apiCgRes traffic_ops.CacheGroupResponse
+       if err := json.NewDecoder(resp.Body).Decode(&apiCgRes); err != nil {
+               t.Errorf("Could not decode Cachegroup json.  Error is: %v\n", 
err)
+       }
+       apiCgs := apiCgRes.Response
+
+       clientCgs, err := to.CacheGroups()
+       if err != nil {
+               t.Errorf("Could not get Cachegroups from client.  Error is: 
%v\n", err)
+       }
+
+       if len(apiCgs) != len(clientCgs) {
+               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 {
+               for _, clientCg := range clientCgs {
+                       if clientCg.Name != apiCg.Name {
+                               continue
+                       }
+                       matchFound = true
+                       //compare API results and client results
+                       if apiCg.Name != clientCg.Name {
+                               t.Errorf("Cachegroup Name from client and API 
are different...API = %s, Client = %s\n", apiCg.Name, clientCg.Name)
+                       }
+                       if apiCg.ShortName != clientCg.ShortName {
+                               t.Errorf("Cachegroup ShortName from client and 
API are different...API = %s, Client = %s\n", apiCg.ShortName, 
clientCg.ShortName)
+                       }
+                       if apiCg.LastUpdated != clientCg.LastUpdated {
+                               t.Errorf("Cachegroup Last Updated from client 
and API are different...API = %s, Client = %s\n", apiCg.Name, clientCg.Name)
+                       }
+                       if apiCg.Latitude != clientCg.Latitude {
+                               t.Errorf("Cachegroup Latitude from client and 
API are different...API = %f, Client = %f\n", apiCg.Latitude, clientCg.Latitude)
+                       }
+                       if apiCg.Longitude != clientCg.Longitude {
+                               t.Errorf("Cachegroup Longitude from client and 
API are different...API = %f, Client = %f\n", apiCg.Longitude, 
clientCg.Longitude)
+                       }
+                       if apiCg.ParentName != clientCg.ParentName {
+                               t.Errorf("Cachegroup ParentName from client and 
API are different...API = %s, Client = %s\n", apiCg.ParentName, 
clientCg.ParentName)
+                       }
+                       if apiCg.Type != clientCg.Type {
+                               t.Errorf("Cachegroup Type from client and API 
are different...API = %s, Client = %s\n", apiCg.Type, clientCg.Type)
+                       }
+               }
+               if !matchFound {
+                       t.Errorf("A match for %s from the API was not found in 
the client results\n", apiCg.Name)
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/3fa2b81e/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
new file mode 100644
index 0000000..04ad768
--- /dev/null
+++ b/traffic_ops/client/tests/integration/cdn_test.go
@@ -0,0 +1,91 @@
+package integration
+
+import (
+       "encoding/json"
+       "testing"
+
+       traffic_ops 
"github.com/apache/incubator-trafficcontrol/traffic_ops/client"
+)
+
+//TestCDNs compares the results of the CDN api and CDN client
+func TestCDNs(t *testing.T) {
+       //Get CDNs Data from API
+       resp, err := Request(*to, "GET", "/api/1.2/cdns.json", nil)
+       if err != nil {
+               t.Errorf("Could not get cdns.json reponse was: %v\n", err)
+       }
+
+       defer resp.Body.Close()
+       var apiCDNRes traffic_ops.CDNResponse
+       if err := json.NewDecoder(resp.Body).Decode(&apiCDNRes); err != nil {
+               t.Errorf("Could not decode CDN json.  Error is: %v\n", err)
+       }
+       apiCDNs := apiCDNRes.Response
+
+       //get CDNs data from client
+       clientCDNs, err := to.CDNs()
+       if err != nil {
+               t.Errorf("Could not get CDNs from client.  Error is: %v\n", err)
+       }
+
+       if len(apiCDNs) != len(clientCDNs) {
+               t.Errorf("Array lengths from client and API are different...API 
= %s, Client = %s\n", apiCDNs, clientCDNs)
+       }
+
+       matchFound := false
+       for _, apiCDN := range apiCDNs {
+               for _, clientCDN := range clientCDNs {
+                       if clientCDN.Name != apiCDN.Name {
+                               continue
+                       }
+                       matchFound = true
+                       //compare API results and client results
+                       if apiCDN.Name != clientCDN.Name {
+                               t.Errorf("CDN Name from client and API are 
different...API = %s, Client = %s\n", apiCDN.Name, clientCDN.Name)
+                       }
+                       if apiCDN.LastUpdated != clientCDN.LastUpdated {
+                               t.Errorf("CDN Last Updated from client and API 
are different...API = %s, Client = %s\n", apiCDN.Name, clientCDN.Name)
+                       }
+               }
+               if !matchFound {
+                       t.Errorf("A match for %s from the API was not found in 
the client results\n", apiCDN.Name)
+               }
+       }
+}
+
+//TestCDNName ensures the client returns a CDN by name
+func TestCDNName(t *testing.T) {
+       //Get CDNs Data from API
+       resp, err := Request(*to, "GET", "/api/1.2/cdns.json", nil)
+       if err != nil {
+               t.Errorf("Could not get cdns.json reponse was: %v\n", err)
+       }
+
+       defer resp.Body.Close()
+       var apiCDNRes traffic_ops.CDNResponse
+       if err := json.NewDecoder(resp.Body).Decode(&apiCDNRes); err != nil {
+               t.Errorf("Could not decode CDN json.  Error is: %v\n", err)
+       }
+
+       apiCDNs := apiCDNRes.Response
+       apiName := apiCDNs[0].Name
+       apiLastUpdated := apiCDNs[0].LastUpdated
+
+       //get CDNs data from client
+       clientCDN, err := to.CDNName(apiName)
+
+       if len(clientCDN) != 1 {
+               t.Errorf("The length of the client CDN response %v is greater 
than 1!\n", len(apiCDNs))
+       }
+
+       clientName := clientCDN[0].Name
+       clientLastUpdated := clientCDN[0].LastUpdated
+
+       //compare API results and client results
+       if apiName != clientName {
+               t.Errorf("CDN Name from client and API are different...API = 
%s, Client = %s\n", apiName, clientName)
+       }
+       if apiLastUpdated != clientLastUpdated {
+               t.Errorf("CDN Last Updated from client and API are 
different...API = %s, Client = %s\n", apiName, clientName)
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/3fa2b81e/traffic_ops/client/tests/integration/crconfig_test.go
----------------------------------------------------------------------
diff --git a/traffic_ops/client/tests/integration/crconfig_test.go 
b/traffic_ops/client/tests/integration/crconfig_test.go
new file mode 100644
index 0000000..7f404f7
--- /dev/null
+++ b/traffic_ops/client/tests/integration/crconfig_test.go
@@ -0,0 +1,25 @@
+package integration
+
+import "testing"
+
+//TestCachegroupResults compares the results of the Cachegroup api and 
Cachegroup client
+func TestGetCrConfig(t *testing.T) {
+       //Get a CDN from the to client
+       cdn, err := GetCdn()
+       if err != nil {
+               t.Errorf("TestGetCrConfig -- Could not get CDNs from 
TO...%v\n", err)
+       }
+
+       crConfig, cacheHitStatus, err := to.GetCRConfig(cdn.Name)
+       if err != nil {
+               t.Errorf("Could not get CrConfig for %s.  Error is...%v\n", 
cdn.Name, err)
+       }
+
+       if cacheHitStatus == "" {
+               t.Error("cacheHitStatus is empty...")
+       }
+
+       if len(crConfig) == 0 {
+               t.Error("Raw CrConfig reponse was 0...")
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/3fa2b81e/traffic_ops/client/tests/integration/deliveryservice_test.go
----------------------------------------------------------------------
diff --git a/traffic_ops/client/tests/integration/deliveryservice_test.go 
b/traffic_ops/client/tests/integration/deliveryservice_test.go
new file mode 100644
index 0000000..c224cdf
--- /dev/null
+++ b/traffic_ops/client/tests/integration/deliveryservice_test.go
@@ -0,0 +1,267 @@
+package integration
+
+import (
+       "encoding/json"
+       "strconv"
+       "testing"
+       "time"
+
+       traffic_ops 
"github.com/apache/incubator-trafficcontrol/traffic_ops/client"
+)
+
+// TestDeliveryServices compares the results of the Deliveryservices api and 
Deliveryservices client
+func TestDeliveryServices(t *testing.T) {
+       resp, err := Request(*to, "GET", "/api/1.2/deliveryservices.json", nil)
+       if err != nil {
+               t.Errorf("Could not get deliveryservices.json reponse was: 
%v\n", err)
+       }
+
+       defer resp.Body.Close()
+       var apiDsRes traffic_ops.GetDeliveryServiceResponse
+       if err := json.NewDecoder(resp.Body).Decode(&apiDsRes); err != nil {
+               t.Errorf("Could not decode Deliveryservice json.  Error is: 
%v\n", err)
+       }
+       apiDss := apiDsRes.Response
+
+       clientDss, err := to.DeliveryServices()
+       if err != nil {
+               t.Errorf("Could not get Deliveryservices from client.  Error 
is: %v\n", err)
+       }
+
+       if len(apiDss) != len(clientDss) {
+               t.Errorf("Array lengths from client and API are different...API 
= %v, Client = %v\n", apiDss, clientDss)
+       }
+
+       matchFound := false
+       for _, apiDs := range apiDss {
+               for _, clientDs := range clientDss {
+                       if clientDs.XMLID != apiDs.XMLID {
+                               continue
+                       }
+                       matchFound = true
+                       compareDs(apiDs, clientDs, t)
+               }
+               if !matchFound {
+                       t.Errorf("A match for %s from the API was not found in 
the client results\n", apiDs.XMLID)
+               }
+       }
+}
+
+var testDsID string
+
+func TestCreateDs(t *testing.T) {
+       //create a DS and validate response
+       cdn, err := GetCdn()
+       if err != nil {
+               t.Errorf("TestCreateDs -- Could not get CDNs from TO...%v\n", 
err)
+       }
+
+       profile, err := GetProfile()
+       if err != nil {
+               t.Errorf("TestCreateDs -- Could not get Profiles from 
TO...%v\n", err)
+       }
+
+       newDs := new(traffic_ops.DeliveryService)
+       newDs.Active = false
+       newDs.CCRDNSTTL = 30
+       newDs.CDNName = cdn.Name
+       newDs.CacheURL = "cacheURL"
+       newDs.CheckPath = "CheckPath"
+       newDs.DNSBypassCname = "DNSBypassCNAME"
+       newDs.DNSBypassIP = "10.10.10.10"
+       newDs.DNSBypassIP6 = "FF01:0:0:0:0:0:0:FB"
+       newDs.DNSBypassTTL = 30
+       newDs.DSCP = 0
+       newDs.DisplayName = "DisplayName"
+       newDs.EdgeHeaderRewrite = "EdgeHeaderRewrite"
+       newDs.GeoLimit = 5
+       newDs.GeoProvider = 1
+       newDs.GlobalMaxMBPS = 15000
+       newDs.GlobalMaxTPS = 15000
+       newDs.HTTPBypassFQDN = "HTTPBypassFQDN"
+       newDs.IPV6RoutingEnabled = true
+       newDs.InfoURL = "InfoUrl"
+       newDs.InitialDispersion = 5
+       newDs.LongDesc = "LongDesc"
+       newDs.LongDesc1 = "LongDesc1"
+       newDs.LongDesc2 = "LongDesc2"
+       newDs.MaxDNSAnswers = 5
+       newDs.MidHeaderRewrite = "MidHeaderRewrite"
+       newDs.MissLat = 5.555
+       newDs.MissLong = -50.5050
+       newDs.MultiSiteOrigin = true
+       newDs.OrgServerFQDN = "http://OrgServerFQDN";
+       newDs.ProfileDesc = profile.Description
+       newDs.ProfileName = profile.Name
+       newDs.Protocol = 1
+       newDs.QStringIgnore = 1
+       newDs.RangeRequestHandling = 0
+       newDs.RegexRemap = "regexRemap"
+       newDs.RemapText = "remapText"
+       newDs.Signed = false
+       newDs.TRResponseHeaders = "TRResponseHeaders"
+       newDs.Type = "HTTP"
+       newDs.XMLID = "Test-DS-" + strconv.FormatInt(time.Now().Unix(), 10)
+       newDs.RegionalGeoBlocking = false
+       newDs.LogsEnabled = false
+
+       //Create currently does not write regexes...
+       // newDsMatch1 := new(traffic_ops.DeliveryServiceMatch)
+       // newDsMatch1.Pattern = "Pattern1"
+       // newDsMatch1.SetNumber = "0"
+       // newDsMatch1.Type = "HOST"
+
+       // newDsMatch2 := new(traffic_ops.DeliveryServiceMatch)
+       // newDsMatch2.Pattern = "Pattern2"
+       // newDsMatch2.SetNumber = "1"
+       // newDsMatch2.Type = "HOST"
+
+       // newDs.MatchList = append(newDs.MatchList, *newDsMatch1)
+       // newDs.MatchList = append(newDs.MatchList, *newDsMatch2)
+
+       res, err := to.CreateDeliveryService(newDs)
+       if err != nil {
+               t.Error("Failed to create deliveryservice!  Error is: ", err)
+       } else {
+               compareDs(*newDs, res.Response[0], t)
+       }
+}
+
+func compareDs(ds1 traffic_ops.DeliveryService, ds2 
traffic_ops.DeliveryService, t *testing.T) {
+       if ds1.Active != ds1.Active {
+               t.Errorf("Active -- Expected %v, Got %v\n", ds1.Active, 
ds2.Active)
+       }
+       if ds1.CCRDNSTTL != ds2.CCRDNSTTL {
+               t.Errorf("CCRDNSTTL -- Expected %v, Got %v\n", ds1.CCRDNSTTL, 
ds2.CCRDNSTTL)
+       }
+       if ds1.CDNName != ds2.CDNName {
+               t.Errorf("CDNName -- Expected %v, Got %v\n", ds1.CDNName, 
ds2.CDNName)
+       }
+       if ds1.CacheURL != ds2.CacheURL {
+               t.Errorf("CacheURL -- Expected %v, Got %v\n", ds1.CacheURL, 
ds2.CacheURL)
+       }
+       if ds1.CheckPath != ds2.CheckPath {
+               t.Errorf("CheckPath -- Expected %v, Got %v\n", ds1.CheckPath, 
ds2.CheckPath)
+       }
+       if ds1.DNSBypassCname != ds2.DNSBypassCname {
+               t.Errorf("DNSBypassCname -- Expected %v, Got %v\n", 
ds1.DNSBypassCname, ds2.DNSBypassCname)
+       }
+       if ds1.DNSBypassIP != ds2.DNSBypassIP {
+               t.Errorf("DNSBypassIP -- Expected %v, Got %v\n", 
ds1.DNSBypassIP, ds2.DNSBypassIP)
+       }
+       if ds1.DNSBypassIP6 != ds2.DNSBypassIP6 {
+               t.Errorf("DNSBypassIP6 -- Expected %v, Got %v\n", 
ds1.DNSBypassIP6, ds2.DNSBypassIP6)
+       }
+       if ds1.DNSBypassTTL != ds2.DNSBypassTTL {
+               t.Errorf("DNSBypassTTL -- Expected %v, Got %v\n", 
ds1.DNSBypassTTL, ds2.DNSBypassTTL)
+       }
+       if ds1.DSCP != ds2.DSCP {
+               t.Errorf("DSCP -- Expected %v, Got %v\n", ds1.DSCP, ds2.DSCP)
+       }
+       if ds1.DisplayName != ds2.DisplayName {
+               t.Errorf("DisplayName -- Expected %v, Got %v\n", 
ds1.DisplayName, ds2.DisplayName)
+       }
+       if ds1.EdgeHeaderRewrite != ds2.EdgeHeaderRewrite {
+               t.Errorf("EdgeHeaderRewrite -- Expected %v, Got %v\n", 
ds1.EdgeHeaderRewrite, ds2.EdgeHeaderRewrite)
+       }
+       if ds1.GeoLimit != ds2.GeoLimit {
+               t.Errorf("GeoLimit -- Expected %v, Got %v\n", ds1.GeoLimit, 
ds2.GeoLimit)
+       }
+       if ds1.GeoProvider != ds2.GeoProvider {
+               t.Errorf("GeoProvider -- Expected %v, Got %v\n", 
ds1.GeoProvider, ds2.GeoProvider)
+       }
+       if ds1.GlobalMaxMBPS != ds2.GlobalMaxMBPS {
+               t.Errorf("GlobalMaxMBPS -- Expected %v, Got %v\n", 
ds1.GlobalMaxMBPS, ds2.GlobalMaxMBPS)
+       }
+       if ds1.GlobalMaxTPS != ds2.GlobalMaxTPS {
+               t.Errorf("GlobalMaxTPS -- Expected %v, Got %v\n", 
ds1.GlobalMaxTPS, ds2.GlobalMaxTPS)
+       }
+       if ds1.HTTPBypassFQDN != ds2.HTTPBypassFQDN {
+               t.Errorf("HTTPBypassFQDN -- Expected %v, Got %v\n", 
ds1.HTTPBypassFQDN, ds2.HTTPBypassFQDN)
+       }
+       if ds1.ID > 0 && ds1.ID != ds2.ID {
+               t.Errorf("ID -- Expected %v, Got %v\n", ds1.ID, ds2.ID)
+       }
+       if ds1.IPV6RoutingEnabled != ds2.IPV6RoutingEnabled {
+               t.Errorf("IPv6RoutingEnabled -- Expected %v, Got %v\n", 
ds1.IPV6RoutingEnabled, ds2.IPV6RoutingEnabled)
+       }
+       if ds1.InfoURL != ds2.InfoURL {
+               t.Errorf("InfoURL -- Expected %v, Got %v\n", ds1.InfoURL, 
ds2.InfoURL)
+       }
+       if ds1.InitialDispersion != ds2.InitialDispersion {
+               t.Errorf("InitialDispersion -- Expected %v, Got %v\n", 
ds1.InitialDispersion, ds2.InitialDispersion)
+       }
+       if ds1.LastUpdated != ds2.LastUpdated {
+               t.Errorf("LastUpdated -- Expected %v, Got %v\n", 
ds1.LastUpdated, ds2.LastUpdated)
+       }
+       if ds1.LongDesc != ds2.LongDesc {
+               t.Errorf("LongDesc -- Expected %v, Got %v\n", ds1.LongDesc, 
ds2.LongDesc)
+       }
+       if ds1.LongDesc1 != ds2.LongDesc1 {
+               t.Errorf("LongDesc1 -- Expected %v, Got %v\n", ds1.LongDesc1, 
ds2.LongDesc1)
+       }
+       if ds1.LongDesc2 != ds2.LongDesc2 {
+               t.Errorf("LongDesc2 -- Expected %v, Got %v\n", ds1.LongDesc2, 
ds2.LongDesc2)
+       }
+       if ds1.MaxDNSAnswers != ds2.MaxDNSAnswers {
+               t.Errorf("MaxDNSAnswers-- Expected %v, Got %v\n", 
ds1.MaxDNSAnswers, ds2.MaxDNSAnswers)
+       }
+       if ds1.MidHeaderRewrite != ds2.MidHeaderRewrite {
+               t.Errorf("MidHeaderRewrite -- Expected %v, Got %v\n", 
ds1.MidHeaderRewrite, ds2.MidHeaderRewrite)
+       }
+       if ds1.MissLat != ds2.MissLat {
+               t.Errorf("MissLat -- Expected %v, Got %v\n", ds1.MissLat, 
ds2.MissLat)
+       }
+       if ds1.MissLong != ds2.MissLong {
+               t.Errorf("MissLong -- Expected %v, Got %v\n", ds1.MissLong, 
ds2.MissLong)
+       }
+       if ds1.MultiSiteOrigin != ds2.MultiSiteOrigin {
+               t.Errorf("MutiSiteOrigin -- Expected %v, Got %v\n", 
ds1.MultiSiteOrigin, ds2.MultiSiteOrigin)
+       }
+       if ds1.OrgServerFQDN != ds2.OrgServerFQDN {
+               t.Errorf("OrgServerFQDN -- Expected %v, Got %v\n", 
ds1.OrgServerFQDN, ds2.OrgServerFQDN)
+       }
+       if ds1.ProfileDesc != ds2.ProfileDesc {
+               t.Errorf("ProfileDesc -- Expected %v, Got %v\n", 
ds1.ProfileDesc, ds2.ProfileDesc)
+       }
+       if ds1.ProfileName != ds2.ProfileName {
+               t.Errorf("ProfileName -- Expected %v, Got %v\n", 
ds1.ProfileName, ds2.ProfileName)
+       }
+       if ds1.Protocol != ds2.Protocol {
+               t.Errorf("Protocol -- Expected %v, Got %v\n", ds1.Protocol, 
ds2.Protocol)
+       }
+       if ds1.QStringIgnore != ds2.QStringIgnore {
+               t.Errorf("QStringIgnore -- Expected %v, Got %v\n", 
ds1.QStringIgnore, ds2.QStringIgnore)
+       }
+       if ds1.RangeRequestHandling != ds2.RangeRequestHandling {
+               t.Errorf("RangeRequestHandling -- Expected %v, Got %v\n", 
ds1.RangeRequestHandling, ds2.RangeRequestHandling)
+       }
+       if ds1.RegexRemap != ds2.RegexRemap {
+               t.Errorf("RegexRemap -- Expected %v, Got %v\n", ds1.RegexRemap, 
ds2.RegexRemap)
+       }
+       if ds1.RemapText != ds2.RemapText {
+               t.Errorf("RemapText -- Expected %v, Got %v\n", ds1.RemapText, 
ds2.RemapText)
+       }
+       if ds1.Signed != ds2.Signed {
+               t.Errorf("Signed -- Expected %v, Got %v\n", ds1.Signed, 
ds2.Signed)
+       }
+       if ds1.TRResponseHeaders != ds2.TRResponseHeaders {
+               t.Errorf("TRResponseHeaders -- Expected %v, Got %v\n", 
ds1.TRResponseHeaders, ds2.TRResponseHeaders)
+       }
+       if ds1.Type != ds2.Type {
+               t.Errorf("Type -- Expected %v, Got %v\n", ds1.Type, ds2.Type)
+       }
+       if ds1.RegionalGeoBlocking != ds2.RegionalGeoBlocking {
+               t.Errorf("RegionalGeoBlocking -- Expected %v, Got %v\n", 
ds1.RegionalGeoBlocking, ds2.RegionalGeoBlocking)
+       }
+       if ds1.LogsEnabled != ds2.LogsEnabled {
+               t.Errorf("LogsEnabled -- Expected %v, Got %v\n", 
ds1.LogsEnabled, ds2.LogsEnabled)
+       }
+       if len(ds1.MatchList) > 0 {
+               for i, match := range ds1.MatchList {
+                       if match != ds2.MatchList[i] {
+                               t.Errorf("Matchlist -- Expected %v, Got %v\n", 
match, ds2.MatchList[i])
+                       }
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/3fa2b81e/traffic_ops/client/tests/integration/integration_helper.go
----------------------------------------------------------------------
diff --git a/traffic_ops/client/tests/integration/integration_helper.go 
b/traffic_ops/client/tests/integration/integration_helper.go
new file mode 100644
index 0000000..73f6370
--- /dev/null
+++ b/traffic_ops/client/tests/integration/integration_helper.go
@@ -0,0 +1,89 @@
+package integration
+
+import (
+       "bytes"
+       "flag"
+       "fmt"
+       "net/http"
+       "os"
+
+       traffic_ops 
"github.com/apache/incubator-trafficcontrol/traffic_ops/client"
+)
+
+var (
+       to *traffic_ops.Session
+)
+
+func init() {
+       toURL := flag.String("toURL", "http://localhost:3000";, "Traffic Ops 
URL")
+       toUser := flag.String("toUser", "admin", "Traffic Ops user")
+       toPass := flag.String("toPass", "password", "Traffic Ops password")
+       flag.Parse()
+       var loginErr error
+       to, loginErr = traffic_ops.Login(*toURL, *toUser, *toPass, true)
+       if loginErr != nil {
+               fmt.Printf("\nError logging in to %v: %v\nMake sure toURL, 
toUser, and toPass flags are included and correct.\nExample:  go test 
-toUser=admin -toPass=pass -toURL=http://localhost:3000\n\n";, *toURL, loginErr)
+               os.Exit(1)
+       }
+}
+
+//GetCdn returns a Cdn struct
+func GetCdn() (traffic_ops.CDN, error) {
+       cdns, err := to.CDNs()
+       if err != nil {
+               return *new(traffic_ops.CDN), err
+       }
+       cdn := cdns[0]
+       if cdn.Name == "ALL" {
+               cdn = cdns[1]
+       }
+       return cdn, nil
+}
+
+//GetProfile returns a Profile Struct
+func GetProfile() (traffic_ops.Profile, error) {
+       profiles, err := to.Profiles()
+       if err != nil {
+               return *new(traffic_ops.Profile), err
+       }
+       return profiles[0], nil
+}
+
+//Request sends a request to TO and returns a response.
+//This is basically a copy of the private "request" method in the 
traffic_ops.go \
+//but I didn't want to make that one public.
+func Request(to traffic_ops.Session, method, path string, body []byte) 
(*http.Response, error) {
+       url := fmt.Sprintf("%s%s", to.URL, path)
+
+       var req *http.Request
+       var err error
+
+       if body != nil && method != "GET" {
+               req, err = http.NewRequest(method, url, bytes.NewBuffer(body))
+               if err != nil {
+                       return nil, err
+               }
+               req.Header.Set("Content-Type", "application/json")
+       } else {
+               req, err = http.NewRequest("GET", url, nil)
+               if err != nil {
+                       return nil, err
+               }
+       }
+
+       resp, err := to.UserAgent.Do(req)
+       if err != nil {
+               return nil, err
+       }
+
+       if resp.StatusCode != http.StatusOK {
+               e := traffic_ops.HTTPError{
+                       HTTPStatus:     resp.Status,
+                       HTTPStatusCode: resp.StatusCode,
+                       URL:            url,
+               }
+               return nil, &e
+       }
+
+       return resp, nil
+}

Reply via email to