@autofleet/outbreak 1.0.4 → 2.0.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.
Files changed (42) hide show
  1. package/dist/config.d.ts +16 -0
  2. package/dist/{src/config.js → config.js} +4 -6
  3. package/dist/config.js.map +1 -0
  4. package/dist/const.d.ts +6 -0
  5. package/dist/const.js +9 -0
  6. package/dist/const.js.map +1 -0
  7. package/dist/http_wrapper.d.ts +2 -0
  8. package/dist/{src/http_wrapper.js → http_wrapper.js} +40 -27
  9. package/dist/http_wrapper.js.map +1 -0
  10. package/dist/index.d.ts +13 -0
  11. package/dist/index.js +64 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/tracer.d.ts +18 -0
  14. package/dist/{src/tracer.js → tracer.js} +13 -9
  15. package/dist/tracer.js.map +1 -0
  16. package/package.json +49 -32
  17. package/readme.md +1 -1
  18. package/dist/src/config.d.ts +0 -18
  19. package/dist/src/config.js.map +0 -1
  20. package/dist/src/example.d.ts +0 -1
  21. package/dist/src/example.js +0 -46
  22. package/dist/src/example.js.map +0 -1
  23. package/dist/src/http_wrapper.d.ts +0 -1
  24. package/dist/src/http_wrapper.js.map +0 -1
  25. package/dist/src/index.d.ts +0 -17
  26. package/dist/src/index.js +0 -55
  27. package/dist/src/index.js.map +0 -1
  28. package/dist/src/tracer.d.ts +0 -10
  29. package/dist/src/tracer.js.map +0 -1
  30. package/dist/tests/http-wrapper.test.d.ts +0 -1
  31. package/dist/tests/http-wrapper.test.js +0 -202
  32. package/dist/tests/http-wrapper.test.js.map +0 -1
  33. package/examples/example.ts +0 -39
  34. package/jest.config.js +0 -14
  35. package/nodemon.json +0 -6
  36. package/src/config.ts +0 -58
  37. package/src/example.ts +0 -39
  38. package/src/http_wrapper.ts +0 -114
  39. package/src/index.ts +0 -59
  40. package/src/tracer.ts +0 -77
  41. package/tests/http-wrapper.test.ts +0 -206
  42. package/tsconfig.json +0 -30
