@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.
Files changed (139) hide show
  1. package/lib/application-control/config.js +2 -2
  2. package/lib/application-control/config.js.map +1 -1
  3. package/lib/application-control/install.d.ts.map +1 -1
  4. package/lib/application-control/install.js +1 -0
  5. package/lib/application-control/install.js.map +1 -1
  6. package/lib/application-control/models.d.ts +5 -0
  7. package/lib/application-control/models.d.ts.map +1 -1
  8. package/lib/application-control/models.js +24 -12
  9. package/lib/application-control/models.js.map +1 -1
  10. package/lib/application-control/status.d.ts.map +1 -1
  11. package/lib/application-control/status.js +10 -12
  12. package/lib/application-control/status.js.map +1 -1
  13. package/lib/application-control/utils.js +2 -2
  14. package/lib/application-control/utils.js.map +1 -1
  15. package/lib/cloud-connection/device-agent-cloud-connection.d.ts +2 -2
  16. package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
  17. package/lib/cloud-connection/device-agent-cloud-connection.js +35 -15
  18. package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
  19. package/lib/cloud-connection/live-updates-handler.d.ts +3 -2
  20. package/lib/cloud-connection/live-updates-handler.d.ts.map +1 -1
  21. package/lib/cloud-connection/live-updates-handler.js +24 -21
  22. package/lib/cloud-connection/live-updates-handler.js.map +1 -1
  23. package/lib/cloud-connection/live-updates-handler.test.js +132 -16
  24. package/lib/cloud-connection/live-updates-handler.test.js.map +1 -1
  25. package/lib/cloud-connection/passthrough-handler.d.ts +5 -3
  26. package/lib/cloud-connection/passthrough-handler.d.ts.map +1 -1
  27. package/lib/cloud-connection/passthrough-handler.js +76 -62
  28. package/lib/cloud-connection/passthrough-handler.js.map +1 -1
  29. package/lib/cloud-connection/shadow-handler.d.ts +2 -0
  30. package/lib/cloud-connection/shadow-handler.d.ts.map +1 -1
  31. package/lib/cloud-connection/shadow-handler.js +5 -5
  32. package/lib/cloud-connection/shadow-handler.js.map +1 -1
  33. package/lib/cloud-connection/transaction-manager.d.ts +3 -0
  34. package/lib/cloud-connection/transaction-manager.d.ts.map +1 -1
  35. package/lib/cloud-connection/transaction-manager.js +11 -0
  36. package/lib/cloud-connection/transaction-manager.js.map +1 -1
  37. package/lib/cloud-connection/transaction-manager.test.js +102 -0
  38. package/lib/cloud-connection/transaction-manager.test.js.map +1 -1
  39. package/lib/device-control/device-control.d.ts +10 -2
  40. package/lib/device-control/device-control.d.ts.map +1 -1
  41. package/lib/device-control/device-control.js +86 -10
  42. package/lib/device-control/device-control.js.map +1 -1
  43. package/lib/docker/docker-compose.d.ts +14 -0
  44. package/lib/docker/docker-compose.d.ts.map +1 -0
  45. package/lib/docker/docker-compose.js +56 -0
  46. package/lib/docker/docker-compose.js.map +1 -0
  47. package/lib/index.js +2 -5
  48. package/lib/index.js.map +1 -1
  49. package/lib/infrastructure/agent-config.d.ts +45 -14
  50. package/lib/infrastructure/agent-config.d.ts.map +1 -1
  51. package/lib/infrastructure/agent-config.js +30 -15
  52. package/lib/infrastructure/agent-config.js.map +1 -1
  53. package/lib/infrastructure/agent-config.test.js +3 -0
  54. package/lib/infrastructure/agent-config.test.js.map +1 -1
  55. package/lib/local-connection/rabbitmq-connection.js +11 -11
  56. package/lib/local-connection/rabbitmq-connection.js.map +1 -1
  57. package/lib/secure-tunneling/secure-tunneling.d.ts +14 -22
  58. package/lib/secure-tunneling/secure-tunneling.d.ts.map +1 -1
  59. package/lib/secure-tunneling/secure-tunneling.js +34 -34
  60. package/lib/secure-tunneling/secure-tunneling.js.map +1 -1
  61. package/lib/secure-tunneling/secure-tunneling.test.js +18 -18
  62. package/lib/secure-tunneling/secure-tunneling.test.js.map +1 -1
  63. package/lib/subcommands/device/clean.js +5 -5
  64. package/lib/subcommands/device/clean.js.map +1 -1
  65. package/lib/subcommands/device/get-info.d.ts +2 -0
  66. package/lib/subcommands/device/get-info.d.ts.map +1 -0
  67. package/lib/subcommands/device/get-info.js +36 -0
  68. package/lib/subcommands/device/get-info.js.map +1 -0
  69. package/lib/subcommands/device/index.d.ts.map +1 -1
  70. package/lib/subcommands/device/index.js +11 -2
  71. package/lib/subcommands/device/index.js.map +1 -1
  72. package/lib/subcommands/device/init.d.ts +5 -0
  73. package/lib/subcommands/device/init.d.ts.map +1 -0
  74. package/lib/subcommands/device/{device.js → init.js} +2 -41
  75. package/lib/subcommands/device/init.js.map +1 -0
  76. package/lib/subcommands/device/refresh.d.ts +2 -0
  77. package/lib/subcommands/device/refresh.d.ts.map +1 -0
  78. package/lib/subcommands/device/refresh.js +24 -0
  79. package/lib/subcommands/device/refresh.js.map +1 -0
  80. package/lib/subcommands/device/restart.d.ts +2 -0
  81. package/lib/subcommands/device/restart.d.ts.map +1 -0
  82. package/lib/subcommands/device/restart.js +14 -0
  83. package/lib/subcommands/device/restart.js.map +1 -0
  84. package/lib/util/check-for-updates.d.ts +3 -0
  85. package/lib/util/check-for-updates.d.ts.map +1 -0
  86. package/lib/util/check-for-updates.js +69 -0
  87. package/lib/util/check-for-updates.js.map +1 -0
  88. package/lib/util/file.d.ts +7 -0
  89. package/lib/util/file.d.ts.map +1 -0
  90. package/lib/util/file.js +66 -0
  91. package/lib/util/file.js.map +1 -0
  92. package/lib/util/file.test.d.ts +2 -0
  93. package/lib/util/file.test.d.ts.map +1 -0
  94. package/lib/util/file.test.js +87 -0
  95. package/lib/util/file.test.js.map +1 -0
  96. package/package.json +8 -7
  97. package/readme.md +3 -3
  98. package/src/application-control/config.ts +1 -1
  99. package/src/application-control/install.ts +1 -0
  100. package/src/application-control/models.ts +36 -13
  101. package/src/application-control/status.ts +9 -7
  102. package/src/application-control/utils.ts +1 -1
  103. package/src/cloud-connection/device-agent-cloud-connection.ts +54 -30
  104. package/src/cloud-connection/live-updates-handler.test.ts +161 -20
  105. package/src/cloud-connection/live-updates-handler.ts +30 -26
  106. package/src/cloud-connection/passthrough-handler.ts +98 -76
  107. package/src/cloud-connection/shadow-handler.ts +19 -7
  108. package/src/cloud-connection/transaction-manager.test.ts +124 -0
  109. package/src/cloud-connection/transaction-manager.ts +15 -0
  110. package/src/device-control/device-control.ts +86 -11
  111. package/src/docker/docker-compose.ts +60 -0
  112. package/src/index.ts +2 -6
  113. package/src/infrastructure/agent-config.test.ts +3 -0
  114. package/src/infrastructure/agent-config.ts +38 -40
  115. package/src/local-connection/rabbitmq-connection.ts +8 -8
  116. package/src/secure-tunneling/secure-tunneling.test.ts +26 -26
  117. package/src/secure-tunneling/secure-tunneling.ts +48 -55
  118. package/src/subcommands/device/clean.ts +1 -1
  119. package/src/subcommands/device/get-info.ts +49 -0
  120. package/src/subcommands/device/index.ts +11 -2
  121. package/src/subcommands/device/{device.ts → init.ts} +0 -58
  122. package/src/subcommands/device/refresh.ts +22 -0
  123. package/src/subcommands/device/restart.ts +11 -0
  124. package/src/util/check-for-updates.ts +69 -0
  125. package/src/util/file.test.ts +90 -0
  126. package/src/util/file.ts +76 -0
  127. package/lib/docker/docker-compose-cmd.d.ts +0 -5
  128. package/lib/docker/docker-compose-cmd.d.ts.map +0 -1
  129. package/lib/docker/docker-compose-cmd.js +0 -16
  130. package/lib/docker/docker-compose-cmd.js.map +0 -1
  131. package/lib/subcommands/device/device.d.ts +0 -7
  132. package/lib/subcommands/device/device.d.ts.map +0 -1
  133. package/lib/subcommands/device/device.js.map +0 -1
  134. package/lib/util/safe-rimraf.d.ts +0 -2
  135. package/lib/util/safe-rimraf.d.ts.map +0 -1
  136. package/lib/util/safe-rimraf.js +0 -16
  137. package/lib/util/safe-rimraf.js.map +0 -1
  138. package/src/docker/docker-compose-cmd.ts +0 -15
  139. 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
