1
0
mirror of https://github.com/gluster/glusterd2.git synced 2026-02-05 21:45:43 +01:00
Files
glusterd2/e2e/trace_test.go
Sridhar Seshasayee ec25ca6619 Tracing: Implement glustercli command to disable the trace configuration
Implement glustercli command to disable and delete the current tracing
configuration on the cluster. The changes include gd2 transaction that
first deletes the trace configuration from the store on one node and then
a subsequent step clears the in-memory trace configuration on all nodes.

closes #1368

Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
2019-02-12 08:08:00 +05:30

323 lines
9.4 KiB
Go

package e2e
import (
"testing"
tracemgmtapi "github.com/gluster/glusterd2/plugins/tracemgmt/api"
"github.com/stretchr/testify/require"
)
const (
jaegerEndpoint = "http://localhost:14268"
jaegerAgentEndpoint = "http://localhost:6831"
)
func TestTraceEnableAlwaysSample(t *testing.T) {
r := require.New(t)
tc, err := setupCluster(t, "./config/1.toml", "./config/2.toml")
r.Nil(err)
defer teardownCluster(tc)
client, err := initRestclient(tc.gds[0])
r.Nil(err)
r.NotNil(client)
jaegerSampler := 1 // Always sample
reqTraceEnable := tracemgmtapi.SetupTracingReq{
JaegerEndpoint: jaegerEndpoint,
JaegerAgentEndpoint: jaegerAgentEndpoint,
JaegerSampler: jaegerSampler,
}
jaegerCfgInfo, err := client.TraceEnable(reqTraceEnable)
r.Nil(err)
r.Equal(tracemgmtapi.TracingEnabled, jaegerCfgInfo.Status)
r.Equal(jaegerEndpoint, jaegerCfgInfo.JaegerEndpoint)
r.Equal(jaegerAgentEndpoint, jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(jaegerSampler, jaegerCfgInfo.JaegerSampler)
r.Equal(1.0, jaegerCfgInfo.JaegerSampleFraction)
}
func TestTraceEnableProbSampler(t *testing.T) {
r := require.New(t)
tc, err := setupCluster(t, "./config/1.toml", "./config/2.toml")
r.Nil(err)
defer teardownCluster(tc)
client, err := initRestclient(tc.gds[0])
r.Nil(err)
r.NotNil(client)
// Provide valid endpoint
jaegerSampler := 2 // Probabilistic
reqTraceEnable := tracemgmtapi.SetupTracingReq{
JaegerEndpoint: jaegerEndpoint,
JaegerAgentEndpoint: jaegerAgentEndpoint,
JaegerSampler: jaegerSampler,
}
jaegerCfgInfo, err := client.TraceEnable(reqTraceEnable)
r.Nil(err)
// Get the trace config
jaegerCfgInfo, err = client.TraceStatus()
r.Nil(err)
r.Equal(tracemgmtapi.TracingEnabled, jaegerCfgInfo.Status)
r.Equal(jaegerEndpoint, jaegerCfgInfo.JaegerEndpoint)
r.Equal(jaegerAgentEndpoint, jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(jaegerSampler, jaegerCfgInfo.JaegerSampler)
// The default sample fraction should be applied
r.Equal(0.1, jaegerCfgInfo.JaegerSampleFraction)
}
func TestTraceEnableInvalidEndpoint(t *testing.T) {
r := require.New(t)
tc, err := setupCluster(t, "./config/1.toml", "./config/2.toml")
r.Nil(err)
defer teardownCluster(tc)
client, err := initRestclient(tc.gds[0])
r.Nil(err)
r.NotNil(client)
// Provide an invalid endpoint
reqTraceEnable := tracemgmtapi.SetupTracingReq{
JaegerEndpoint: "",
JaegerAgentEndpoint: jaegerAgentEndpoint,
}
jaegerCfgInfo, err := client.TraceEnable(reqTraceEnable)
r.NotNil(err)
// Get the trace config
jaegerCfgInfo, err = client.TraceStatus()
r.Nil(err)
r.Equal(tracemgmtapi.TracingDisabled, jaegerCfgInfo.Status)
r.Equal("", jaegerCfgInfo.JaegerEndpoint)
r.Equal("", jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(0, jaegerCfgInfo.JaegerSampler)
r.Equal(0.0, jaegerCfgInfo.JaegerSampleFraction)
}
func TestTraceEnableInvalidSampler(t *testing.T) {
r := require.New(t)
tc, err := setupCluster(t, "./config/1.toml", "./config/2.toml")
r.Nil(err)
defer teardownCluster(tc)
client, err := initRestclient(tc.gds[0])
r.Nil(err)
r.NotNil(client)
// Provide invalid sampler
jaegerSampler := 3
reqTraceEnable := tracemgmtapi.SetupTracingReq{
JaegerEndpoint: jaegerEndpoint,
JaegerAgentEndpoint: jaegerAgentEndpoint,
JaegerSampler: jaegerSampler,
}
jaegerCfgInfo, err := client.TraceEnable(reqTraceEnable)
r.Nil(err)
r.Equal(tracemgmtapi.TracingDisabled, jaegerCfgInfo.Status)
r.Equal(jaegerEndpoint, jaegerCfgInfo.JaegerEndpoint)
r.Equal(jaegerAgentEndpoint, jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(0, jaegerCfgInfo.JaegerSampler)
r.Equal(0.0, jaegerCfgInfo.JaegerSampleFraction)
}
func TestTraceEnableInvalidSampleFraction(t *testing.T) {
r := require.New(t)
tc, err := setupCluster(t, "./config/1.toml", "./config/2.toml")
r.Nil(err)
defer teardownCluster(tc)
client, err := initRestclient(tc.gds[0])
r.Nil(err)
r.NotNil(client)
// Provide an invalid sample fraction
jaegerSampler := 2 // probabilistic
jaegerSampleFraction := 1.1 // Invalid value
reqTraceEnable := tracemgmtapi.SetupTracingReq{
JaegerEndpoint: jaegerEndpoint,
JaegerAgentEndpoint: jaegerAgentEndpoint,
JaegerSampler: jaegerSampler,
JaegerSampleFraction: jaegerSampleFraction,
}
jaegerCfgInfo, err := client.TraceEnable(reqTraceEnable)
r.Nil(err)
// Get the trace config
jaegerCfgInfo, err = client.TraceStatus()
r.Nil(err)
r.Equal(tracemgmtapi.TracingEnabled, jaegerCfgInfo.Status)
r.Equal(jaegerEndpoint, jaegerCfgInfo.JaegerEndpoint)
r.Equal(jaegerAgentEndpoint, jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(jaegerSampler, jaegerCfgInfo.JaegerSampler)
r.Equal(0.1, jaegerCfgInfo.JaegerSampleFraction)
}
func TestTraceUpdate(t *testing.T) {
r := require.New(t)
tc, err := setupCluster(t, "./config/1.toml", "./config/2.toml")
r.Nil(err)
defer teardownCluster(tc)
client, err := initRestclient(tc.gds[0])
r.Nil(err)
r.NotNil(client)
jaegerSampler := 1
reqTraceEnable := tracemgmtapi.SetupTracingReq{
JaegerEndpoint: jaegerEndpoint,
JaegerAgentEndpoint: jaegerAgentEndpoint,
JaegerSampler: jaegerSampler,
}
jaegerCfgInfo, err := client.TraceEnable(reqTraceEnable)
r.Nil(err)
r.Equal(tracemgmtapi.TracingEnabled, jaegerCfgInfo.Status)
r.Equal(jaegerEndpoint, jaegerCfgInfo.JaegerEndpoint)
r.Equal(jaegerAgentEndpoint, jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(jaegerSampler, jaegerCfgInfo.JaegerSampler)
r.Equal(1.0, jaegerCfgInfo.JaegerSampleFraction)
// Send another request to update the trace options
newJaegerEndpoint := "http://newhost:14268"
newJaegerAgentEndpoint := "http://newhost:6831"
newJaegerSampler := 2
newJaegerSampleFraction := 0.7
reqTraceUpdate := tracemgmtapi.SetupTracingReq{
JaegerEndpoint: newJaegerEndpoint,
JaegerAgentEndpoint: newJaegerAgentEndpoint,
JaegerSampler: newJaegerSampler,
JaegerSampleFraction: newJaegerSampleFraction,
}
_, err = client.TraceUpdate(reqTraceUpdate)
r.Nil(err)
// Get the trace config
jaegerCfgInfo, err = client.TraceStatus()
r.Nil(err)
r.Equal(tracemgmtapi.TracingEnabled, jaegerCfgInfo.Status)
r.Equal(newJaegerEndpoint, jaegerCfgInfo.JaegerEndpoint)
r.Equal(newJaegerAgentEndpoint, jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(newJaegerSampler, jaegerCfgInfo.JaegerSampler)
r.Equal(newJaegerSampleFraction, jaegerCfgInfo.JaegerSampleFraction)
}
func TestTraceUpdateInvalidOption(t *testing.T) {
r := require.New(t)
tc, err := setupCluster(t, "./config/1.toml", "./config/2.toml")
r.Nil(err)
defer teardownCluster(tc)
client, err := initRestclient(tc.gds[0])
r.Nil(err)
r.NotNil(client)
// Enable tracing with all valid options
jaegerSampler := 1
reqTraceEnable := tracemgmtapi.SetupTracingReq{
JaegerEndpoint: jaegerEndpoint,
JaegerAgentEndpoint: jaegerAgentEndpoint,
JaegerSampler: jaegerSampler,
}
jaegerCfgInfo, err := client.TraceEnable(reqTraceEnable)
r.Nil(err)
r.Equal(tracemgmtapi.TracingEnabled, jaegerCfgInfo.Status)
r.Equal(jaegerEndpoint, jaegerCfgInfo.JaegerEndpoint)
r.Equal(jaegerAgentEndpoint, jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(jaegerSampler, jaegerCfgInfo.JaegerSampler)
r.Equal(1.0, jaegerCfgInfo.JaegerSampleFraction)
// Test update with invalid sample fraction
newJaegerSampler := 2
newJaegerSampleFraction := 1.1
reqTraceUpdate := tracemgmtapi.SetupTracingReq{
JaegerSampler: newJaegerSampler,
JaegerSampleFraction: newJaegerSampleFraction,
}
_, err = client.TraceUpdate(reqTraceUpdate)
r.Nil(err)
// Get the trace config
jaegerCfgInfo, err = client.TraceStatus()
r.Nil(err)
r.Equal(tracemgmtapi.TracingEnabled, jaegerCfgInfo.Status)
r.Equal(jaegerEndpoint, jaegerCfgInfo.JaegerEndpoint)
r.Equal(jaegerAgentEndpoint, jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(newJaegerSampler, jaegerCfgInfo.JaegerSampler)
// Since sample fraction is invalid, the default value will be set
r.Equal(0.1, jaegerCfgInfo.JaegerSampleFraction)
// Test update with invalid sampler type option
newJaegerSampler = 3
reqTraceUpdate = tracemgmtapi.SetupTracingReq{
JaegerSampler: newJaegerSampler,
}
_, err = client.TraceUpdate(reqTraceUpdate)
r.Nil(err)
// Get the trace config
jaegerCfgInfo, err = client.TraceStatus()
r.Nil(err)
r.Equal(tracemgmtapi.TracingDisabled, jaegerCfgInfo.Status)
r.Equal(jaegerEndpoint, jaegerCfgInfo.JaegerEndpoint)
r.Equal(jaegerAgentEndpoint, jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(0, jaegerCfgInfo.JaegerSampler)
r.Equal(0.0, jaegerCfgInfo.JaegerSampleFraction)
}
func TestTraceDisable(t *testing.T) {
r := require.New(t)
tc, err := setupCluster(t, "./config/1.toml", "./config/2.toml")
r.Nil(err)
defer teardownCluster(tc)
client, err := initRestclient(tc.gds[0])
r.Nil(err)
r.NotNil(client)
jaegerSampler := 1
reqTraceEnable := tracemgmtapi.SetupTracingReq{
JaegerEndpoint: jaegerEndpoint,
JaegerAgentEndpoint: jaegerAgentEndpoint,
JaegerSampler: jaegerSampler,
}
jaegerCfgInfo, err := client.TraceEnable(reqTraceEnable)
r.Nil(err)
r.Equal(jaegerEndpoint, jaegerCfgInfo.JaegerEndpoint)
r.Equal(jaegerAgentEndpoint, jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(jaegerSampler, jaegerCfgInfo.JaegerSampler)
r.Equal(1.0, jaegerCfgInfo.JaegerSampleFraction)
// Delete the trace config
err = client.TraceDisable()
r.Nil(err)
// Get the trace config
jaegerCfgInfo, err = client.TraceStatus()
r.Nil(err)
r.Equal("", jaegerCfgInfo.JaegerEndpoint)
r.Equal("", jaegerCfgInfo.JaegerAgentEndpoint)
r.Equal(0, jaegerCfgInfo.JaegerSampler)
r.Equal(0.0, jaegerCfgInfo.JaegerSampleFraction)
}