@alwaysai/device-agent 1.4.0 → 1.5.0
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/application-control/config.js +2 -2
- package/lib/application-control/config.js.map +1 -1
- package/lib/application-control/install.d.ts.map +1 -1
- package/lib/application-control/install.js +1 -0
- package/lib/application-control/install.js.map +1 -1
- package/lib/application-control/models.d.ts +5 -0
- package/lib/application-control/models.d.ts.map +1 -1
- package/lib/application-control/models.js +24 -12
- package/lib/application-control/models.js.map +1 -1
- package/lib/application-control/status.d.ts.map +1 -1
- package/lib/application-control/status.js +10 -12
- package/lib/application-control/status.js.map +1 -1
- package/lib/application-control/utils.js +2 -2
- package/lib/application-control/utils.js.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts +2 -2
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.js +35 -15
- package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
- package/lib/cloud-connection/live-updates-handler.d.ts +3 -2
- package/lib/cloud-connection/live-updates-handler.d.ts.map +1 -1
- package/lib/cloud-connection/live-updates-handler.js +24 -21
- package/lib/cloud-connection/live-updates-handler.js.map +1 -1
- package/lib/cloud-connection/live-updates-handler.test.js +132 -16
- package/lib/cloud-connection/live-updates-handler.test.js.map +1 -1
- package/lib/cloud-connection/passthrough-handler.d.ts +5 -3
- package/lib/cloud-connection/passthrough-handler.d.ts.map +1 -1
- package/lib/cloud-connection/passthrough-handler.js +76 -62
- package/lib/cloud-connection/passthrough-handler.js.map +1 -1
- package/lib/cloud-connection/shadow-handler.d.ts +2 -0
- package/lib/cloud-connection/shadow-handler.d.ts.map +1 -1
- package/lib/cloud-connection/shadow-handler.js +5 -5
- package/lib/cloud-connection/shadow-handler.js.map +1 -1
- package/lib/cloud-connection/transaction-manager.d.ts +3 -0
- package/lib/cloud-connection/transaction-manager.d.ts.map +1 -1
- package/lib/cloud-connection/transaction-manager.js +11 -0
- package/lib/cloud-connection/transaction-manager.js.map +1 -1
- package/lib/cloud-connection/transaction-manager.test.js +102 -0
- package/lib/cloud-connection/transaction-manager.test.js.map +1 -1
- package/lib/device-control/device-control.d.ts +10 -2
- package/lib/device-control/device-control.d.ts.map +1 -1
- package/lib/device-control/device-control.js +86 -10
- package/lib/device-control/device-control.js.map +1 -1
- package/lib/docker/docker-compose.d.ts +14 -0
- package/lib/docker/docker-compose.d.ts.map +1 -0
- package/lib/docker/docker-compose.js +56 -0
- package/lib/docker/docker-compose.js.map +1 -0
- package/lib/index.js +2 -5
- package/lib/index.js.map +1 -1
- package/lib/infrastructure/agent-config.d.ts +45 -14
- package/lib/infrastructure/agent-config.d.ts.map +1 -1
- package/lib/infrastructure/agent-config.js +30 -15
- package/lib/infrastructure/agent-config.js.map +1 -1
- package/lib/infrastructure/agent-config.test.js +3 -0
- package/lib/infrastructure/agent-config.test.js.map +1 -1
- package/lib/local-connection/rabbitmq-connection.js +11 -11
- package/lib/local-connection/rabbitmq-connection.js.map +1 -1
- package/lib/secure-tunneling/secure-tunneling.d.ts +14 -22
- package/lib/secure-tunneling/secure-tunneling.d.ts.map +1 -1
- package/lib/secure-tunneling/secure-tunneling.js +34 -34
- package/lib/secure-tunneling/secure-tunneling.js.map +1 -1
- package/lib/secure-tunneling/secure-tunneling.test.js +18 -18
- package/lib/secure-tunneling/secure-tunneling.test.js.map +1 -1
- package/lib/subcommands/device/clean.js +5 -5
- package/lib/subcommands/device/clean.js.map +1 -1
- package/lib/subcommands/device/get-info.d.ts +2 -0
- package/lib/subcommands/device/get-info.d.ts.map +1 -0
- package/lib/subcommands/device/get-info.js +36 -0
- package/lib/subcommands/device/get-info.js.map +1 -0
- package/lib/subcommands/device/index.d.ts.map +1 -1
- package/lib/subcommands/device/index.js +11 -2
- package/lib/subcommands/device/index.js.map +1 -1
- package/lib/subcommands/device/init.d.ts +5 -0
- package/lib/subcommands/device/init.d.ts.map +1 -0
- package/lib/subcommands/device/{device.js → init.js} +2 -41
- package/lib/subcommands/device/init.js.map +1 -0
- package/lib/subcommands/device/refresh.d.ts +2 -0
- package/lib/subcommands/device/refresh.d.ts.map +1 -0
- package/lib/subcommands/device/refresh.js +24 -0
- package/lib/subcommands/device/refresh.js.map +1 -0
- package/lib/subcommands/device/restart.d.ts +2 -0
- package/lib/subcommands/device/restart.d.ts.map +1 -0
- package/lib/subcommands/device/restart.js +14 -0
- package/lib/subcommands/device/restart.js.map +1 -0
- package/lib/util/check-for-updates.d.ts +3 -0
- package/lib/util/check-for-updates.d.ts.map +1 -0
- package/lib/util/check-for-updates.js +69 -0
- package/lib/util/check-for-updates.js.map +1 -0
- package/lib/util/file.d.ts +7 -0
- package/lib/util/file.d.ts.map +1 -0
- package/lib/util/file.js +66 -0
- package/lib/util/file.js.map +1 -0
- package/lib/util/file.test.d.ts +2 -0
- package/lib/util/file.test.d.ts.map +1 -0
- package/lib/util/file.test.js +87 -0
- package/lib/util/file.test.js.map +1 -0
- package/package.json +8 -7
- package/readme.md +3 -3
- package/src/application-control/config.ts +1 -1
- package/src/application-control/install.ts +1 -0
- package/src/application-control/models.ts +36 -13
- package/src/application-control/status.ts +9 -7
- package/src/application-control/utils.ts +1 -1
- package/src/cloud-connection/device-agent-cloud-connection.ts +54 -30
- package/src/cloud-connection/live-updates-handler.test.ts +161 -20
- package/src/cloud-connection/live-updates-handler.ts +30 -26
- package/src/cloud-connection/passthrough-handler.ts +98 -76
- package/src/cloud-connection/shadow-handler.ts +19 -7
- package/src/cloud-connection/transaction-manager.test.ts +124 -0
- package/src/cloud-connection/transaction-manager.ts +15 -0
- package/src/device-control/device-control.ts +86 -11
- package/src/docker/docker-compose.ts +60 -0
- package/src/index.ts +2 -6
- package/src/infrastructure/agent-config.test.ts +3 -0
- package/src/infrastructure/agent-config.ts +38 -40
- package/src/local-connection/rabbitmq-connection.ts +8 -8
- package/src/secure-tunneling/secure-tunneling.test.ts +26 -26
- package/src/secure-tunneling/secure-tunneling.ts +48 -55
- package/src/subcommands/device/clean.ts +1 -1
- package/src/subcommands/device/get-info.ts +49 -0
- package/src/subcommands/device/index.ts +11 -2
- package/src/subcommands/device/{device.ts → init.ts} +0 -58
- package/src/subcommands/device/refresh.ts +22 -0
- package/src/subcommands/device/restart.ts +11 -0
- package/src/util/check-for-updates.ts +69 -0
- package/src/util/file.test.ts +90 -0
- package/src/util/file.ts +76 -0
- package/lib/docker/docker-compose-cmd.d.ts +0 -5
- package/lib/docker/docker-compose-cmd.d.ts.map +0 -1
- package/lib/docker/docker-compose-cmd.js +0 -16
- package/lib/docker/docker-compose-cmd.js.map +0 -1
- package/lib/subcommands/device/device.d.ts +0 -7
- package/lib/subcommands/device/device.d.ts.map +0 -1
- package/lib/subcommands/device/device.js.map +0 -1
- package/lib/util/safe-rimraf.d.ts +0 -2
- package/lib/util/safe-rimraf.d.ts.map +0 -1
- package/lib/util/safe-rimraf.js +0 -16
- package/lib/util/safe-rimraf.js.map +0 -1
- package/src/docker/docker-compose-cmd.ts +0 -15
- package/src/util/safe-rimraf.ts +0 -14
|
@@ -9,7 +9,7 @@ const messages_1 = require("./messages");
|
|
|
9
9
|
const environment_1 = require("../environment");
|
|
10
10
|
const LIVE_UPDATES_TIMEOUT = environment_1.ALWAYSAI_LIVE_UPDATES_TIMEOUT_MS
|
|
11
11
|
? parseInt(environment_1.ALWAYSAI_LIVE_UPDATES_TIMEOUT_MS)
|
|
12
|
-
:
|
|
12
|
+
: 80000;
|
|
13
13
|
class LiveUpdatesHandler {
|
|
14
14
|
/*=================================================================
|
|
15
15
|
Public interface
|
|
@@ -105,44 +105,42 @@ class LiveUpdatesHandler {
|
|
|
105
105
|
logger_1.logger.error(`Unrecognized live updates flag ${flag}`);
|
|
106
106
|
return -1;
|
|
107
107
|
}
|
|
108
|
-
setLiveUpdates(toggles) {
|
|
109
|
-
if (toggles.deviceStats !== undefined) {
|
|
110
|
-
this.liveUpdatesAlive.device_stats = toggles.deviceStats;
|
|
111
|
-
}
|
|
112
|
-
if (toggles.appState !== undefined) {
|
|
113
|
-
this.liveUpdatesAlive.app_state = toggles.appState;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
108
|
restartLiveUpdatesTimeout() {
|
|
117
109
|
clearTimeout(this.liveUpdatesTimeout);
|
|
118
110
|
this.liveUpdatesTimeout = setTimeout(() => {
|
|
119
|
-
this.
|
|
120
|
-
|
|
121
|
-
appState: false
|
|
122
|
-
});
|
|
111
|
+
this.disableAppStateLiveUpdates();
|
|
112
|
+
this.disableDeviceStatsLiveUpdates();
|
|
123
113
|
this.appLogStreams.clear();
|
|
124
114
|
}, LIVE_UPDATES_TIMEOUT);
|
|
125
115
|
}
|
|
126
116
|
async startPublishingLiveUpdates(messageType, getMessage, txId) {
|
|
127
117
|
logger_1.logger.info(`Turned on live updates for ${messageType}`);
|
|
128
|
-
|
|
129
|
-
|
|
118
|
+
while (this.continuePublishing(messageType, txId)) {
|
|
119
|
+
try {
|
|
130
120
|
const message = await getMessage();
|
|
131
121
|
this.publisher.publishToClient(message, logger_1.logger.silly);
|
|
132
122
|
await (0, sleep_1.default)(this.getLiveUpdatesInterval(messageType));
|
|
133
123
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
124
|
+
catch (e) {
|
|
125
|
+
logger_1.logger.error(`Error publishing live updates for ${messageType}: ${e.message}`);
|
|
126
|
+
}
|
|
137
127
|
}
|
|
138
128
|
logger_1.logger.info(`Turned off live updates for ${messageType}`);
|
|
139
129
|
}
|
|
140
130
|
getDeviceStatsLiveUpdates() {
|
|
141
131
|
return this.liveUpdatesAlive.device_stats;
|
|
142
132
|
}
|
|
133
|
+
disableDeviceStatsLiveUpdates() {
|
|
134
|
+
logger_1.logger.info('Disabled live updates for device_stats');
|
|
135
|
+
this.liveUpdatesAlive.device_stats = false;
|
|
136
|
+
}
|
|
143
137
|
getAppStateLiveUpdates() {
|
|
144
138
|
return this.liveUpdatesAlive.app_state;
|
|
145
139
|
}
|
|
140
|
+
disableAppStateLiveUpdates() {
|
|
141
|
+
logger_1.logger.info('Disabled live updates for app_state');
|
|
142
|
+
this.liveUpdatesAlive.app_state = false;
|
|
143
|
+
}
|
|
146
144
|
getAppLogsLiveUpdates() {
|
|
147
145
|
return this.liveUpdatesAlive.app_logs;
|
|
148
146
|
}
|
|
@@ -170,15 +168,17 @@ class LiveUpdatesHandler {
|
|
|
170
168
|
async handleToggles(toggles, txId) {
|
|
171
169
|
const { deviceStats, appState, appLogs } = toggles;
|
|
172
170
|
this.restartLiveUpdatesTimeout();
|
|
171
|
+
const promises = [];
|
|
173
172
|
if (deviceStats !== undefined) {
|
|
174
173
|
const currentDeviceStats = this.getDeviceStatsLiveUpdates();
|
|
175
174
|
this.liveUpdatesAlive.device_stats = deviceStats;
|
|
176
175
|
if (deviceStats && currentDeviceStats !== true) {
|
|
177
176
|
// Don't wait for this call to finish since it loops until disabled
|
|
178
|
-
|
|
177
|
+
const deviceStatsPromise = this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.device_stats, async () => {
|
|
179
178
|
const payload = await (0, messages_1.getDeviceStatsPayload)();
|
|
180
179
|
return (0, device_agent_schemas_1.buildDeviceStatsMessage)(this.clientId, payload, txId);
|
|
181
180
|
}, txId);
|
|
181
|
+
promises.push(deviceStatsPromise);
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
if (appState !== undefined) {
|
|
@@ -186,22 +186,25 @@ class LiveUpdatesHandler {
|
|
|
186
186
|
this.liveUpdatesAlive.app_state = appState;
|
|
187
187
|
if (appState && currentAppState !== true) {
|
|
188
188
|
// Don't wait for this call to finish since it loops until disabled
|
|
189
|
-
|
|
189
|
+
const appStatePromise = this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.app_state, async () => {
|
|
190
190
|
const payload = await (0, messages_1.getAppStatePayload)();
|
|
191
191
|
return (0, device_agent_schemas_1.buildAppStateMessage)(this.clientId, payload, txId);
|
|
192
192
|
}, txId);
|
|
193
|
+
promises.push(appStatePromise);
|
|
193
194
|
}
|
|
194
195
|
}
|
|
195
196
|
if (appLogs !== undefined) {
|
|
196
197
|
const currentAppLogs = this.getAppLogsLiveUpdates();
|
|
197
198
|
if (appLogs.toggle && currentAppLogs !== true) {
|
|
198
199
|
// Don't wait for this call to finish since it loops until disabled
|
|
199
|
-
|
|
200
|
+
const appLogPromise = this.startAppLogStream(appLogs.projectId, txId);
|
|
201
|
+
promises.push(appLogPromise);
|
|
200
202
|
}
|
|
201
203
|
else {
|
|
202
204
|
this.appLogStreams.delete(appLogs.projectId);
|
|
203
205
|
}
|
|
204
206
|
}
|
|
207
|
+
return promises;
|
|
205
208
|
}
|
|
206
209
|
}
|
|
207
210
|
exports.LiveUpdatesHandler = LiveUpdatesHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-updates-handler.js","sourceRoot":"","sources":["../../src/cloud-connection/live-updates-handler.ts"],"names":[],"mappings":";;;AAAA,yEAWwC;AACxC,gEAAoD;AACpD,2CAAwC;AACxC,yCAAkC;AAElC,yCAAuE;AACvE,gDAAkE;
|
|
1
|
+
{"version":3,"file":"live-updates-handler.js","sourceRoot":"","sources":["../../src/cloud-connection/live-updates-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const live_updates_handler_1 = require("./live-updates-handler");
|
|
4
4
|
const publisher_1 = require("./publisher");
|
|
5
|
+
const sleep_1 = require("../util/sleep");
|
|
6
|
+
const messages_1 = require("./messages");
|
|
7
|
+
jest.mock('../util/sleep');
|
|
8
|
+
jest.mock('./messages');
|
|
9
|
+
jest.mocked(messages_1.getDeviceStatsPayload).mockResolvedValue({});
|
|
5
10
|
global.setTimeout = jest.fn();
|
|
6
11
|
// https://github.com/facebook/react-native/issues/35701
|
|
7
12
|
Object.defineProperty(global, 'performance', {
|
|
@@ -15,52 +20,134 @@ const testFalseToggles = {
|
|
|
15
20
|
deviceStats: false,
|
|
16
21
|
appState: false
|
|
17
22
|
};
|
|
18
|
-
const mockClient =
|
|
23
|
+
const mockClient = {
|
|
24
|
+
publish: jest.fn()
|
|
25
|
+
};
|
|
19
26
|
const clientId = 'test-client';
|
|
20
27
|
const emptyTxId = '';
|
|
21
|
-
// NOTE: this was the way I found to mock private class functions
|
|
22
|
-
const mockStartPublishingLiveUpdates = jest.spyOn(live_updates_handler_1.LiveUpdatesHandler.prototype, 'startPublishingLiveUpdates');
|
|
23
|
-
mockStartPublishingLiveUpdates.mockResolvedValue(null);
|
|
24
28
|
describe('Test Live Updates Handler', () => {
|
|
25
29
|
let liveUpdatesHandler;
|
|
26
30
|
let publisher;
|
|
27
31
|
beforeEach(() => {
|
|
32
|
+
mockClient.publish = jest.fn();
|
|
33
|
+
jest.mocked(sleep_1.default).mockImplementation(async () => {
|
|
34
|
+
return;
|
|
35
|
+
});
|
|
28
36
|
publisher = new publisher_1.Publisher(mockClient, clientId);
|
|
29
37
|
liveUpdatesHandler = new live_updates_handler_1.LiveUpdatesHandler(publisher, clientId);
|
|
30
38
|
jest.clearAllMocks();
|
|
31
39
|
});
|
|
40
|
+
test('enable device stats', async () => {
|
|
41
|
+
mockClient.publish = jest.fn().mockImplementation(async () => {
|
|
42
|
+
liveUpdatesHandler.disableDeviceStatsLiveUpdates();
|
|
43
|
+
});
|
|
44
|
+
const enable = { deviceStats: true };
|
|
45
|
+
const promises = await liveUpdatesHandler.handleToggles(enable, emptyTxId);
|
|
46
|
+
await Promise.all(promises);
|
|
47
|
+
expect(jest.mocked(setTimeout)).toBeCalledTimes(1);
|
|
48
|
+
expect(mockClient.publish).toBeCalledTimes(1);
|
|
49
|
+
expect(jest.mocked(sleep_1.default)).toBeCalledTimes(1);
|
|
50
|
+
});
|
|
51
|
+
test('enable app state', async () => {
|
|
52
|
+
mockClient.publish = jest.fn().mockImplementation(async () => {
|
|
53
|
+
liveUpdatesHandler.disableAppStateLiveUpdates();
|
|
54
|
+
});
|
|
55
|
+
const enable = { appState: true };
|
|
56
|
+
const promises = await liveUpdatesHandler.handleToggles(enable, emptyTxId);
|
|
57
|
+
await Promise.all(promises);
|
|
58
|
+
expect(jest.mocked(setTimeout)).toBeCalledTimes(1);
|
|
59
|
+
expect(mockClient.publish).toBeCalledTimes(1);
|
|
60
|
+
expect(jest.mocked(sleep_1.default)).toBeCalledTimes(1);
|
|
61
|
+
});
|
|
32
62
|
test('ignore subsequent enables', async () => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
63
|
+
// Block on the first sleep call
|
|
64
|
+
let doneWaiting;
|
|
65
|
+
const waitPromise = new Promise(function (resolve) {
|
|
66
|
+
doneWaiting = resolve;
|
|
67
|
+
});
|
|
68
|
+
let startSleeping;
|
|
69
|
+
const sleepPromise = new Promise(function (resolve) {
|
|
70
|
+
startSleeping = resolve;
|
|
71
|
+
});
|
|
72
|
+
jest.mocked(sleep_1.default).mockImplementation(async () => {
|
|
73
|
+
startSleeping();
|
|
74
|
+
await waitPromise;
|
|
75
|
+
});
|
|
76
|
+
const enable = { deviceStats: true };
|
|
77
|
+
await liveUpdatesHandler.handleToggles(enable, emptyTxId);
|
|
78
|
+
await sleepPromise;
|
|
37
79
|
expect(jest.mocked(setTimeout)).toBeCalledTimes(1);
|
|
38
|
-
|
|
80
|
+
expect(mockClient.publish).toBeCalledTimes(1);
|
|
81
|
+
expect(jest.mocked(sleep_1.default)).toBeCalledTimes(1);
|
|
82
|
+
// Second call
|
|
39
83
|
jest.clearAllMocks();
|
|
40
|
-
|
|
41
|
-
expect(mockStartPublishingLiveUpdates).toBeCalledTimes(0);
|
|
84
|
+
await liveUpdatesHandler.handleToggles(enable, emptyTxId);
|
|
42
85
|
expect(jest.mocked(setTimeout)).toHaveBeenCalledTimes(1);
|
|
86
|
+
expect(mockClient.publish).toBeCalledTimes(0);
|
|
87
|
+
expect(jest.mocked(sleep_1.default)).toBeCalledTimes(0);
|
|
88
|
+
// Disable and clean up
|
|
89
|
+
liveUpdatesHandler.disableDeviceStatsLiveUpdates();
|
|
90
|
+
doneWaiting();
|
|
43
91
|
});
|
|
44
92
|
test('test disable live updates', async () => {
|
|
93
|
+
let doneWaiting;
|
|
94
|
+
const waitPromise = new Promise(function (resolve) {
|
|
95
|
+
doneWaiting = resolve;
|
|
96
|
+
});
|
|
97
|
+
let startSleeping;
|
|
98
|
+
const sleepPromise = new Promise(function (resolve) {
|
|
99
|
+
startSleeping = resolve;
|
|
100
|
+
});
|
|
101
|
+
// Wait for two sleep calls, one for Device Stats and one for App State
|
|
102
|
+
jest
|
|
103
|
+
.mocked(sleep_1.default)
|
|
104
|
+
.mockImplementationOnce(async () => {
|
|
105
|
+
await waitPromise;
|
|
106
|
+
})
|
|
107
|
+
.mockImplementationOnce(async () => {
|
|
108
|
+
startSleeping();
|
|
109
|
+
await waitPromise;
|
|
110
|
+
});
|
|
45
111
|
// Test calling handleToggles one time, enabling it
|
|
46
|
-
|
|
47
|
-
|
|
112
|
+
await liveUpdatesHandler.handleToggles(testTrueToggles, emptyTxId);
|
|
113
|
+
await sleepPromise;
|
|
48
114
|
expect(jest.mocked(setTimeout)).toHaveBeenCalledTimes(1);
|
|
115
|
+
expect(jest.mocked(sleep_1.default)).toBeCalledTimes(2);
|
|
49
116
|
expect(liveUpdatesHandler.getDeviceStatsLiveUpdates()).toBe(true);
|
|
50
117
|
expect(liveUpdatesHandler.getAppStateLiveUpdates()).toBe(true);
|
|
51
118
|
expect(liveUpdatesHandler.getAppLogsLiveUpdates()).toBe(false);
|
|
52
119
|
// Check to see that attributes are properly set to false when disabled
|
|
53
120
|
jest.clearAllMocks();
|
|
54
|
-
|
|
55
|
-
expect(mockStartPublishingLiveUpdates).toBeCalledTimes(0);
|
|
121
|
+
await liveUpdatesHandler.handleToggles(testFalseToggles, emptyTxId);
|
|
56
122
|
expect(jest.mocked(setTimeout)).toHaveBeenCalledTimes(1);
|
|
123
|
+
expect(jest.mocked(sleep_1.default)).toBeCalledTimes(0);
|
|
57
124
|
expect(liveUpdatesHandler.getDeviceStatsLiveUpdates()).toBe(false);
|
|
58
125
|
expect(liveUpdatesHandler.getAppStateLiveUpdates()).toBe(false);
|
|
59
126
|
expect(liveUpdatesHandler.getAppLogsLiveUpdates()).toBe(false);
|
|
127
|
+
doneWaiting();
|
|
60
128
|
});
|
|
61
129
|
test('timeout turns off live updates', async () => {
|
|
62
130
|
jest.useFakeTimers({ legacyFakeTimers: true });
|
|
63
|
-
|
|
131
|
+
let doneWaiting;
|
|
132
|
+
const waitPromise = new Promise(function (resolve) {
|
|
133
|
+
doneWaiting = resolve;
|
|
134
|
+
});
|
|
135
|
+
let startSleeping;
|
|
136
|
+
const sleepPromise = new Promise(function (resolve) {
|
|
137
|
+
startSleeping = resolve;
|
|
138
|
+
});
|
|
139
|
+
// Wait for two sleep calls, one for Device Stats and one for App State
|
|
140
|
+
jest
|
|
141
|
+
.mocked(sleep_1.default)
|
|
142
|
+
.mockImplementationOnce(async () => {
|
|
143
|
+
await waitPromise;
|
|
144
|
+
})
|
|
145
|
+
.mockImplementationOnce(async () => {
|
|
146
|
+
startSleeping();
|
|
147
|
+
await waitPromise;
|
|
148
|
+
});
|
|
149
|
+
await liveUpdatesHandler.handleToggles(testTrueToggles, emptyTxId);
|
|
150
|
+
await sleepPromise;
|
|
64
151
|
expect(liveUpdatesHandler.getDeviceStatsLiveUpdates()).toBe(true);
|
|
65
152
|
expect(liveUpdatesHandler.getAppStateLiveUpdates()).toBe(true);
|
|
66
153
|
expect(liveUpdatesHandler.getAppLogsLiveUpdates()).toBe(false);
|
|
@@ -68,6 +155,35 @@ describe('Test Live Updates Handler', () => {
|
|
|
68
155
|
expect(liveUpdatesHandler.getDeviceStatsLiveUpdates()).toBe(false);
|
|
69
156
|
expect(liveUpdatesHandler.getAppStateLiveUpdates()).toBe(false);
|
|
70
157
|
expect(liveUpdatesHandler.getAppLogsLiveUpdates()).toBe(false);
|
|
158
|
+
doneWaiting();
|
|
159
|
+
});
|
|
160
|
+
test("failure doesn't kill publish loop", async () => {
|
|
161
|
+
// Block on the first sleep call
|
|
162
|
+
let doneWaiting;
|
|
163
|
+
const waitPromise = new Promise(function (resolve) {
|
|
164
|
+
doneWaiting = resolve;
|
|
165
|
+
});
|
|
166
|
+
let startSleeping;
|
|
167
|
+
const sleepPromise = new Promise(function (resolve) {
|
|
168
|
+
startSleeping = resolve;
|
|
169
|
+
});
|
|
170
|
+
jest
|
|
171
|
+
.mocked(sleep_1.default)
|
|
172
|
+
.mockImplementationOnce(async () => {
|
|
173
|
+
throw new Error('Test error!');
|
|
174
|
+
})
|
|
175
|
+
.mockImplementationOnce(async () => {
|
|
176
|
+
startSleeping();
|
|
177
|
+
await waitPromise;
|
|
178
|
+
});
|
|
179
|
+
const enable = { deviceStats: true };
|
|
180
|
+
await liveUpdatesHandler.handleToggles(enable, emptyTxId);
|
|
181
|
+
await sleepPromise;
|
|
182
|
+
expect(jest.mocked(setTimeout)).toBeCalledTimes(1);
|
|
183
|
+
expect(mockClient.publish).toBeCalledTimes(2);
|
|
184
|
+
expect(jest.mocked(sleep_1.default)).toBeCalledTimes(2);
|
|
185
|
+
liveUpdatesHandler.disableDeviceStatsLiveUpdates();
|
|
186
|
+
doneWaiting();
|
|
71
187
|
});
|
|
72
188
|
});
|
|
73
189
|
//# sourceMappingURL=live-updates-handler.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-updates-handler.test.js","sourceRoot":"","sources":["../../src/cloud-connection/live-updates-handler.test.ts"],"names":[],"mappings":";;AAAA,iEAA4D;AAC5D,2CAAwC;
|
|
1
|
+
{"version":3,"file":"live-updates-handler.test.js","sourceRoot":"","sources":["../../src/cloud-connection/live-updates-handler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
import * as amqp from 'amqplib';
|
|
1
2
|
import { Publisher } from './publisher';
|
|
2
3
|
export declare class PassthroughHandler {
|
|
3
4
|
publisher: Publisher;
|
|
4
|
-
connection:
|
|
5
|
-
channel:
|
|
5
|
+
connection: amqp.Connection | undefined;
|
|
6
|
+
channel: amqp.Channel;
|
|
6
7
|
packetQueue: any;
|
|
7
8
|
constructor(publisher: Publisher);
|
|
9
|
+
runChannel: () => Promise<void>;
|
|
10
|
+
establishLocalConnection(): Promise<void>;
|
|
8
11
|
setup(): Promise<void>;
|
|
9
12
|
}
|
|
10
|
-
export declare function runChannel(passthroughHandler: PassthroughHandler): Promise<void>;
|
|
11
13
|
//# sourceMappingURL=passthrough-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passthrough-handler.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/passthrough-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"passthrough-handler.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/passthrough-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAYhC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMxC,qBAAa,kBAAkB;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IACxC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;IACtB,WAAW,MAAC;gBAEP,SAAS,EAAE,SAAS;IAIhC,UAAU,sBAgER;IAEI,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IA8ClC,KAAK;CAiBnB"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
const amqp = require('amqplib');
|
|
3
|
+
exports.PassthroughHandler = void 0;
|
|
4
|
+
const amqp = require("amqplib");
|
|
6
5
|
const constants_1 = require("../local-connection/constants");
|
|
7
6
|
const rabbitmq_connection_1 = require("../local-connection/rabbitmq-connection");
|
|
8
7
|
const logger_1 = require("../util/logger");
|
|
@@ -12,18 +11,78 @@ const ackQueue = [];
|
|
|
12
11
|
const MAX_LOCAL_CONNECTION_ATTEMPTS = 10;
|
|
13
12
|
class PassthroughHandler {
|
|
14
13
|
constructor(publisher) {
|
|
14
|
+
this.runChannel = async () => {
|
|
15
|
+
logger_1.logger.debug('Beginning to consume packets');
|
|
16
|
+
await this.channel.consume(this.packetQueue, (msg) => {
|
|
17
|
+
// NOTE: this needs to be an arrow function and then the whole contents of processPublish are below
|
|
18
|
+
if ((msg === null || msg === void 0 ? void 0 : msg.content) !== undefined) {
|
|
19
|
+
const packet = JSON.parse(msg.content.toString());
|
|
20
|
+
messageQueue.push({ packet, msg });
|
|
21
|
+
while (messageQueue.length > 0) {
|
|
22
|
+
const entry = messageQueue.shift();
|
|
23
|
+
const { packet, msg } = entry;
|
|
24
|
+
try {
|
|
25
|
+
const parsedPacket = JSON.parse(packet);
|
|
26
|
+
if (parsedPacket === null || parsedPacket === void 0 ? void 0 : parsedPacket['action']) {
|
|
27
|
+
switch (parsedPacket['action']) {
|
|
28
|
+
case 'analytics':
|
|
29
|
+
ackQueue.push(msg);
|
|
30
|
+
// FIXME: put real topic here
|
|
31
|
+
this.publisher.publishToCloudWithAck(packet, (errOrResp) => {
|
|
32
|
+
while (ackQueue.length > 0) {
|
|
33
|
+
const msg = ackQueue.shift();
|
|
34
|
+
if (errOrResp === true) {
|
|
35
|
+
this.channel.ack(msg); // acknowledge, allow queue to discard
|
|
36
|
+
}
|
|
37
|
+
else if (errOrResp === false) {
|
|
38
|
+
this.channel.reject(msg, true); // reject and requeue
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
break;
|
|
43
|
+
case 'heartbeat':
|
|
44
|
+
this.channel.ack(msg);
|
|
45
|
+
logger_1.logger.silly(`Heartbeat package received & acknowledged: ${packet}`);
|
|
46
|
+
break;
|
|
47
|
+
default:
|
|
48
|
+
this.channel.ack(msg);
|
|
49
|
+
logger_1.logger.debug(`Unknown 'action' package received & acknowledged: ${packet}`);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.channel.ack(msg);
|
|
55
|
+
logger_1.logger.debug(`Received & acknowledged a RabbitMQ Package of unknown structure: ${parsedPacket}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
logger_1.logger.error(`There was a problem parsing RabbitMQ packet ${e}`);
|
|
60
|
+
this.channel.ack(msg);
|
|
61
|
+
logger_1.logger.debug(`Problematic packet was acknowledged`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}, {
|
|
66
|
+
noAck: false // When true, RabbitMQ deletes message as soon as it is consumed
|
|
67
|
+
});
|
|
68
|
+
};
|
|
15
69
|
this.publisher = publisher;
|
|
16
70
|
}
|
|
17
|
-
async
|
|
18
|
-
await (0, rabbitmq_connection_1.setupRabbitMQContainer)();
|
|
71
|
+
async establishLocalConnection() {
|
|
19
72
|
let connectAttempts = 0;
|
|
20
73
|
let connected = false;
|
|
21
|
-
logger_1.logger.debug(`
|
|
74
|
+
logger_1.logger.debug(`Establishing local connection...`);
|
|
22
75
|
while (connectAttempts <= MAX_LOCAL_CONNECTION_ATTEMPTS &&
|
|
23
76
|
this.connection === undefined) {
|
|
24
77
|
try {
|
|
25
78
|
this.connection = await amqp.connect(`amqp://${constants_1.LOCAL_CONNECTION_HOST}:${constants_1.LOCAL_CONNECTION_PORT}`);
|
|
26
79
|
this.channel = await this.connection.createChannel();
|
|
80
|
+
this.connection.on('error', async () => {
|
|
81
|
+
logger_1.logger.error(`Local connection failed. Attempting to reconnect...`);
|
|
82
|
+
await (0, rabbitmq_connection_1.stopRabbitMQContainer)();
|
|
83
|
+
this.connection = undefined;
|
|
84
|
+
await this.setup();
|
|
85
|
+
});
|
|
27
86
|
connected = true;
|
|
28
87
|
}
|
|
29
88
|
catch (e) {
|
|
@@ -34,74 +93,29 @@ class PassthroughHandler {
|
|
|
34
93
|
}
|
|
35
94
|
}
|
|
36
95
|
if (connected === true) {
|
|
37
|
-
this.channel.prefetch(1); // This ensures we only get one packet at a time! This appears to have prevented throttling
|
|
96
|
+
await this.channel.prefetch(1); // This ensures we only get one packet at a time! This appears to have prevented throttling
|
|
38
97
|
this.packetQueue = `${constants_1.LOCAL_CONNECTION_ROUTING_KEY}`;
|
|
39
98
|
await this.channel.assertQueue(this.packetQueue, {
|
|
40
99
|
durable: true
|
|
41
100
|
});
|
|
101
|
+
logger_1.logger.info(`Local connection established.`);
|
|
42
102
|
}
|
|
43
103
|
else {
|
|
44
104
|
throw new Error('Unable to establish connection to alwaysAI Local Connection, please try restarting Device Agent.');
|
|
45
105
|
}
|
|
46
106
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
while (messageQueue.length > 0) {
|
|
51
|
-
const entry = messageQueue.shift();
|
|
52
|
-
const { packet, msg } = entry;
|
|
107
|
+
async setup() {
|
|
108
|
+
logger_1.logger.debug(`Setting up alwaysAI Local Connection on host: ${constants_1.LOCAL_CONNECTION_HOST} and channel key: ${constants_1.LOCAL_CONNECTION_ROUTING_KEY}`);
|
|
109
|
+
await (0, rabbitmq_connection_1.setupRabbitMQContainer)();
|
|
53
110
|
try {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
switch (parsedPacket['action']) {
|
|
57
|
-
case 'analytics':
|
|
58
|
-
ackQueue.push(msg);
|
|
59
|
-
// FIXME: put real topic here
|
|
60
|
-
passthroughHandler.publisher.publishToCloudWithAck(packet, (errOrResp) => {
|
|
61
|
-
while (ackQueue.length > 0) {
|
|
62
|
-
const msg = ackQueue.shift();
|
|
63
|
-
if (errOrResp === true) {
|
|
64
|
-
passthroughHandler.channel.ack(msg); // acknowledge, allow queue to discard
|
|
65
|
-
}
|
|
66
|
-
else if (errOrResp === false) {
|
|
67
|
-
passthroughHandler.channel.reject(msg, true); // reject and requeue
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
break;
|
|
72
|
-
case 'heartbeat':
|
|
73
|
-
passthroughHandler.channel.ack(msg);
|
|
74
|
-
logger_1.logger.debug(`Heartbeat package received & acknowledged: ${packet}`);
|
|
75
|
-
break;
|
|
76
|
-
default:
|
|
77
|
-
passthroughHandler.channel.ack(msg);
|
|
78
|
-
logger_1.logger.debug(`Unknown 'action' package received & acknowledged: ${packet}`);
|
|
79
|
-
break;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
passthroughHandler.channel.ack(msg);
|
|
84
|
-
logger_1.logger.debug(`Received & acknowledged a RabbitMQ Package of unknown structure: ${parsedPacket}`);
|
|
85
|
-
}
|
|
111
|
+
await this.establishLocalConnection();
|
|
112
|
+
await this.runChannel();
|
|
86
113
|
}
|
|
87
|
-
catch (
|
|
88
|
-
logger_1.logger.error(`There was a problem
|
|
89
|
-
|
|
90
|
-
logger_1.logger.debug(`Problematic packet was acknowledged`);
|
|
114
|
+
catch (error) {
|
|
115
|
+
logger_1.logger.error(`There was a problem maintaining RabbitMQ connection: ${error}`);
|
|
116
|
+
throw new Error(`There was a problem maintaining RabbitMQ connection: ${error}`);
|
|
91
117
|
}
|
|
92
118
|
}
|
|
93
119
|
}
|
|
94
|
-
|
|
95
|
-
logger_1.logger.debug('Beginning to consume packets');
|
|
96
|
-
passthroughHandler.channel.consume(passthroughHandler.packetQueue, function (msg) {
|
|
97
|
-
if (msg.content !== undefined) {
|
|
98
|
-
const packet = JSON.parse(msg.content.toString());
|
|
99
|
-
messageQueue.push({ packet, msg });
|
|
100
|
-
processPublish(passthroughHandler);
|
|
101
|
-
}
|
|
102
|
-
}, {
|
|
103
|
-
noAck: false // When true, RabbitMQ deletes message as soon as it is consumed
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
exports.runChannel = runChannel;
|
|
120
|
+
exports.PassthroughHandler = PassthroughHandler;
|
|
107
121
|
//# sourceMappingURL=passthrough-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passthrough-handler.js","sourceRoot":"","sources":["../../src/cloud-connection/passthrough-handler.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"passthrough-handler.js","sourceRoot":"","sources":["../../src/cloud-connection/passthrough-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { AppConfig } from '@alwaysai/app-configuration-schemas';
|
|
|
2
2
|
import { EnvVars } from '../application-control';
|
|
3
3
|
import { Publisher } from './publisher';
|
|
4
4
|
import { AppConfigModels } from './shadow';
|
|
5
|
+
import { SecureTunnelShadowDescriptionReported } from '@alwaysai/device-agent-schemas';
|
|
5
6
|
export declare type AppConfigUpdate = {
|
|
6
7
|
newAppCfg: AppConfig;
|
|
7
8
|
updatedModels?: AppConfigModels;
|
|
@@ -37,6 +38,7 @@ export declare class ShadowHandler {
|
|
|
37
38
|
projectId: string;
|
|
38
39
|
envVars: EnvVars;
|
|
39
40
|
}): Promise<void>;
|
|
41
|
+
updateSecureTunnelShadow(secureTunnelShadowUpdate: SecureTunnelShadowDescriptionReported): Promise<void>;
|
|
40
42
|
getProjectShadowUpdates(): void;
|
|
41
43
|
clearProjectShadow(projectId: string): void;
|
|
42
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadow-handler.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/shadow-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAEV,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,OAAO,EAIR,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAuB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"shadow-handler.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/shadow-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAEV,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,OAAO,EAIR,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAuB,MAAM,UAAU,CAAC;AAChE,OAAO,EAWL,qCAAqC,EACtC,MAAM,gCAAgC,CAAC;AAExC,oBAAY,eAAe,GAAG;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,eAAe,CAAC;CACjC,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAY;IACtB,mBAAmB,EAAE,MAAM,EAAE,CAAM;IAC1C,SAAgB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;gBACzC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS;YAoDpC,uBAAuB;YA8CvB,2BAA2B;YAkC3B,0BAA0B;IAiD3B,mBAAmB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,WAAW,EACZ,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,GAAG,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAqEd,sBAAsB;IAUtB,mBAAmB,CAAC,SAAS,EAAE,MAAM;IAqBrC,oBAAoB,CAAC,EAChC,SAAS,EACT,OAAO,EACR,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;KAClB;IAkBY,wBAAwB,CACnC,wBAAwB,EAAE,qCAAqC;IAa1D,uBAAuB;IAOvB,kBAAkB,CAAC,SAAS,EAAE,MAAM;CAY5C"}
|