Add tracer configuration support
[ric-plt/tracelibgo.git] / pkg / tracelibgo / tracing_test.go
1 /*
2  * Copyright (c) 2019 AT&T Intellectual Property.
3  * Copyright (c) 2018-2019 Nokia.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 package tracelibgo
19
20 import (
21         "os"
22         "testing"
23
24         "github.com/stretchr/testify/assert"
25         "github.com/stretchr/testify/suite"
26 )
27
28 type ConfMakerTestSuite struct {
29         suite.Suite
30         cm confMaker
31 }
32
33 func (suite *ConfMakerTestSuite) SetupTest() {
34         suite.cm = confMaker{"foo"}
35 }
36
37 func (suite *ConfMakerTestSuite) TearDownTest() {
38         os.Unsetenv(tracingEnabledEnv)
39         os.Unsetenv(jaegerSamplerTypeEnv)
40         os.Unsetenv(jaegerSamplerParamEnv)
41         os.Unsetenv(jaegerAgentAddrEnv)
42         os.Unsetenv(jaegerLogLevelEnv)
43 }
44
45 func (suite *ConfMakerTestSuite) TestTracingIsDisabledByDefault() {
46         suite.False(suite.cm.IsTracingEnabled())
47 }
48
49 func (suite *ConfMakerTestSuite) TestTracingCanBeEnabledWithEnvVar() {
50         os.Setenv(tracingEnabledEnv, "1")
51         suite.True(suite.cm.IsTracingEnabled())
52         os.Setenv(tracingEnabledEnv, "true")
53         suite.True(suite.cm.IsTracingEnabled())
54 }
55
56 func (suite *ConfMakerTestSuite) TestTracingEnabledWithUnknownValueResultsDisabled() {
57         os.Setenv(tracingEnabledEnv, "0")
58         suite.False(suite.cm.IsTracingEnabled())
59         os.Setenv(tracingEnabledEnv, "foo")
60         suite.False(suite.cm.IsTracingEnabled())
61 }
62
63 func (suite *ConfMakerTestSuite) TestSamplerTypeDefaultIsConst() {
64         suite.Equal("const", suite.cm.getSamplerConfig().Type)
65 }
66
67 func (suite *ConfMakerTestSuite) TestSamplerTypeParamDefault() {
68         suite.Equal(0.001, suite.cm.getSamplerConfig().Param)
69 }
70
71 func (suite *ConfMakerTestSuite) TestSamplerTypeCanBeDefined() {
72         os.Setenv(jaegerSamplerTypeEnv, "probabilistic")
73         suite.Equal("probabilistic", suite.cm.getSamplerConfig().Type)
74 }
75
76 func (suite *ConfMakerTestSuite) TestIfSamplerParamIsInvalidZeroValueIsUsed() {
77         os.Setenv(jaegerSamplerParamEnv, "foo")
78         suite.Equal(0.0, suite.cm.getSamplerConfig().Param)
79 }
80
81 func (suite *ConfMakerTestSuite) TestAgentAddrCanBeDefined() {
82         os.Setenv(jaegerAgentAddrEnv, "1.1.1.1:1111")
83         suite.Equal("1.1.1.1:1111", suite.cm.getReporterConfig().LocalAgentHostPort)
84 }
85
86 func (suite *ConfMakerTestSuite) TestAgentAddressPortIsOptional() {
87         os.Setenv(jaegerAgentAddrEnv, "1.1.1.1")
88         suite.Equal("1.1.1.1:6831", suite.cm.getReporterConfig().LocalAgentHostPort)
89 }
90
91 func (suite *ConfMakerTestSuite) TestLoggingLevelDefaultIsErr() {
92         suite.Equal(logErr, suite.cm.getLoggingLevel())
93 }
94
95 func (suite *ConfMakerTestSuite) TestLoggingLevelCanBeConfigured() {
96         os.Setenv(jaegerLogLevelEnv, "error")
97         suite.Equal(logErr, suite.cm.getLoggingLevel())
98         os.Setenv(jaegerLogLevelEnv, "all")
99         suite.Equal(logAll, suite.cm.getLoggingLevel())
100         os.Setenv(jaegerLogLevelEnv, "none")
101         suite.Equal(logNone, suite.cm.getLoggingLevel())
102 }
103
104 func (suite *ConfMakerTestSuite) TestConfiguredTracerCreate() {
105         os.Setenv(tracingEnabledEnv, "1")
106         os.Setenv(jaegerSamplerParamEnv, "const")
107         os.Setenv(jaegerSamplerParamEnv, "1")
108         os.Setenv(jaegerAgentAddrEnv, "127.0.0.1:6831")
109         tracer, closer := CreateTracer("foo")
110         suite.NotNil(tracer)
111         suite.NotNil(closer)
112 }
113
114 func (suite *ConfMakerTestSuite) TestIfTracerCreationFailsDisabledTracerIsReturned() {
115         os.Setenv(tracingEnabledEnv, "1")
116         tracer, closer := CreateTracer("") // Empty name is an error
117         suite.NotNil(tracer)
118         suite.NotNil(closer)
119 }
120
121 func TestConfMakerSuite(t *testing.T) {
122         suite.Run(t, new(ConfMakerTestSuite))
123 }
124
125 func TestDefaultTracerCreate(t *testing.T) {
126         tracer, closer := CreateTracer("foo")
127         assert.NotNil(t, tracer)
128         assert.NotNil(t, closer)
129         err := closer.Close()
130         assert.Nil(t, err)
131 }