Skip to content

Commit 0f6a05a

Browse files
committed
add more tests
1 parent fcef569 commit 0f6a05a

File tree

5 files changed

+61
-15
lines changed

5 files changed

+61
-15
lines changed

experimental/packages/opentelemetry-configuration/src/EnvironmentConfigProvider.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { DiagLogLevel } from '@opentelemetry/api';
1817
import {
1918
ConfigurationModel,
2019
initializeDefaultConfiguration,
@@ -37,10 +36,9 @@ export class EnvironmentConfigProvider implements ConfigProvider {
3736
this._config = initializeDefaultConfiguration();
3837
this._config.disabled = getBooleanFromEnv('OTEL_SDK_DISABLED');
3938

40-
const logLevel = getStringFromEnv('OTEL_LOG_LEVEL');
39+
const logLevel = diagLogLevelFromString(getStringFromEnv('OTEL_LOG_LEVEL'));
4140
if (logLevel) {
42-
this._config.log_level =
43-
diagLogLevelFromString(logLevel) ?? DiagLogLevel.INFO;
41+
this._config.log_level = logLevel;
4442
}
4543

4644
const nodeResourceDetectors = getStringListFromEnv(

experimental/packages/opentelemetry-configuration/src/FileConfigProvider.ts

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import {
2626
import { ConfigProvider } from './IConfigProvider';
2727
import * as fs from 'fs';
2828
import * as yaml from 'yaml';
29-
import { DiagLogLevel } from '@opentelemetry/api';
3029

3130
export class FileConfigProvider implements ConfigProvider {
3231
private _config: ConfigurationModel;
@@ -67,19 +66,35 @@ function ParseConfigFile(config: ConfigurationModel) {
6766
parsedContent['file_format'] &&
6867
supportedFileVersions.includes(parsedContent['file_format'])
6968
) {
70-
config.disabled = setValue(config.disabled, parsedContent['disabled']);
71-
config.log_level = setValue(
69+
const disabled = getValue(config.disabled, parsedContent['disabled']);
70+
if (disabled || disabled === false) {
71+
config.disabled = disabled;
72+
}
73+
74+
const logLevel = getValue(
7275
config.log_level,
73-
diagLogLevelFromString(parsedContent['log_level']) ?? DiagLogLevel.INFO
76+
diagLogLevelFromString(parsedContent['log_level'])
7477
);
75-
config.resource.attributes_list = setValue(
78+
if (logLevel) {
79+
config.log_level = logLevel;
80+
}
81+
82+
const attrList = getValue(
7683
config.resource.attributes_list,
7784
parsedContent['resource']?.['attributes_list']
7885
);
79-
config.resource.schema_url = setValue(
86+
if (attrList) {
87+
config.resource.attributes_list = attrList;
88+
}
89+
90+
const schemaUrl = getValue(
8091
config.resource.schema_url,
8192
parsedContent['resource']?.['schema_url']
8293
);
94+
if (schemaUrl) {
95+
config.resource.schema_url = schemaUrl;
96+
}
97+
8398
setResourceAttributes(config, parsedContent['resource']?.['attributes']);
8499

85100
setValuesFromEnvVariables(config);
@@ -91,17 +106,14 @@ function ParseConfigFile(config: ConfigurationModel) {
91106
}
92107

93108
// eslint-disable-next-line @typescript-eslint/no-explicit-any
94-
function setValue(obj: unknown, value: unknown): any {
95-
if (value) {
96-
return value;
97-
}
109+
function getValue(obj: unknown, value: unknown): any {
98110
if (typeof obj === 'boolean') {
99111
const raw = String(value)?.trim().toLowerCase();
100112
if (raw === 'false') {
101113
return false;
102114
}
103115
}
104-
return obj;
116+
return value;
105117
}
106118

107119
/**

experimental/packages/opentelemetry-configuration/test/ConfigProvider.test.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ describe('ConfigProvider', function () {
160160
describe('get values from config file', function () {
161161
afterEach(function () {
162162
delete process.env.OTEL_EXPERIMENTAL_CONFIG_FILE;
163+
delete process.env.OTEL_NODE_RESOURCE_DETECTORS;
163164
});
164165

165166
it('should initialize config with default values from valid config file', function () {
@@ -179,6 +180,13 @@ describe('ConfigProvider', function () {
179180
});
180181
});
181182

183+
it('should return error from invalid config file format', function () {
184+
process.env.OTEL_EXPERIMENTAL_CONFIG_FILE = 'test/fixtures/invalid.yaml';
185+
assert.throws(() => {
186+
createConfigProvider();
187+
});
188+
});
189+
182190
it('should initialize config with default values with empty string for config file', function () {
183191
process.env.OTEL_EXPERIMENTAL_CONFIG_FILE = '';
184192
const configProvider = createConfigProvider();
@@ -196,5 +204,30 @@ describe('ConfigProvider', function () {
196204
defaultConfig
197205
);
198206
});
207+
208+
it('should initialize config with default values from valid short config file', function () {
209+
process.env.OTEL_EXPERIMENTAL_CONFIG_FILE =
210+
'test/fixtures/short-config.yml';
211+
const configProvider = createConfigProvider();
212+
assert.deepStrictEqual(
213+
configProvider.getInstrumentationConfig(),
214+
defaultConfig
215+
);
216+
});
217+
218+
it('should initialize config with default values from valid config file and node resources', function () {
219+
process.env.OTEL_EXPERIMENTAL_CONFIG_FILE =
220+
'test/fixtures/short-config.yml';
221+
process.env.OTEL_NODE_RESOURCE_DETECTORS = 'env,host, serviceinstance';
222+
const expectedConfig = {
223+
...defaultConfig,
224+
node_resource_detectors: ['env', 'host', 'serviceinstance'],
225+
};
226+
const configProvider = createConfigProvider();
227+
assert.deepStrictEqual(
228+
configProvider.getInstrumentationConfig(),
229+
expectedConfig
230+
);
231+
});
199232
});
200233
});
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
file_format: "invalid"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
file_format: "1.0-rc.1"
2+
disabled: false

0 commit comments

Comments
 (0)