Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

add 'Must' style methods for different components #11

Merged
merged 6 commits into from Jul 18, 2016
View
@@ -63,35 +63,17 @@ func main() {
panic(err)
}
- err = writer.RegisterIndom(indom)
- if err != nil {
- panic(err)
- }
-
- err = writer.Register(countmetric)
- if err != nil {
- panic(err)
- }
-
- err = writer.Register(timemetric)
- if err != nil {
- panic(err)
- }
+ writer.MustRegisterIndom(indom)
+ writer.MustRegister(countmetric)
+ writer.MustRegister(timemetric)
- err = writer.Start()
- if err != nil {
- panic(err)
- }
+ writer.MustStart()
+ defer writer.MustStop()
time.Sleep(time.Second * 5)
err = countmetric.SetInstance("Anvils", 42)
if err != nil {
panic(err)
}
time.Sleep(time.Second * 5)
-
- err = writer.Stop()
- if err != nil {
- panic(err)
- }
}
@@ -8,10 +8,11 @@ import (
"github.com/performancecopilot/speed"
)
-var metric *speed.PCPSingletonMetric
+// TODO: replace the raw metric with a Counter once defined
-func main() {
+var metric speed.SingletonMetric
+func main() {
var err error
metric, err = speed.NewPCPSingletonMetric(
0,
@@ -31,16 +32,10 @@ func main() {
panic(err)
}
- err = writer.Register(metric)
- if err != nil {
- panic(err)
- }
+ writer.MustRegister(metric)
- err = writer.Start()
- if err != nil {
- panic(err)
- }
- defer writer.Stop()
+ writer.MustStart()
+ defer writer.MustStop()
http.HandleFunc("/increment", handleIncrement)
go http.ListenAndServe(":8080", nil)
@@ -53,6 +48,6 @@ func main() {
func handleIncrement(w http.ResponseWriter, r *http.Request) {
v := metric.Val().(int32)
v++
- metric.Set(v)
+ metric.MustSet(v)
fmt.Fprintf(w, "incremented\n")
}
@@ -26,27 +26,20 @@ func main() {
panic(err)
}
- err = w.Start()
- if err != nil {
- panic(err)
- }
+ w.MustStart()
+ defer w.MustStop()
metric := m.(speed.InstanceMetric)
for i := 0; i < *timelimit; i++ {
v, _ := metric.ValInstance("go")
- metric.SetInstance("go", v.(uint64)*2)
+ metric.MustSetInstance("go", v.(uint64)*2)
v, _ = metric.ValInstance("javascript")
- metric.SetInstance("javascript", v.(uint64)+10)
+ metric.MustSetInstance("javascript", v.(uint64)+10)
v, _ = metric.ValInstance("php")
- metric.SetInstance("php", v.(uint64)+1)
+ metric.MustSetInstance("php", v.(uint64)+1)
time.Sleep(time.Second)
}
-
- err = w.Stop()
- if err != nil {
- panic(err)
- }
}
View
@@ -26,18 +26,11 @@ func main() {
panic(err)
}
- err = writer.Register(metric)
- if err != nil {
- panic(err)
- }
+ writer.MustRegister(metric)
- err = writer.Start()
- if err != nil {
- panic(err)
- }
+ writer.MustStart()
+ defer writer.MustStop()
fmt.Println("The metric is currently mapped as mmv.simple.simple.counter, to stop the mapping, press enter")
os.Stdin.Read(make([]byte, 1))
-
- writer.Stop()
}
@@ -38,18 +38,14 @@ func main() {
panic(err)
}
- err = writer.Start()
- if err != nil {
- panic(err)
- }
+ writer.MustStart()
+ defer writer.MustStop()
fmt.Println("The metric should be visible as mmv.singletoncounter.counter")
for i := 0; i < *timelimit; i++ {
v := metric.Val().(int32)
v++
+ metric.MustSet(v)
time.Sleep(time.Second)
- metric.Set(v)
}
-
- writer.Stop()
}
@@ -23,21 +23,14 @@ func main() {
panic(err)
}
- err = w.Start()
- if err != nil {
- panic(err)
- }
+ w.MustStart()
+ defer w.MustStop()
metric := m.(speed.SingletonMetric)
for i := 0; i < *timelimit; i++ {
val := metric.Val().(int32)
val++
- metric.Set(val)
+ metric.MustSet(val)
time.Sleep(time.Second)
}
-
- err = w.Stop()
- if err != nil {
- panic(err)
- }
}
View
@@ -256,8 +256,11 @@ type SingletonMetric interface {
// gets the value of the metric
Val() interface{}
- // Sets the value of the metric to a value, optionally returns an error on failure
+ // sets the value of the metric to a value, optionally returns an error on failure
Set(interface{}) error
+
+ // tries to set and panics on error
+ MustSet(interface{})
}
///////////////////////////////////////////////////////////////////////////////
@@ -272,6 +275,9 @@ type InstanceMetric interface {
// sets the value of a particular instance
SetInstance(string, interface{}) error
+
+ // tries to set the value of a particular instance and panics on error
+ MustSetInstance(string, interface{})
}
///////////////////////////////////////////////////////////////////////////////
@@ -424,6 +430,13 @@ func (m *PCPSingletonMetric) Set(val interface{}) error {
return nil
}
+// MustSet is a Set that panics
+func (m *PCPSingletonMetric) MustSet(val interface{}) {
+ if err := m.Set(val); err != nil {
+ panic(err)
+ }
+}
+
// Indom returns the instance domain for a PCPSingletonMetric
func (m *PCPSingletonMetric) Indom() *PCPInstanceDomain { return nil }
@@ -523,3 +536,10 @@ func (m *PCPInstanceMetric) SetInstance(instance string, val interface{}) error
m.vals[instance].val = val
return nil
}
+
+// MustSetInstance is a SetInstance that panics
+func (m *PCPInstanceMetric) MustSetInstance(instance string, val interface{}) {
+ if err := m.SetInstance(instance, val); err != nil {
+ panic(err)
+ }
+}