diff options
Diffstat (limited to 'plugins/metrics/rpc_test.go')
-rw-r--r-- | plugins/metrics/rpc_test.go | 861 |
1 files changed, 861 insertions, 0 deletions
diff --git a/plugins/metrics/rpc_test.go b/plugins/metrics/rpc_test.go new file mode 100644 index 00000000..9b059fe1 --- /dev/null +++ b/plugins/metrics/rpc_test.go @@ -0,0 +1,861 @@ +package metrics + +//import ( +// "github.com/sirupsen/logrus" +// "github.com/sirupsen/logrus/hooks/test" +// "github.com/spiral/roadrunner/service" +// "github.com/spiral/roadrunner/service/rpc" +// "github.com/stretchr/testify/assert" +// rpc2 "net/rpc" +// "strconv" +// "testing" +// "time" +//) +// +//var port = 5004 +// +//func setup(t *testing.T, metric string, portNum string) (*rpc2.Client, service.Container) { +// logger, _ := test.NewNullLogger() +// logger.SetLevel(logrus.DebugLevel) +// +// c := service.NewContainer(logger) +// c.Register(rpc.ID, &rpc.Plugin{}) +// c.Register(ID, &Plugin{}) +// +// assert.NoError(t, c.Init(&testCfg{ +// rpcCfg: `{"enable":true, "listen":"tcp://:` + strconv.Itoa(port) + `"}`, +// metricsCfg: `{ +// "address": "localhost:` + portNum + `", +// "collect":{ +// ` + metric + ` +// } +// }`})) +// +// // rotate ports for travis +// port++ +// +// s, _ := c.Get(ID) +// assert.NotNil(t, s) +// +// s2, _ := c.Get(rpc.ID) +// rs := s2.(*rpc.Plugin) +// +// assert.True(t, s.(*Plugin).Enabled()) +// +// go func() { +// err := c.Serve() +// if err != nil { +// t.Errorf("error during the Serve: error %v", err) +// } +// }() +// time.Sleep(time.Millisecond * 200) +// +// client, err := rs.Client() +// assert.NoError(t, err) +// if err != nil { +// panic(err) +// } +// +// return client, c +//} +// +//func Test_Set_RPC(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge" +// }`, +// "2112", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Set", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// }, &ok)) +// assert.True(t, ok) +// +// out, _, err := get("http://localhost:2112/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `user_gauge 100`) +//} +// +//func Test_Set_RPC_Vector(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "2113", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Set", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// Labels: []string{"core", "first"}, +// }, &ok)) +// assert.True(t, ok) +// +// out, _, err := get("http://localhost:2113/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `user_gauge{section="first",type="core"} 100`) +//} +// +//func Test_Set_RPC_CollectorError(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "2114", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Set", Metric{ +// Name: "user_gauge_2", +// Value: 100.0, +// Labels: []string{"missing"}, +// }, &ok)) +//} +// +//func Test_Set_RPC_MetricError(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "2115", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Set", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// Labels: []string{"missing"}, +// }, &ok)) +//} +// +//func Test_Set_RPC_MetricError_2(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "2116", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Set", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// }, &ok)) +//} +// +//func Test_Set_RPC_MetricError_3(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "histogram", +// "labels": ["type", "section"] +// }`, +// "2117", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Set", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// }, &ok)) +//} +// +//// sub +// +//func Test_Sub_RPC(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge" +// }`, +// "2118", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Add", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// }, &ok)) +// assert.True(t, ok) +// +// assert.NoError(t, client.Call("metrics.Sub", Metric{ +// Name: "user_gauge", +// Value: 10.0, +// }, &ok)) +// assert.True(t, ok) +// +// out, _, err := get("http://localhost:2118/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `user_gauge 90`) +//} +// +//func Test_Sub_RPC_Vector(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "2119", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Add", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// Labels: []string{"core", "first"}, +// }, &ok)) +// assert.True(t, ok) +// +// assert.NoError(t, client.Call("metrics.Sub", Metric{ +// Name: "user_gauge", +// Value: 10.0, +// Labels: []string{"core", "first"}, +// }, &ok)) +// assert.True(t, ok) +// +// out, _, err := get("http://localhost:2119/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `user_gauge{section="first",type="core"} 90`) +//} +// +//func Test_Register_RPC_Histogram(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "2319", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Declare", &NamedCollector{ +// Name: "custom_histogram", +// Collector: Collector{ +// Namespace: "test_histogram", +// Subsystem: "test_histogram", +// Type: Histogram, +// Help: "test_histogram", +// Labels: nil, +// Buckets: []float64{0.1, 0.2, 0.5}, +// }, +// }, &ok)) +// assert.True(t, ok) +// +// var ok2 bool +// // histogram does not support Add, should be an error +// assert.Error(t, client.Call("metrics.Add", Metric{ +// Name: "custom_histogram", +// }, &ok2)) +// // ok should became false +// assert.False(t, ok2) +// +// out, _, err := get("http://localhost:2319/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `TYPE test_histogram_test_histogram_custom_histogram histogram`) +// +// // check buckets +// assert.Contains(t, out, `test_histogram_test_histogram_custom_histogram_bucket{le="0.1"} 0`) +// assert.Contains(t, out, `test_histogram_test_histogram_custom_histogram_bucket{le="0.2"} 0`) +// assert.Contains(t, out, `test_histogram_test_histogram_custom_histogram_bucket{le="0.5"} 0`) +//} +// +//func Test_Register_RPC_Gauge(t *testing.T) { +// // FOR register method, setup used just to init the rpc +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "2324", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Declare", &NamedCollector{ +// Name: "custom_gauge", +// Collector: Collector{ +// Namespace: "test_gauge", +// Subsystem: "test_gauge", +// Type: Gauge, +// Help: "test_gauge", +// Labels: []string{"type", "section"}, +// Buckets: nil, +// }, +// }, &ok)) +// assert.True(t, ok) +// +// var ok2 bool +// // Add to custom_gauge +// assert.NoError(t, client.Call("metrics.Add", Metric{ +// Name: "custom_gauge", +// Value: 100.0, +// Labels: []string{"core", "first"}, +// }, &ok2)) +// // ok should became true +// assert.True(t, ok2) +// +// // Subtract from custom runtime metric +// var ok3 bool +// assert.NoError(t, client.Call("metrics.Sub", Metric{ +// Name: "custom_gauge", +// Value: 10.0, +// Labels: []string{"core", "first"}, +// }, &ok3)) +// assert.True(t, ok3) +// +// out, _, err := get("http://localhost:2324/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `test_gauge_test_gauge_custom_gauge{section="first",type="core"} 90`) +//} +// +//func Test_Register_RPC_Counter(t *testing.T) { +// // FOR register method, setup used just to init the rpc +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "2328", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Declare", &NamedCollector{ +// Name: "custom_counter", +// Collector: Collector{ +// Namespace: "test_counter", +// Subsystem: "test_counter", +// Type: Counter, +// Help: "test_counter", +// Labels: []string{"type", "section"}, +// Buckets: nil, +// }, +// }, &ok)) +// assert.True(t, ok) +// +// var ok2 bool +// // Add to custom_counter +// assert.NoError(t, client.Call("metrics.Add", Metric{ +// Name: "custom_counter", +// Value: 100.0, +// Labels: []string{"type2", "section2"}, +// }, &ok2)) +// // ok should became true +// assert.True(t, ok2) +// +// out, _, err := get("http://localhost:2328/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `test_counter_test_counter_custom_counter{section="section2",type="type2"} 100`) +//} +// +//func Test_Register_RPC_Summary(t *testing.T) { +// // FOR register method, setup used just to init the rpc +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "6666", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Declare", &NamedCollector{ +// Name: "custom_summary", +// Collector: Collector{ +// Namespace: "test_summary", +// Subsystem: "test_summary", +// Type: Summary, +// Help: "test_summary", +// Labels: nil, +// Buckets: nil, +// }, +// }, &ok)) +// assert.True(t, ok) +// +// var ok2 bool +// // Add to custom_summary is not supported +// assert.Error(t, client.Call("metrics.Add", Metric{ +// Name: "custom_summary", +// Value: 100.0, +// Labels: []string{"type22", "section22"}, +// }, &ok2)) +// // ok should became false +// assert.False(t, ok2) +// +// out, _, err := get("http://localhost:6666/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `test_summary_test_summary_custom_summary_sum 0`) +// assert.Contains(t, out, `test_summary_test_summary_custom_summary_count 0`) +//} +// +//func Test_Sub_RPC_CollectorError(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "2120", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Sub", Metric{ +// Name: "user_gauge_2", +// Value: 100.0, +// Labels: []string{"missing"}, +// }, &ok)) +//} +// +//func Test_Sub_RPC_MetricError(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "2121", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Sub", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// Labels: []string{"missing"}, +// }, &ok)) +//} +// +//func Test_Sub_RPC_MetricError_2(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "gauge", +// "labels": ["type", "section"] +// }`, +// "2122", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Sub", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// }, &ok)) +//} +// +//func Test_Sub_RPC_MetricError_3(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "histogram", +// "labels": ["type", "section"] +// }`, +// "2123", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Sub", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// }, &ok)) +//} +// +//// -- observe +// +//func Test_Observe_RPC(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "histogram" +// }`, +// "2124", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram", +// Value: 100.0, +// }, &ok)) +// assert.True(t, ok) +// +// out, _, err := get("http://localhost:2124/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `user_histogram`) +//} +// +//func Test_Observe_RPC_Vector(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "histogram", +// "labels": ["type", "section"] +// }`, +// "2125", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram", +// Value: 100.0, +// Labels: []string{"core", "first"}, +// }, &ok)) +// assert.True(t, ok) +// +// out, _, err := get("http://localhost:2125/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `user_histogram`) +//} +// +//func Test_Observe_RPC_CollectorError(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "histogram", +// "labels": ["type", "section"] +// }`, +// "2126", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram", +// Value: 100.0, +// Labels: []string{"missing"}, +// }, &ok)) +//} +// +//func Test_Observe_RPC_MetricError(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "histogram", +// "labels": ["type", "section"] +// }`, +// "2127", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram", +// Value: 100.0, +// Labels: []string{"missing"}, +// }, &ok)) +//} +// +//func Test_Observe_RPC_MetricError_2(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "histogram", +// "labels": ["type", "section"] +// }`, +// "2128", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram", +// Value: 100.0, +// }, &ok)) +//} +// +//// -- observe summary +// +//func Test_Observe2_RPC(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "summary" +// }`, +// "2129", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram", +// Value: 100.0, +// }, &ok)) +// assert.True(t, ok) +// +// out, _, err := get("http://localhost:2129/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `user_histogram`) +//} +// +//func Test_Observe2_RPC_Invalid(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "summary" +// }`, +// "2130", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram_2", +// Value: 100.0, +// Labels: []string{"missing"}, +// }, &ok)) +//} +// +//func Test_Observe2_RPC_Invalid_2(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "gauge" +// }`, +// "2131", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram", +// Value: 100.0, +// }, &ok)) +//} +// +//func Test_Observe2_RPC_Vector(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "summary", +// "labels": ["type", "section"] +// }`, +// "2132", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram", +// Value: 100.0, +// Labels: []string{"core", "first"}, +// }, &ok)) +// assert.True(t, ok) +// +// out, _, err := get("http://localhost:2132/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `user_histogram`) +//} +// +//func Test_Observe2_RPC_CollectorError(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "summary", +// "labels": ["type", "section"] +// }`, +// "2133", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram", +// Value: 100.0, +// Labels: []string{"missing"}, +// }, &ok)) +//} +// +//func Test_Observe2_RPC_MetricError(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "summary", +// "labels": ["type", "section"] +// }`, +// "2134", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram", +// Value: 100.0, +// Labels: []string{"missing"}, +// }, &ok)) +//} +// +//func Test_Observe2_RPC_MetricError_2(t *testing.T) { +// client, c := setup( +// t, +// `"user_histogram":{ +// "type": "summary", +// "labels": ["type", "section"] +// }`, +// "2135", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Observe", Metric{ +// Name: "user_histogram", +// Value: 100.0, +// }, &ok)) +//} +// +//// add +//func Test_Add_RPC(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "counter" +// }`, +// "2136", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Add", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// }, &ok)) +// assert.True(t, ok) +// +// out, _, err := get("http://localhost:2136/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `user_gauge 100`) +//} +// +//func Test_Add_RPC_Vector(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "counter", +// "labels": ["type", "section"] +// }`, +// "2137", +// ) +// defer c.Stop() +// +// var ok bool +// assert.NoError(t, client.Call("metrics.Add", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// Labels: []string{"core", "first"}, +// }, &ok)) +// assert.True(t, ok) +// +// out, _, err := get("http://localhost:2137/metrics") +// assert.NoError(t, err) +// assert.Contains(t, out, `user_gauge{section="first",type="core"} 100`) +//} +// +//func Test_Add_RPC_CollectorError(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "counter", +// "labels": ["type", "section"] +// }`, +// "2138", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Add", Metric{ +// Name: "user_gauge_2", +// Value: 100.0, +// Labels: []string{"missing"}, +// }, &ok)) +// +// assert.False(t, ok) +//} +// +//func Test_Add_RPC_MetricError(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "counter", +// "labels": ["type", "section"] +// }`, +// "2139", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Add", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// Labels: []string{"missing"}, +// }, &ok)) +// +// assert.False(t, ok) +//} +// +//func Test_Add_RPC_MetricError_2(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "counter", +// "labels": ["type", "section"] +// }`, +// "2140", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Add", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// }, &ok)) +// +// assert.False(t, ok) +//} +// +//func Test_Add_RPC_MetricError_3(t *testing.T) { +// client, c := setup( +// t, +// `"user_gauge":{ +// "type": "histogram", +// "labels": ["type", "section"] +// }`, +// "2141", +// ) +// defer c.Stop() +// +// var ok bool +// assert.Error(t, client.Call("metrics.Add", Metric{ +// Name: "user_gauge", +// Value: 100.0, +// }, &ok)) +//} |