mirror of
https://github.com/strapi/strapi.git
synced 2025-09-15 19:39:06 +00:00
Merge pull request #16255 from strapi/fix/tracking-system-transfer
This commit is contained in:
commit
eeed535680
@ -55,6 +55,7 @@ describe('Export', () => {
|
|||||||
|
|
||||||
// mock utils
|
// mock utils
|
||||||
const mockUtils = {
|
const mockUtils = {
|
||||||
|
getTransferTelemetryPayload: jest.fn().mockReturnValue({}),
|
||||||
loadersFactory: jest.fn().mockReturnValue({ updateLoader: jest.fn() }),
|
loadersFactory: jest.fn().mockReturnValue({ updateLoader: jest.fn() }),
|
||||||
formatDiagnostic: jest.fn(),
|
formatDiagnostic: jest.fn(),
|
||||||
createStrapiInstance() {
|
createStrapiInstance() {
|
||||||
|
@ -63,6 +63,7 @@ describe('Import', () => {
|
|||||||
|
|
||||||
// mock utils
|
// mock utils
|
||||||
const mockUtils = {
|
const mockUtils = {
|
||||||
|
getTransferTelemetryPayload: jest.fn().mockReturnValue({}),
|
||||||
loadersFactory: jest.fn().mockReturnValue({ updateLoader: jest.fn() }),
|
loadersFactory: jest.fn().mockReturnValue({ updateLoader: jest.fn() }),
|
||||||
formatDiagnostic: jest.fn(),
|
formatDiagnostic: jest.fn(),
|
||||||
createStrapiInstance: jest.fn().mockReturnValue({
|
createStrapiInstance: jest.fn().mockReturnValue({
|
||||||
|
@ -5,6 +5,7 @@ const { expectExit } = require('./shared/transfer.test.utils');
|
|||||||
describe('Transfer', () => {
|
describe('Transfer', () => {
|
||||||
// mock utils
|
// mock utils
|
||||||
const mockUtils = {
|
const mockUtils = {
|
||||||
|
getTransferTelemetryPayload: jest.fn().mockReturnValue({}),
|
||||||
loadersFactory: jest.fn().mockReturnValue({ updateLoader: jest.fn() }),
|
loadersFactory: jest.fn().mockReturnValue({ updateLoader: jest.fn() }),
|
||||||
formatDiagnostic: jest.fn(),
|
formatDiagnostic: jest.fn(),
|
||||||
createStrapiInstance() {
|
createStrapiInstance() {
|
||||||
|
@ -24,6 +24,7 @@ const {
|
|||||||
loadersFactory,
|
loadersFactory,
|
||||||
exitMessageText,
|
exitMessageText,
|
||||||
abortTransfer,
|
abortTransfer,
|
||||||
|
getTransferTelemetryPayload,
|
||||||
} = require('./utils');
|
} = require('./utils');
|
||||||
const { exitWith } = require('../utils/helpers');
|
const { exitWith } = require('../utils/helpers');
|
||||||
/**
|
/**
|
||||||
@ -103,19 +104,10 @@ module.exports = async (opts) => {
|
|||||||
updateLoader(stage, data);
|
updateLoader(stage, data);
|
||||||
});
|
});
|
||||||
|
|
||||||
const getTelemetryPayload = (/* payload */) => {
|
|
||||||
return {
|
|
||||||
eventProperties: {
|
|
||||||
source: engine.sourceProvider.name,
|
|
||||||
destination: engine.destinationProvider.name,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
progress.on('transfer::start', async () => {
|
progress.on('transfer::start', async () => {
|
||||||
console.log(`Starting export...`);
|
console.log(`Starting export...`);
|
||||||
|
|
||||||
await strapi.telemetry.send('didDEITSProcessStart', getTelemetryPayload());
|
await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));
|
||||||
});
|
});
|
||||||
|
|
||||||
let results;
|
let results;
|
||||||
@ -134,11 +126,13 @@ module.exports = async (opts) => {
|
|||||||
throw new TransferEngineTransferError(`Export file not created "${outFile}"`);
|
throw new TransferEngineTransferError(`Export file not created "${outFile}"`);
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
await strapi.telemetry.send('didDEITSProcessFail', getTelemetryPayload());
|
await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));
|
||||||
exitWith(1, exitMessageText('export', true));
|
exitWith(1, exitMessageText('export', true));
|
||||||
}
|
}
|
||||||
|
|
||||||
await strapi.telemetry.send('didDEITSProcessFinish', getTelemetryPayload());
|
// Note: we need to await telemetry or else the process ends before it is sent
|
||||||
|
await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const table = buildTransferTable(results.engine);
|
const table = buildTransferTable(results.engine);
|
||||||
console.log(table.toString());
|
console.log(table.toString());
|
||||||
|
@ -20,6 +20,7 @@ const {
|
|||||||
loadersFactory,
|
loadersFactory,
|
||||||
exitMessageText,
|
exitMessageText,
|
||||||
abortTransfer,
|
abortTransfer,
|
||||||
|
getTransferTelemetryPayload,
|
||||||
} = require('./utils');
|
} = require('./utils');
|
||||||
const { exitWith } = require('../utils/helpers');
|
const { exitWith } = require('../utils/helpers');
|
||||||
|
|
||||||
@ -122,18 +123,12 @@ module.exports = async (opts) => {
|
|||||||
updateLoader(stage, data);
|
updateLoader(stage, data);
|
||||||
});
|
});
|
||||||
|
|
||||||
const getTelemetryPayload = () => {
|
|
||||||
return {
|
|
||||||
eventProperties: {
|
|
||||||
source: engine.sourceProvider.name,
|
|
||||||
destination: engine.destinationProvider.name,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
progress.on('transfer::start', async () => {
|
progress.on('transfer::start', async () => {
|
||||||
console.log('Starting import...');
|
console.log('Starting import...');
|
||||||
await strapiInstance.telemetry.send('didDEITSProcessStart', getTelemetryPayload());
|
await strapiInstance.telemetry.send(
|
||||||
|
'didDEITSProcessStart',
|
||||||
|
getTransferTelemetryPayload(engine)
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
let results;
|
let results;
|
||||||
@ -146,7 +141,7 @@ module.exports = async (opts) => {
|
|||||||
|
|
||||||
results = await engine.transfer();
|
results = await engine.transfer();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
await strapiInstance.telemetry.send('didDEITSProcessFail', getTelemetryPayload());
|
await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));
|
||||||
exitWith(1, exitMessageText('import', true));
|
exitWith(1, exitMessageText('import', true));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +152,8 @@ module.exports = async (opts) => {
|
|||||||
console.error('There was an error displaying the results of the transfer.');
|
console.error('There was an error displaying the results of the transfer.');
|
||||||
}
|
}
|
||||||
|
|
||||||
await strapiInstance.telemetry.send('didDEITSProcessFinish', getTelemetryPayload());
|
// Note: we need to await telemetry or else the process ends before it is sent
|
||||||
|
await strapiInstance.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));
|
||||||
await strapiInstance.destroy();
|
await strapiInstance.destroy();
|
||||||
|
|
||||||
exitWith(0, exitMessageText('import'));
|
exitWith(0, exitMessageText('import'));
|
||||||
|
@ -21,6 +21,7 @@ const {
|
|||||||
loadersFactory,
|
loadersFactory,
|
||||||
exitMessageText,
|
exitMessageText,
|
||||||
abortTransfer,
|
abortTransfer,
|
||||||
|
getTransferTelemetryPayload,
|
||||||
} = require('./utils');
|
} = require('./utils');
|
||||||
const { exitWith } = require('../utils/helpers');
|
const { exitWith } = require('../utils/helpers');
|
||||||
|
|
||||||
@ -161,10 +162,14 @@ module.exports = async (opts) => {
|
|||||||
updateLoader(stage, data).fail();
|
updateLoader(stage, data).fail();
|
||||||
});
|
});
|
||||||
|
|
||||||
let results;
|
progress.on('transfer::start', async () => {
|
||||||
try {
|
|
||||||
console.log(`Starting transfer...`);
|
console.log(`Starting transfer...`);
|
||||||
|
|
||||||
|
await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));
|
||||||
|
});
|
||||||
|
|
||||||
|
let results;
|
||||||
|
try {
|
||||||
// Abort transfer if user interrupts process
|
// Abort transfer if user interrupts process
|
||||||
['SIGTERM', 'SIGINT', 'SIGQUIT'].forEach((signal) => {
|
['SIGTERM', 'SIGINT', 'SIGQUIT'].forEach((signal) => {
|
||||||
process.removeAllListeners(signal);
|
process.removeAllListeners(signal);
|
||||||
@ -173,10 +178,19 @@ module.exports = async (opts) => {
|
|||||||
|
|
||||||
results = await engine.transfer();
|
results = await engine.transfer();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));
|
||||||
exitWith(1, exitMessageText('transfer', true));
|
exitWith(1, exitMessageText('transfer', true));
|
||||||
}
|
}
|
||||||
|
|
||||||
const table = buildTransferTable(results.engine);
|
// Note: we need to await telemetry or else the process ends before it is sent
|
||||||
console.log(table.toString());
|
await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));
|
||||||
|
|
||||||
|
try {
|
||||||
|
const table = buildTransferTable(results.engine);
|
||||||
|
console.log(table.toString());
|
||||||
|
} catch (e) {
|
||||||
|
console.error('There was an error displaying the results of the transfer.');
|
||||||
|
}
|
||||||
|
|
||||||
exitWith(0, exitMessageText('transfer'));
|
exitWith(0, exitMessageText('transfer'));
|
||||||
};
|
};
|
||||||
|
@ -242,10 +242,26 @@ const loadersFactory = (defaultLoaders = {}) => {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the telemetry data to be sent for a didDEITSProcess* event from an initialized transfer engine object
|
||||||
|
*
|
||||||
|
* @param {import('@strapi/data-transfer/types').ITransferEngine} engine Initialized transfer engine
|
||||||
|
* @returns {object} Telemetry properties object
|
||||||
|
*/
|
||||||
|
const getTransferTelemetryPayload = (engine) => {
|
||||||
|
return {
|
||||||
|
eventProperties: {
|
||||||
|
source: engine?.sourceProvider?.name,
|
||||||
|
destination: engine?.destinationProvider?.name,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
loadersFactory,
|
loadersFactory,
|
||||||
buildTransferTable,
|
buildTransferTable,
|
||||||
getDefaultExportName,
|
getDefaultExportName,
|
||||||
|
getTransferTelemetryPayload,
|
||||||
DEFAULT_IGNORED_CONTENT_TYPES,
|
DEFAULT_IGNORED_CONTENT_TYPES,
|
||||||
createStrapiInstance,
|
createStrapiInstance,
|
||||||
excludeOption,
|
excludeOption,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user