[Azure Monitor OpenTelemetry] Use dev-tool to run tests (#28805)

### Packages impacted by this PR
@azure/monitor-opentelemetry
@azure/monitor-opentelemetry-exporter
This commit is contained in:
Hector Hernandez 2024-03-06 16:11:30 -08:00 коммит произвёл GitHub
Родитель 622db94c04
Коммит bf4efc7457
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
8 изменённых файлов: 39 добавлений и 56 удалений

Просмотреть файл

@ -2285,8 +2285,8 @@ packages:
- '@types/node'
dev: false
/@microsoft/applicationinsights-web-snippet@1.1.1:
resolution: {integrity: sha512-uITh+P/cfN+nkUfazVt9paML6rjc6H/VWdw0jb4PUj7JG1w4hamjxkYWFvDjMZfhZ75tC4kgepPgOeG2i610Qg==}
/@microsoft/applicationinsights-web-snippet@1.0.1:
resolution: {integrity: sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ==}
dev: false
/@microsoft/tsdoc-config@0.16.2:
@ -20275,13 +20275,13 @@ packages:
dev: false
file:projects/monitor-opentelemetry.tgz:
resolution: {integrity: sha512-znsAUq8KrMWEZpRYoUUwSamsOFAjKPrQJc2leRHM/QcMAO3ghlYvgfgAovlsaaQ8jQ+Q7V1uTGBIu77mAy2Nrw==, tarball: file:projects/monitor-opentelemetry.tgz}
resolution: {integrity: sha512-sc28ib7qotd1/rGYwlwDlfVxgvIi1DsFJT1pUvM3kaPmfN0a2hzSpFZyUuqejK8op4BtMpTS6tfzesAo4oL0aQ==, tarball: file:projects/monitor-opentelemetry.tgz}
name: '@rush-temp/monitor-opentelemetry'
version: 0.0.0
dependencies:
'@azure/functions': 3.5.1
'@microsoft/api-extractor': 7.41.0(@types/node@18.19.18)
'@microsoft/applicationinsights-web-snippet': 1.1.1
'@microsoft/applicationinsights-web-snippet': 1.0.1
'@opentelemetry/api': 1.7.0
'@opentelemetry/api-logs': 0.48.0
'@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0)
@ -20305,6 +20305,7 @@ packages:
'@types/node': 18.19.18
'@types/sinon': 17.0.3
c8: 8.0.1
cross-env: 7.0.3
dotenv: 16.4.5
eslint: 8.57.0
eslint-plugin-node: 11.1.0(eslint@8.57.0)

Просмотреть файл

@ -10,9 +10,9 @@
"scripts": {
"clean": "rimraf dist-esm types dist",
"build:browser": "echo skipped",
"build:test": "echo skipped",
"build:node": "tsc -p . && dev-tool run bundle --browser-test=false",
"build:samples": "dev-tool samples publish --force",
"build:test": "tsc -p . && dev-tool run bundle --browser-test=false",
"build:samples": "echo Obsolete.",
"build": "npm run build:node && npm run build:browser && api-extractor run --local",
"check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"",
"execute:samples": "dev-tool samples run samples-dev",
@ -21,17 +21,16 @@
"generate:client": "autorest --typescript ./swagger/README.md",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]",
"lint": "eslint package.json api-extractor.json src test --ext .ts -f html -o telemetry-exporter-lintReport.html || exit 0",
"test": "npm run test:node && npm run test:browser",
"test:node": "npm run unit-test:node",
"test": "npm run clean && npm run build:test && npm run unit-test",
"test:node": "npm run clean && npm run build:test && npm run unit-test:node",
"test:browser": "npm run unit-test:browser",
"unit-test:browser": "echo skipped",
"unit-test:node": "mocha -r ../../../common/tools/esm-workaround.js -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --reporter-option output=test-results.xml --timeout 1200000 --full-trace \"dist-esm/test/internal/**/*.test.js\"",
"unit-test:node:debug": "mocha --inspect-brk -r ../../../common/tools/esm-workaround.js -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --reporter-option output=test-results.xml --timeout 1200000 --full-trace \"dist-esm/test/internal/**/*.test.js\"",
"unit-test:node": "dev-tool run test:node-ts-input --no-test-proxy=true -- --timeout 1200000 \"test/internal/**/*.test.ts\"",
"unit-test:node:debug": "dev-tool run test:node-ts-input --no-test-proxy=true -- --inspect-brk \"test/internal/**/*.test.ts\"",
"unit-test:node:no-timeout": "echo skipped",
"unit-test": "npm run unit-test:node && npm run unit-test:browser",
"functional-test": "mocha -r ../../../common/tools/esm-workaround.js -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --reporter-option output=test-results.xml --timeout 1200000 --full-trace \"dist-esm/test/internal/functional/*.test.js\"",
"integration-test:browser": "echo skipped",
"integration-test:node": "npm run functional-test",
"integration-test:node": "dev-tool run test:node-ts-input --no-test-proxy=true -- --timeout 1200000 \"test/internal/functional/**/*.test.ts\"",
"integration-test": "npm run integration-test:node && npm run integration-test:browser",
"report": "nyc report --reporter=json",
"test-opentelemetry-versions": "node test-opentelemetry-versions.js 2>&1",

Просмотреть файл

@ -26,7 +26,7 @@ import { Tags } from "../../src/types";
import { Context, getInstance } from "../../src/platform";
const context = getInstance();
const packageJsonPath = path.resolve(__dirname, "../../../", "./package.json");
const packageJsonPath = path.resolve(__dirname, "../../", "./package.json");
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
let testMetrics: ResourceMetrics;

Просмотреть файл

@ -32,7 +32,7 @@ const tracerProviderConfig: TracerConfig = {
};
const tracer = new BasicTracerProvider(tracerProviderConfig).getTracer("default");
const packageJsonPath = path.resolve(__dirname, "../../../", "./package.json");
const packageJsonPath = path.resolve(__dirname, "../../", "./package.json");
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
function assertEnvelope(

Просмотреть файл

@ -8,30 +8,28 @@
"module": "dist-esm/src/index.js",
"types": "types/monitor-opentelemetry.d.ts",
"scripts": {
"clean": "rimraf dist-esm types dist",
"build:samples": "echo Obsolete.",
"build:browser": "echo skipped",
"build:test": "echo skipped",
"build:node": "tsc -p . && dev-tool run bundle --browser-test=false",
"build:samples": "dev-tool samples publish --force",
"build:test": "tsc -p . && dev-tool run bundle --browser-test=false",
"build": "npm run build:node && npm run build:browser && api-extractor run --local",
"check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"",
"clean": "rimraf dist-esm types dist",
"execute:samples": "dev-tool samples run samples-dev",
"extract-api": "tsc -p . && api-extractor run --local",
"format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"",
"generate:client": "autorest --typescript ./swagger/README.md",
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]",
"lint": "eslint package.json api-extractor.json src test --ext .ts -f html -o telemetry-lintReport.html || exit 0",
"test": "npm run test:node && npm run test:browser",
"test:node": "npm run unit-test:node",
"test:node": "npm run clean && npm run build:test && npm run unit-test:node",
"test": "npm run clean && npm run build:test && npm run unit-test",
"test:browser": "npm run unit-test:browser",
"unit-test:browser": "echo skipped",
"unit-test:node": "mocha -r ../../../common/tools/esm-workaround -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --reporter-option output=test-results.xml --timeout 1200000 --full-trace \"dist-esm/test/internal/unit/**/*.test.js\"",
"unit-test:node:debug": "mocha --inspect-brk -r ../../../common/tools/esm-workaround -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --reporter-option output=test-results.xml --timeout 1200000 --full-trace \"dist-esm/test/internal/unit/**/*.test.js\"",
"unit-test:node:no-timeout": "echo skipped",
"unit-test:node": "dev-tool run test:node-ts-input --no-test-proxy=true -- \"test/internal/unit/**/*.test.ts\"",
"unit-test:node:debug": "dev-tool run test:node-ts-input --no-test-proxy=true -- --inspect-brk \"test/internal/unit/**/*.test.ts\"",
"unit-test": "npm run unit-test:node && npm run unit-test:browser",
"functional-test": "mocha -r ../../../common/tools/esm-workaround -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --reporter-option output=test-results.xml --timeout 1200000 --full-trace \"dist-esm/test/internal/functional/*.test.js\"",
"integration-test:browser": "echo skipped",
"integration-test:node": "npm run functional-test",
"integration-test:node": "dev-tool run test:node-ts-input --no-test-proxy=true -- \"test/internal/functional/**/*.test.ts\"",
"integration-test": "npm run integration-test:node && npm run integration-test:browser",
"report": "nyc report --reporter=json",
"test-opentelemetry-versions": "node test-opentelemetry-versions.js 2>&1",
@ -68,6 +66,7 @@
"devDependencies": {
"@azure/dev-tool": "^1.0.0",
"@azure/eslint-plugin-azure-sdk": "^3.0.0",
"@azure/test-utils": "^1.0.0",
"@microsoft/api-extractor": "^7.31.1",
"@types/mocha": "^10.0.0",
"@types/node": "^18.0.0",
@ -78,6 +77,7 @@
"mocha": "^10.0.0",
"nock": "^12.0.3",
"c8": "^8.0.0",
"cross-env": "^7.0.3",
"rimraf": "^3.0.0",
"sinon": "^17.0.0",
"ts-node": "^10.0.0",
@ -111,7 +111,7 @@
"@opentelemetry/sdk-trace-node": "^1.21.0",
"@opentelemetry/semantic-conventions": "^1.21.0",
"tslib": "^2.2.0",
"@microsoft/applicationinsights-web-snippet": "^1.0.1",
"@microsoft/applicationinsights-web-snippet": "1.0.1",
"@opentelemetry/resource-detector-azure": "^0.2.4"
},
"sideEffects": false,

Просмотреть файл

@ -36,6 +36,8 @@ export class JsonConfig implements AzureMonitorOpenTelemetryOptions {
private static _instance: JsonConfig;
private _tempDir: string;
/** Get Singleton instance */
public static getInstance() {
if (!JsonConfig._instance) {
@ -48,11 +50,8 @@ export class JsonConfig implements AzureMonitorOpenTelemetryOptions {
* Initializes a new instance of the JsonConfig class.
*/
constructor() {
this._loadJsonFile();
}
private _loadJsonFile() {
let jsonString = "";
this._tempDir = "";
const contentJsonConfig = process.env[ENV_CONTENT];
// JSON string added directly in env variable
if (contentJsonConfig) {
@ -62,17 +61,17 @@ export class JsonConfig implements AzureMonitorOpenTelemetryOptions {
else {
let configFileName = "applicationinsights.json";
let rootPath = path.join(__dirname, "../../../"); // Root of folder (__dirname = ../dist-esm/src)
let tempDir = path.join(rootPath, configFileName); // default
this._tempDir = path.join(rootPath, configFileName); // default
let configFile = process.env[ENV_CONFIGURATION_FILE];
if (configFile) {
if (path.isAbsolute(configFile)) {
tempDir = configFile;
this._tempDir = configFile;
} else {
tempDir = path.join(rootPath, configFile); // Relative path to applicationinsights folder
this._tempDir = path.join(rootPath, configFile); // Relative path to applicationinsights folder
}
}
try {
jsonString = fs.readFileSync(tempDir, "utf8");
jsonString = fs.readFileSync(this._tempDir, "utf8");
} catch (err) {
Logger.getInstance().info("Failed to read JSON config file: ", err);
}

Просмотреть файл

@ -34,10 +34,7 @@ describe("Library/Config", () => {
it("merge JSON config", () => {
(JsonConfig["_instance"] as any) = undefined;
const env = <{ [id: string]: string }>{};
const customConfigJSONPath = path.resolve(
__dirname,
"../../../../../test/internal/unit/shared/config.json",
);
const customConfigJSONPath = path.resolve(__dirname, "config.json");
env["APPLICATIONINSIGHTS_CONFIGURATION_FILE"] = customConfigJSONPath; // Load JSON config
process.env = env;
const config = new InternalConfig();

Просмотреть файл

@ -3,7 +3,6 @@
import * as assert from "assert";
import * as sinon from "sinon";
import * as fs from "fs";
import * as path from "path";
import { JsonConfig } from "../../../../src/shared/jsonConfig";
@ -28,20 +27,14 @@ describe("Json Config", () => {
describe("config path", () => {
it("Default file path", () => {
const fileSpy = sandbox.spy(fs, "readFileSync");
const config = JsonConfig.getInstance();
config["_loadJsonFile"]();
assert.ok(fileSpy.called);
const defaultPath = path.resolve(process.cwd(), "applicationinsights.json");
assert.deepStrictEqual(fileSpy.args[0][0], defaultPath);
let defaultPath = path.join(process.cwd(), "../", "applicationinsights.json");
assert.deepStrictEqual(config["_tempDir"], defaultPath);
});
it("Absolute file path", () => {
const env = <{ [id: string]: string }>{};
const customConfigJSONPath = path.resolve(
__dirname,
"../../../../../test/internal/unit/shared/config.json",
);
const customConfigJSONPath = path.resolve(__dirname, "config.json");
env["APPLICATIONINSIGHTS_CONFIGURATION_FILE"] = customConfigJSONPath;
process.env = env;
const config = JsonConfig.getInstance();
@ -53,7 +46,7 @@ describe("Json Config", () => {
it("Relative file path", () => {
const env = <{ [id: string]: string }>{};
const customConfigJSONPath = "./test/internal/unit/shared/config.json";
const customConfigJSONPath = "monitor-opentelemetry/test/internal/unit/shared/config.json";
env["APPLICATIONINSIGHTS_CONFIGURATION_FILE"] = customConfigJSONPath;
process.env = env;
const config = JsonConfig.getInstance();
@ -67,10 +60,7 @@ describe("Json Config", () => {
describe("configuration values", () => {
it("Should take configurations from JSON config file", () => {
const env = <{ [id: string]: string }>{};
const customConfigJSONPath = path.resolve(
__dirname,
"../../../../../test/internal/unit/shared/config.json",
);
const customConfigJSONPath = path.resolve(__dirname, "config.json");
env["APPLICATIONINSIGHTS_CONFIGURATION_FILE"] = customConfigJSONPath;
process.env = env;
const config = JsonConfig.getInstance();
@ -103,10 +93,7 @@ describe("Json Config", () => {
it("Should take configurations from JSON config file over environment variables if both are configured", () => {
const env = <{ [id: string]: string }>{};
const customConfigJSONPath = path.resolve(
__dirname,
"../../../../../test/internal/unit/shared/config.json",
);
const customConfigJSONPath = path.resolve(__dirname, "config.json");
env["APPLICATIONINSIGHTS_CONFIGURATION_FILE"] = customConfigJSONPath;
env["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "TestConnectionString";
process.env = env;