You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by ne...@apache.org on 2016/12/08 18:46:20 UTC

[18/20] incubator-trafficcontrol git commit: Add TM2 cache.TestResultHistoryCopy

Add TM2 cache.TestResultHistoryCopy


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

Branch: refs/heads/master
Commit: afa1a4cd39fceee983e40e4b1f54ad9958c4d739
Parents: d08c9ba
Author: Robert Butts <ro...@gmail.com>
Authored: Wed Dec 7 16:12:44 2016 -0700
Committer: Dave Neuman <ne...@apache.org>
Committed: Thu Dec 8 11:44:33 2016 -0700

----------------------------------------------------------------------
 .../traffic_monitor/cache/data_test.go          | 191 ++++++++++++++++++-
 1 file changed, 189 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/afa1a4cd/traffic_monitor/experimental/traffic_monitor/cache/data_test.go
----------------------------------------------------------------------
diff --git a/traffic_monitor/experimental/traffic_monitor/cache/data_test.go b/traffic_monitor/experimental/traffic_monitor/cache/data_test.go
index 3788e7c..27d8171 100644
--- a/traffic_monitor/experimental/traffic_monitor/cache/data_test.go
+++ b/traffic_monitor/experimental/traffic_monitor/cache/data_test.go
@@ -1,11 +1,14 @@
 package cache
 
 import (
+	"errors"
+	"fmt"
+	dsdata "github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/traffic_monitor/deliveryservicedata"
+	"github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/traffic_monitor/enum"
 	"math/rand"
 	"reflect"
 	"testing"
-
-	"github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/traffic_monitor/enum"
+	"time"
 )
 
 func randBool() bool {
@@ -48,3 +51,187 @@ func TestAvailableStatusesCopy(t *testing.T) {
 		}
 	}
 }
