Add new license claim
[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  * This source code is part of the near-RT RIC (RAN Intelligent Controller)
18  * platform project (RICP).
19  */
20
21 package tracelibgo
22
23 import (
24         "os"
25         "testing"
26
27         "github.com/stretchr/testify/assert"
28         "github.com/stretchr/testify/suite"
29 )
30
31 type ConfMakerTestSuite struct {
32         suite.Suite
33         cm confMaker
34 }
35
36 func (suite *ConfMakerTestSuite) SetupTest() {
37         suite.cm = confMaker{"foo"}
38 }
39
40 func (suite *ConfMakerTestSuite) TearDownTest() {
41         os.Unsetenv(tracingEnabledEnv)
42         os.Unsetenv(jaegerSamplerTypeEnv)
43         os.Unsetenv(jaegerSamplerParamEnv)
44         os.Unsetenv(jaegerAgentAddrEnv)
45         os.Unsetenv(jaegerLogLevelEnv)
46 }
47
48 func (suite *ConfMakerTestSuite) TestTracingIsDisabledByDefault() {
49         suite.False(suite.cm.IsTracingEnabled())
50 }
51
52 func (suite *ConfMakerTestSuite) TestTracingCanBeEnabledWithEnvVar() {
53         os.Setenv(tracingEnabledEnv, "1")
54         suite.True(suite.cm.IsTracingEnabled())
55         os.Setenv(tracingEnabledEnv, "true")
56         suite.True(suite.cm.IsTracingEnabled())
57 }
58
59 func (suite *ConfMakerTestSuite) TestTracingEnabledWithUnknownValueResultsDisabled() {
60         os.Setenv(tracingEnabledEnv, "0")
61         suite.False(suite.cm.IsTracingEnabled())
62         os.Setenv(tracingEnabledEnv, "foo")
63         suite.False(suite.cm.IsTracingEnabled())
64 }
65
66 func (suite *ConfMakerTestSuite) TestSamplerTypeDefaultIsConst() {
67         suite.Equal("const", suite.cm.getSamplerConfig().Type)
68 }
69
70 func (suite *ConfMakerTestSuite) TestSamplerTypeParamDefault() {
71         suite.Equal(0.001, suite.cm.getSamplerConfig().Param)
72 }
73
74 func (suite *ConfMakerTestSuite) TestSamplerTypeCanBeDefined() {
75         os.Setenv(jaegerSamplerTypeEnv, "probabilistic")
76         suite.Equal("probabilistic", suite.cm.getSamplerConfig().Type)
77 }
78
79 func (suite *ConfMakerTestSuite) TestIfSamplerParamIsInvalidZeroValueIsUsed() {
80         os.Setenv(jaegerSamplerParamEnv, "foo")
81         suite.Equal(0.0, suite.cm.getSamplerConfig().Param)
82 }
83
84 func (suite *ConfMakerTestSuite) TestAgentAddrCanBeDefined() {
85         os.Setenv(jaegerAgentAddrEnv, "1.1.1.1:1111")
86         suite.Equal("1.1.1.1:1111", suite.cm.getReporterConfig().LocalAgentHostPort)
87 }
88
89 func (suite *ConfMakerTestSuite) TestAgentAddressPortIsOptional() {
90         os.Setenv(jaegerAgentAddrEnv, "1.1.1.1")
91         suite.Equal("1.1.1.1:6831", suite.cm.getReporterConfig().LocalAgentHostPort)
92 }
93
94 func (suite *ConfMakerTestSuite) TestLoggingLevelDefaultIsErr() {
95         suite.Equal(logErr, suite.cm.getLoggingLevel())
96 }
97
98 func (suite *ConfMakerTestSuite) TestLoggingLevelCanBeConfigured() {
99         os.Setenv(jaegerLogLevelEnv, "error")
100         suite.Equal(logErr, suite.cm.getLoggingLevel())
101         os.Setenv(jaegerLogLevelEnv, "all")
102         suite.Equal(logAll, suite.cm.getLoggingLevel())
103         os.Setenv(jaegerLogLevelEnv, "none")
104         suite.Equal(logNone, suite.cm.getLoggingLevel())
105 }
106
107 func (suite *ConfMakerTestSuite) TestConfiguredTracerCreate() {
108         os.Setenv(tracingEnabledEnv, "1")
109         os.Setenv(jaegerSamplerParamEnv, "const")
110         os.Setenv(jaegerSamplerParamEnv, "1")
111         os.Setenv(jaegerAgentAddrEnv, "127.0.0.1:6831")
112         tracer, closer := CreateTracer("foo")
113         suite.NotNil(tracer)
114         suite.NotNil(closer)
115 }
116
117 func (suite *ConfMakerTestSuite) TestIfTracerCreationFailsDisabledTracerIsReturned() {
118         os.Setenv(tracingEnabledEnv, "1")
119         tracer, closer := CreateTracer("") // Empty name is an error
120         suite.NotNil(tracer)
121         suite.NotNil(closer)
122 }
123
124 func TestConfMakerSuite(t *testing.T) {
125         suite.Run(t, new(ConfMakerTestSuite))
126 }
127
128 func TestDefaultTracerCreate(t *testing.T) {
129         tracer, closer := CreateTracer("foo")
130         assert.NotNil(t, tracer)
131         assert.NotNil(t, closer)
132         err := closer.Close()
133         assert.Nil(t, err)
134 }