@theia/process 1.67.0-next.56 → 1.67.0-next.86
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/lib/common/process-common-module.d.ts +4 -0
- package/lib/common/process-common-module.d.ts.map +1 -0
- package/lib/common/process-common-module.js +23 -0
- package/lib/common/process-common-module.js.map +1 -0
- package/lib/common/process-manager-types.d.ts +36 -0
- package/lib/common/process-manager-types.d.ts.map +1 -0
- package/lib/common/process-manager-types.js +24 -0
- package/lib/common/process-manager-types.js.map +1 -0
- package/lib/common/shell-command-builder.d.ts +50 -0
- package/lib/common/shell-command-builder.d.ts.map +1 -0
- package/lib/common/shell-command-builder.js +170 -0
- package/lib/common/shell-command-builder.js.map +1 -0
- package/lib/common/shell-command-builder.slow-spec.d.ts +10 -0
- package/lib/common/shell-command-builder.slow-spec.d.ts.map +1 -0
- package/lib/common/shell-command-builder.slow-spec.js +405 -0
- package/lib/common/shell-command-builder.slow-spec.js.map +1 -0
- package/lib/common/shell-quoting.d.ts +92 -0
- package/lib/common/shell-quoting.d.ts.map +1 -0
- package/lib/common/shell-quoting.js +146 -0
- package/lib/common/shell-quoting.js.map +1 -0
- package/lib/common/shell-quoting.spec.d.ts +2 -0
- package/lib/common/shell-quoting.spec.d.ts.map +1 -0
- package/lib/common/shell-quoting.spec.js +171 -0
- package/lib/common/shell-quoting.spec.js.map +1 -0
- package/lib/node/dev-null-stream.d.ts +18 -0
- package/lib/node/dev-null-stream.d.ts.map +1 -0
- package/lib/node/dev-null-stream.js +42 -0
- package/lib/node/dev-null-stream.js.map +1 -0
- package/lib/node/index.d.ts +7 -0
- package/lib/node/index.d.ts.map +1 -0
- package/lib/node/index.js +25 -0
- package/lib/node/index.js.map +1 -0
- package/lib/node/multi-ring-buffer.d.ts +71 -0
- package/lib/node/multi-ring-buffer.d.ts.map +1 -0
- package/lib/node/multi-ring-buffer.js +300 -0
- package/lib/node/multi-ring-buffer.js.map +1 -0
- package/lib/node/multi-ring-buffer.spec.d.ts +2 -0
- package/lib/node/multi-ring-buffer.spec.d.ts.map +1 -0
- package/lib/node/multi-ring-buffer.spec.js +423 -0
- package/lib/node/multi-ring-buffer.spec.js.map +1 -0
- package/lib/node/process-backend-module.d.ts +4 -0
- package/lib/node/process-backend-module.d.ts.map +1 -0
- package/lib/node/process-backend-module.js +52 -0
- package/lib/node/process-backend-module.js.map +1 -0
- package/lib/node/process-manager.d.ts +34 -0
- package/lib/node/process-manager.d.ts.map +1 -0
- package/lib/node/process-manager.js +103 -0
- package/lib/node/process-manager.js.map +1 -0
- package/lib/node/process.d.ts +96 -0
- package/lib/node/process.d.ts.map +1 -0
- package/lib/node/process.js +146 -0
- package/lib/node/process.js.map +1 -0
- package/lib/node/pseudo-pty.d.ts +24 -0
- package/lib/node/pseudo-pty.d.ts.map +1 -0
- package/lib/node/pseudo-pty.js +40 -0
- package/lib/node/pseudo-pty.js.map +1 -0
- package/lib/node/raw-process.d.ts +47 -0
- package/lib/node/raw-process.d.ts.map +1 -0
- package/lib/node/raw-process.js +104 -0
- package/lib/node/raw-process.js.map +1 -0
- package/lib/node/raw-process.spec.d.ts +2 -0
- package/lib/node/raw-process.spec.d.ts.map +1 -0
- package/lib/node/raw-process.spec.js +163 -0
- package/lib/node/raw-process.spec.js.map +1 -0
- package/lib/node/task-terminal-process.d.ts +11 -0
- package/lib/node/task-terminal-process.d.ts.map +1 -0
- package/lib/node/task-terminal-process.js +43 -0
- package/lib/node/task-terminal-process.js.map +1 -0
- package/lib/node/terminal-process.d.ts +61 -0
- package/lib/node/terminal-process.d.ts.map +1 -0
- package/lib/node/terminal-process.js +252 -0
- package/lib/node/terminal-process.js.map +1 -0
- package/lib/node/terminal-process.spec.d.ts +2 -0
- package/lib/node/terminal-process.spec.d.ts.map +1 -0
- package/lib/node/terminal-process.spec.js +104 -0
- package/lib/node/terminal-process.spec.js.map +1 -0
- package/lib/node/test/process-test-container.d.ts +3 -0
- package/lib/node/test/process-test-container.d.ts.map +1 -0
- package/lib/node/test/process-test-container.js +29 -0
- package/lib/node/test/process-test-container.js.map +1 -0
- package/lib/node/utils.d.ts +17 -0
- package/lib/node/utils.d.ts.map +1 -0
- package/lib/node/utils.js +78 -0
- package/lib/node/utils.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2017 Ericsson and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const chai = require("chai");
|
|
19
|
+
const multi_ring_buffer_1 = require("./multi-ring-buffer");
|
|
20
|
+
const expect = chai.expect;
|
|
21
|
+
describe('MultiRingBuffer', function () {
|
|
22
|
+
it('expect buffer to be empty initialized', function () {
|
|
23
|
+
const size = 2;
|
|
24
|
+
const compareTo = Buffer.from('0000', 'hex');
|
|
25
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
26
|
+
expect(ringBuffer['buffer'].equals(compareTo)).to.be.true;
|
|
27
|
+
});
|
|
28
|
+
it('expect enq and deq a string with unicode characters > 1 byte and no wrap around', function () {
|
|
29
|
+
const ringBufferSize = 15;
|
|
30
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size: ringBufferSize });
|
|
31
|
+
const buffer = '\u00bd + \u00bc = \u00be';
|
|
32
|
+
const bufferByteLength = Buffer.byteLength(buffer, 'utf8');
|
|
33
|
+
ringBuffer.enq(buffer);
|
|
34
|
+
expect(ringBuffer.size()).to.be.equal(bufferByteLength);
|
|
35
|
+
});
|
|
36
|
+
it('expect enq and deq a string with unicode characters > 1 byte and wrap around', function () {
|
|
37
|
+
const buffer = '\u00bd + \u00bc = \u00be';
|
|
38
|
+
const ringBufferSize = Buffer.byteLength(buffer[buffer.length - 1]);
|
|
39
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size: ringBufferSize });
|
|
40
|
+
ringBuffer.enq(buffer);
|
|
41
|
+
expect(ringBuffer.size()).to.be.equal(ringBufferSize);
|
|
42
|
+
const reader = ringBuffer.getReader();
|
|
43
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
44
|
+
expect(ringBuffer).to.not.be.equal(undefined);
|
|
45
|
+
if (readBuffer !== undefined) {
|
|
46
|
+
expect(readBuffer).to.be.equal(buffer[buffer.length - 1].toString());
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
it('expect enq a string < ring buffer size ', function () {
|
|
50
|
+
const size = 5;
|
|
51
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
52
|
+
const buffer = 'test';
|
|
53
|
+
ringBuffer.enq(buffer);
|
|
54
|
+
expect(ringBuffer.size()).to.be.equal(buffer.length);
|
|
55
|
+
expect(ringBuffer.empty()).to.be.equal(false);
|
|
56
|
+
const reader = ringBuffer.getReader();
|
|
57
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(buffer.length);
|
|
58
|
+
expect(ringBuffer.emptyForReader(reader)).to.be.equal(false);
|
|
59
|
+
});
|
|
60
|
+
it('expect deq a string < ring buffer size ', function () {
|
|
61
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size: 5 });
|
|
62
|
+
const buffer = 'test';
|
|
63
|
+
ringBuffer.enq(buffer);
|
|
64
|
+
expect(ringBuffer.size()).to.be.equal(4);
|
|
65
|
+
const reader = ringBuffer.getReader();
|
|
66
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
67
|
+
expect(ringBuffer.size()).to.be.equal(4);
|
|
68
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
69
|
+
expect(readBuffer).to.equal(buffer);
|
|
70
|
+
});
|
|
71
|
+
it('expect deq a string > ring buffer size ', function () {
|
|
72
|
+
const size = 5;
|
|
73
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
74
|
+
const buffer = 'testabcd';
|
|
75
|
+
ringBuffer.enq(buffer);
|
|
76
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
77
|
+
const reader = ringBuffer.getReader();
|
|
78
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
79
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
80
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
81
|
+
expect(readBuffer).to.equal(buffer.substring(buffer.length - size));
|
|
82
|
+
});
|
|
83
|
+
it('expect enq deq enq deq a string > ring buffer size ', function () {
|
|
84
|
+
const size = 5;
|
|
85
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
86
|
+
const buffer = '12345678';
|
|
87
|
+
for (let i = 0; i < 2; i++) {
|
|
88
|
+
ringBuffer.enq(buffer);
|
|
89
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
90
|
+
const reader = ringBuffer.getReader();
|
|
91
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
92
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
93
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
94
|
+
expect(readBuffer).to.equal(buffer.substring(buffer.length - size));
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
it('expect enq a string == ring buffer size then one > ring buffer size and dequeue them ', function () {
|
|
98
|
+
const size = 5;
|
|
99
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
100
|
+
const buffers = ['12345', '12345678'];
|
|
101
|
+
for (const buffer of buffers) {
|
|
102
|
+
ringBuffer.enq(buffer);
|
|
103
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
104
|
+
}
|
|
105
|
+
const reader = ringBuffer.getReader();
|
|
106
|
+
let i = 0;
|
|
107
|
+
for (const _ of buffers) {
|
|
108
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
109
|
+
if (i === 0) {
|
|
110
|
+
expect(readBuffer).to.equal(buffers[buffers.length - 1].substring(buffers[buffers.length - 1].length - size));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
expect(readBuffer).to.equal(undefined);
|
|
114
|
+
}
|
|
115
|
+
i++;
|
|
116
|
+
}
|
|
117
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
118
|
+
});
|
|
119
|
+
it('expect enq a string == ring buffer size then one < ring buffer size and dequeue them ', function () {
|
|
120
|
+
const size = 5;
|
|
121
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
122
|
+
const buffers = ['12345', '123'];
|
|
123
|
+
for (const buffer of buffers) {
|
|
124
|
+
ringBuffer.enq(buffer);
|
|
125
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
126
|
+
}
|
|
127
|
+
const reader = ringBuffer.getReader();
|
|
128
|
+
let i = 0;
|
|
129
|
+
for (const _ of buffers) {
|
|
130
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
131
|
+
if (i === 0) {
|
|
132
|
+
expect(readBuffer).to.equal('45123');
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
expect(readBuffer).to.equal(undefined);
|
|
136
|
+
}
|
|
137
|
+
i++;
|
|
138
|
+
}
|
|
139
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
140
|
+
});
|
|
141
|
+
it('expect enq a string == ring buffer size then one < ring buffer then one < buffer size and dequeue ', function () {
|
|
142
|
+
const size = 5;
|
|
143
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
144
|
+
const buffers = ['12345', '123', '678'];
|
|
145
|
+
for (const buffer of buffers) {
|
|
146
|
+
ringBuffer.enq(buffer);
|
|
147
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
148
|
+
}
|
|
149
|
+
const reader = ringBuffer.getReader();
|
|
150
|
+
let i = 0;
|
|
151
|
+
for (const _ of buffers) {
|
|
152
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
153
|
+
if (i === 0) {
|
|
154
|
+
expect(readBuffer).to.equal('23678');
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
expect(readBuffer).to.equal(undefined);
|
|
158
|
+
}
|
|
159
|
+
i++;
|
|
160
|
+
}
|
|
161
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
162
|
+
});
|
|
163
|
+
it('expect enq buffer size then enq 1 to dequeue the right value', function () {
|
|
164
|
+
const size = 5;
|
|
165
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
166
|
+
const buffers = ['12345', '1'];
|
|
167
|
+
for (const buffer of buffers) {
|
|
168
|
+
ringBuffer.enq(buffer);
|
|
169
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
170
|
+
}
|
|
171
|
+
const reader = ringBuffer.getReader();
|
|
172
|
+
let i = 0;
|
|
173
|
+
for (const _ of buffers) {
|
|
174
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
175
|
+
if (i === 0) {
|
|
176
|
+
expect(readBuffer).to.equal('23451');
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
expect(readBuffer).to.equal(undefined);
|
|
180
|
+
}
|
|
181
|
+
i++;
|
|
182
|
+
}
|
|
183
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
184
|
+
});
|
|
185
|
+
it('expect enq buffer size then enq 1 twice to dequeue the right value', function () {
|
|
186
|
+
const size = 5;
|
|
187
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
188
|
+
const buffers = ['12345', '1', '12345', '1'];
|
|
189
|
+
for (const buffer of buffers) {
|
|
190
|
+
ringBuffer.enq(buffer);
|
|
191
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
192
|
+
}
|
|
193
|
+
const reader = ringBuffer.getReader();
|
|
194
|
+
let i = 0;
|
|
195
|
+
for (const _ of buffers) {
|
|
196
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
197
|
+
if (i === 0) {
|
|
198
|
+
expect(readBuffer).to.equal('23451');
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
expect(readBuffer).to.equal(undefined);
|
|
202
|
+
}
|
|
203
|
+
i++;
|
|
204
|
+
}
|
|
205
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
206
|
+
});
|
|
207
|
+
it('expect enq buffer size of various sizes dequeue the right value', function () {
|
|
208
|
+
const size = 5;
|
|
209
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
210
|
+
const buffers = ['12345', '123', '678', '12345', '1', '12345', '123', '12', '12', '1', '12', '123', '1234', '12345', '1', '12'];
|
|
211
|
+
for (const buffer of buffers) {
|
|
212
|
+
ringBuffer.enq(buffer);
|
|
213
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
214
|
+
}
|
|
215
|
+
const reader = ringBuffer.getReader();
|
|
216
|
+
let i = 0;
|
|
217
|
+
for (const _ of buffers) {
|
|
218
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
219
|
+
if (i === 0) {
|
|
220
|
+
expect(readBuffer).to.equal('45112');
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
expect(readBuffer).to.equal(undefined);
|
|
224
|
+
}
|
|
225
|
+
i++;
|
|
226
|
+
}
|
|
227
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
228
|
+
});
|
|
229
|
+
it('expect enq buffer sizes < buffer size to dequeue normally', function () {
|
|
230
|
+
const size = 5;
|
|
231
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
232
|
+
const buffers = ['1', '1'];
|
|
233
|
+
for (const buffer of buffers) {
|
|
234
|
+
ringBuffer.enq(buffer);
|
|
235
|
+
}
|
|
236
|
+
expect(ringBuffer.size()).to.be.equal(2);
|
|
237
|
+
const reader = ringBuffer.getReader();
|
|
238
|
+
let i = 0;
|
|
239
|
+
for (const _ of buffers) {
|
|
240
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
241
|
+
if (i === 0) {
|
|
242
|
+
expect(readBuffer).to.equal('11');
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
expect(readBuffer).to.equal(undefined);
|
|
246
|
+
}
|
|
247
|
+
i++;
|
|
248
|
+
}
|
|
249
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
250
|
+
});
|
|
251
|
+
it('expect enq buffer size of various sizes dequeue the right value', function () {
|
|
252
|
+
const size = 5;
|
|
253
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
254
|
+
const buffers = ['1', '1', '12', '12'];
|
|
255
|
+
for (const buffer of buffers) {
|
|
256
|
+
ringBuffer.enq(buffer);
|
|
257
|
+
}
|
|
258
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
259
|
+
const reader = ringBuffer.getReader();
|
|
260
|
+
let i = 0;
|
|
261
|
+
for (const _ of buffers) {
|
|
262
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
263
|
+
if (i === 0) {
|
|
264
|
+
expect(readBuffer).to.equal('11212');
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
expect(readBuffer).to.equal(undefined);
|
|
268
|
+
}
|
|
269
|
+
i++;
|
|
270
|
+
}
|
|
271
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
272
|
+
});
|
|
273
|
+
it('expect multiple enq and deq to deq the right values', function () {
|
|
274
|
+
const size = 5;
|
|
275
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
276
|
+
ringBuffer.enq('12345');
|
|
277
|
+
expect(ringBuffer.size()).to.be.equal(size);
|
|
278
|
+
const reader = ringBuffer.getReader();
|
|
279
|
+
let readBuffer = ringBuffer.deq(reader);
|
|
280
|
+
expect(readBuffer).to.equal('12345');
|
|
281
|
+
ringBuffer.enq('123');
|
|
282
|
+
readBuffer = ringBuffer.deq(reader);
|
|
283
|
+
expect(readBuffer).to.equal('123');
|
|
284
|
+
ringBuffer.enq('12345');
|
|
285
|
+
readBuffer = ringBuffer.deq(reader);
|
|
286
|
+
expect(readBuffer).to.equal('12345');
|
|
287
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
288
|
+
});
|
|
289
|
+
it('expect data from stream on enq', async function () {
|
|
290
|
+
const size = 5;
|
|
291
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
292
|
+
const buffer = 'abc';
|
|
293
|
+
const astream = ringBuffer.getStream();
|
|
294
|
+
const p = new Promise(resolve => {
|
|
295
|
+
astream.on('data', (chunk) => {
|
|
296
|
+
expect(chunk).to.be.equal(buffer);
|
|
297
|
+
resolve();
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
ringBuffer.enq(buffer);
|
|
301
|
+
await p;
|
|
302
|
+
});
|
|
303
|
+
it('expect data from stream when data is already ended', async function () {
|
|
304
|
+
const size = 5;
|
|
305
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
306
|
+
const buffer = 'abc';
|
|
307
|
+
ringBuffer.enq(buffer);
|
|
308
|
+
const astream = ringBuffer.getStream();
|
|
309
|
+
const p = new Promise(resolve => {
|
|
310
|
+
astream.on('data', (chunk) => {
|
|
311
|
+
expect(chunk).to.be.equal(buffer);
|
|
312
|
+
resolve();
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
await p;
|
|
316
|
+
});
|
|
317
|
+
it('expect disposing of a stream to delete it from the ringbuffer', function () {
|
|
318
|
+
const size = 5;
|
|
319
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
320
|
+
const astream = ringBuffer.getStream();
|
|
321
|
+
astream.dispose();
|
|
322
|
+
expect(ringBuffer.streamsSize()).to.be.equal(0);
|
|
323
|
+
expect(ringBuffer.readersSize()).to.be.equal(0);
|
|
324
|
+
});
|
|
325
|
+
it('expect disposing of a reader to delete it from the ringbuffer', function () {
|
|
326
|
+
const size = 5;
|
|
327
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
328
|
+
const reader = ringBuffer.getReader();
|
|
329
|
+
ringBuffer.closeReader(reader);
|
|
330
|
+
expect(ringBuffer.readersSize()).to.be.equal(0);
|
|
331
|
+
});
|
|
332
|
+
it('expect enq a string in utf8 and get it in hex', function () {
|
|
333
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size: 5 });
|
|
334
|
+
const buffer = 'test';
|
|
335
|
+
ringBuffer.enq(buffer);
|
|
336
|
+
expect(ringBuffer.size()).to.be.equal(4);
|
|
337
|
+
const reader = ringBuffer.getReader();
|
|
338
|
+
const readBuffer = ringBuffer.deq(reader, -1, 'hex');
|
|
339
|
+
expect(readBuffer).to.equal('74657374');
|
|
340
|
+
});
|
|
341
|
+
it('expect enq a string in hex and get it in utf8', function () {
|
|
342
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size: 5 });
|
|
343
|
+
const buffer = '74657374';
|
|
344
|
+
ringBuffer.enq(buffer, 'hex');
|
|
345
|
+
expect(ringBuffer.size()).to.be.equal(4);
|
|
346
|
+
const reader = ringBuffer.getReader();
|
|
347
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
348
|
+
expect(readBuffer).to.equal('test');
|
|
349
|
+
});
|
|
350
|
+
it('expect data from stream in hex when enq in uf8', async function () {
|
|
351
|
+
const size = 5;
|
|
352
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size });
|
|
353
|
+
const buffer = 'test';
|
|
354
|
+
ringBuffer.enq(buffer);
|
|
355
|
+
const astream = ringBuffer.getStream('hex');
|
|
356
|
+
const p = new Promise(resolve => {
|
|
357
|
+
astream.on('data', (chunk) => {
|
|
358
|
+
expect(chunk).to.be.equal('74657374');
|
|
359
|
+
resolve();
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
await p;
|
|
363
|
+
});
|
|
364
|
+
it('expect deq a string < ring buffer size with the internal encoding in hex ', function () {
|
|
365
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size: 5, encoding: 'hex' });
|
|
366
|
+
const buffer = 'test';
|
|
367
|
+
ringBuffer.enq(buffer);
|
|
368
|
+
expect(ringBuffer.size()).to.be.equal(4);
|
|
369
|
+
const reader = ringBuffer.getReader();
|
|
370
|
+
const readBuffer = ringBuffer.deq(reader);
|
|
371
|
+
expect(ringBuffer.size()).to.be.equal(4);
|
|
372
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
373
|
+
expect(readBuffer).to.equal(buffer);
|
|
374
|
+
});
|
|
375
|
+
it('expect the ringbuffer to be empty if we enq an empty string', function () {
|
|
376
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size: 5 });
|
|
377
|
+
const buffer = '';
|
|
378
|
+
ringBuffer.enq(buffer);
|
|
379
|
+
expect(ringBuffer.size()).to.be.equal(0);
|
|
380
|
+
expect(ringBuffer.empty()).to.be.equal(true);
|
|
381
|
+
});
|
|
382
|
+
it('expect an invalid reader count to be zero', function () {
|
|
383
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size: 5 });
|
|
384
|
+
expect(ringBuffer.sizeForReader(1)).to.be.equal(0);
|
|
385
|
+
});
|
|
386
|
+
it('expect an invalid reader to be empty', function () {
|
|
387
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size: 5 });
|
|
388
|
+
expect(ringBuffer.emptyForReader(1)).to.be.equal(true);
|
|
389
|
+
});
|
|
390
|
+
it('expect partially deq a string < ring buffer size ', function () {
|
|
391
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size: 5 });
|
|
392
|
+
const buffer = 'test';
|
|
393
|
+
ringBuffer.enq(buffer);
|
|
394
|
+
expect(ringBuffer.size()).to.be.equal(4);
|
|
395
|
+
const reader = ringBuffer.getReader();
|
|
396
|
+
let readBuffer = ringBuffer.deq(reader, 2);
|
|
397
|
+
expect(ringBuffer.size()).to.be.equal(4);
|
|
398
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(2);
|
|
399
|
+
expect(readBuffer).to.equal('te');
|
|
400
|
+
readBuffer = ringBuffer.deq(reader, 2);
|
|
401
|
+
expect(ringBuffer.size()).to.be.equal(4);
|
|
402
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(0);
|
|
403
|
+
expect(readBuffer).to.equal('st');
|
|
404
|
+
});
|
|
405
|
+
it('expect partially deq a string < ring buffer size then enq and deq again ', function () {
|
|
406
|
+
const ringBuffer = new multi_ring_buffer_1.MultiRingBuffer({ size: 5 });
|
|
407
|
+
const buffer = 'test';
|
|
408
|
+
const secondBuffer = 'abcd';
|
|
409
|
+
ringBuffer.enq(buffer);
|
|
410
|
+
expect(ringBuffer.size()).to.be.equal(4);
|
|
411
|
+
const reader = ringBuffer.getReader();
|
|
412
|
+
let readBuffer = ringBuffer.deq(reader, 2);
|
|
413
|
+
expect(ringBuffer.size()).to.be.equal(4);
|
|
414
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(2);
|
|
415
|
+
expect(readBuffer).to.equal('te');
|
|
416
|
+
ringBuffer.enq(secondBuffer);
|
|
417
|
+
readBuffer = ringBuffer.deq(reader, 4);
|
|
418
|
+
expect(ringBuffer.size()).to.be.equal(5);
|
|
419
|
+
expect(readBuffer).to.equal('tabc');
|
|
420
|
+
expect(ringBuffer.sizeForReader(reader)).to.be.equal(1);
|
|
421
|
+
});
|
|
422
|
+
});
|
|
423
|
+
//# sourceMappingURL=multi-ring-buffer.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-ring-buffer.spec.js","sourceRoot":"","sources":["../../src/node/multi-ring-buffer.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-backend-module.d.ts","sourceRoot":"","sources":["../../src/node/process-backend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAa,MAAM,8BAA8B,CAAC;;AAQ1E,wBAqCG"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2017 Ericsson and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
19
|
+
const raw_process_1 = require("./raw-process");
|
|
20
|
+
const terminal_process_1 = require("./terminal-process");
|
|
21
|
+
const task_terminal_process_1 = require("./task-terminal-process");
|
|
22
|
+
const node_1 = require("@theia/core/lib/node");
|
|
23
|
+
const process_manager_1 = require("./process-manager");
|
|
24
|
+
const multi_ring_buffer_1 = require("./multi-ring-buffer");
|
|
25
|
+
exports.default = new inversify_1.ContainerModule(bind => {
|
|
26
|
+
bind(raw_process_1.RawProcess).toSelf().inTransientScope();
|
|
27
|
+
bind(process_manager_1.ProcessManager).toSelf().inSingletonScope();
|
|
28
|
+
bind(node_1.BackendApplicationContribution).toService(process_manager_1.ProcessManager);
|
|
29
|
+
bind(raw_process_1.RawProcessFactory).toFactory(ctx => (options) => {
|
|
30
|
+
const child = new inversify_1.Container({ defaultScope: 'Singleton' });
|
|
31
|
+
child.parent = ctx.container;
|
|
32
|
+
child.bind(raw_process_1.RawProcessOptions).toConstantValue(options);
|
|
33
|
+
return child.get(raw_process_1.RawProcess);
|
|
34
|
+
});
|
|
35
|
+
bind(terminal_process_1.TerminalProcess).toSelf().inTransientScope();
|
|
36
|
+
bind(terminal_process_1.TerminalProcessFactory).toFactory(ctx => (options) => {
|
|
37
|
+
const child = new inversify_1.Container({ defaultScope: 'Singleton' });
|
|
38
|
+
child.parent = ctx.container;
|
|
39
|
+
child.bind(terminal_process_1.TerminalProcessOptions).toConstantValue(options);
|
|
40
|
+
return child.get(terminal_process_1.TerminalProcess);
|
|
41
|
+
});
|
|
42
|
+
bind(task_terminal_process_1.TaskTerminalProcess).toSelf().inTransientScope();
|
|
43
|
+
bind(task_terminal_process_1.TaskTerminalProcessFactory).toFactory(ctx => (options) => {
|
|
44
|
+
const child = ctx.container.createChild();
|
|
45
|
+
child.bind(terminal_process_1.TerminalProcessOptions).toConstantValue(options);
|
|
46
|
+
return child.get(task_terminal_process_1.TaskTerminalProcess);
|
|
47
|
+
});
|
|
48
|
+
bind(multi_ring_buffer_1.MultiRingBuffer).toSelf().inTransientScope();
|
|
49
|
+
/* 1MB size, TODO should be a user preference. */
|
|
50
|
+
bind(multi_ring_buffer_1.MultiRingBufferOptions).toConstantValue({ size: 1048576 });
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=process-backend-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-backend-module.js","sourceRoot":"","sources":["../../src/node/process-backend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,4DAA0E;AAC1E,+CAAiG;AACjG,yDAAqG;AACrG,mEAA0F;AAC1F,+CAAsE;AACtE,uDAAmD;AACnD,2DAA8E;AAE9E,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,wBAAU,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7C,IAAI,CAAC,gCAAc,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjD,IAAI,CAAC,qCAA8B,CAAC,CAAC,SAAS,CAAC,gCAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,+BAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CACpC,CAAC,OAA2C,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,IAAI,qBAAS,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3D,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;QAE7B,KAAK,CAAC,IAAI,CAAC,+BAAiB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC,GAAG,CAAC,wBAAU,CAAC,CAAC;IACjC,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,kCAAe,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAClD,IAAI,CAAC,yCAAsB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CACzC,CAAC,OAA+B,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,qBAAS,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3D,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;QAE7B,KAAK,CAAC,IAAI,CAAC,yCAAsB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC,GAAG,CAAC,kCAAe,CAAC,CAAC;IACtC,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,2CAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtD,IAAI,CAAC,kDAA0B,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAC7C,CAAC,OAA+B,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,yCAAsB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC,GAAG,CAAC,2CAAmB,CAAC,CAAC;IAC1C,CAAC,CACJ,CAAC;IAEF,IAAI,CAAC,mCAAe,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAClD,iDAAiD;IACjD,IAAI,CAAC,0CAAsB,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Emitter, Event } from '@theia/core/lib/common';
|
|
2
|
+
import { ILogger } from '@theia/core/lib/common/logger';
|
|
3
|
+
import { BackendApplicationContribution } from '@theia/core/lib/node';
|
|
4
|
+
import { ManagedProcessManager, ManagedProcess } from '../common/process-manager-types';
|
|
5
|
+
import { Process } from './process';
|
|
6
|
+
export declare class ProcessManager implements ManagedProcessManager, BackendApplicationContribution {
|
|
7
|
+
protected logger: ILogger;
|
|
8
|
+
protected readonly processes: Map<number, Process>;
|
|
9
|
+
protected readonly deleteEmitter: Emitter<number>;
|
|
10
|
+
constructor(logger: ILogger);
|
|
11
|
+
/**
|
|
12
|
+
* Registers the given process into this manager. Both on process termination and on error,
|
|
13
|
+
* the process will be automatically removed from the manager.
|
|
14
|
+
*
|
|
15
|
+
* @param process the process to register.
|
|
16
|
+
*/
|
|
17
|
+
register(process: Process): number;
|
|
18
|
+
/**
|
|
19
|
+
* @returns a random id for a process that is not assigned to a different process yet.
|
|
20
|
+
*/
|
|
21
|
+
protected generateId(): number;
|
|
22
|
+
/**
|
|
23
|
+
* Removes the process from this process manager. Invoking this method, will make
|
|
24
|
+
* sure that the process is terminated before eliminating it from the manager's cache.
|
|
25
|
+
*
|
|
26
|
+
* @param process the process to unregister from this process manager.
|
|
27
|
+
*/
|
|
28
|
+
unregister(process: ManagedProcess): void;
|
|
29
|
+
get(id: number): ManagedProcess | undefined;
|
|
30
|
+
get onDelete(): Event<number>;
|
|
31
|
+
onStop(): void;
|
|
32
|
+
private getProcessLabel;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=process-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-manager.d.ts","sourceRoot":"","sources":["../../src/node/process-manager.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAExF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBACa,cAAe,YAAW,qBAAqB,EAAE,8BAA8B;IAMjD,SAAS,CAAC,MAAM,EAAE,OAAO;IAJhE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAGD,MAAM,EAAE,OAAO;IAMhE;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAOlC;;OAEG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM;IAW9B;;;;;OAKG;IACH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAezC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI3C,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,CAE5B;IAED,MAAM,IAAI,IAAI;IAUd,OAAO,CAAC,eAAe;CAI1B"}
|