- : 60000;
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.setLiveUpdates({
120
- deviceStats: false,
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
- try {
129
- while (this.continuePublishing(messageType, txId)) {
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
- catch (e) {
136
- logger_1.logger.error(`Error publishing live updates for ${messageType}: ${e.message}`);
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
- void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.device_stats, async () => {
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
- void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.app_state, async () => {
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
- void this.startAppLogStream(appLogs.projectId, txId);
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":"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"}
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 = jest.fn();
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
- void liveUpdatesHandler.handleToggles(testTrueToggles, emptyTxId);
34
- // called twice, once for device stats, once for app state
35
- expect(mockStartPublishingLiveUpdates).toBeCalledTimes(2);
36
- // restartLiveUpdatesTimeout is always called once when handleToggles is called
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
- // Second call -> should not call startPublishingLiveUpdates should not be called
80
+ expect(mockClient.publish).toBeCalledTimes(1);
81
+ expect(jest.mocked(sleep_1.default)).toBeCalledTimes(1);
82
+ // Second call
39
83
  jest.clearAllMocks();
40
- void liveUpdatesHandler.handleToggles(testTrueToggles, emptyTxId);
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
- void liveUpdatesHandler.handleToggles(testTrueToggles, emptyTxId);
47
- expect(mockStartPublishingLiveUpdates).toBeCalledTimes(2);
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
- void liveUpdatesHandler.handleToggles(testFalseToggles, emptyTxId);
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
- void liveUpdatesHandler.handleToggles(testTrueToggles, emptyTxId);
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":"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"}
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: any;
5
- channel: any;
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":"AAUA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMxC,qBAAa,kBAAkB;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,MAAC;IACX,OAAO,MAAC;IACR,WAAW,MAAC;gBAEP,SAAS,EAAE,SAAS;IAInB,KAAK;CAwCnB;AAsDD,wBAAsB,UAAU,CAAC,kBAAkB,EAAE,kBAAkB,iBAetE"}
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.runChannel = exports.PassthroughHandler = void 0;
4
- // eslint-disable-next-line
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 setup() {
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(`Setting up alwaysAI Local Connection on host: ${constants_1.LOCAL_CONNECTION_HOST} and channel key: ${constants_1.LOCAL_CONNECTION_ROUTING_KEY}`);
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
- exports.PassthroughHandler = PassthroughHandler;
49
- function processPublish(passthroughHandler) {
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
- const parsedPacket = JSON.parse(packet);
55
- if (parsedPacket && parsedPacket['action']) {
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 (e) {
88
- logger_1.logger.error(`There was a problem parsing RabbitMQ packet ${e}`);
89
- passthroughHandler.channel.ack(msg);
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
- async function runChannel(passthroughHandler) {
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":"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"}
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;AAchE,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;YAiDvB,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;IAkBM,uBAAuB;IAOvB,kBAAkB,CAAC,SAAS,EAAE,MAAM;CAY5C"}
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"}