|
168 | 168 | expect(top.events[0].attributes['feature_flag.result.value']).to be_nil |
169 | 169 | end |
170 | 170 |
|
171 | | - context 'with environment_id' do |
172 | | - let(:options) { LaunchDarkly::Otel::TracingHookOptions.new({environment_id: 'test-env-123'}) } |
173 | | - let(:hook) { LaunchDarkly::Otel::TracingHook.new(options) } |
174 | | - let(:config) { LaunchDarkly::Config.new({data_source: td, hooks: [hook]}) } |
175 | | - let(:client) { LaunchDarkly::LDClient.new('key', config) } |
| 171 | + context 'with environment_id' do |
| 172 | + let(:options) { LaunchDarkly::Otel::TracingHookOptions.new({environment_id: 'test-env-123'}) } |
| 173 | + let(:hook) { LaunchDarkly::Otel::TracingHook.new(options) } |
| 174 | + let(:config) { LaunchDarkly::Config.new({data_source: td, hooks: [hook]}) } |
| 175 | + let(:client) { LaunchDarkly::LDClient.new('key', config) } |
176 | 176 |
|
177 | | - it 'includes environment_id in event' do |
178 | | - tracer.in_span('toplevel') do |span| |
179 | | - result = client.variation('boolean', {key: 'org-key', kind: 'org'}, true) |
| 177 | + it 'includes environment_id in event' do |
| 178 | + tracer.in_span('toplevel') do |span| |
| 179 | + result = client.variation('boolean', {key: 'org-key', kind: 'org'}, true) |
| 180 | + end |
| 181 | + |
| 182 | + spans = exporter.finished_spans |
| 183 | + event = spans[0].events[0] |
| 184 | + expect(event.attributes['feature_flag.set.id']).to eq 'test-env-123' |
180 | 185 | end |
181 | 186 |
|
182 | | - spans = exporter.finished_spans |
183 | | - event = spans[0].events[0] |
184 | | - expect(event.attributes['feature_flag.set.id']).to eq 'test-env-123' |
185 | | - end |
| 187 | + it 'does not include environment_id when invalid' do |
| 188 | + invalid_options = LaunchDarkly::Otel::TracingHookOptions.new({environment_id: ''}) |
| 189 | + invalid_hook = LaunchDarkly::Otel::TracingHook.new(invalid_options) |
| 190 | + invalid_config = LaunchDarkly::Config.new({data_source: td, hooks: [invalid_hook]}) |
| 191 | + invalid_client = LaunchDarkly::LDClient.new('key', invalid_config) |
186 | 192 |
|
187 | | - it 'does not include environment_id when invalid' do |
188 | | - invalid_options = LaunchDarkly::Otel::TracingHookOptions.new({environment_id: ''}) |
189 | | - invalid_hook = LaunchDarkly::Otel::TracingHook.new(invalid_options) |
190 | | - invalid_config = LaunchDarkly::Config.new({data_source: td, hooks: [invalid_hook]}) |
191 | | - invalid_client = LaunchDarkly::LDClient.new('key', invalid_config) |
| 193 | + tracer.in_span('toplevel') do |span| |
| 194 | + result = invalid_client.variation('boolean', {key: 'org-key', kind: 'org'}, true) |
| 195 | + end |
192 | 196 |
|
193 | | - tracer.in_span('toplevel') do |span| |
194 | | - result = invalid_client.variation('boolean', {key: 'org-key', kind: 'org'}, true) |
| 197 | + spans = exporter.finished_spans |
| 198 | + event = spans[0].events[0] |
| 199 | + expect(event.attributes['feature_flag.set.id']).to be_nil |
195 | 200 | end |
196 | | - |
197 | | - spans = exporter.finished_spans |
198 | | - event = spans[0].events[0] |
199 | | - expect(event.attributes['feature_flag.set.id']).to be_nil |
200 | 201 | end |
201 | | - end |
202 | 202 |
|
203 | 203 | context 'with inExperiment and variationIndex' do |
204 | 204 | let(:hook) { LaunchDarkly::Otel::TracingHook.new } |
205 | 205 | let(:config) { LaunchDarkly::Config.new({data_source: td, hooks: [hook]}) } |
206 | 206 | let(:client) { LaunchDarkly::LDClient.new('key', config) } |
207 | | - |
| 207 | + |
208 | 208 | it 'includes inExperiment when evaluation is part of experiment' do |
209 | 209 | flag = LaunchDarkly::Integrations::TestData::FlagBuilder.new('experiment-flag') |
210 | 210 | .variations(false, true) |
211 | 211 | .fallthrough_variation(1) |
212 | 212 | .on(true) |
213 | 213 | td.update(flag) |
214 | | - |
| 214 | + |
215 | 215 | tracer.in_span('toplevel') do |span| |
216 | 216 | result = client.variation('experiment-flag', {key: 'user-key', kind: 'user'}, false) |
217 | 217 | end |
218 | | - |
| 218 | + |
219 | 219 | spans = exporter.finished_spans |
220 | 220 | event = spans[0].events[0] |
221 | 221 | expect(event.attributes.key?('feature_flag.result.reason.inExperiment')).to be false |
222 | 222 | end |
223 | | - |
| 223 | + |
224 | 224 | it 'includes variationIndex when available' do |
225 | 225 | flag = LaunchDarkly::Integrations::TestData::FlagBuilder.new('indexed-flag') |
226 | 226 | .variations('value-0', 'value-1', 'value-2') |
227 | 227 | .fallthrough_variation(1) |
228 | 228 | .on(true) |
229 | 229 | td.update(flag) |
230 | | - |
| 230 | + |
231 | 231 | tracer.in_span('toplevel') do |span| |
232 | 232 | result = client.variation('indexed-flag', {key: 'user-key', kind: 'user'}, 'default') |
233 | 233 | end |
234 | | - |
| 234 | + |
235 | 235 | spans = exporter.finished_spans |
236 | 236 | event = spans[0].events[0] |
237 | 237 | expect(event.attributes['feature_flag.result.variationIndex']).to eq 1 |
|
0 commit comments