@@ -1,206 +0,0 @@
1
- import asyncHooks from 'async_hooks';
2
- import express from 'express';
3
- import http from 'http';
4
- import axios from 'axios';
5
- import winston from 'winston';
6
- import bluebird from 'bluebird';
7
- import Agent from 'agentkeepalive';
8
-
9
- import headersTracer, { getCurrentContext } from '../src/index';
10
-
11
- const logger = winston.createLogger({
12
- transports: [
13
- new winston.transports.Console(),
14
- ],
15
- });
16
-
17
- const generateApp = async (addEndpoints, port) => {
18
- const app = express();
19
-
20
- addEndpoints(app);
21
-
22
- const server: http.Server = await new Promise((resolve) => {
23
- const s = app.listen(port, () => {
24
- s.keepAliveTimeout = 600 * 1000;
25
- console.log('Listen on port', port);
26
- resolve(s);
27
- });
28
- });
29
-
30
- return () => server.close();
31
- };
32
-
33
- describe('E2E', () => {
34
- it('Basic functionality', async () => {
35
- let server2TraceId = null;
36
- headersTracer({
37
- setAndPropagateCorrelationId: true,
38
- headersToPropagate: [
39
- 'x-test-header',
40
- ],
41
- headersPrefix: 'x-wakanda-',
42
- winstonLogger: logger,
43
- });
44
-
45
- const closeServer1 = await generateApp((app) => {
46
- app.get('/', async (req, res) => {
47
- setTimeout(async () => {
48
- const { data: res1 } = await axios.post('http://localhost:8082');
49
- res.json(res1);
50
- }, 10);
51
- });
52
- }, 8081);
53
-
54
- const closeServer2 = await generateApp((app) => {
55
- app.post('/', (req, res) => {
56
- server2TraceId = req.headers['x-trace-id'];
57
- res.json({
58
- value: req.headers['x-test-header'],
59
- wkanda: req.headers['x-wakanda-id'],
60
- });
61
- });
62
- }, 8082);
63
-
64
- const { data: res1, headers } = await axios.get('http://localhost:8081', {
65
- headers: {
66
- 'x-test-header': 'testHeader',
67
- 'x-wakanda-id': 'my-wakanda-id',
68
- },
69
- });
70
- closeServer1();
71
- closeServer2();
72
-
73
-
74
- expect(headers['x-trace-id']).toEqual(server2TraceId);
75
- expect(res1.value).toEqual('testHeader');
76
- expect(res1.wkanda).toEqual('my-wakanda-id');
77
- });
78
-
79
- it('Test on http keep alive and abort and bluebird, should create a new trace', async () => {
80
- const server2TraceIds = [];
81
- let error;
82
- const httpAgent = new Agent({ keepAlive: true, maxSockets: 1 });
83
- const instance = axios.create({
84
- httpAgent,
85
- });
86
- headersTracer({
87
- setAndPropagateCorrelationId: true,
88
- headersToPropagate: [
89
- 'x-test-header',
90
- ],
91
- headersPrefix: 'x-wakanda-',
92
- winstonLogger: logger,
93
- });
94
-
95
- const closeServer1 = await generateApp((app) => {
96
- const serverHttpAgent = new Agent({ keepAlive: true, maxSockets: 2 });
97
- const serverInstance = axios.create({
98
- httpAgent: serverHttpAgent,
99
- });
100
- app.post('/', async (req, res) => {
101
- const { id } = getCurrentContext();
102
- setTimeout(async () => {
103
- setTimeout(async () => {
104
- const { data: res1 } = await serverInstance.post('http://localhost:8082');
105
- if (getCurrentContext().id !== id) {
106
- throw new Error('Should be the same trace');
107
- }
108
- res.json(res1);
109
- }, 10);
110
- }, 100);
111
- });
112
- }, 8081);
113
-
114
- const closeServer2 = await generateApp((app) => {
115
- app.post('/', (req, res) => {
116
- const { id } = getCurrentContext();
117
- setTimeout(async () => {
118
- await bluebird.map([1, 2, 3], async (value) => {
119
- if (value === 2) {
120
- server2TraceIds.push(req.headers['x-trace-id']);
121
- if (getCurrentContext().id !== id) {
122
- throw new Error('Should be the same trace');
123
- }
124
- res.json({
125
- value: req.headers['x-test-header'],
126
- wkanda: req.headers['x-wakanda-id'],
127
- });
128
- }
129
- }, { concurrency: 3 });
130
- }, 10);
131
- });
132
- }, 8082);
133
-
134
- try {
135
- await instance.post('http://localhost:8081', {}, {
136
- headers: {
137
- 'x-test-header': 'testHeader111',
138
- 'x-wakanda-id': 'my-wakanda-id',
139
- },
140
- timeout: 1,
141
- });
142
- } catch (e) {
143
- error = e;
144
- }
145
-
146
- const [{ data: res1, headers: headers1 }, { data: res2, headers: headers2 }] = await Promise.all([
147
- instance.post('http://localhost:8081', { f: 1 }, {
148
- headers: {
149
- 'x-test-header': 'testHeader1',
150
- 'x-wakanda-id': 'my-wakanda-id',
151
- },
152
- }),
153
- instance.post('http://localhost:8081', { c: 3 }, {
154
- headers: {
155
- 'x-test-header': 'testHeader1www',
156
- 'x-wakanda-id': 'my-wakanda-id',
157
- },
158
- }),
159
- axios.post('http://localhost:8081', { f: 1 }, {
160
- headers: {
161
- 'x-test-header': 'testHeader1dssds',
162
- 'x-wakanda-id': 'my-wakanda-id',
163
- },
164
- }),
165
- axios.post('http://localhost:8081', { n: 3 }, {
166
- headers: {
167
- 'x-test-header': 'testHeader2',
168
- 'x-wakanda-id': 'my-wakanda-id',
169
- },
170
- })]);
171
-
172
- const { data: res3, headers: headers3 } = await instance.post('http://localhost:8081', {}, {
173
- headers: {
174
- 'x-test-header': 'testHeader3',
175
- 'x-wakanda-id': 'my-wakanda-id',
176
- },
177
- });
178
-
179
- await axios.post('http://localhost:8081', { n: 3 }, {
180
- headers: {
181
- 'x-test-header': 'testHeader2',
182
- 'x-wakanda-id': 'my-wakanda-id',
183
- },
184
- });
185
-
186
- closeServer1();
187
- closeServer2();
188
-
189
-
190
- expect(error.code).toEqual('ECONNABORTED');
191
-
192
-
193
- expect((new Set(server2TraceIds)).size).toEqual(7);
194
-
195
- expect(headers1['x-trace-id']).not.toEqual(server2TraceIds[0]);
196
- expect(headers2['x-trace-id']).not.toEqual(server2TraceIds[0]);
197
- expect(headers3['x-trace-id']).not.toEqual(server2TraceIds[0]);
198
-
199
- expect(res1.value).toEqual('testHeader1');
200
- expect(res1.wkanda).toEqual('my-wakanda-id');
201
- expect(res2.value).toEqual('testHeader1www');
202
- expect(res2.wkanda).toEqual('my-wakanda-id');
203
- expect(res3.value).toEqual('testHeader3');
204
- expect(res2.wkanda).toEqual('my-wakanda-id');
205
- });
206
- });
package/tsconfig.json DELETED
@@ -1,30 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "declaration": true,
4
- "module": "commonjs",
5
- "esModuleInterop": true,
6
- "target": "es6",
7
- "noImplicitAny": false,
8
- "moduleResolution": "node",
9
- "sourceMap": true,
10
- "outDir": "./dist",
11
- "baseUrl": ".",
12
- "experimentalDecorators": true,
13
- "emitDecoratorMetadata": true,
14
- "resolveJsonModule": true,
15
- "paths": {
16
- "*": [
17
- "node_modules/*"
18
- ]
19
- },
20
- "lib": [
21
- "es2019"
22
- ]
23
- },
24
- "include": [
25
- "./**/*"
26
- ],
27
- "exclude": [
28
- "examples/**/*"
29
- ]
30
- }