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 2017/01/25 17:30:28 UTC

[17/20] incubator-trafficcontrol git commit: Move TM2 ToNumeric() to util package

Move TM2 ToNumeric() to util package


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

Branch: refs/heads/master
Commit: f9115dcc1a3bd98000f8f94ade51aaefdcd3ed50
Parents: dea90b1
Author: Robert Butts <ro...@gmail.com>
Authored: Tue Jan 24 14:07:57 2017 -0700
Committer: Dave Neuman <ne...@apache.org>
Committed: Wed Jan 25 10:29:46 2017 -0700

----------------------------------------------------------------------
 traffic_monitor/experimental/common/util/num.go | 35 ++++++++++++++++++++
 .../experimental/traffic_monitor/enum/enum.go   | 35 --------------------
 .../traffic_monitor/health/cache.go             |  3 +-
 .../traffic_monitor/manager/datarequest.go      |  7 ++--
 4 files changed, 41 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/f9115dcc/traffic_monitor/experimental/common/util/num.go
----------------------------------------------------------------------
diff --git a/traffic_monitor/experimental/common/util/num.go b/traffic_monitor/experimental/common/util/num.go
new file mode 100644
index 0000000..4db2cf9
--- /dev/null
+++ b/traffic_monitor/experimental/common/util/num.go
@@ -0,0 +1,35 @@
+package util
+
+// ToNumeric returns a float for any numeric type, and false if the interface does not hold a numeric type.
+// This allows converting unknown numeric types (for example, from JSON) in a single line
+// TODO try to parse string stats as numbers?
+func ToNumeric(v interface{}) (float64, bool) {
+	switch i := v.(type) {
+	case uint8:
+		return float64(i), true
+	case uint16:
+		return float64(i), true
+	case uint32:
+		return float64(i), true
+	case uint64:
+		return float64(i), true
+	case int8:
+		return float64(i), true
+	case int16:
+		return float64(i), true
+	case int32:
+		return float64(i), true
+	case int64:
+		return float64(i), true
+	case float32:
+		return float64(i), true
+	case float64:
+		return i, true
+	case int:
+		return float64(i), true
+	case uint:
+		return float64(i), true
+	default:
+		return 0.0, false
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/f9115dcc/traffic_monitor/experimental/traffic_monitor/enum/enum.go
----------------------------------------------------------------------
diff --git a/traffic_monitor/experimental/traffic_monitor/enum/enum.go b/traffic_monitor/experimental/traffic_monitor/enum/enum.go
index 0e43016..853236a 100644
--- a/traffic_monitor/experimental/traffic_monitor/enum/enum.go
+++ b/traffic_monitor/experimental/traffic_monitor/enum/enum.go
@@ -175,38 +175,3 @@ func CacheStatusFromString(s string) CacheStatus {
 		return CacheStatusInvalid
 	}
 }
-
-// toNumeric returns a float for any numeric type, and false if the interface does not hold a numeric type.
-// This allows converting unknown numeric types (for example, from JSON) in a single line
-// TODO move to 'util' or 'tools' package?
-// TODO try to parse string stats as numbers?
-func ToNumeric(v interface{}) (float64, bool) {
-	switch i := v.(type) {
-	case uint8:
-		return float64(i), true
-	case uint16:
-		return float64(i), true
-	case uint32:
-		return float64(i), true
-	case uint64:
-		return float64(i), true
-	case int8:
-		return float64(i), true
-	case int16:
-		return float64(i), true
-	case int32:
-		return float64(i), true
-	case int64:
-		return float64(i), true
-	case float32:
-		return float64(i), true
-	case float64:
-		return i, true
-	case int:
-		return float64(i), true
-	case uint:
-		return float64(i), true
-	default:
-		return 0.0, false
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/f9115dcc/traffic_monitor/experimental/traffic_monitor/health/cache.go
----------------------------------------------------------------------
diff --git a/traffic_monitor/experimental/traffic_monitor/health/cache.go b/traffic_monitor/experimental/traffic_monitor/health/cache.go
index 533652a..fd3fcec 100644
--- a/traffic_monitor/experimental/traffic_monitor/health/cache.go
+++ b/traffic_monitor/experimental/traffic_monitor/health/cache.go
@@ -26,6 +26,7 @@ import (
 	"time"
 
 	"github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/common/log"
+	"github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/common/util"
 	"github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/traffic_monitor/cache"
 	"github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/traffic_monitor/enum"
 	"github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/traffic_monitor/peer"
@@ -153,7 +154,7 @@ func EvalCache(result cache.ResultInfo, resultStats cache.ResultStatValHistory,
 			resultStat = resultStatHistory[0].Val
 		}
 
-		resultStatNum, ok := enum.ToNumeric(resultStat)
+		resultStatNum, ok := util.ToNumeric(resultStat)
 		if !ok {
 			log.Errorf("health.EvalCache threshold stat %s was not a number: %v", stat, resultStat)
 			continue

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/f9115dcc/traffic_monitor/experimental/traffic_monitor/manager/datarequest.go
----------------------------------------------------------------------
diff --git a/traffic_monitor/experimental/traffic_monitor/manager/datarequest.go b/traffic_monitor/experimental/traffic_monitor/manager/datarequest.go
index eddf972..7712154 100644
--- a/traffic_monitor/experimental/traffic_monitor/manager/datarequest.go
+++ b/traffic_monitor/experimental/traffic_monitor/manager/datarequest.go
@@ -31,6 +31,7 @@ import (
 	"time"
 
 	"github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/common/log"
+	"github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/common/util"
 	"github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/traffic_monitor/cache"
 	ds "github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/traffic_monitor/deliveryservice"
 	dsdata "github.com/apache/incubator-trafficcontrol/traffic_monitor/experimental/traffic_monitor/deliveryservicedata"
@@ -1175,8 +1176,8 @@ func createStatSummary(statResultHistory cache.ResultStatHistory, filter cache.F
 			msPerNs := int64(1000000)
 			ssStat.StartTime = statHistory[len(statHistory)-1].Time.UnixNano() / msPerNs
 			ssStat.EndTime = statHistory[0].Time.UnixNano() / msPerNs
-			oldestVal, isOldestValNumeric := enum.ToNumeric(statHistory[len(statHistory)-1].Val)
-			newestVal, isNewestValNumeric := enum.ToNumeric(statHistory[0].Val)
+			oldestVal, isOldestValNumeric := util.ToNumeric(statHistory[len(statHistory)-1].Val)
+			newestVal, isNewestValNumeric := util.ToNumeric(statHistory[0].Val)
 			if !isOldestValNumeric || !isNewestValNumeric {
 				continue // skip non-numeric stats
 			}
@@ -1185,7 +1186,7 @@ func createStatSummary(statResultHistory cache.ResultStatHistory, filter cache.F
 			ssStat.High = newestVal
 			ssStat.Low = newestVal
 			for _, val := range statHistory {
-				fVal, ok := enum.ToNumeric(val.Val)
+				fVal, ok := util.ToNumeric(val.Val)
 				if !ok {
 					log.Warnf("threshold stat %v value %v is not a number, cannot use.", statName, val.Val)
 					continue