e1c-test-tools
Version:
Набор инструментов для тестирования (предварительная версия)
109 lines (108 loc) • 4.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.stopPolling = exports.shutdownE1c = exports.bootstrapE1c = exports.bootstrapBroker = exports.checkEnvIsActive = void 0;
const core_1 = require("@nestjs/core");
const socket_io_client_1 = require("socket.io-client");
const path_1 = require("path");
const child_process_1 = require("child_process");
const socket_io_adapter_1 = require("../../server/adapters/socket-io.adapter");
const app_module_1 = require("../../server/app.module");
const checkEnvIsActive = (brokerHost, brokerPort, timeToWait = 2000) => new Promise((resolve) => {
let marker = 0;
const successMarker = 42;
const socket = socket_io_client_1.io(`http://${brokerHost}:${brokerPort}`, { 'transports': ['websocket', 'polling'] });
socket.on('connect', () => {
socket.emit('task-requests', {
'type': 'Evaluate',
'parameters': {
'expression': '6 * 7',
},
});
socket.on('task-statuses', (data) => {
if (data.status === 'Finished') {
socket.emit('task-results', { 'id': data.id });
}
});
socket.on('task-results', (data) => {
marker = parseInt(data.result, 10);
socket.disconnect();
});
});
const timeoutInterval = 100;
let counter = timeToWait / timeoutInterval;
const checkMarker = () => {
if (marker === successMarker) {
resolve(true);
}
else {
counter -= 1;
if (counter === 0) {
resolve(false);
}
else {
// eslint-disable-next-line no-unused-vars
setTimeout(checkMarker, timeoutInterval);
}
}
};
setTimeout(checkMarker, timeoutInterval);
});
exports.checkEnvIsActive = checkEnvIsActive;
const bootstrapBroker = async (brokerHost, brokerPort) => {
const app = await core_1.NestFactory.create(app_module_1.AppModule);
app.useWebSocketAdapter(new socket_io_adapter_1.SocketIoAdapter(app));
app.listen(brokerPort, brokerHost);
return app;
};
exports.bootstrapBroker = bootstrapBroker;
const bootstrapE1c = async (brokerHost, brokerPort) => {
const pathToTester = process.env.PATH_TO_TESTER_EXTERNAL_BIN_FILE || path_1.resolve(__dirname, '../../../1C/tester.epf');
const args = [
'ENTERPRISE',
`/${process.env.E1C_DB_TYPE}`,
process.env.E1C_DB_PATH,
'/N',
process.env.E1C_USER,
'/P',
process.env.E1C_PASS,
'/Execute',
path_1.resolve(pathToTester),
'/C',
`${brokerHost}:${brokerPort}`,
'/DisableStartupDialogs',
'/DisableStartupMessages',
'/DisableSplash',
];
const child = child_process_1.spawn(process.env.PATH_TO_E1C_EXECUTABLE, args, {
'detached': true,
'stdio': ['ignore', 1, 2],
});
child.unref();
};
exports.bootstrapE1c = bootstrapE1c;
const shutdownE1c = async (brokerHost, brokerPort) => {
const socket = socket_io_client_1.io(`http://${brokerHost}:${brokerPort}`, { 'transports': ['websocket', 'polling'] });
socket.on('connect', () => {
socket.emit('task-requests', {
'type': 'Management',
'parameters': {
'command': 'ShutDown',
},
});
socket.disconnect();
});
};
exports.shutdownE1c = shutdownE1c;
const stopPolling = async (brokerHost, brokerPort) => {
const socket = socket_io_client_1.io(`http://${brokerHost}:${brokerPort}`, { 'transports': ['websocket', 'polling'] });
socket.on('connect', () => {
socket.emit('task-requests', {
'type': 'Management',
'parameters': {
'command': 'StopPolling',
},
});
socket.disconnect();
});
};
exports.stopPolling = stopPolling;