+
+func randStrIfaceMap() map[string]interface{} {
+	m := map[string]interface{}{}
+	num := 5
+	for i := 0; i < num; i++ {
+		m[randStr()] = randStr()
+	}
+	return m
+}
+
+func randAstats() Astats {
+	return Astats{
+		Ats:    randStrIfaceMap(),
+		System: randAstatsSystem(),
+	}
+}
+
+func randAstatsSystem() AstatsSystem {
+	return AstatsSystem{
+		InfName:           randStr(),
+		InfSpeed:          rand.Int(),
+		ProcNetDev:        randStr(),
+		ProcLoadavg:       randStr(),
+		ConfigLoadRequest: rand.Int(),
+		LastReloadRequest: rand.Int(),
+		ConfigReloads:     rand.Int(),
+		LastReload:        rand.Int(),
+		AstatsLoad:        rand.Int(),
+	}
+}
+
+func randVitals() Vitals {
+	return Vitals{
+		LoadAvg:    rand.Float64(),
+		BytesOut:   rand.Int63(),
+		BytesIn:    rand.Int63(),
+		KbpsOut:    rand.Int63(),
+		MaxKbpsOut: rand.Int63(),
+	}
+}
+
+func randStatMeta() dsdata.StatMeta {
+	return dsdata.StatMeta{Time: rand.Int63()}
+}
+
+func randStatCacheStats() dsdata.StatCacheStats {
+	return dsdata.StatCacheStats{
+		OutBytes:    dsdata.StatInt{Value: rand.Int63(), StatMeta: randStatMeta()},
+		IsAvailable: dsdata.StatBool{Value: randBool(), StatMeta: randStatMeta()},
+		Status5xx:   dsdata.StatInt{Value: rand.Int63(), StatMeta: randStatMeta()},
+		Status4xx:   dsdata.StatInt{Value: rand.Int63(), StatMeta: randStatMeta()},
+		Status3xx:   dsdata.StatInt{Value: rand.Int63(), StatMeta: randStatMeta()},
+		Status2xx:   dsdata.StatInt{Value: rand.Int63(), StatMeta: randStatMeta()},
+		InBytes:     dsdata.StatFloat{Value: rand.Float64(), StatMeta: randStatMeta()},
+		Kbps:        dsdata.StatFloat{Value: rand.Float64(), StatMeta: randStatMeta()},
+		Tps5xx:      dsdata.StatFloat{Value: rand.Float64(), StatMeta: randStatMeta()},
+		Tps4xx:      dsdata.StatFloat{Value: rand.Float64(), StatMeta: randStatMeta()},
+		Tps3xx:      dsdata.StatFloat{Value: rand.Float64(), StatMeta: randStatMeta()},
+		Tps2xx:      dsdata.StatFloat{Value: rand.Float64(), StatMeta: randStatMeta()},
+		ErrorString: dsdata.StatString{Value: randStr(), StatMeta: randStatMeta()},
+		TpsTotal:    dsdata.StatInt{Value: rand.Int63(), StatMeta: randStatMeta()},
+	}
+}
+
+func randStatCommon() dsdata.StatCommon {
+	cachesReporting := map[enum.CacheName]bool{}
+	num := 5
+	for i := 0; i < num; i++ {
+		cachesReporting[enum.CacheName(randStr())] = randBool()
+	}
+	return dsdata.StatCommon{
+		CachesConfiguredNum: dsdata.StatInt{Value: rand.Int63(), StatMeta: randStatMeta()},
+		CachesReporting:     cachesReporting,
+		ErrorStr:            dsdata.StatString{Value: randStr(), StatMeta: randStatMeta()},
+		StatusStr:           dsdata.StatString{Value: randStr(), StatMeta: randStatMeta()},
+		IsHealthy:           dsdata.StatBool{Value: randBool(), StatMeta: randStatMeta()},
+		IsAvailable:         dsdata.StatBool{Value: randBool(), StatMeta: randStatMeta()},
+		CachesAvailableNum:  dsdata.StatInt{Value: rand.Int63(), StatMeta: randStatMeta()},
+	}
+}
+
+func randDsStat() dsdata.Stat {
+	num := 5
+	cacheGroups := map[enum.CacheGroupName]dsdata.StatCacheStats{}
+	types := map[enum.CacheType]dsdata.StatCacheStats{}
+	caches := map[enum.CacheName]dsdata.StatCacheStats{}
+	cachesTime := map[enum.CacheName]time.Time{}
+	for i := 0; i < num; i++ {
+		cacheGroups[enum.CacheGroupName(randStr())] = randStatCacheStats()
+		types[enum.CacheType(randStr())] = randStatCacheStats()
+		cachesTime[enum.CacheName(randStr())] = time.Now()
+	}
+
+	return dsdata.Stat{
+		CommonStats:        randStatCommon(),
+		CacheGroups:        cacheGroups,
+		Types:              types,
+		Caches:             caches,
+		CachesTimeReceived: cachesTime,
+		TotalStats:         randStatCacheStats(),
+	}
+}
+
+func randDsStats() map[enum.DeliveryServiceName]dsdata.Stat {
+	num := 5
+	a := map[enum.DeliveryServiceName]dsdata.Stat{}
+	for i := 0; i < num; i++ {
+		a[enum.DeliveryServiceName(randStr())] = randDsStat()
+	}
+	return a
+}
+func randErrs() []error {
+	if randBool() {
+		return []error{}
+	}
+	num := 5
+	errs := []error{}
+	for i := 0; i < num; i++ {
+		errs = append(errs, errors.New(randStr()))
+	}
+	return errs
+}
+
+func randPrecomputedData() PrecomputedData {
+	return PrecomputedData{
+		DeliveryServiceStats: randDsStats(),
+		OutBytes:             rand.Int63(),
+		MaxKbps:              rand.Int63(),
+		Errors:               randErrs(),
+		Reporting:            randBool(),
+	}
+}
+
+func randResult() Result {
+	return Result{
+		ID:              enum.CacheName(randStr()),
+		Error:           fmt.Errorf(randStr()),
+		Astats:          randAstats(),
+		Time:            time.Now(),
+		RequestTime:     time.Millisecond * time.Duration(rand.Int()),
+		Vitals:          randVitals(),
+		PollID:          uint64(rand.Int63()),
+		PollFinished:    make(chan uint64),
+		PrecomputedData: randPrecomputedData(),
+		Available:       randBool(),
+	}
+
+}
+
+func randResultSlice() []Result {
+	a := []Result{}
+	num := 5
+	for i := 0; i < num; i++ {
+		a = append(a, randResult())
+	}
+	return a
+}
+
+func randResultHistory() ResultHistory {
+	a := ResultHistory{}
+	num := 5
+	for i := 0; i < num; i++ {
+		a[enum.CacheName(randStr())] = randResultSlice()
+	}
+	return a
+}
+
+func TestResultHistoryCopy(t *testing.T) {
+	num := 5
+	for i := 0; i < num; i++ {
+		a := randResultHistory()
+		b := a.Copy()
+
+		if !reflect.DeepEqual(a, b) {
+			t.Errorf("expected a and b DeepEqual, actual copied map not equal", a, b)
+		}
+
+		// verify a and b don't point to the same map
+		a[enum.CacheName(randStr())] = randResultSlice()
+		if reflect.DeepEqual(a, b) {
+			t.Errorf("expected a != b, actual a and b point to the same map", a)
+		}
+	}
+}