This repository was archived by the owner on Nov 7, 2022. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -182,13 +182,15 @@ func (c *Config) OpenCensusReceiverCorsAllowedOrigins() []string {
182182// CanRunOpenCensusTraceReceiver returns true if the configuration
183183// permits running the OpenCensus Trace receiver.
184184func (c * Config ) CanRunOpenCensusTraceReceiver () bool {
185- return c != nil && c .Receivers != nil && ! c .Receivers .OpenCensus .DisableTracing
185+ return c != nil && c .Receivers != nil &&
186+ c .Receivers .OpenCensus != nil && ! c .Receivers .OpenCensus .DisableTracing
186187}
187188
188189// CanRunOpenCensusMetricsReceiver returns true if the configuration
189190// permits running the OpenCensus Metrics receiver.
190191func (c * Config ) CanRunOpenCensusMetricsReceiver () bool {
191- return c != nil && c .Receivers != nil && ! c .Receivers .OpenCensus .DisableMetrics
192+ return c != nil && c .Receivers != nil &&
193+ c .Receivers .OpenCensus != nil && ! c .Receivers .OpenCensus .DisableMetrics
192194}
193195
194196// ZPagesDisabled returns true if zPages have not been enabled.
Original file line number Diff line number Diff line change @@ -61,3 +61,38 @@ exporters:
6161 t .Errorf ("Exporters.Zipkin.EndpointURL mismatch\n Got: %s\n Want:%s" , g , w )
6262 }
6363}
64+
65+ // Issue #377: If Config.OpenCensus == nil, invoking
66+ // CanRunOpenCensus{Metrics, Trace}Receiver() would crash.
67+ func TestOpenCensusTraceReceiverEnabledNoCrash (t * testing.T ) {
68+ // 1. Test with an in-code struct.
69+ cfg := & config.Config {
70+ Receivers : & config.Receivers {
71+ OpenCensus : nil ,
72+ },
73+ }
74+ if cfg .CanRunOpenCensusTraceReceiver () {
75+ t .Fatal ("CanRunOpenCensusTraceReceiver: Unexpected True for a nil Receiver.OpenCensus" )
76+ }
77+ if cfg .CanRunOpenCensusMetricsReceiver () {
78+ t .Fatal ("CanRunOpenCensusMetricsReceiver: Unexpected True for a nil Receiver.OpenCensus" )
79+ }
80+
81+ // 2. Test with a struct unmarshalled from a configuration file's YAML.
82+ regressionYAML := []byte (`
83+ receivers:
84+ zipkin:
85+ address: "localhost:9410"` )
86+
87+ cfg , err := config .ParseOCAgentConfig (regressionYAML )
88+ if err != nil {
89+ t .Fatalf ("Unexpected YAML parse error: %v" , err )
90+ }
91+
92+ if cfg .CanRunOpenCensusTraceReceiver () {
93+ t .Fatal ("yaml.CanRunOpenCensusTraceReceiver: Unexpected True for a nil Receiver.OpenCensus" )
94+ }
95+ if cfg .CanRunOpenCensusMetricsReceiver () {
96+ t .Fatal ("yaml.CanRunOpenCensusMetricsReceiver: Unexpected True for a nil Receiver.OpenCensus" )
97+ }
98+ }
You can’t perform that action at this time.
0 commit comments