appium-adb 12.4.4 → 12.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/lib/logcat.d.ts +32 -5
- package/build/lib/logcat.d.ts.map +1 -1
- package/build/lib/logcat.js +97 -33
- package/build/lib/logcat.js.map +1 -1
- package/build/lib/tools/adb-commands.d.ts +2 -2
- package/build/lib/tools/adb-commands.d.ts.map +1 -1
- package/build/lib/tools/adb-commands.js +2 -2
- package/lib/logcat.js +101 -34
- package/lib/tools/adb-commands.js +2 -2
- package/package.json +2 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [12.4.5](https://github.com/appium/appium-adb/compare/v12.4.4...v12.4.5) (2024-06-30)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* Optimize logcat callbacks handling ([#751](https://github.com/appium/appium-adb/issues/751)) ([5496a24](https://github.com/appium/appium-adb/commit/5496a2445f5f39b587fe081ff7bae819eadd2d5b))
|
|
6
|
+
|
|
1
7
|
## [12.4.4](https://github.com/appium/appium-adb/compare/v12.4.3...v12.4.4) (2024-06-21)
|
|
2
8
|
|
|
3
9
|
### Miscellaneous Chores
|
package/build/lib/logcat.d.ts
CHANGED
|
@@ -24,6 +24,11 @@ export type LogcatOpts = {
|
|
|
24
24
|
*/
|
|
25
25
|
filterSpecs?: string[] | undefined;
|
|
26
26
|
};
|
|
27
|
+
export type LogEntry = {
|
|
28
|
+
timestamp: number;
|
|
29
|
+
level: "ALL";
|
|
30
|
+
message: string;
|
|
31
|
+
};
|
|
27
32
|
declare class Logcat extends EventEmitter<[never]> {
|
|
28
33
|
constructor(opts?: {});
|
|
29
34
|
adb: any;
|
|
@@ -31,16 +36,38 @@ declare class Logcat extends EventEmitter<[never]> {
|
|
|
31
36
|
debug: any;
|
|
32
37
|
debugTrace: any;
|
|
33
38
|
maxBufferSize: any;
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
/** @type {LRUCache<bigint, [string, number]>} */
|
|
40
|
+
logs: LRUCache<bigint, [string, number]>;
|
|
41
|
+
/** @type {bigint?} */
|
|
42
|
+
logHrTimeSinceLastRequest: bigint | null;
|
|
36
43
|
startCapture(opts?: {}): Promise<any>;
|
|
37
44
|
proc: SubProcess | null | undefined;
|
|
38
|
-
|
|
45
|
+
/**
|
|
46
|
+
*
|
|
47
|
+
* @param {string} logLine
|
|
48
|
+
* @param {string} [prefix='']
|
|
49
|
+
* @returns {void}
|
|
50
|
+
*/
|
|
51
|
+
outputHandler(logLine: string, prefix?: string | undefined): void;
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
* @returns {Promise<void>}
|
|
55
|
+
*/
|
|
39
56
|
stopCapture(): Promise<void>;
|
|
40
|
-
|
|
41
|
-
|
|
57
|
+
/**
|
|
58
|
+
* @returns {LogEntry[]}
|
|
59
|
+
*/
|
|
60
|
+
getLogs(): LogEntry[];
|
|
61
|
+
/**
|
|
62
|
+
* @returns {LogEntry[]}
|
|
63
|
+
*/
|
|
64
|
+
getAllLogs(): LogEntry[];
|
|
65
|
+
/**
|
|
66
|
+
* @returns {Promise<void>}
|
|
67
|
+
*/
|
|
42
68
|
clear(): Promise<void>;
|
|
43
69
|
}
|
|
44
70
|
import { EventEmitter } from 'node:events';
|
|
71
|
+
import { LRUCache } from 'lru-cache';
|
|
45
72
|
import { SubProcess } from 'teen_process';
|
|
46
73
|
//# sourceMappingURL=logcat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logcat.d.ts","sourceRoot":"","sources":["../../lib/logcat.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logcat.d.ts","sourceRoot":"","sources":["../../lib/logcat.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;eAkDc,MAAM;WACN,KAAK;aACL,MAAM;;AAyDpB;IACE,uBAaC;IAXC,SAAmB;IACnB,eAAqD;IACrD,WAAuB;IACvB,gBAAiC;IACjC,mBAA0D;IAC1D,iDAAiD;IACjD,MADW,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAG3C;IACF,sBAAsB;IACtB,2BADW,MAAM,OAAC,CACmB;IAGvC,sCAwDC;IA7BG,oCAA8C;IA+BlD;;;;;OAKG;IACH,uBAJW,MAAM,gCAEJ,IAAI,CAYhB;IAED;;;OAGG;IACH,eAFa,OAAO,CAAC,IAAI,CAAC,CAYzB;IAED;;OAEG;IACH,WAFa,QAAQ,EAAE,CAsBtB;IAED;;OAEG;IACH,cAFa,QAAQ,EAAE,CAatB;IAED;;OAEG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAUzB;CACF;6BA3Q4B,aAAa;yBAEjB,WAAW;2BADH,cAAc"}
|
package/build/lib/logcat.js
CHANGED
|
@@ -8,6 +8,7 @@ const bluebird_1 = __importDefault(require("bluebird"));
|
|
|
8
8
|
const lodash_1 = __importDefault(require("lodash"));
|
|
9
9
|
const node_events_1 = require("node:events");
|
|
10
10
|
const teen_process_1 = require("teen_process");
|
|
11
|
+
const lru_cache_1 = require("lru-cache");
|
|
11
12
|
const log = support_1.logger.getLogger('Logcat');
|
|
12
13
|
const MAX_BUFFER_SIZE = 10000;
|
|
13
14
|
const LOGCAT_PROC_STARTUP_TIMEOUT = 10000;
|
|
@@ -16,6 +17,8 @@ const SUPPORTED_PRIORITIES = ['v', 'd', 'i', 'w', 'e', 'f', 's'];
|
|
|
16
17
|
const DEFAULT_PRIORITY = 'v';
|
|
17
18
|
const DEFAULT_TAG = '*';
|
|
18
19
|
const DEFAULT_FORMAT = 'threadtime';
|
|
20
|
+
const TRACE_PATTERN = /W\/Trace/;
|
|
21
|
+
const EXECVP_ERR_PATTERN = /execvp\(\)/;
|
|
19
22
|
/**
|
|
20
23
|
* @typedef {Object} LogcatOpts
|
|
21
24
|
* @property {string} [format] The log print format, where <format> is one of:
|
|
@@ -44,6 +47,30 @@ function requireFormat(format) {
|
|
|
44
47
|
}
|
|
45
48
|
return format;
|
|
46
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* @typedef {Object} LogEntry
|
|
52
|
+
* @property {number} timestamp
|
|
53
|
+
* @property {'ALL'} level
|
|
54
|
+
* @property {string} message
|
|
55
|
+
*/
|
|
56
|
+
/**
|
|
57
|
+
*
|
|
58
|
+
* @param {string} message
|
|
59
|
+
* @param {number} timestamp
|
|
60
|
+
* @returns {LogEntry}
|
|
61
|
+
*/
|
|
62
|
+
function toLogEntry(message, timestamp) {
|
|
63
|
+
return {
|
|
64
|
+
timestamp,
|
|
65
|
+
level: 'ALL',
|
|
66
|
+
message,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
*
|
|
71
|
+
* @param {string} spec
|
|
72
|
+
* @returns {string}
|
|
73
|
+
*/
|
|
47
74
|
function requireSpec(spec) {
|
|
48
75
|
const [tag, priority] = spec.split(':');
|
|
49
76
|
let resultTag = tag;
|
|
@@ -63,6 +90,11 @@ function requireSpec(spec) {
|
|
|
63
90
|
}
|
|
64
91
|
return spec;
|
|
65
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
*
|
|
95
|
+
* @param {string|string[]} filterSpecs
|
|
96
|
+
* @returns {string[]}
|
|
97
|
+
*/
|
|
66
98
|
function formatFilterSpecs(filterSpecs) {
|
|
67
99
|
if (!lodash_1.default.isArray(filterSpecs)) {
|
|
68
100
|
filterSpecs = [filterSpecs];
|
|
@@ -79,8 +111,12 @@ class Logcat extends node_events_1.EventEmitter {
|
|
|
79
111
|
this.debug = opts.debug;
|
|
80
112
|
this.debugTrace = opts.debugTrace;
|
|
81
113
|
this.maxBufferSize = opts.maxBufferSize || MAX_BUFFER_SIZE;
|
|
82
|
-
|
|
83
|
-
this.
|
|
114
|
+
/** @type {LRUCache<bigint, [string, number]>} */
|
|
115
|
+
this.logs = new lru_cache_1.LRUCache({
|
|
116
|
+
max: this.maxBufferSize,
|
|
117
|
+
});
|
|
118
|
+
/** @type {bigint?} */
|
|
119
|
+
this.logHrTimeSinceLastRequest = null;
|
|
84
120
|
}
|
|
85
121
|
async startCapture(opts = {}) {
|
|
86
122
|
let started = false;
|
|
@@ -114,19 +150,19 @@ class Logcat extends node_events_1.EventEmitter {
|
|
|
114
150
|
}
|
|
115
151
|
});
|
|
116
152
|
this.proc.on('lines-stderr', (lines) => {
|
|
117
|
-
for (
|
|
118
|
-
if (
|
|
153
|
+
for (const line of lines) {
|
|
154
|
+
if (!started && EXECVP_ERR_PATTERN.test(line)) {
|
|
119
155
|
log.error('Logcat process failed to start');
|
|
120
|
-
reject(new Error(`Logcat process failed to start. stderr: ${line}`));
|
|
156
|
+
return reject(new Error(`Logcat process failed to start. stderr: ${line}`));
|
|
121
157
|
}
|
|
122
|
-
this.outputHandler(
|
|
158
|
+
this.outputHandler(line, 'STDERR: ');
|
|
123
159
|
}
|
|
124
160
|
resolve();
|
|
125
161
|
});
|
|
126
162
|
this.proc.on('lines-stdout', (lines) => {
|
|
127
163
|
resolve();
|
|
128
|
-
for (
|
|
129
|
-
this.outputHandler(
|
|
164
|
+
for (const line of lines) {
|
|
165
|
+
this.outputHandler(line);
|
|
130
166
|
}
|
|
131
167
|
});
|
|
132
168
|
await this.proc.start(0);
|
|
@@ -134,28 +170,27 @@ class Logcat extends node_events_1.EventEmitter {
|
|
|
134
170
|
setTimeout(resolve, LOGCAT_PROC_STARTUP_TIMEOUT);
|
|
135
171
|
});
|
|
136
172
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
173
|
+
/**
|
|
174
|
+
*
|
|
175
|
+
* @param {string} logLine
|
|
176
|
+
* @param {string} [prefix='']
|
|
177
|
+
* @returns {void}
|
|
178
|
+
*/
|
|
179
|
+
outputHandler(logLine, prefix = '') {
|
|
180
|
+
const hrTime = process.hrtime.bigint();
|
|
181
|
+
const timestamp = Date.now();
|
|
182
|
+
this.logs.set(hrTime, [logLine, timestamp]);
|
|
183
|
+
if (this.listenerCount('output')) {
|
|
184
|
+
this.emit('output', toLogEntry(logLine, timestamp));
|
|
146
185
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
level: 'ALL',
|
|
150
|
-
message: output,
|
|
151
|
-
};
|
|
152
|
-
this.logs.push(outputObj);
|
|
153
|
-
this.emit('output', outputObj);
|
|
154
|
-
const isTrace = /W\/Trace/.test(output);
|
|
155
|
-
if (this.debug && (!isTrace || this.debugTrace)) {
|
|
156
|
-
log.debug(prefix + output);
|
|
186
|
+
if (this.debug && (this.debugTrace || !TRACE_PATTERN.test(logLine))) {
|
|
187
|
+
log.debug(prefix + logLine);
|
|
157
188
|
}
|
|
158
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
*
|
|
192
|
+
* @returns {Promise<void>}
|
|
193
|
+
*/
|
|
159
194
|
async stopCapture() {
|
|
160
195
|
log.debug('Stopping logcat capture');
|
|
161
196
|
if (!this.proc || !this.proc.isRunning) {
|
|
@@ -167,17 +202,46 @@ class Logcat extends node_events_1.EventEmitter {
|
|
|
167
202
|
await this.proc.stop();
|
|
168
203
|
this.proc = null;
|
|
169
204
|
}
|
|
205
|
+
/**
|
|
206
|
+
* @returns {LogEntry[]}
|
|
207
|
+
*/
|
|
170
208
|
getLogs() {
|
|
171
|
-
if (this.
|
|
172
|
-
|
|
173
|
-
this.logIdxSinceLastRequest = this.logs.length;
|
|
174
|
-
return result;
|
|
209
|
+
if (!this.logs.size) {
|
|
210
|
+
return [];
|
|
175
211
|
}
|
|
176
|
-
|
|
212
|
+
/** @type {LogEntry[]} */
|
|
213
|
+
const result = [];
|
|
214
|
+
/** @type {bigint?} */
|
|
215
|
+
let recentLogHrTime = null;
|
|
216
|
+
for (const [hrTime, [message, timestamp]] of this.logs.entries()) {
|
|
217
|
+
if (this.logHrTimeSinceLastRequest && hrTime > this.logHrTimeSinceLastRequest
|
|
218
|
+
|| !this.logHrTimeSinceLastRequest) {
|
|
219
|
+
recentLogHrTime = hrTime;
|
|
220
|
+
result.push(toLogEntry(message, timestamp));
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (recentLogHrTime) {
|
|
224
|
+
this.logHrTimeSinceLastRequest = recentLogHrTime;
|
|
225
|
+
}
|
|
226
|
+
return result;
|
|
177
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* @returns {LogEntry[]}
|
|
230
|
+
*/
|
|
178
231
|
getAllLogs() {
|
|
179
|
-
|
|
232
|
+
if (!this.logs.size) {
|
|
233
|
+
return [];
|
|
234
|
+
}
|
|
235
|
+
/** @type {LogEntry[]} */
|
|
236
|
+
const result = [];
|
|
237
|
+
for (const [message, timestamp] of this.logs.values()) {
|
|
238
|
+
result.push(toLogEntry(message, timestamp));
|
|
239
|
+
}
|
|
240
|
+
return result;
|
|
180
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* @returns {Promise<void>}
|
|
244
|
+
*/
|
|
181
245
|
async clear() {
|
|
182
246
|
log.debug('Clearing logcat logs from device');
|
|
183
247
|
try {
|
package/build/lib/logcat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logcat.js","sourceRoot":"","sources":["../../lib/logcat.js"],"names":[],"mappings":";;;;;AAAA,6CAA+C;AAC/C,wDAAyB;AACzB,oDAAuB;AACvB,6CAA2C;AAC3C,+CAAgD;
|
|
1
|
+
{"version":3,"file":"logcat.js","sourceRoot":"","sources":["../../lib/logcat.js"],"names":[],"mappings":"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"}
|
|
@@ -652,10 +652,10 @@ declare namespace methods {
|
|
|
652
652
|
* The logcat process should be executed by {2link #startLogcat} method.
|
|
653
653
|
*
|
|
654
654
|
* @this {import('../adb.js').ADB}
|
|
655
|
-
* @return {
|
|
655
|
+
* @return {import('../logcat').LogEntry[]} The collected logcat output.
|
|
656
656
|
* @throws {Error} If logcat process is not running.
|
|
657
657
|
*/
|
|
658
|
-
function getLogcatLogs(this: import("../adb.js").ADB):
|
|
658
|
+
function getLogcatLogs(this: import("../adb.js").ADB): import("../logcat").LogEntry[];
|
|
659
659
|
/**
|
|
660
660
|
* Listener function, which accepts one argument.
|
|
661
661
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb-commands.d.ts","sourceRoot":"","sources":["../../../lib/tools/adb-commands.js"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"adb-commands.d.ts","sourceRoot":"","sources":["../../../lib/tools/adb-commands.js"],"names":[],"mappings":"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"}
|
|
@@ -1156,12 +1156,12 @@ methods.stopLogcat = async function stopLogcat() {
|
|
|
1156
1156
|
* The logcat process should be executed by {2link #startLogcat} method.
|
|
1157
1157
|
*
|
|
1158
1158
|
* @this {import('../adb.js').ADB}
|
|
1159
|
-
* @return {
|
|
1159
|
+
* @return {import('../logcat').LogEntry[]} The collected logcat output.
|
|
1160
1160
|
* @throws {Error} If logcat process is not running.
|
|
1161
1161
|
*/
|
|
1162
1162
|
methods.getLogcatLogs = function getLogcatLogs() {
|
|
1163
1163
|
if (lodash_1.default.isEmpty(this.logcat)) {
|
|
1164
|
-
throw new Error(
|
|
1164
|
+
throw new Error(`Can't get logcat logs since logcat hasn't started`);
|
|
1165
1165
|
}
|
|
1166
1166
|
return this.logcat.getLogs();
|
|
1167
1167
|
};
|
package/lib/logcat.js
CHANGED
|
@@ -3,6 +3,7 @@ import B from 'bluebird';
|
|
|
3
3
|
import _ from 'lodash';
|
|
4
4
|
import { EventEmitter } from 'node:events';
|
|
5
5
|
import { SubProcess, exec } from 'teen_process';
|
|
6
|
+
import { LRUCache } from 'lru-cache';
|
|
6
7
|
|
|
7
8
|
const log = logger.getLogger('Logcat');
|
|
8
9
|
const MAX_BUFFER_SIZE = 10000;
|
|
@@ -12,6 +13,8 @@ const SUPPORTED_PRIORITIES = ['v', 'd', 'i', 'w', 'e', 'f', 's'];
|
|
|
12
13
|
const DEFAULT_PRIORITY = 'v';
|
|
13
14
|
const DEFAULT_TAG = '*';
|
|
14
15
|
const DEFAULT_FORMAT = 'threadtime';
|
|
16
|
+
const TRACE_PATTERN = /W\/Trace/;
|
|
17
|
+
const EXECVP_ERR_PATTERN = /execvp\(\)/;
|
|
15
18
|
|
|
16
19
|
/**
|
|
17
20
|
* @typedef {Object} LogcatOpts
|
|
@@ -43,6 +46,32 @@ function requireFormat (format) {
|
|
|
43
46
|
return format;
|
|
44
47
|
}
|
|
45
48
|
|
|
49
|
+
/**
|
|
50
|
+
* @typedef {Object} LogEntry
|
|
51
|
+
* @property {number} timestamp
|
|
52
|
+
* @property {'ALL'} level
|
|
53
|
+
* @property {string} message
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
*
|
|
58
|
+
* @param {string} message
|
|
59
|
+
* @param {number} timestamp
|
|
60
|
+
* @returns {LogEntry}
|
|
61
|
+
*/
|
|
62
|
+
function toLogEntry(message, timestamp) {
|
|
63
|
+
return {
|
|
64
|
+
timestamp,
|
|
65
|
+
level: 'ALL',
|
|
66
|
+
message,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
*
|
|
72
|
+
* @param {string} spec
|
|
73
|
+
* @returns {string}
|
|
74
|
+
*/
|
|
46
75
|
function requireSpec (spec) {
|
|
47
76
|
const [tag, priority] = spec.split(':');
|
|
48
77
|
let resultTag = tag;
|
|
@@ -63,6 +92,11 @@ function requireSpec (spec) {
|
|
|
63
92
|
return spec;
|
|
64
93
|
}
|
|
65
94
|
|
|
95
|
+
/**
|
|
96
|
+
*
|
|
97
|
+
* @param {string|string[]} filterSpecs
|
|
98
|
+
* @returns {string[]}
|
|
99
|
+
*/
|
|
66
100
|
function formatFilterSpecs (filterSpecs) {
|
|
67
101
|
if (!_.isArray(filterSpecs)) {
|
|
68
102
|
filterSpecs = [filterSpecs];
|
|
@@ -81,8 +115,12 @@ class Logcat extends EventEmitter {
|
|
|
81
115
|
this.debug = opts.debug;
|
|
82
116
|
this.debugTrace = opts.debugTrace;
|
|
83
117
|
this.maxBufferSize = opts.maxBufferSize || MAX_BUFFER_SIZE;
|
|
84
|
-
|
|
85
|
-
this.
|
|
118
|
+
/** @type {LRUCache<bigint, [string, number]>} */
|
|
119
|
+
this.logs = new LRUCache({
|
|
120
|
+
max: this.maxBufferSize,
|
|
121
|
+
});
|
|
122
|
+
/** @type {bigint?} */
|
|
123
|
+
this.logHrTimeSinceLastRequest = null;
|
|
86
124
|
}
|
|
87
125
|
|
|
88
126
|
async startCapture (opts = {}) {
|
|
@@ -122,19 +160,19 @@ class Logcat extends EventEmitter {
|
|
|
122
160
|
}
|
|
123
161
|
});
|
|
124
162
|
this.proc.on('lines-stderr', (lines) => {
|
|
125
|
-
for (
|
|
126
|
-
if (
|
|
163
|
+
for (const line of lines) {
|
|
164
|
+
if (!started && EXECVP_ERR_PATTERN.test(line)) {
|
|
127
165
|
log.error('Logcat process failed to start');
|
|
128
|
-
reject(new Error(`Logcat process failed to start. stderr: ${line}`));
|
|
166
|
+
return reject(new Error(`Logcat process failed to start. stderr: ${line}`));
|
|
129
167
|
}
|
|
130
|
-
this.outputHandler(
|
|
168
|
+
this.outputHandler(line, 'STDERR: ');
|
|
131
169
|
}
|
|
132
170
|
resolve();
|
|
133
171
|
});
|
|
134
172
|
this.proc.on('lines-stdout', (lines) => {
|
|
135
173
|
resolve();
|
|
136
|
-
for (
|
|
137
|
-
this.outputHandler(
|
|
174
|
+
for (const line of lines) {
|
|
175
|
+
this.outputHandler(line);
|
|
138
176
|
}
|
|
139
177
|
});
|
|
140
178
|
await this.proc.start(0);
|
|
@@ -143,30 +181,28 @@ class Logcat extends EventEmitter {
|
|
|
143
181
|
});
|
|
144
182
|
}
|
|
145
183
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
184
|
+
/**
|
|
185
|
+
*
|
|
186
|
+
* @param {string} logLine
|
|
187
|
+
* @param {string} [prefix='']
|
|
188
|
+
* @returns {void}
|
|
189
|
+
*/
|
|
190
|
+
outputHandler (logLine, prefix = '') {
|
|
191
|
+
const hrTime = process.hrtime.bigint();
|
|
192
|
+
const timestamp = Date.now();
|
|
193
|
+
this.logs.set(hrTime, [logLine, timestamp]);
|
|
194
|
+
if (this.listenerCount('output')) {
|
|
195
|
+
this.emit('output', toLogEntry(logLine, timestamp));
|
|
149
196
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
this.logs.shift();
|
|
153
|
-
if (this.logIdxSinceLastRequest > 0) {
|
|
154
|
-
--this.logIdxSinceLastRequest;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
const outputObj = {
|
|
158
|
-
timestamp: Date.now(),
|
|
159
|
-
level: 'ALL',
|
|
160
|
-
message: output,
|
|
161
|
-
};
|
|
162
|
-
this.logs.push(outputObj);
|
|
163
|
-
this.emit('output', outputObj);
|
|
164
|
-
const isTrace = /W\/Trace/.test(output);
|
|
165
|
-
if (this.debug && (!isTrace || this.debugTrace)) {
|
|
166
|
-
log.debug(prefix + output);
|
|
197
|
+
if (this.debug && (this.debugTrace || !TRACE_PATTERN.test(logLine))) {
|
|
198
|
+
log.debug(prefix + logLine);
|
|
167
199
|
}
|
|
168
200
|
}
|
|
169
201
|
|
|
202
|
+
/**
|
|
203
|
+
*
|
|
204
|
+
* @returns {Promise<void>}
|
|
205
|
+
*/
|
|
170
206
|
async stopCapture () {
|
|
171
207
|
log.debug('Stopping logcat capture');
|
|
172
208
|
if (!this.proc || !this.proc.isRunning) {
|
|
@@ -179,19 +215,50 @@ class Logcat extends EventEmitter {
|
|
|
179
215
|
this.proc = null;
|
|
180
216
|
}
|
|
181
217
|
|
|
218
|
+
/**
|
|
219
|
+
* @returns {LogEntry[]}
|
|
220
|
+
*/
|
|
182
221
|
getLogs () {
|
|
183
|
-
if (this.
|
|
184
|
-
|
|
185
|
-
this.logIdxSinceLastRequest = this.logs.length;
|
|
186
|
-
return result;
|
|
222
|
+
if (!this.logs.size) {
|
|
223
|
+
return [];
|
|
187
224
|
}
|
|
188
|
-
|
|
225
|
+
|
|
226
|
+
/** @type {LogEntry[]} */
|
|
227
|
+
const result = [];
|
|
228
|
+
/** @type {bigint?} */
|
|
229
|
+
let recentLogHrTime = null;
|
|
230
|
+
for (const [hrTime, [message, timestamp]] of this.logs.entries()) {
|
|
231
|
+
if (this.logHrTimeSinceLastRequest && hrTime > this.logHrTimeSinceLastRequest
|
|
232
|
+
|| !this.logHrTimeSinceLastRequest) {
|
|
233
|
+
recentLogHrTime = hrTime;
|
|
234
|
+
result.push(toLogEntry(message, timestamp));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (recentLogHrTime) {
|
|
238
|
+
this.logHrTimeSinceLastRequest = recentLogHrTime;
|
|
239
|
+
}
|
|
240
|
+
return result;
|
|
189
241
|
}
|
|
190
242
|
|
|
243
|
+
/**
|
|
244
|
+
* @returns {LogEntry[]}
|
|
245
|
+
*/
|
|
191
246
|
getAllLogs () {
|
|
192
|
-
|
|
247
|
+
if (!this.logs.size) {
|
|
248
|
+
return [];
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/** @type {LogEntry[]} */
|
|
252
|
+
const result = [];
|
|
253
|
+
for (const [message, timestamp] of this.logs.values()) {
|
|
254
|
+
result.push(toLogEntry(message, timestamp));
|
|
255
|
+
}
|
|
256
|
+
return result;
|
|
193
257
|
}
|
|
194
258
|
|
|
259
|
+
/**
|
|
260
|
+
* @returns {Promise<void>}
|
|
261
|
+
*/
|
|
195
262
|
async clear () {
|
|
196
263
|
log.debug('Clearing logcat logs from device');
|
|
197
264
|
try {
|
|
@@ -1223,12 +1223,12 @@ methods.stopLogcat = async function stopLogcat () {
|
|
|
1223
1223
|
* The logcat process should be executed by {2link #startLogcat} method.
|
|
1224
1224
|
*
|
|
1225
1225
|
* @this {import('../adb.js').ADB}
|
|
1226
|
-
* @return {
|
|
1226
|
+
* @return {import('../logcat').LogEntry[]} The collected logcat output.
|
|
1227
1227
|
* @throws {Error} If logcat process is not running.
|
|
1228
1228
|
*/
|
|
1229
1229
|
methods.getLogcatLogs = function getLogcatLogs () {
|
|
1230
1230
|
if (_.isEmpty(this.logcat)) {
|
|
1231
|
-
throw new Error(
|
|
1231
|
+
throw new Error(`Can't get logcat logs since logcat hasn't started`);
|
|
1232
1232
|
}
|
|
1233
1233
|
return this.logcat.getLogs();
|
|
1234
1234
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-adb",
|
|
3
|
-
"version": "12.4.
|
|
3
|
+
"version": "12.4.5",
|
|
4
4
|
"description": "Android Debug Bridge interface",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -57,10 +57,9 @@
|
|
|
57
57
|
"lru-cache": "^10.0.0",
|
|
58
58
|
"semver": "^7.0.0",
|
|
59
59
|
"source-map-support": "^0.x",
|
|
60
|
-
"teen_process": "^2.
|
|
60
|
+
"teen_process": "^2.1.10"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@appium/eslint-config-appium": "^8.0.0",
|
|
64
63
|
"@appium/eslint-config-appium-ts": "^0.x",
|
|
65
64
|
"@appium/test-support": "^3.0.1",
|
|
66
65
|
"@appium/types": "^0.x",
|