ml-testing-toolkit 18.16.0 → 18.16.1
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.
|
@@ -47,12 +47,6 @@ class InboundEventListener {
|
|
|
47
47
|
|
|
48
48
|
async init () {
|
|
49
49
|
this.userConfig = await Config.getStoredUserConfig()
|
|
50
|
-
|
|
51
|
-
// Fixes the MyEmitter listener leak issue
|
|
52
|
-
if (this.emitter.listenerCount('newInbound') > 0) {
|
|
53
|
-
this.emitter.removeAllListeners('newInbound')
|
|
54
|
-
}
|
|
55
|
-
|
|
56
50
|
this.emitter.on('newInbound', (data) => {
|
|
57
51
|
for (const [, eventListener] of Object.entries(this.eventListeners)) {
|
|
58
52
|
// Match method, path and condition for each inbound request
|
|
@@ -104,74 +98,59 @@ class InboundEventListener {
|
|
|
104
98
|
|
|
105
99
|
getMessage (clientName, timeout = 5000) {
|
|
106
100
|
return new Promise((resolve, reject) => {
|
|
107
|
-
let timer = null
|
|
108
|
-
|
|
109
|
-
const cleanup = () => {
|
|
110
|
-
if (timer) {
|
|
111
|
-
clearTimeout(timer)
|
|
112
|
-
timer = null
|
|
113
|
-
}
|
|
114
|
-
if (this.eventListeners[clientName] && this.eventListeners[clientName].eventEmitter) {
|
|
115
|
-
this.eventListeners[clientName].eventEmitter.removeAllListeners('newMessage')
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
101
|
if (!this.eventListeners[clientName]) {
|
|
120
102
|
resolve(null)
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
// Store the message somewhere
|
|
127
|
-
const retMessage = this.parseMessage(this.eventListeners[clientName].message)
|
|
128
|
-
// Destroy the event listener
|
|
129
|
-
this.destroy(clientName)
|
|
130
|
-
// Return the stored message
|
|
131
|
-
// this.customLog('Returning stored message...')
|
|
132
|
-
if (this.transformer.reverseTransform) {
|
|
133
|
-
this.transformer.reverseTransform(retMessage).then((result) => {
|
|
134
|
-
resolve(result)
|
|
135
|
-
}).catch((err) => {
|
|
136
|
-
this.customLog('Error transforming message: ' + err)
|
|
137
|
-
resolve(retMessage)
|
|
138
|
-
})
|
|
139
|
-
} else {
|
|
140
|
-
resolve(retMessage)
|
|
141
|
-
}
|
|
142
|
-
return
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// Listen for the new message for some time
|
|
146
|
-
// Set the timer
|
|
147
|
-
timer = setTimeout(() => {
|
|
148
|
-
try {
|
|
149
|
-
this.customLog('Error: Timeout')
|
|
103
|
+
} else {
|
|
104
|
+
// Check for the message received already
|
|
105
|
+
if (this.eventListeners[clientName].message !== null) {
|
|
106
|
+
// Store the message somewhere
|
|
107
|
+
const retMessage = this.parseMessage(this.eventListeners[clientName].message)
|
|
150
108
|
// Destroy the event listener
|
|
151
109
|
this.destroy(clientName)
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const retMessage = this.parseMessage(message)
|
|
163
|
-
|
|
164
|
-
if (this.transformer.reverseTransform) {
|
|
165
|
-
this.transformer.reverseTransform(retMessage).then((result) => {
|
|
166
|
-
resolve(result)
|
|
167
|
-
}).catch((err) => {
|
|
168
|
-
this.customLog('Error transforming message: ' + err)
|
|
110
|
+
// Return the stored message
|
|
111
|
+
// this.customLog('Returning stored message...')
|
|
112
|
+
if (this.transformer.reverseTransform) {
|
|
113
|
+
this.transformer.reverseTransform(retMessage).then((result) => {
|
|
114
|
+
resolve(result)
|
|
115
|
+
}).catch((err) => {
|
|
116
|
+
this.customLog('Error transforming message: ' + err)
|
|
117
|
+
resolve(retMessage)
|
|
118
|
+
})
|
|
119
|
+
} else {
|
|
169
120
|
resolve(retMessage)
|
|
170
|
-
}
|
|
121
|
+
}
|
|
171
122
|
} else {
|
|
172
|
-
|
|
123
|
+
// Listen for the new message for some time
|
|
124
|
+
let timer = null
|
|
125
|
+
// Set the timer
|
|
126
|
+
timer = setTimeout(() => {
|
|
127
|
+
try {
|
|
128
|
+
this.customLog('Error: Timeout')
|
|
129
|
+
// Destroy the event listener
|
|
130
|
+
this.destroy(clientName)
|
|
131
|
+
resolve(null)
|
|
132
|
+
} catch (err) {
|
|
133
|
+
reject(err)
|
|
134
|
+
}
|
|
135
|
+
}, timeout)
|
|
136
|
+
// Listen for message
|
|
137
|
+
this.eventListeners[clientName].eventEmitter.once('newMessage', (message) => {
|
|
138
|
+
clearTimeout(timer)
|
|
139
|
+
this.destroy(clientName)
|
|
140
|
+
const retMessage = this.parseMessage(message)
|
|
141
|
+
if (this.transformer.reverseTransform) {
|
|
142
|
+
this.transformer.reverseTransform(retMessage).then((result) => {
|
|
143
|
+
resolve(result)
|
|
144
|
+
}).catch((err) => {
|
|
145
|
+
this.customLog('Error transforming message: ' + err)
|
|
146
|
+
resolve(retMessage)
|
|
147
|
+
})
|
|
148
|
+
} else {
|
|
149
|
+
resolve(retMessage)
|
|
150
|
+
}
|
|
151
|
+
})
|
|
173
152
|
}
|
|
174
|
-
}
|
|
153
|
+
}
|
|
175
154
|
})
|
|
176
155
|
}
|
|
177
156
|
|
|
@@ -53,8 +53,6 @@ class WebSocketClientManager {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
connect (url, clientName, timeout = 15000) {
|
|
56
|
-
this.customLog(`Connecting to WebSocket URL: ${url} with client name: ${clientName} and timeout: ${timeout}ms`)
|
|
57
|
-
|
|
58
56
|
const tlsOptions = { rejectUnauthorized: false }
|
|
59
57
|
const urlObject = new URL(url)
|
|
60
58
|
if (this.userConfig.CLIENT_MUTUAL_TLS_ENABLED) {
|
|
@@ -109,48 +107,41 @@ class WebSocketClientManager {
|
|
|
109
107
|
|
|
110
108
|
getMessage (clientName, timeout = 5000) {
|
|
111
109
|
return new Promise((resolve, reject) => {
|
|
112
|
-
let timer = null
|
|
113
|
-
|
|
114
|
-
const cleanup = () => {
|
|
115
|
-
if (timer) {
|
|
116
|
-
clearTimeout(timer)
|
|
117
|
-
timer = null
|
|
118
|
-
}
|
|
119
|
-
if (this.ws[clientName] && this.ws[clientName].eventEmitter) {
|
|
120
|
-
this.ws[clientName].eventEmitter.removeAllListeners('newMessage')
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
110
|
if (!this.ws[clientName]) {
|
|
125
111
|
resolve(null)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
this.disconnect(clientName)
|
|
133
|
-
resolve(retMessage)
|
|
134
|
-
return
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// Set timeout
|
|
138
|
-
timer = setTimeout(() => {
|
|
139
|
-
try {
|
|
140
|
-
cleanup()
|
|
112
|
+
} else {
|
|
113
|
+
// Check for the message received already
|
|
114
|
+
if (this.ws[clientName].message !== null) {
|
|
115
|
+
// Store the message somewhere
|
|
116
|
+
const retMessage = this.parseMessage(this.ws[clientName].message)
|
|
117
|
+
// Disconnect the websocket connection
|
|
141
118
|
this.disconnect(clientName)
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
119
|
+
// Return the stored message
|
|
120
|
+
// this.customLog('Returning stored message...')
|
|
121
|
+
resolve(retMessage)
|
|
122
|
+
} else {
|
|
123
|
+
// Listen for the new message for some time
|
|
124
|
+
let timer = null
|
|
125
|
+
// Set the timer
|
|
126
|
+
timer = setTimeout(() => {
|
|
127
|
+
try {
|
|
128
|
+
this.ws[clientName].eventEmitter.removeAllListeners('newMessage')
|
|
129
|
+
// Disconnect the websocket connection
|
|
130
|
+
this.disconnect(clientName)
|
|
131
|
+
resolve(null)
|
|
132
|
+
} catch (err) {
|
|
133
|
+
reject(err)
|
|
134
|
+
}
|
|
135
|
+
}, timeout)
|
|
136
|
+
// Listen for message
|
|
137
|
+
this.ws[clientName].eventEmitter.once('newMessage', (message) => {
|
|
138
|
+
clearTimeout(timer)
|
|
139
|
+
this.ws[clientName].eventEmitter.removeAllListeners('newMessage')
|
|
140
|
+
this.disconnect(clientName)
|
|
141
|
+
resolve(this.parseMessage(message))
|
|
142
|
+
})
|
|
145
143
|
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Listen for message
|
|
149
|
-
this.ws[clientName].eventEmitter.once('newMessage', (message) => {
|
|
150
|
-
cleanup()
|
|
151
|
-
this.disconnect(clientName)
|
|
152
|
-
resolve(this.parseMessage(message))
|
|
153
|
-
})
|
|
144
|
+
}
|
|
154
145
|
})
|
|
155
146
|
}
|
|
156
147
|
|
|
@@ -164,10 +155,7 @@ class WebSocketClientManager {
|
|
|
164
155
|
|
|
165
156
|
disconnect (clientName) {
|
|
166
157
|
if (this.ws[clientName]) {
|
|
167
|
-
|
|
168
|
-
this.ws[clientName].client.removeAllListeners()
|
|
169
|
-
this.ws[clientName].client.close()
|
|
170
|
-
}
|
|
158
|
+
this.ws[clientName].client.close()
|
|
171
159
|
if (this.ws[clientName].eventEmitter) {
|
|
172
160
|
this.ws[clientName].eventEmitter.removeAllListeners()
|
|
173
161
|
}
|
|
@@ -182,10 +170,7 @@ class WebSocketClientManager {
|
|
|
182
170
|
|
|
183
171
|
disconnectAll () {
|
|
184
172
|
for (const clientName in this.ws) {
|
|
185
|
-
|
|
186
|
-
this.ws[clientName].client.removeAllListeners()
|
|
187
|
-
this.ws[clientName].client.close()
|
|
188
|
-
}
|
|
173
|
+
this.ws[clientName].client.close()
|
|
189
174
|
if (this.ws[clientName].eventEmitter) {
|
|
190
175
|
this.ws[clientName].eventEmitter.removeAllListeners()
|
|
191
176
|
}
|
|
@@ -198,6 +183,13 @@ class WebSocketClientManager {
|
|
|
198
183
|
}
|
|
199
184
|
return true
|
|
200
185
|
}
|
|
186
|
+
|
|
187
|
+
clearAllTimers () {
|
|
188
|
+
Object.keys(this.timers).forEach((clientName) => {
|
|
189
|
+
clearTimeout(this.timers[clientName])
|
|
190
|
+
delete this.timers[clientName]
|
|
191
|
+
})
|
|
192
|
+
}
|
|
201
193
|
}
|
|
202
194
|
|
|
203
195
|
module.exports = {
|