Introduce a centralised way to emit telemetry from calls of injectable functions (#6164)

Co-authored-by: Janne Savolainen <janne.savolainen@live.fi>
Co-authored-by: Juho Heikka <juho.heikka@gmail.com>
This commit is contained in:
authored and GitHub committed 2022-09-02 09:33:22 -04:00
1 parent 60b538eec1
commit fc3512daf2
43 files changed
+527 -163

No files matched your search

+15 -12
View File
@@ -5,24 +5,27 @@
import { createContainer } from "@ogre-tools/injectable";
import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import { runInAction } from "mobx";
import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
export const getDi = () => {
const di = createContainer("main");
registerMobX(di);
autoRegister({
di,
requireContexts: [
require.context("./", true, /\.injectable\.(ts|tsx)$/),
require.context("../extensions", true, /\.injectable\.(ts|tsx)$/),
require.context("../common", true, /\.injectable\.(ts|tsx)$/),
require.context("../features", true, /.*\/(main|common)\/.*\.injectable\.(ts|tsx)$/),
],
});
setLegacyGlobalDiForExtensionApi(di, Environments.main);
runInAction(() => {
registerMobX(di);
autoRegister({
di,
requireContexts: [
require.context("./", true, /\.injectable\.(ts|tsx)$/),
require.context("../extensions", true, /\.injectable\.(ts|tsx)$/),
require.context("../common", true, /\.injectable\.(ts|tsx)$/),
require.context("../features", true, /.*\/(main|common)\/.*\.injectable\.(ts|tsx)$/),
],
});
});
return di;
};
+9 -7
View File
@@ -55,7 +55,7 @@ import setupRunnablesBeforeClosingOfApplicationInjectable from "./electron-app/r
import showMessagePopupInjectable from "./electron-app/features/show-message-popup.injectable";
import clusterFramesInjectable from "../common/cluster-frames.injectable";
import type { ClusterFrameInfo } from "../common/cluster-frames";
import { observable } from "mobx";
import { observable, runInAction } from "mobx";
import waitForElectronToBeReadyInjectable from "./electron-app/features/wait-for-electron-to-be-ready.injectable";
import setupListenerForCurrentClusterFrameInjectable from "./start-main-application/lens-window/current-cluster-frame/setup-listener-for-current-cluster-frame.injectable";
import setupRunnablesAfterWindowIsOpenedInjectable from "./electron-app/runnables/setup-runnables-after-window-is-opened.injectable";
@@ -103,19 +103,21 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {})
const di = createContainer("main");
registerMobX(di);
setLegacyGlobalDiForExtensionApi(di, Environments.main);
di.preventSideEffects();
const injectables: Injectable<any, any, any>[] = (global as any).mainInjectablePaths.map(
(filePath: string) => require(filePath).default,
);
chunk(100)(injectables).forEach(chunkInjectables => {
di.register(...chunkInjectables);
});
runInAction(() => {
registerMobX(di);
di.preventSideEffects();
chunk(100)(injectables).forEach(chunkInjectables => {
di.register(...chunkInjectables);
});
});
if (doGeneralOverrides) {
const globalOverrides: GlobalOverride[] = (global as any).mainGlobalOverridePaths.map(
+4 -1
View File
@@ -20,6 +20,7 @@ import type { SetRequired } from "type-fest";
import normalizedPlatformInjectable from "../../common/vars/normalized-platform.injectable";
import kubectlBinaryNameInjectable from "../kubectl/binary-name.injectable";
import kubectlDownloadingNormalizedArchInjectable from "../kubectl/normalized-arch.injectable";
import { runInAction } from "mobx";
describe("router", () => {
let router: Router;
@@ -53,7 +54,9 @@ describe("router", () => {
injectionToken: routeInjectionToken,
});
di.register(injectable);
runInAction(() => {
di.register(injectable);
});
router = di.inject(routerInjectable);
});
@@ -10,6 +10,7 @@ import appNameInjectable from "../../../app-paths/app-name/app-name.injectable";
import appEventBusInjectable from "../../../../common/app-event-bus/app-event-bus.injectable";
import waitUntilBundledExtensionsAreLoadedInjectable from "./wait-until-bundled-extensions-are-loaded.injectable";
import { applicationWindowInjectionToken } from "./application-window-injection-token";
import { runInAction } from "mobx";
const createApplicationWindowInjectable = getInjectable({
id: "create-application-window",
@@ -49,7 +50,9 @@ const createApplicationWindowInjectable = getInjectable({
},
onClose: () => {
parentDi.deregister(windowInjectable);
runInAction(() => {
parentDi.deregister(windowInjectable);
});
},
beforeOpen: waitUntilBundledExtensionsAreLoaded,
@@ -59,7 +62,9 @@ const createApplicationWindowInjectable = getInjectable({
injectionToken: applicationWindowInjectionToken,
});
parentDi.register(windowInjectable);
runInAction(() => {
parentDi.register(windowInjectable);
});
return parentDi.inject(windowInjectable);
},
@@ -20,7 +20,7 @@ describe("technical: resolve-system-proxy-from-electron", () => {
let actualPromise: Promise<string>;
beforeEach(() => {
di = getDiForUnitTesting();
di = getDiForUnitTesting({ doGeneralOverrides: true });
logErrorMock = jest.fn();
di.override(logErrorInjectable, () => logErrorMock);