added stats summary test
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/77e27cb5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/77e27cb5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/77e27cb5 Branch: refs/heads/psql-rebase Commit: 77e27cb513a1d8d3d0a90ef95abc2e10495d39a7 Parents: 960b21d Author: David Neuman <david.neuma...@gmail.com> Authored: Mon Dec 5 13:24:00 2016 -0700 Committer: Dave Neuman <neu...@apache.org> Committed: Wed Dec 7 10:32:24 2016 -0700 ---------------------------------------------------------------------- .../tests/integration/stats_summary_test.go | 226 +++++++++++++++++++ 1 file changed, 226 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/77e27cb5/traffic_ops/client/tests/integration/stats_summary_test.go ---------------------------------------------------------------------- diff --git a/traffic_ops/client/tests/integration/stats_summary_test.go b/traffic_ops/client/tests/integration/stats_summary_test.go new file mode 100644 index 0000000..b419e49 --- /dev/null +++ b/traffic_ops/client/tests/integration/stats_summary_test.go @@ -0,0 +1,226 @@ +package integration + +import ( + "encoding/json" + "fmt" + "testing" + "time" + + traffic_ops "github.com/apache/incubator-trafficcontrol/traffic_ops/client" +) + +func TestStatsSummaryAll(t *testing.T) { + + uri := fmt.Sprintf("/api/1.2/stats_summary.json") + 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 apiStatsSummaryRes traffic_ops.StatsSummaryResponse + if err := json.NewDecoder(resp.Body).Decode(&apiStatsSummaryRes); err != nil { + t.Errorf("Could not decode stats summary json. Error is: %v\n", err) + t.FailNow() + } + apiStatsSummary := apiStatsSummaryRes.Response + + clientStatsSummary, err := to.SummaryStats("", "", "") + if err != nil { + t.Errorf("Could not get stats summary from client. Error is: %v\n", err) + t.FailNow() + } + + if len(apiStatsSummary) != len(clientStatsSummary) { + t.Errorf("Stats Summary Response Length -- expected %v, got %v\n", len(apiStatsSummary), len(clientStatsSummary)) + } + + for _, apiSs := range apiStatsSummary { + match := false + for _, clientSs := range clientStatsSummary { + if apiSs == clientSs { + match = true + } + } + if !match { + t.Errorf("Did not get a stats summary matching %+v\n", apiSs) + } + } +} + +func TestStatsSummarybyCDN(t *testing.T) { + cdn, err := GetCdn() + if err != nil { + t.Error("Could not get a CDN, response was %v\n", err) + t.FailNow() + } + uri := fmt.Sprintf("/api/1.2/stats_summary.json?cdnName=%s", 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 apiStatsSummaryRes traffic_ops.StatsSummaryResponse + if err := json.NewDecoder(resp.Body).Decode(&apiStatsSummaryRes); err != nil { + t.Errorf("Could not decode stats summary json. Error is: %v\n", err) + t.FailNow() + } + apiStatsSummary := apiStatsSummaryRes.Response + + clientStatsSummary, err := to.SummaryStats(cdn.Name, "", "") + if err != nil { + t.Errorf("Could not get stats summary from client. Error is: %v\n", err) + t.FailNow() + } + + if len(apiStatsSummary) != len(clientStatsSummary) { + t.Errorf("Stats Summary Response Length -- expected %v, got %v\n", len(apiStatsSummary), len(clientStatsSummary)) + } + + for _, apiSs := range apiStatsSummary { + match := false + for _, clientSs := range clientStatsSummary { + if apiSs == clientSs { + match = true + } + } + if !match { + t.Errorf("Did not get a stats summary matching %+v\n", apiSs) + } + } +} + +func TestStatsSummaryByDs(t *testing.T) { + ds, err := GetDeliveryService("") + if err != nil { + t.Error("Could not get a DS, response was %v\n", err) + t.FailNow() + } + uri := fmt.Sprintf("/api/1.2/stats_summary.json?deliveryServiceName=%s", ds.XMLID) + 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 apiStatsSummaryRes traffic_ops.StatsSummaryResponse + if err := json.NewDecoder(resp.Body).Decode(&apiStatsSummaryRes); err != nil { + t.Errorf("Could not decode stats summary json. Error is: %v\n", err) + t.FailNow() + } + apiStatsSummary := apiStatsSummaryRes.Response + + clientStatsSummary, err := to.SummaryStats("", ds.XMLID, "") + if err != nil { + t.Errorf("Could not get stats summary from client. Error is: %v\n", err) + t.FailNow() + } + + if len(apiStatsSummary) != len(clientStatsSummary) { + t.Errorf("Stats Summary Response Length -- expected %v, got %v\n", len(apiStatsSummary), len(clientStatsSummary)) + } + + for _, apiSs := range apiStatsSummary { + match := false + for _, clientSs := range clientStatsSummary { + if apiSs == clientSs { + match = true + } + } + if !match { + t.Errorf("Did not get a stats summary matching %+v\n", apiSs) + } + } +} + +func TestStatsSummaryByStatName(t *testing.T) { + uri := fmt.Sprintf("/api/1.2/stats_summary.json?statName=daily_bytesserved") + 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 apiStatsSummaryRes traffic_ops.StatsSummaryResponse + if err := json.NewDecoder(resp.Body).Decode(&apiStatsSummaryRes); err != nil { + t.Errorf("Could not decode stats summary json. Error is: %v\n", err) + t.FailNow() + } + apiStatsSummary := apiStatsSummaryRes.Response + + clientStatsSummary, err := to.SummaryStats("", "", "daily_bytesserved") + if err != nil { + t.Errorf("Could not get stats summary from client. Error is: %v\n", err) + t.FailNow() + } + + if len(apiStatsSummary) != len(clientStatsSummary) { + t.Errorf("Stats Summary Response Length -- expected %v, got %v\n", len(apiStatsSummary), len(clientStatsSummary)) + } + + for _, apiSs := range apiStatsSummary { + match := false + for _, clientSs := range clientStatsSummary { + if apiSs == clientSs { + match = true + } + } + if !match { + t.Errorf("Did not get a stats summary matching %+v\n", apiSs) + } + } +} + +func TestAddSummaryStats(t *testing.T) { + cdn, err := GetCdn() + if err != nil { + t.Errorf("Could not get a CDN, response was %v\n", err) + t.FailNow() + } + ds, err := GetDeliveryService(cdn.Name) + if err != nil { + t.Errorf("Could not get a DS, response was %v\n", err) + t.FailNow() + } + now := time.Now() + summaryTime := now.Format(time.RFC3339) + statDate := now.Format("2006-01-02") + + testStatsSummay := new(traffic_ops.StatsSummary) + testStatsSummay.CDNName = cdn.Name + testStatsSummay.DeliveryService = ds.XMLID + testStatsSummay.StatDate = statDate + testStatsSummay.StatName = "testStatName" + testStatsSummay.StatValue = "1234" + testStatsSummay.SummaryTime = summaryTime + + err = to.AddSummaryStats(*testStatsSummay) + if err != nil { + t.Errorf("Could not add Summary Stats, response was %v\n", err) + t.FailNow() + } + + ssRes, err := to.SummaryStats(testStatsSummay.CDNName, testStatsSummay.DeliveryService, testStatsSummay.StatName) + if err != nil { + t.Errorf("Could not get a SummaryStats, error was: %v\n", err) + t.FailNow() + } + match := false + for _, ss := range ssRes { + if ss.CDNName == testStatsSummay.CDNName && + ss.DeliveryService == testStatsSummay.DeliveryService && + ss.StatDate == testStatsSummay.StatDate && + ss.StatName == testStatsSummay.StatName && + ss.StatValue == testStatsSummay.StatValue { + match = true + } + } + if !match { + t.Errorf("Stats Summary not found in Traffic Ops after Adding. Summary Stats Response was: %+v, expecting: %+v\n", ssRes, *testStatsSummay) + } +}