Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: common/tsmon/types/metricdataunits.go

Issue 2123853002: Added unit annotation supports onto tsmon in go. (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-go@master
Patch Set: Specify the unit of logdog/collector/subscription/processing_time_ms with types.Milliseconds Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « common/tsmon/types/metric.go ('k') | server/cmd/logdog_archivist/main.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: common/tsmon/types/metricdataunits.go
diff --git a/common/tsmon/types/metricdataunits.go b/common/tsmon/types/metricdataunits.go
new file mode 100644
index 0000000000000000000000000000000000000000..e3e02100aed991bc5a004b83c3d905ab71343c6a
--- /dev/null
+++ b/common/tsmon/types/metricdataunits.go
@@ -0,0 +1,89 @@
+// Copyright 2016 The LUCI Authors. All rights reserved.
+// Use of this source code is governed under the Apache License, Version 2.0
+// that can be found in the LICENSE file.
+
+package types
+
+import (
+ "fmt"
+
+ pb "github.com/luci/luci-go/common/tsmon/ts_mon_proto"
+)
+
+// MetricDataUnits are enums for the units of metrics data.
+type MetricDataUnits int32
+
+// Units of metrics data.
+const (
+ // NotSpecified is a magic value to skip Units property
+ // in a MetricsData proto message.
+ // Note that this should be defined with 0 so that all the existing
+ // codes without units specified would be given NotSpecified
+ // for the Units property automatically.
+ NotSpecified MetricDataUnits = iota
+ Unknown
+ Seconds
+ Milliseconds
+ Microseconds
+ Nanoseconds
+ Bits
+ Bytes
+
+ Kilobytes // 1000 bytes (not 1024).
+ Megabytes // 1e6 (1,000,000) bytes.
+ Gigabytes // 1e9 (1,000,000,000) bytes.
+ Kibibytes // 1024 bytes.
+ Mebibytes // 1024^2 (1,048,576) bytes.
+ Gibibytes // 1024^3 (1,073,741,824) bytes.
+
+ // * Extended Units
+ AmpUnit
+ MilliampUnit
+ DegreeCelsiusUnit
+)
+
+// IsSpecified returns true if a unit annotation has been specified
+// for a given metric.
+func (units MetricDataUnits) IsSpecified() bool {
+ return units != NotSpecified
+}
+
+// AsProto returns the protobuf representation of a given MetricDataUnits
+// object.
+func (units MetricDataUnits) AsProto() *pb.MetricsData_Units {
+ switch units {
+ case Unknown:
+ return pb.MetricsData_UNKNOWN_UNITS.Enum()
+ case Seconds:
+ return pb.MetricsData_SECONDS.Enum()
+ case Milliseconds:
+ return pb.MetricsData_MILLISECONDS.Enum()
+ case Microseconds:
+ return pb.MetricsData_MICROSECONDS.Enum()
+ case Nanoseconds:
+ return pb.MetricsData_NANOSECONDS.Enum()
+ case Bits:
+ return pb.MetricsData_BITS.Enum()
+ case Bytes:
+ return pb.MetricsData_BYTES.Enum()
+ case Kilobytes:
+ return pb.MetricsData_KILOBYTES.Enum()
+ case Megabytes:
+ return pb.MetricsData_MEGABYTES.Enum()
+ case Gigabytes:
+ return pb.MetricsData_GIGABYTES.Enum()
+ case Kibibytes:
+ return pb.MetricsData_KIBIBYTES.Enum()
+ case Mebibytes:
+ return pb.MetricsData_MEBIBYTES.Enum()
+ case Gibibytes:
+ return pb.MetricsData_GIBIBYTES.Enum()
+ case AmpUnit:
+ return pb.MetricsData_AMPS.Enum()
+ case MilliampUnit:
+ return pb.MetricsData_MILLIAMPS.Enum()
+ case DegreeCelsiusUnit:
+ return pb.MetricsData_DEGREES_CELSIUS.Enum()
+ }
+ panic(fmt.Sprintf("unknown MetricDataUnits %d", units))
+}
« no previous file with comments | « common/tsmon/types/metric.go ('k') | server/cmd/logdog_archivist/main.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698