116 lines
11 KiB
JavaScript
116 lines
11 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
|
|
require("source-map-support/register");
|
|
|
|
var _logger = _interopRequireDefault(require("../logger"));
|
|
|
|
var _asyncbox = require("asyncbox");
|
|
|
|
const commands = {};
|
|
|
|
commands.startBootMonitor = async function startBootMonitor(opts = {}) {
|
|
const {
|
|
timeout = 240000,
|
|
onWaitingDataMigration,
|
|
onWaitingSystemApp,
|
|
onFinished,
|
|
onError,
|
|
shouldPreboot
|
|
} = opts;
|
|
const udid = this.requireUdid('bootstatus');
|
|
let status = '';
|
|
let isBootingFinished = false;
|
|
let error = null;
|
|
let timeoutHandler = null;
|
|
const args = [udid];
|
|
|
|
if (shouldPreboot) {
|
|
args.push('-b');
|
|
}
|
|
|
|
const bootMonitor = await this.exec('bootstatus', {
|
|
args,
|
|
asynchronous: true
|
|
});
|
|
bootMonitor.on('output', (stdout, stderr) => {
|
|
status += stdout || stderr;
|
|
|
|
if (stdout) {
|
|
if (stdout.includes('Waiting on Data Migration') && onWaitingDataMigration) {
|
|
onWaitingDataMigration();
|
|
} else if (stdout.includes('Waiting on System App') && onWaitingSystemApp) {
|
|
onWaitingSystemApp();
|
|
}
|
|
}
|
|
});
|
|
bootMonitor.on('exit', (code, signal) => {
|
|
if (timeoutHandler) {
|
|
clearTimeout(timeoutHandler);
|
|
}
|
|
|
|
if (code === 0) {
|
|
if (onFinished) {
|
|
onFinished();
|
|
}
|
|
|
|
isBootingFinished = true;
|
|
} else {
|
|
status = status || signal;
|
|
error = new Error(status);
|
|
|
|
if (onError) {
|
|
onError(error);
|
|
}
|
|
}
|
|
});
|
|
await bootMonitor.start(0);
|
|
|
|
const stopMonitor = async () => {
|
|
if (bootMonitor.isRunning) {
|
|
try {
|
|
await bootMonitor.stop();
|
|
} catch (e) {
|
|
_logger.default.warn(e.message);
|
|
}
|
|
}
|
|
};
|
|
|
|
const start = process.hrtime();
|
|
|
|
if (onFinished) {
|
|
timeoutHandler = setTimeout(stopMonitor, timeout);
|
|
} else {
|
|
try {
|
|
await (0, _asyncbox.waitForCondition)(() => {
|
|
if (error) {
|
|
throw error;
|
|
}
|
|
|
|
return isBootingFinished;
|
|
}, {
|
|
waitMs: timeout,
|
|
intervalMs: 500
|
|
});
|
|
} catch (err) {
|
|
await stopMonitor();
|
|
const [seconds] = process.hrtime(start);
|
|
throw new Error(`The simulator ${udid} has failed to finish booting after ${seconds}s. ` + `Original status: ${status}`);
|
|
}
|
|
}
|
|
|
|
return bootMonitor;
|
|
};
|
|
|
|
var _default = commands;
|
|
exports.default = _default;require('source-map-support').install();
|
|
|
|
|
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zdWJjb21tYW5kcy9ib290c3RhdHVzLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwic3RhcnRCb290TW9uaXRvciIsIm9wdHMiLCJ0aW1lb3V0Iiwib25XYWl0aW5nRGF0YU1pZ3JhdGlvbiIsIm9uV2FpdGluZ1N5c3RlbUFwcCIsIm9uRmluaXNoZWQiLCJvbkVycm9yIiwic2hvdWxkUHJlYm9vdCIsInVkaWQiLCJyZXF1aXJlVWRpZCIsInN0YXR1cyIsImlzQm9vdGluZ0ZpbmlzaGVkIiwiZXJyb3IiLCJ0aW1lb3V0SGFuZGxlciIsImFyZ3MiLCJwdXNoIiwiYm9vdE1vbml0b3IiLCJleGVjIiwiYXN5bmNocm9ub3VzIiwib24iLCJzdGRvdXQiLCJzdGRlcnIiLCJpbmNsdWRlcyIsImNvZGUiLCJzaWduYWwiLCJjbGVhclRpbWVvdXQiLCJFcnJvciIsInN0YXJ0Iiwic3RvcE1vbml0b3IiLCJpc1J1bm5pbmciLCJzdG9wIiwiZSIsImxvZyIsIndhcm4iLCJtZXNzYWdlIiwicHJvY2VzcyIsImhydGltZSIsInNldFRpbWVvdXQiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwiZXJyIiwic2Vjb25kcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBMEJBQSxRQUFRLENBQUNDLGdCQUFULEdBQTRCLGVBQWVBLGdCQUFmLENBQWlDQyxJQUFJLEdBQUcsRUFBeEMsRUFBNEM7QUFDdEUsUUFBTTtBQUNKQyxJQUFBQSxPQUFPLEdBQUcsTUFETjtBQUVKQyxJQUFBQSxzQkFGSTtBQUdKQyxJQUFBQSxrQkFISTtBQUlKQyxJQUFBQSxVQUpJO0FBS0pDLElBQUFBLE9BTEk7QUFNSkMsSUFBQUE7QUFOSSxNQU9GTixJQVBKO0FBUUEsUUFBTU8sSUFBSSxHQUFHLEtBQUtDLFdBQUwsQ0FBaUIsWUFBakIsQ0FBYjtBQUVBLE1BQUlDLE1BQU0sR0FBRyxFQUFiO0FBQ0EsTUFBSUMsaUJBQWlCLEdB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R0Q7QUFDRjs7QUFDRCxTQUFPTSxXQUFQO0FBQ0QsQ0FoRkQ7O2VBa0ZlakIsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBCb290TW9uaXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdGltZW91dCBbMjQwMDAwXSAtIFNpbXVsYXRvciBib290aW5nIHRpbWVvdXQgaW4gbXMuXG4gKiBAcHJvcGVydHkgez9GdW5jdGlvbn0gb25XYWl0aW5nRGF0YU1pZ3JhdGlvbiAtIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiBkYXRhIG1pZ3JhdGlvbiBzdGFnZSBzdGFydHMuXG4gKiBAcHJvcGVydHkgez9GdW5jdGlvbn0gb25XYWl0aW5nU3lzdGVtQXBwIC0gVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHN5c3RlbSBhcHAgd2FpdCBzdGFnZSBzdGFydHMuXG4gKiBAcHJvcGVydHkgez9GdW5jdGlvbn0gb25GaW5pc2hlZCAtIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiBTaW11bGF0b3IgaXMgZnVsbHkgYm9vdGVkLlxuICogQHByb3BlcnR5IHs/RnVuY3Rpb259IG9uRXJyb3IgLSBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIG1vbml0b3JpbmcgdGhlIGJvb3RpbmcgcHJvY2Vzc1xuICogb3Igd2hlbiB0aGUgdGltZW91dCBoYXMgZXhwaXJlZC5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IHNob3VsZFByZWJvb3QgW2ZhbHNlXSBXaGV0aGVyIHRvIHByZWJvb3QgdGhlIFNpbXVsYXRvclxuICogaWYgdGhpcyBjb21tYW5kIGlzIGNhbGxlZCBhbmQgaXQgaXMgbm90IGFscmVhZHkgaW4gYm9vdGVkIG9yIGJvb3Rpbmcgc3RhdGUuXG4gKi9cblxuLyoqXG4gKiBTdGFydCBtb25pdG9yaW5nIGZvciBib290IHN0YXR1cyBvZiB0aGUgcGFydGljdWxhciBTaW11bGF0b3IuXG4gKiBJZiBvbkZpbmlzaGVkIHByb3BlcnR5IGlzIG5vdCBzZXQgdGhlbiB0aGUgbWV0aG9kIHdpbGwgYmxvY2tcbiAqIHVudGlsIFNpbXVsYXRvciBib290aW5nIGlzIGNvbXBsZXRlZC5cbiAqIFRoZSBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgc2luY2UgWGNvZGU4LlxuICpcbiAqIEBwYXJhbSB7P0Jvb3RNb25pdG9yT3B0aW9uc30gb3B0cyAtIE1vbml0b3Jpbmcgb3B0aW9ucy5cbiAqIEByZXR1cm5zIHtTdWJQcm9jZXNzfSBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgbW9uaXRvcmluZyBwcm9jZXNzLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBTaW11bGF0b3IgZmFpbHMgdG8gZmluaXNoIGJvb3Rpbmcgd2l0aGluIHRoZSBnaXZlbiB0aW1lb3V0IGFuZCBvbkZpbmlzaGVkXG4gKiBwcm9wZXJ0eSBpcyBub3Qgc2V0LlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMuc3RhcnRCb290TW9uaXRvciA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0Qm9vdE1vbml0b3IgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdGltZW91dCA9IDI0MDAwMCxcbiAgICBvbldhaXRpbmdEYXRhTWlncmF0aW9uLFxuICAgIG9uV2FpdGluZ1N5c3RlbUFwcCxcbiAgICBvbkZpbmlzaGVkLFxuICAgIG9uRXJyb3IsXG4gICAgc2hvdWxkUHJlYm9vdCxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHVkaWQgPSB0aGlzLnJlcXVpcmVVZGlkKCdib290c3RhdHVzJyk7XG5cbiAgbGV0IHN0YXR1cyA9ICcnO1xuICBsZXQgaXNCb290aW5nRmluaXNoZWQgPSBmYWxzZTtcbiAgbGV0IGVycm9yID0gbnVsbDtcbiAgbGV0IHRpbWVvdXRIYW5kbGVyID0gbnVsbDtcbiAgY29uc3QgYXJncyA9IFt1ZGlkXTtcbiAgaWYgKHNob3VsZFByZWJvb3QpIHtcbiAgICBhcmdzLnB1c2goJy1iJyk7XG4gIH1cbiAgY29uc3QgYm9vdE1vbml0b3IgPSBhd2FpdCB0aGlzLmV4ZWMoJ2Jvb3RzdGF0dXMnLCB7XG4gICAgYXJncyxcbiAgICBhc3luY2hyb25vdXM6IHRydWUsXG4gIH0pO1xuICBib290TW9uaXRvci5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgc3RhdHVzICs9IHN0ZG91dCB8fCBzdGRlcnI7XG4gICAgaWYgKHN0ZG91dCkge1xuICAgICAgaWYgKHN0ZG91dC5pbmNsdWRlcygnV2FpdGluZyBvbiBEYXRhIE1pZ3JhdGlvbicpICYmIG9uV2FpdGluZ0RhdGFNaWdyYXRpb24pIHtcbiAgICAgICAgb25XYWl0aW5nRGF0YU1pZ3JhdGlvbigpO1xuICAgICAgfSBlbHNlIGlmIChzdGRvdXQuaW5jbHVkZXMoJ1dhaXRpbmcgb24gU3lzdGVtIEFwcCcpICYmIG9uV2FpdGluZ1N5c3RlbUFwcCkge1xuICAgICAgICBvbldhaXRpbmdTeXN0ZW1BcHAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBib290TW9uaXRvci5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICBpZiAodGltZW91dEhhbmRsZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlcik7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICBpZiAob25GaW5pc2hlZCkge1xuICAgICAgICBvbkZpbmlzaGVkKCk7XG4gICAgICB9XG4gICAgICBpc0Jvb3RpbmdGaW5pc2hlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXR1cyA9IHN0YXR1cyB8fCBzaWduYWw7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihzdGF0dXMpO1xuICAgICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgICAgb25FcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgYXdhaXQgYm9vdE1vbml0b3Iuc3RhcnQoMCk7XG4gIGNvbnN0IHN0b3BNb25pdG9yID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChib290TW9uaXRvci5pc1J1bm5pbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGJvb3RNb25pdG9yLnN0b3AoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nLndhcm4oZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IHN0YXJ0ID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgaWYgKG9uRmluaXNoZWQpIHtcbiAgICB0aW1lb3V0SGFuZGxlciA9IHNldFRpbWVvdXQoc3RvcE1vbml0b3IsIHRpbWVvdXQpO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKCgpID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQm9vdGluZ0ZpbmlzaGVkO1xuICAgICAgfSwge3dhaXRNczogdGltZW91dCwgaW50ZXJ2YWxNczogNTAwfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBhd2FpdCBzdG9wTW9uaXRvcigpO1xuICAgICAgY29uc3QgW3NlY29uZHNdID0gcHJvY2Vzcy5ocnRpbWUoc3RhcnQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVGhlIHNpbXVsYXRvciAke3VkaWR9IGhhcyBmYWlsZWQgdG8gZmluaXNoIGJvb3RpbmcgYWZ0ZXIgJHtzZWNvbmRzfXMuIGAgK1xuICAgICAgICBgT3JpZ2luYWwgc3RhdHVzOiAke3N0YXR1c31gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJvb3RNb25pdG9yO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9zdWJjb21tYW5kcy9ib290c3RhdHVzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|