@aj-shadow/z-abs-funclayer-engine-server 0.0.0-aj-beta.221

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 (204) hide show
  1. package/.gitattributes +26 -0
  2. package/LICENSE.txt +96 -0
  3. package/README.md +5 -0
  4. package/npm-shrinkwrap.json +13 -0
  5. package/package.json +10 -0
  6. package/project/server/_build/Server-FuncLayer-Engine-server.bld +12 -0
  7. package/project/server/_build/z-abs-funclayer-engine-server.prj +12 -0
  8. package/project/server/address/address-calculator.js +377 -0
  9. package/project/server/address/address-data.js +364 -0
  10. package/project/server/address/address-manager.js +251 -0
  11. package/project/server/address/address.js +176 -0
  12. package/project/server/address/addresses.js +122 -0
  13. package/project/server/address/dns-url-cache.js +130 -0
  14. package/project/server/address/interfaces.js +100 -0
  15. package/project/server/address/local-dns.js +35 -0
  16. package/project/server/address/login-report.js +56 -0
  17. package/project/server/address/networks.js +598 -0
  18. package/project/server/address/real-networks.js +102 -0
  19. package/project/server/address/subnet.js +60 -0
  20. package/project/server/communication/messages/messages-s-to-c/message-execution-started.js +17 -0
  21. package/project/server/communication/messages/messages-s-to-c/message-execution-stopped.js +14 -0
  22. package/project/server/communication/messages/messages-s-to-c/message-test-case-debug-paused.js +18 -0
  23. package/project/server/communication/messages/messages-s-to-c/message-test-case-log.js +25 -0
  24. package/project/server/communication/messages/messages-s-to-c/message-test-case-started.js +21 -0
  25. package/project/server/communication/messages/messages-s-to-c/message-test-case-state.js +18 -0
  26. package/project/server/communication/messages/messages-s-to-c/message-test-case-stopped.js +22 -0
  27. package/project/server/communication/messages/messages-s-to-c/message-test-stage-started.js +19 -0
  28. package/project/server/communication/messages/messages-s-to-c/message-test-stage-stopped.js +19 -0
  29. package/project/server/communication/messages/messages-s-to-c/message-test-suite-started.js +16 -0
  30. package/project/server/communication/messages/messages-s-to-c/message-test-suite-stopped.js +19 -0
  31. package/project/server/communication/messages/messages-s-to-w/message-test-case-debug-actor-index-ok.js +15 -0
  32. package/project/server/communication/messages/messages-w-to-s/message-test-case-debug-actor-index.js +15 -0
  33. package/project/server/debug/debug-step-over.js +54 -0
  34. package/project/server/debug/debugger.js +102 -0
  35. package/project/server/debug-dashboard/debug-dashboard.js +14 -0
  36. package/project/server/debug-dashboard/gauge-manager.js +44 -0
  37. package/project/server/debug-dashboard/gauge.js +37 -0
  38. package/project/server/engine/actor/actor-condition.js +335 -0
  39. package/project/server/engine/actor/actor-intercepting.js +32 -0
  40. package/project/server/engine/actor/actor-local.js +24 -0
  41. package/project/server/engine/actor/actor-mixins/asynch-mixin.js +103 -0
  42. package/project/server/engine/actor/actor-mixins/content-mixin.js +22 -0
  43. package/project/server/engine/actor/actor-mixins/logger-mixin.js +603 -0
  44. package/project/server/engine/actor/actor-mixins/process-mixin.js +35 -0
  45. package/project/server/engine/actor/actor-mixins/shared-data-mixin.js +109 -0
  46. package/project/server/engine/actor/actor-mixins/shared-execution-data-mixin.js +57 -0
  47. package/project/server/engine/actor/actor-mixins/stack-mixin-client.js +157 -0
  48. package/project/server/engine/actor/actor-mixins/stack-mixin-server.js +123 -0
  49. package/project/server/engine/actor/actor-mixins/stack-mixin.js +128 -0
  50. package/project/server/engine/actor/actor-mixins/test-data-mixin.js +402 -0
  51. package/project/server/engine/actor/actor-mixins/timer-mixin.js +44 -0
  52. package/project/server/engine/actor/actor-mixins/verify-mixin-base.js +668 -0
  53. package/project/server/engine/actor/actor-mixins/verify-mixin-mandatory.js +46 -0
  54. package/project/server/engine/actor/actor-mixins/verify-mixin-optional.js +44 -0
  55. package/project/server/engine/actor/actor-mixins/verify-mixin-value.js +71 -0
  56. package/project/server/engine/actor/actor-originating.js +32 -0
  57. package/project/server/engine/actor/actor-part-mixins/part-asynch-mixin.js +24 -0
  58. package/project/server/engine/actor/actor-part-mixins/part-logger-mixin.js +39 -0
  59. package/project/server/engine/actor/actor-part-mixins/part-shared-runtime-data-mixin.js +33 -0
  60. package/project/server/engine/actor/actor-part-mixins/part-timer-mixin.js +12 -0
  61. package/project/server/engine/actor/actor-part-mixins/part-verify-mixin-mandatory.js +15 -0
  62. package/project/server/engine/actor/actor-part-mixins/part-verify-mixin-optional.js +15 -0
  63. package/project/server/engine/actor/actor-part-mixins/part-verify-mixin-value.js +15 -0
  64. package/project/server/engine/actor/actor-part-post.js +37 -0
  65. package/project/server/engine/actor/actor-part-pre.js +37 -0
  66. package/project/server/engine/actor/actor-pending.js +79 -0
  67. package/project/server/engine/actor/actor-proxy.js +38 -0
  68. package/project/server/engine/actor/actor-results.js +36 -0
  69. package/project/server/engine/actor/actor-state-timeout.js +35 -0
  70. package/project/server/engine/actor/actor-sut.js +38 -0
  71. package/project/server/engine/actor/actor-terminating.js +32 -0
  72. package/project/server/engine/actor/actor.js +553 -0
  73. package/project/server/engine/actor-phase.js +26 -0
  74. package/project/server/engine/actor-state-machine-base.js +298 -0
  75. package/project/server/engine/actor-state-machine-data.js +383 -0
  76. package/project/server/engine/actor-state-machine-exec.js +137 -0
  77. package/project/server/engine/actor-state-machine-post.js +177 -0
  78. package/project/server/engine/actor-state-machine-pre.js +142 -0
  79. package/project/server/engine/actor-state-machine-process.js +88 -0
  80. package/project/server/engine/actor-state-machine-state.js +52 -0
  81. package/project/server/engine/actor-state-machine.js +185 -0
  82. package/project/server/engine/actor-state.js +35 -0
  83. package/project/server/engine/actor-worker.js +68 -0
  84. package/project/server/engine/actors-phase.js +49 -0
  85. package/project/server/engine/actors.js +317 -0
  86. package/project/server/engine/data/content-audio.js +18 -0
  87. package/project/server/engine/data/content-base.js +91 -0
  88. package/project/server/engine/data/content-binary.js +15 -0
  89. package/project/server/engine/data/content-cache.js +67 -0
  90. package/project/server/engine/data/content-data.js +254 -0
  91. package/project/server/engine/data/content-documents.js +18 -0
  92. package/project/server/engine/data/content-image.js +20 -0
  93. package/project/server/engine/data/content-other.js +19 -0
  94. package/project/server/engine/data/content-text.js +19 -0
  95. package/project/server/engine/data/content-undefined.js +14 -0
  96. package/project/server/engine/data/content-video.js +20 -0
  97. package/project/server/engine/data/content.js +60 -0
  98. package/project/server/engine/data/runtime-data-shared.js +75 -0
  99. package/project/server/engine/data/test-data.js +239 -0
  100. package/project/server/engine/execution-context-test-case.js +48 -0
  101. package/project/server/engine/execution-context-test-suite.js +66 -0
  102. package/project/server/engine/execution-context.js +93 -0
  103. package/project/server/engine/stage-setter.js +132 -0
  104. package/project/server/engine/stage.js +83 -0
  105. package/project/server/engine/test-case-load.js +25 -0
  106. package/project/server/engine/test-case-loader.js +125 -0
  107. package/project/server/engine/test-case-not-found.js +29 -0
  108. package/project/server/engine/test-case-result-type.js +42 -0
  109. package/project/server/engine/test-case.js +417 -0
  110. package/project/server/engine/test-output.js +116 -0
  111. package/project/server/engine/test-statistics-test-case.js +59 -0
  112. package/project/server/engine/test-statistics-test-suite.js +63 -0
  113. package/project/server/engine/test-suite.js +276 -0
  114. package/project/server/stack/api/base-64.js +16 -0
  115. package/project/server/stack/api/const-commands-decoder.js +15 -0
  116. package/project/server/stack/api/const-commands-encoder.js +15 -0
  117. package/project/server/stack/api/hmacSha1.js +14 -0
  118. package/project/server/stack/api/json-web-token.js +38 -0
  119. package/project/server/stack/api/sdp/sdp-decoder.js +70 -0
  120. package/project/server/stack/api/sdp/sdp-encoder.js +40 -0
  121. package/project/server/stack/api/sdp/sdp-media-attribute.js +13 -0
  122. package/project/server/stack/api/sdp/sdp-media-session.js +16 -0
  123. package/project/server/stack/api/sdp/sdp-message.js +17 -0
  124. package/project/server/stack/api/sdp/sdp-origin.js +17 -0
  125. package/project/server/stack/api/sdp/sdp-session-attribute.js +13 -0
  126. package/project/server/stack/api/sdp/sdp-timing.js +15 -0
  127. package/project/server/stack/api/text-protocol-header.js +35 -0
  128. package/project/server/stack/factory/stack-components-helpers.js +22 -0
  129. package/project/server/stack/factory/stack-components-template-base-actors.js +124 -0
  130. package/project/server/stack/factory/stack-components-template-base-test-cases.js +22 -0
  131. package/project/server/stack/factory/stack-components-templates-actors.js +15 -0
  132. package/project/server/stack/factory/stack-components-templates-test-cases.js +20 -0
  133. package/project/server/stack/managers/client-manager/client-manager.js +193 -0
  134. package/project/server/stack/managers/connection-manager/connection-data.js +82 -0
  135. package/project/server/stack/managers/connection-manager/connection-manager.js +177 -0
  136. package/project/server/stack/managers/connection-manager/connection-object.js +148 -0
  137. package/project/server/stack/managers/connection-manager/shared-data.js +14 -0
  138. package/project/server/stack/managers/manager.js +95 -0
  139. package/project/server/stack/managers/server-manager/server-manager.js +76 -0
  140. package/project/server/stack/managers/server-manager/server.js +384 -0
  141. package/project/server/stack/managers/shared-manager.js +117 -0
  142. package/project/server/stack/network/buffer-manager.js +190 -0
  143. package/project/server/stack/network/mc/mc-connection-client-shared.js +51 -0
  144. package/project/server/stack/network/mc/mc-connection-client.js +117 -0
  145. package/project/server/stack/network/mc/mc-connection-server-shared.js +51 -0
  146. package/project/server/stack/network/mc/mc-connection-server.js +58 -0
  147. package/project/server/stack/network/mc/mc-connection-shared.js +26 -0
  148. package/project/server/stack/network/mc/mc-connection.js +33 -0
  149. package/project/server/stack/network/mc/mc-server.js +90 -0
  150. package/project/server/stack/network/network-connection-shared.js +177 -0
  151. package/project/server/stack/network/network-connection.js +134 -0
  152. package/project/server/stack/network/network-helper.js +12 -0
  153. package/project/server/stack/network/network-server.js +36 -0
  154. package/project/server/stack/network/network-type.js +46 -0
  155. package/project/server/stack/network/tcp/tcp-connection-client-shared.js +18 -0
  156. package/project/server/stack/network/tcp/tcp-connection-client.js +71 -0
  157. package/project/server/stack/network/tcp/tcp-connection-server-shared.js +14 -0
  158. package/project/server/stack/network/tcp/tcp-connection-server.js +16 -0
  159. package/project/server/stack/network/tcp/tcp-connection-shared.js +55 -0
  160. package/project/server/stack/network/tcp/tcp-connection.js +167 -0
  161. package/project/server/stack/network/tcp/tcp-server.js +35 -0
  162. package/project/server/stack/network/tls/tls-connection-client-shared.js +18 -0
  163. package/project/server/stack/network/tls/tls-connection-client.js +76 -0
  164. package/project/server/stack/network/tls/tls-connection-server-shared.js +14 -0
  165. package/project/server/stack/network/tls/tls-connection-server.js +16 -0
  166. package/project/server/stack/network/tls/tls-connection-shared.js +63 -0
  167. package/project/server/stack/network/tls/tls-connection.js +176 -0
  168. package/project/server/stack/network/tls/tls-server.js +45 -0
  169. package/project/server/stack/network/transport.js +19 -0
  170. package/project/server/stack/network/udp/udp-connection-client-shared.js +47 -0
  171. package/project/server/stack/network/udp/udp-connection-client.js +93 -0
  172. package/project/server/stack/network/udp/udp-connection-server-shared.js +51 -0
  173. package/project/server/stack/network/udp/udp-connection-server.js +58 -0
  174. package/project/server/stack/network/udp/udp-connection-shared.js +26 -0
  175. package/project/server/stack/network/udp/udp-connection.js +33 -0
  176. package/project/server/stack/network/udp/udp-server.js +74 -0
  177. package/project/server/stack/pending/pending-const.js +22 -0
  178. package/project/server/stack/pending/pending-context-receive.js +18 -0
  179. package/project/server/stack/pending/pending-context-send.js +18 -0
  180. package/project/server/stack/pending/pending-context.js +18 -0
  181. package/project/server/stack/pending/pending-inner.js +107 -0
  182. package/project/server/stack/pending/pending-switch.js +146 -0
  183. package/project/server/stack/stacks/ascii-dictionary.js +289 -0
  184. package/project/server/stack/stacks/binary-log.js +88 -0
  185. package/project/server/stack/stacks/bit-byte.js +51 -0
  186. package/project/server/stack/stacks/browser-data.js +25 -0
  187. package/project/server/stack/stacks/cancel-object.js +16 -0
  188. package/project/server/stack/stacks/connection-client.js +228 -0
  189. package/project/server/stack/stacks/connection-instance.js +69 -0
  190. package/project/server/stack/stacks/connection-ip.js +374 -0
  191. package/project/server/stack/stacks/connection-server.js +169 -0
  192. package/project/server/stack/stacks/connection-web.js +113 -0
  193. package/project/server/stack/stacks/connection-worker-client.js +29 -0
  194. package/project/server/stack/stacks/connection-worker-connection.js +41 -0
  195. package/project/server/stack/stacks/connection-worker-server.js +29 -0
  196. package/project/server/stack/stacks/connection-worker.js +99 -0
  197. package/project/server/stack/stacks/connection.js +132 -0
  198. package/project/server/stack/stacks/decoder.js +83 -0
  199. package/project/server/stack/stacks/encoder.js +82 -0
  200. package/project/server/stack/stacks/ip-log.js +24 -0
  201. package/project/server/stack/stacks/message-selector.js +22 -0
  202. package/project/server/stack/stacks/msg-ip.js +18 -0
  203. package/project/server/stack/stacks/stack-content-cache.js +27 -0
  204. package/project/z-abs-funclayer-engine-server.tree +230 -0
