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