@@ -0,0 +1,46 @@
1
+
2
+ 'use strict';
3
+
4
+ const ContentUndefined = require('../../data/content-undefined');
5
+
6
+
7
+ const VerifyMixinMandatory = {
8
+ VERIFY_MANDATORY(expectedKey, actualValue, index1, index2) {
9
+ const expected = this._getVerificationData(expectedKey);
10
+ const mandatoryText = `Mandatory['${expectedKey}']`;
11
+ if(undefined === expected) {
12
+ this.logVerifyFailure(() => `${mandatoryText} is not set.`, '13ab504d-0d33-43c7-94f8-7cac8f009895');
13
+ throw new Error('verify__asdf1234');
14
+ }
15
+ else {
16
+ this._verify(mandatoryText, expected, actualValue, index1, index2);
17
+ }
18
+ },
19
+ *VERIFY_CONTENT_MANDATORY(expectedKey, actualSize, actualContent) {
20
+ const expected = this._getVerificationData(expectedKey);
21
+ const mandatoryText = `Mandatory Content['${expectedKey}']`;
22
+ if(undefined === expected) {
23
+ this.logVerifyFailure(() => `${mandatoryText} is not set.`, '133a74d9-0c8b-4899-80f4-86c88d88dba8');
24
+ throw new Error('verify__asdf1234');
25
+ }
26
+ else if('value' !== expected.type || 'string' !== expected.valueType) {
27
+ this.logVerifyFailure(() => `${mandatoryText} the value must be the content key of type string`, '9665350f-de80-4bd2-8e3d-6809ca2c7c55');
28
+ throw new Error('verify__asdf1234');
29
+ }
30
+ else {
31
+ const expectedContent = yield* this.getContentByName(expected.value);
32
+ if(expectedContent instanceof ContentUndefined) {
33
+ this.logVerifyFailure(() => `${mandatoryText} is not set.`, 'e1e040eb-8b5b-4ef6-a169-bfd9d3a823ed');
34
+ throw new Error('verify__asdf1234');
35
+ }
36
+ let result = this._verifyValue(expectedContent.size, actualSize, expected.operation, `Mandatory Content['${expectedKey}' is '${expected.value}'] size:`);
37
+ result = this._verifyContent(expectedContent, actualContent, expected.operation, `Mandatory Content['${expectedKey}' is '${expected.value}'] buffer`) && result;
38
+ if(!result) {
39
+ throw new Error('verify__asdf1234');
40
+ }
41
+ }
42
+ }
43
+ };
44
+
45
+
46
+ module.exports = VerifyMixinMandatory;
@@ -0,0 +1,44 @@
1
+
2
+ 'use strict';
3
+
4
+ const ContentUndefined = require('../../data/content-undefined');
5
+
6
+
7
+ const VerifyMixinOptional = {
8
+ VERIFY_OPTIONAL(expectedKey, actualValue, index1, index2) {
9
+ const expectedValue = this._getVerificationData(expectedKey);
10
+ const optionalText = `Optional verification key '${expectedKey}'`;
11
+ if(undefined === expectedValue) {
12
+ this.logVerifySuccess(() => `${optionalText} is not set`, '6f0a8906-62da-46e5-a8a4-566679ddf507');
13
+ }
14
+ else {
15
+ this._verify(optionalText, expectedValue, actualValue, index1, index2);
16
+ }
17
+ },
18
+ *VERIFY_CONTENT_OPTIONAL(expectedKey, actualSize, actualContent) {
19
+ const expected = this._getVerificationData(expectedKey);
20
+ const optionalText = `Optional Content['${expectedKey}']`;
21
+ if(undefined === expected) {
22
+ this.logVerifySuccess(() => `Optional verification key '${expectedKey}' is not set`, 'c7c94cb0-ca5d-4267-a084-70013174b424');
23
+ }
24
+ else if('value' !== expected.type || 'string' !== expected.valueType) {
25
+ this.logVerifyFailure(() => `${optionalText} the value must be the content key of type string`, '671d4bd1-f9e8-47c0-946f-cb03e652c7ac');
26
+ throw new Error('verify__asdf1234');
27
+ }
28
+ else {
29
+ const expectedContent = yield* this.getContentByName(expected.value);
30
+ if(expectedContent instanceof ContentUndefined) {
31
+ this.logVerifyFailure(() => `${optionalText} is not set.`, '6943d1a8-4dbf-44e3-ac36-1eb326e33478');
32
+ throw new Error('verify__asdf1234');
33
+ }
34
+ let result = this._verifyValue(expectedContent.size, actualSize, expected.operation, `Optional Content['${expectedKey}' is '${expected.value}'] size:`);
35
+ result = this._verifyContent(expectedContent, actualContent, expected.operation, `Optional Content['${expectedKey}' is '${expected.value}'] buffer`) && result;
36
+ if(!result) {
37
+ throw new Error('verify__asdf1234');
38
+ }
39
+ }
40
+ }
41
+ };
42
+
43
+
44
+ module.exports = VerifyMixinOptional;
@@ -0,0 +1,71 @@
1
+
2
+ 'use strict';
3
+
4
+
5
+ const VerifyMixinValue = {
6
+ _calculateExpectedValueType(value) {
7
+ if(Array.isArray(value)) {
8
+ const valueTypes = value.map((val) => {
9
+ return `[${this._calculateExpectedValueType(val)}]`;
10
+ });
11
+ return valueTypes[0]; // TODO: What to do if the types differ?
12
+ }
13
+ else {
14
+ if('string' === typeof value) {
15
+ return 'string';
16
+ }
17
+ else if('number' === typeof value) {
18
+ return 'number';
19
+ }
20
+ else if('boolean' === typeof value) {
21
+ return 'boolean';
22
+ }
23
+ else if('object' === typeof value) {
24
+ return 'object';
25
+ }
26
+ else {
27
+ return 'unknown';
28
+ }
29
+ }
30
+ },
31
+ _calculateExpected(expectedValue, operation) {
32
+ if(!Array.isArray(expectedValue)) {
33
+ return {
34
+ type: 'value',
35
+ value: expectedValue,
36
+ operation: operation,
37
+ valueType: this._calculateExpectedValueType(expectedValue)
38
+ };
39
+ }
40
+ else {
41
+ const valueTypes = [];
42
+ const operations = [];
43
+ expectedValue.forEach((val) => {
44
+ valueTypes.push(`${this._calculateExpectedValueType(val)}`);
45
+ operations.push(operation);
46
+ });
47
+ return {
48
+ type: 'array',
49
+ value: expectedValue,
50
+ operation: operations,
51
+ valueType: valueTypes
52
+ };
53
+ }
54
+ },
55
+ VERIFY_VALUE(expectedValue, actualValue, description, operation = '===') {
56
+ this._verify(!description ? 'Value' : `${description}. Value`, this._calculateExpected(expectedValue, operation), actualValue);
57
+ },
58
+ VERIFY_VALUE_INDEX(expectedValueArray, actualValueArray, index, description, operation = '===') {
59
+ this._verify(!description ? 'Value' : `${description}. Value`, this._calculateExpected(expectedValueArray, operation), actualValueArray, index);
60
+ },
61
+ VERIFY_CONTENT_VALUE(expectedContent, actualSize, actualContent, description, operation = '===') {
62
+ let result = this._verifyValue(expectedContent.size, actualSize, operation, `Content size:`);
63
+ result = this._verifyContent(expectedContent, actualContent, operation, `Content buffer`) && result;
64
+ if(!result) {
65
+ throw new Error('verify__asdf1234');
66
+ }
67
+ }
68
+ };
69
+
70
+
71
+ module.exports = VerifyMixinValue;
@@ -0,0 +1,32 @@
1
+
2
+ 'use strict';
3
+
4
+ const Actor = require('./actor');
5
+ const StackMixinClient = require('./actor-mixins/stack-mixin-client');
6
+ const StackMixin = require('./actor-mixins/stack-mixin');
7
+ const ActorTypeConst = require('z-abs-funclayer-engine-cs/clientServer/execution/actor-type-const');
8
+
9
+
10
+ class ActorOriginating extends Actor {
11
+ constructor(actorParts) {
12
+ super(ActorTypeConst.ORIG, actorParts);
13
+ this.src = [];
14
+ this.srcDst = [];
15
+ this.srcResolved = [];
16
+ this.srcDstResolved = [];
17
+ this.initStackMixin();
18
+ }
19
+
20
+ init(uniqueTcId, actorData, instanceIndex, cbMessage, executionContext, tcData, config, slowAwaitTime, nodes, cb) {
21
+ if('' === actorData.execution) {
22
+ actorData.execution = 'serial';
23
+ }
24
+ return super.init(uniqueTcId, actorData, instanceIndex, cbMessage, executionContext, tcData, config, slowAwaitTime, nodes, cb);
25
+ }
26
+ }
27
+
28
+ Object.assign(ActorOriginating.prototype, StackMixinClient);
29
+ Object.assign(ActorOriginating.prototype, StackMixin);
30
+
31
+
32
+ module.exports = ActorOriginating;
@@ -0,0 +1,24 @@
1
+
2
+ 'use strict';
3
+
4
+
5
+ const PartAsynchMixin = {
6
+ *all(array) {
7
+ yield* this.parent.all(array);
8
+ },
9
+ *asyncMethod(method) {
10
+ yield* this.parent.asyncMethod(method);
11
+ },
12
+ handlePendingIdSuccess(pendingId, value) {
13
+ this.parent.handlePendingIdSuccess(pendingId, value);
14
+ },
15
+ handlePendingIdError(pendingId, err) {
16
+ this.parent.handlePendingIdError(pendingId, err);
17
+ },
18
+ handlePendingId(pendingId, err, value) {
19
+ this.parent.handlePendingId(pendingId, err, value);
20
+ }
21
+ };
22
+
23
+
24
+ module.exports = PartAsynchMixin;
@@ -0,0 +1,39 @@
1
+
2
+ 'use strict';
3
+
4
+
5
+ const PartLoggerMixin = {
6
+ createLogMessage(message, inners, data, dataBuffers) {
7
+ this.parent.createLogMessage(message, inners, data, dataBuffers);
8
+ },
9
+ logEngine(message, group, guid, depth=0) {
10
+ this.parent.logEngine(message, group, guid, depth + 1);
11
+ },
12
+ logDebug(message, group, guid, depth=0) {
13
+ this.parent.logDebug(message, group, guid, depth + 1);
14
+ },
15
+ logError(errOrMsg, guid, depth=0) {
16
+ this.parent.logError(errOrMsg, guid, depth + 1);
17
+ },
18
+ logWarning(message, group, guid, depth=0) {
19
+ this.parent.logWarning(message, group, guid, depth + 1);
20
+ },
21
+ logIp(log, group, guid, depth=0) {
22
+ this.parent.logIp(log, group, guid, depth + 1);
23
+ },
24
+ logGui(message, group, guid, depth=0) {
25
+ this.parent.logGui(message, group, guid, depth + 1);
26
+ },
27
+ logVerifySuccess(message, guid, depth=0) {
28
+ this.parent.logVerifySuccess(message, guid, depth + 1);
29
+ },
30
+ logVerifyFailure(message, guid, depth=0) {
31
+ this.parent.logVerifyFailure(message, guid, depth + 1);
32
+ },
33
+ logTestData(message, group, guid, depth=0) {
34
+ this.parent.logTestData(message, group, guid, depth + 1);
35
+ }
36
+ };
37
+
38
+
39
+ module.exports = PartLoggerMixin;
@@ -0,0 +1,33 @@
1
+
2
+ 'use strict';
3
+
4
+
5
+ const SharedRuntimeDataMixin = {
6
+ setSharedData(key, value) {
7
+ this.parent.setSharedData(key, value);
8
+ },
9
+ getSharedData(key, defaultValue) {
10
+ return this.parent.getSharedData(key, defaultValue);
11
+ },
12
+ *waitForSharedData(key) {
13
+ yield* this.parent.waitForSharedData(key);
14
+ },
15
+ *waitForSharedDataValue(key, value) {
16
+ yield* this.parent.waitForSharedDataValue(key, value);
17
+ },
18
+ getSharedDataActor(key, name, index) {
19
+ return this.parent.getSharedDataActor(key, name, index);
20
+ },
21
+ setSharedDataActor(key, value, name, index) {
22
+ this.parent.getSharedDataActor(key, value, name, index);
23
+ },
24
+ setSharedDataExecution(key, value) {
25
+ this.parent.setSharedDataExecution(key, value);
26
+ },
27
+ getSharedDataExecution(key, defaultValue) {
28
+ this.parent.getSharedDataExecution(key, defaultValue);
29
+ }
30
+ };
31
+
32
+
33
+ module.exports = SharedRuntimeDataMixin;
@@ -0,0 +1,12 @@
1
+
2
+ 'use strict';
3
+
4
+
5
+ const PartTimerMixin = {
6
+ *asyncMethod(method) {
7
+ yield* this.parent.asyncMethod(method);
8
+ }
9
+ };
10
+
11
+
12
+ module.exports = PartTimerMixin;
@@ -0,0 +1,15 @@
1
+
2
+ 'use strict';
3
+
4
+
5
+ const PartVerifyMixinMandatory = {
6
+ VERIFY_MANDATORY(expectedKey, actualValue, index1, index2) {
7
+ this.parent.VERIFY_MANDATORY(expectedKey, actualValue, index1, index2);
8
+ },
9
+ *VERIFY_CONTENT_MANDATORY(expectedKey, actualSize, actualContent) {
10
+ yield* this.parent.VERIFY_CONTENT_MANDATORY(expectedKey, actualSize, actualContent);
11
+ }
12
+ };
13
+
14
+
15
+ module.exports = PartVerifyMixinMandatory;
@@ -0,0 +1,15 @@
1
+
2
+ 'use strict';
3
+
4
+
5
+ const PartVerifyMixinOptional = {
6
+ VERIFY_OPTIONAL(expectedKey, actualValue) {
7
+ this.parent.VERIFY_OPTIONAL(expectedKey, actualValue);
8
+ },
9
+ *VERIFY_CONTENT_OPTIONAL(expectedKey, actualSize, actualContent) {
10
+ yield* this.parent.VERIFY_CONTENT_OPTIONAL(expectedKey, actualSize, actualContent);
11
+ }
12
+ };
13
+
14
+
15
+ module.exports = PartVerifyMixinOptional;
@@ -0,0 +1,15 @@
1
+
2
+ 'use strict';
3
+
4
+
5
+ const PartVerifyMixinValue = {
6
+ VERIFY_VALUE(expectedValue, actualValue, description, operation = '===') {
7
+ this.parent.VERIFY_VALUE(expectedValue, actualValue, description, operation);
8
+ },
9
+ VERIFY_CONTENT_VALUE(expectedContent, actualSize, actualContent, description, operation = '===') {
10
+ this.parent.VERIFY_CONTENT_VALUE(expectedContent, actualSize, actualContent, description, operation);
11
+ }
12
+ };
13
+
14
+
15
+ module.exports = PartVerifyMixinValue;
@@ -0,0 +1,37 @@
1
+
2
+ 'use strict';
3
+
4
+ const PartAsynchMixin = require('./actor-part-mixins/part-asynch-mixin');
5
+ const PartLoggerMixin = require('./actor-part-mixins/part-logger-mixin');
6
+ const PartSharedRuntimeDataMixin = require('./actor-part-mixins/part-shared-runtime-data-mixin');
7
+ const PartTimerMixin = require('./actor-part-mixins/part-timer-mixin');
8
+ const PartVerifyMixinMandatory = require('./actor-part-mixins/part-verify-mixin-mandatory');
9
+ const PartVerifyMixinOptional = require('./actor-part-mixins/part-verify-mixin-optional');
10
+ const PartVerifyMixinValue = require('./actor-part-mixins/part-verify-mixin-value');
11
+
12
+
13
+ class ActorPartPost {
14
+ constructor(parent) {
15
+ this.parent = parent;
16
+ this.index = 0;
17
+ this.type = 1; // Because the ActorPartPost is exported through actor-api the instanceof will not work
18
+ this.name = this.constructor.name;
19
+ }
20
+
21
+ init(parent, index) {
22
+ this.parent = parent;
23
+ this.index = index;
24
+ return this;
25
+ }
26
+ }
27
+
28
+ Object.assign(ActorPartPost.prototype, PartAsynchMixin);
29
+ Object.assign(ActorPartPost.prototype, PartLoggerMixin);
30
+ Object.assign(ActorPartPost.prototype, PartSharedRuntimeDataMixin);
31
+ Object.assign(ActorPartPost.prototype, PartTimerMixin);
32
+ Object.assign(ActorPartPost.prototype, PartVerifyMixinMandatory);
33
+ Object.assign(ActorPartPost.prototype, PartVerifyMixinOptional);
34
+ Object.assign(ActorPartPost.prototype, PartVerifyMixinValue);
35
+
36
+
37
+ module.exports = ActorPartPost;
@@ -0,0 +1,37 @@
1
+
2
+ 'use strict';
3
+
4
+ const PartAsynchMixin = require('./actor-part-mixins/part-asynch-mixin');
5
+ const PartLoggerMixin = require('./actor-part-mixins/part-logger-mixin');
6
+ const PartSharedRuntimeDataMixin = require('./actor-part-mixins/part-shared-runtime-data-mixin');
7
+ const PartTimerMixin = require('./actor-part-mixins/part-timer-mixin');
8
+ const PartVerifyMixinMandatory = require('./actor-part-mixins/part-verify-mixin-mandatory');
9
+ const PartVerifyMixinOptional = require('./actor-part-mixins/part-verify-mixin-optional');
10
+ const PartVerifyMixinValue = require('./actor-part-mixins/part-verify-mixin-value');
11
+
12
+
13
+ class ActorPartPre {
14
+ constructor(parent) {
15
+ this.parent = parent;
16
+ this.index = 0;
17
+ this.type = 0; // Because the ActorPartPre is exported through actor-api the instanceof will not work
18
+ this.name = this.constructor.name;
19
+ }
20
+
21
+ init(parent, index) {
22
+ this.parent = parent;
23
+ this.index = index;
24
+ return this;
25
+ }
26
+ }
27
+
28
+ Object.assign(ActorPartPre.prototype, PartAsynchMixin);
29
+ Object.assign(ActorPartPre.prototype, PartLoggerMixin);
30
+ Object.assign(ActorPartPre.prototype, PartSharedRuntimeDataMixin);
31
+ Object.assign(ActorPartPre.prototype, PartTimerMixin);
32
+ Object.assign(ActorPartPre.prototype, PartVerifyMixinMandatory);
33
+ Object.assign(ActorPartPre.prototype, PartVerifyMixinOptional);
34
+ Object.assign(ActorPartPre.prototype, PartVerifyMixinValue);
35
+
36
+
37
+ module.exports = ActorPartPre;
@@ -0,0 +1,79 @@
1
+
2
+ 'use strict';
3
+
4
+ const GuidGenerator = require('z-abs-corelayer-cs/clientServer/guid-generator');
5
+
6
+
7
+ class ActorPending {
8
+ constructor(actor) {
9
+ this.actor = actor;
10
+ this.pendingIds = new Map();
11
+ this.innerCancel = null;
12
+ }
13
+
14
+ setPending(cbCancel) {
15
+ const pendingId = GuidGenerator.create();
16
+ this.actor.logEngine(() => `PENDING START: '${pendingId}'`, 'actor-pending', 'e8aa34cc-a49a-4827-969e-79140fb34ca6');
17
+ this.pendingIds.set(pendingId, cbCancel);
18
+ return pendingId;
19
+ }
20
+
21
+ deletePending(pendingId) {
22
+ this.pendingIds.delete(pendingId);
23
+ return 0 === this.pendingIds.size;
24
+ }
25
+
26
+ pendingSuccess(pendingId, value) {
27
+ this.actor.logEngine(() => `PENDING SUCCESS: '${pendingId}'`, 'actor-pending', '69c56938-9fac-4f21-8c32-ab0ba3997437');
28
+ this.actor.process.nextTick((self, pendingId, value) => {
29
+ if(self.pendingIds.has(pendingId)) {
30
+ if(self.deletePending(pendingId)) {
31
+ self.actor.next(value);
32
+ }
33
+ }
34
+ else {
35
+ self.actor.logWarning(() => `No matching pendingId on success response. pendingId: '${pendingId}'`, 'core', 'd06dfd28-fdda-468a-99f5-c9b335614e5d');
36
+ }
37
+ }, this, pendingId, value);
38
+ }
39
+
40
+ pendingError(pendingId, err) {
41
+ this.actor.logEngine(() => `PENDING ERROR: '${pendingId}'`, 'actor-pending', '8d3d6e06-4277-48e5-a54f-394ec527dec3');
42
+ this.actor.process.nextTick((self, pendingId, err) => {
43
+ if(self.pendingIds.has(pendingId)) {
44
+ self.pendingIds.clear();
45
+ self.actor.next(undefined, err);
46
+ }
47
+ else {
48
+ self.actor.logWarning(() => `No matching pendingId on error response. pendingId: '${pendingId}'`, 'core', 'a1ccb550-7007-4eac-b020-af30799935be');
49
+ }
50
+ }, this, pendingId, err);
51
+ }
52
+
53
+ hasPendings() {
54
+ return 0 !== this.pendingIds.size;
55
+ }
56
+
57
+ clear() {
58
+ this.pendingIds.forEach((cbPendingCancel, pendingId) => {
59
+ cbPendingCancel && cbPendingCancel();
60
+ this.actor.logEngine(() => `PENDING CANCEL: '${pendingId}' - ${cbPendingCancel ? '' : 'No cancel method implemented.'}`, 'actor-pending', 'f91be9d3-da8e-4096-ad97-1c803dd907d8');
61
+ });
62
+ this.pendingIds.clear();
63
+ if(this.cancel) {
64
+ this.cancel();
65
+ this.cancel = null;
66
+ }
67
+ }
68
+
69
+ setInnerCancel(cancel) {
70
+ this.cancel = cancel;
71
+ }
72
+
73
+ removeInnerCancel() {
74
+ this.cancel = null;
75
+ }
76
+ }
77
+
78
+
79
+ module.exports = ActorPending;
@@ -0,0 +1,38 @@
1
+
2
+ 'use strict';
3
+
4
+ const Actor = require('./actor');
5
+ const StackMixinClient = require('./actor-mixins/stack-mixin-client');
6
+ const StackMixinServer = require('./actor-mixins/stack-mixin-server');
7
+ const StackMixin = require('./actor-mixins/stack-mixin');
8
+ const ActorTypeConst = require('z-abs-funclayer-engine-cs/clientServer/execution/actor-type-const');
9
+
10
+
11
+ class ActorProxy extends Actor {
12
+ constructor(actorParts) {
13
+ super(ActorTypeConst.PROXY, actorParts);
14
+ this.src = [];
15
+ this.srcDst = [];
16
+ this.srvDst = [];
17
+ this.srv = [];
18
+ this.srcResolved = [];
19
+ this.srcDstResolved = [];
20
+ this.srvDstResolved = [];
21
+ this.srvResolved = [];
22
+ this.initStackMixin();
23
+ }
24
+
25
+ init(uniqueTcId, actorData, instanceIndex, cbMessage, executionContext, tcData, config, slowAwaitTime, nodes, cb) {
26
+ if('' === actorData.execution) {
27
+ actorData.execution = 'parallel';
28
+ }
29
+ return super.init(uniqueTcId, actorData, instanceIndex, cbMessage, executionContext, tcData, config, slowAwaitTime, nodes, cb);
30
+ }
31
+ }
32
+
33
+ Object.assign(ActorProxy.prototype, StackMixinClient);
34
+ Object.assign(ActorProxy.prototype, StackMixinServer);
35
+ Object.assign(ActorProxy.prototype, StackMixin);
36
+
37
+
38
+ module.exports = ActorProxy;
@@ -0,0 +1,36 @@
1
+
2
+ 'use strict';
3
+
4
+ const ActorState = require('../actor-state');
5
+ const ActorResultConst = require('z-abs-funclayer-engine-cs/clientServer/execution/actor-result-const');
6
+
7
+
8
+ class ActorResults {
9
+ constructor() {
10
+ this.actorStateResult = [
11
+ ActorResultConst.NA,
12
+ ActorResultConst.NA,
13
+ ActorResultConst.NA,
14
+ ActorResultConst.NA,
15
+ ActorResultConst.NA
16
+ ];
17
+ }
18
+
19
+ getActorResultId() {
20
+ return Math.max(...this.actorStateResult);
21
+ }
22
+
23
+ getResultId(actorStateId) {
24
+ return this.actorStateResult[actorStateId];
25
+ }
26
+
27
+ setResultId(actorStateId, resultId) {
28
+ if(resultId > this.actorStateResult[actorStateId]) {
29
+ this.actorStateResult[actorStateId] = resultId;
30
+ }
31
+ return this.actorStateResult[actorStateId];
32
+ }
33
+ }
34
+
35
+
36
+ module.exports = ActorResults;
@@ -0,0 +1,35 @@
1
+
2
+ 'use strict';
3
+
4
+ const HighResolutionTimestamp = require('z-abs-corelayer-server/server/high-resolution-timestamp');
5
+
6
+
7
+ class ActorStateTimeout {
8
+ constructor(process, timeout) {
9
+ this.setTimeout = process ? process.setTimeout.bind(process) : setTimeout;
10
+ this.clearTimeout = process ? process.clearTimeout.bind(process) : clearTimeout;
11
+ this.timeout = timeout;
12
+ this.timeoutCancelId = null;
13
+ }
14
+
15
+ start(cb) {
16
+ if(this.timeout > 0) {
17
+ this.timeoutCancelId = this.setTimeout(() => {
18
+ this.timeoutCancelId = null;
19
+ cb();
20
+ }, this.timeout);
21
+ }
22
+ }
23
+
24
+ stop() {
25
+ if(this.timeout > 0) {
26
+ if(null !== this.timeoutCancelId) {
27
+ this.clearTimeout(this.timeoutCancelId);
28
+ }
29
+ this.timeoutCancelId = null;
30
+ }
31
+ }
32
+ }
33
+
34
+
35
+ module.exports = ActorStateTimeout;
@@ -0,0 +1,38 @@
1
+
2
+ 'use strict';
3
+
4
+ const Actor = require('./actor');
5
+ const StackMixinClient = require('./actor-mixins/stack-mixin-client');
6
+ const StackMixinServer = require('./actor-mixins/stack-mixin-server');
7
+ const StackMixin = require('./actor-mixins/stack-mixin');
8
+ const ActorTypeConst = require('z-abs-funclayer-engine-cs/clientServer/execution/actor-type-const');
9
+
10
+
11
+ class ActorSut extends Actor {
12
+ constructor(actorParts) {
13
+ super(ActorTypeConst.SUT, actorParts);
14
+ this.src = [];
15
+ this.srcDst = [];
16
+ this.srvDst = [];
17
+ this.srv = [];
18
+ this.srcResolved = [];
19
+ this.srcDstResolved = [];
20
+ this.srvDstResolved = [];
21
+ this.srvResolved = [];
22
+ this.initStackMixin();
23
+ }
24
+
25
+ init(uniqueTcId, actorData, instanceIndex, cbMessage, executionContext, tcData, config, slowAwaitTime, nodes, cb) {
26
+ if('' === actorData.execution) {
27
+ actorData.execution = 'parallel';
28
+ }
29
+ return super.init(uniqueTcId, actorData, instanceIndex, cbMessage, executionContext, tcData, config, slowAwaitTime, nodes, cb);
30
+ }
31
+ }
32
+
33
+ Object.assign(ActorSut.prototype, StackMixinClient);
34
+ Object.assign(ActorSut.prototype, StackMixinServer);
35
+ Object.assign(ActorSut.prototype, StackMixin);
36
+
37
+
38
+ module.exports = ActorSut;