keuss 1.6.10 → 1.6.13
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/Pipeline/Queue.js +12 -2
- package/Queue.js +18 -8
- package/TODO +0 -1
- package/backends/bucket-mongo-safe.js +42 -44
- package/backends/bucket-mongo.js +6 -8
- package/examples/snippets/06-random-consumer-producer.js +5 -5
- package/package.json +6 -6
- package/test/backends_bucket-at-least-once.js +43 -35
- package/test/backends_deadletter.js +10 -1
- package/.nyc_output/ad035de4-a3d3-451b-b2ad-402e8ed517b8.json +0 -1
- package/.nyc_output/c8683d6c-e7e6-496b-ab0d-1ff730837d08.json +0 -1
- package/.nyc_output/processinfo/ad035de4-a3d3-451b-b2ad-402e8ed517b8.json +0 -1
- package/.nyc_output/processinfo/c8683d6c-e7e6-496b-ab0d-1ff730837d08.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -79
- package/coverage/index.html +0 -162
- package/coverage/keuss/Pipeline/BaseLink.js.html +0 -636
- package/coverage/keuss/Pipeline/Builder.js.html +0 -615
- package/coverage/keuss/Pipeline/ChoiceLink.js.html +0 -294
- package/coverage/keuss/Pipeline/DirectLink.js.html +0 -231
- package/coverage/keuss/Pipeline/Pipeline.js.html +0 -258
- package/coverage/keuss/Pipeline/Queue.js.html +0 -939
- package/coverage/keuss/Pipeline/Sink.js.html +0 -147
- package/coverage/keuss/Pipeline/index.html +0 -175
- package/coverage/keuss/QFactory-MongoDB-defaults.js.html +0 -219
- package/coverage/keuss/QFactory.js.html +0 -459
- package/coverage/keuss/Queue.js.html +0 -2274
- package/coverage/keuss/Signal.js.html +0 -312
- package/coverage/keuss/Stats.js.html +0 -174
- package/coverage/keuss/backends/bucket-mongo-safe.js.html +0 -2952
- package/coverage/keuss/backends/bucket-mongo.js.html +0 -1167
- package/coverage/keuss/backends/index.html +0 -175
- package/coverage/keuss/backends/mongo.js.html +0 -897
- package/coverage/keuss/backends/pl-mongo.js.html +0 -723
- package/coverage/keuss/backends/ps-mongo.js.html +0 -1038
- package/coverage/keuss/backends/redis-list.js.html +0 -513
- package/coverage/keuss/backends/redis-oq.js.html +0 -543
- package/coverage/keuss/bench/all-mongo.js.html +0 -393
- package/coverage/keuss/bench/index.html +0 -149
- package/coverage/keuss/bench/multi-q.js.html +0 -324
- package/coverage/keuss/bench/redis-oq-consumer-producer.js.html +0 -225
- package/coverage/keuss/bench/redis-oq-consumer.js.html +0 -189
- package/coverage/keuss/bench/redis-oq-producer.js.html +0 -198
- package/coverage/keuss/docusaurus/.docusaurus/client-modules.js.html +0 -93
- package/coverage/keuss/docusaurus/.docusaurus/docusaurus.config.js.html +0 -402
- package/coverage/keuss/docusaurus/.docusaurus/index.html +0 -136
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/01a85c17.4e57aa0a.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/09d5ad39.3009117f.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/1.12cf3eb8.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/12559443.a244228c.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/17896441.5efb3558.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/1be78505.f9c04817.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/2.4e2dc02c.js.html +0 -72
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/3.d549a05d.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/36.db0e809a.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/37637b3c.28c0900b.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/3d8d21df.2228b429.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/45a5cd1f.951da354.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/52c38f7a.785707bc.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/57ffbe3d.04d3e53e.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/5f7c35e9.2fa77599.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/6299bd84.ec197a3e.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/6875c492.cdf3e939.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/6beec1d2.6873e708.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/7b786ad4.bbce08e6.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/8070e160.400a4e57.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/88c93c54.e868a433.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/8d3e6f9e.aadf6d32.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/9bc74468.516633c5.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/9beb87c2.71e3744d.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/a3732fac.b0f98dbf.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/a6aa9e1f.6ac55e6c.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/baf0d4a2.b50efd2d.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/c4f5d8e4.e9dfd999.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/ccc49370.1831890b.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/d4942345.7d23b349.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/e2244795.4ea3d168.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/e64fe266.308265e8.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/f78725cc.5f3e115d.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/fa8d8063.2312a332.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/index.html +0 -565
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/main.66f1008c.js.html +0 -72
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/runtime~main.7d73b048.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/styles.b5ee3016.js.html +0 -69
- package/coverage/keuss/docusaurus/.docusaurus/registry.js.html +0 -165
- package/coverage/keuss/docusaurus/.docusaurus/routes.js.html +0 -447
- package/coverage/keuss/docusaurus/build/01a85c17.4e57aa0a.js.html +0 -69
- package/coverage/keuss/docusaurus/build/09d5ad39.3009117f.js.html +0 -69
- package/coverage/keuss/docusaurus/build/1.12cf3eb8.js.html +0 -69
- package/coverage/keuss/docusaurus/build/12559443.a244228c.js.html +0 -69
- package/coverage/keuss/docusaurus/build/17896441.5efb3558.js.html +0 -69
- package/coverage/keuss/docusaurus/build/1be78505.f9c04817.js.html +0 -69
- package/coverage/keuss/docusaurus/build/2.4e2dc02c.js.html +0 -72
- package/coverage/keuss/docusaurus/build/3.d549a05d.js.html +0 -69
- package/coverage/keuss/docusaurus/build/36.db0e809a.js.html +0 -69
- package/coverage/keuss/docusaurus/build/37637b3c.28c0900b.js.html +0 -69
- package/coverage/keuss/docusaurus/build/3d8d21df.2228b429.js.html +0 -69
- package/coverage/keuss/docusaurus/build/45a5cd1f.951da354.js.html +0 -69
- package/coverage/keuss/docusaurus/build/52c38f7a.785707bc.js.html +0 -69
- package/coverage/keuss/docusaurus/build/57ffbe3d.04d3e53e.js.html +0 -69
- package/coverage/keuss/docusaurus/build/5f7c35e9.2fa77599.js.html +0 -69
- package/coverage/keuss/docusaurus/build/6299bd84.ec197a3e.js.html +0 -69
- package/coverage/keuss/docusaurus/build/6875c492.cdf3e939.js.html +0 -69
- package/coverage/keuss/docusaurus/build/6beec1d2.6873e708.js.html +0 -69
- package/coverage/keuss/docusaurus/build/7b786ad4.bbce08e6.js.html +0 -69
- package/coverage/keuss/docusaurus/build/8070e160.400a4e57.js.html +0 -69
- package/coverage/keuss/docusaurus/build/88c93c54.e868a433.js.html +0 -69
- package/coverage/keuss/docusaurus/build/8d3e6f9e.aadf6d32.js.html +0 -69
- package/coverage/keuss/docusaurus/build/9bc74468.516633c5.js.html +0 -69
- package/coverage/keuss/docusaurus/build/9beb87c2.71e3744d.js.html +0 -69
- package/coverage/keuss/docusaurus/build/a3732fac.b0f98dbf.js.html +0 -69
- package/coverage/keuss/docusaurus/build/a6aa9e1f.6ac55e6c.js.html +0 -69
- package/coverage/keuss/docusaurus/build/baf0d4a2.b50efd2d.js.html +0 -69
- package/coverage/keuss/docusaurus/build/c4f5d8e4.e9dfd999.js.html +0 -69
- package/coverage/keuss/docusaurus/build/ccc49370.1831890b.js.html +0 -69
- package/coverage/keuss/docusaurus/build/d4942345.7d23b349.js.html +0 -69
- package/coverage/keuss/docusaurus/build/e2244795.4ea3d168.js.html +0 -69
- package/coverage/keuss/docusaurus/build/e64fe266.308265e8.js.html +0 -69
- package/coverage/keuss/docusaurus/build/f78725cc.5f3e115d.js.html +0 -69
- package/coverage/keuss/docusaurus/build/fa8d8063.2312a332.js.html +0 -69
- package/coverage/keuss/docusaurus/build/index.html +0 -565
- package/coverage/keuss/docusaurus/build/main.66f1008c.js.html +0 -72
- package/coverage/keuss/docusaurus/build/runtime~main.7d73b048.js.html +0 -69
- package/coverage/keuss/docusaurus/build/styles.b5ee3016.js.html +0 -69
- package/coverage/keuss/docusaurus/docusaurus.config.js.html +0 -360
- package/coverage/keuss/docusaurus/index.html +0 -110
- package/coverage/keuss/docusaurus/sidebars.js.html +0 -96
- package/coverage/keuss/docusaurus/src/pages/index.html +0 -97
- package/coverage/keuss/docusaurus/src/pages/index.js.html +0 -450
- package/coverage/keuss/examples/pipelines/builder/index.html +0 -97
- package/coverage/keuss/examples/pipelines/builder/index.js.html +0 -450
- package/coverage/keuss/examples/pipelines/simplest/index.html +0 -97
- package/coverage/keuss/examples/pipelines/simplest/index.js.html +0 -183
- package/coverage/keuss/examples/pipelines/simulation-fork/index.html +0 -97
- package/coverage/keuss/examples/pipelines/simulation-fork/index.js.html +0 -414
- package/coverage/keuss/examples/snippets/01-simplest-pop-push.js.html +0 -195
- package/coverage/keuss/examples/snippets/02-simplest-reserve-rollback-commit.js.html +0 -201
- package/coverage/keuss/examples/snippets/03-simplest-producer-consumer-loops.js.html +0 -300
- package/coverage/keuss/examples/snippets/04-bucket-mongo-safe-insert-reserve-commit.js.html +0 -303
- package/coverage/keuss/examples/snippets/05-insert-reserve-rollback-deadletter.js.html +0 -384
- package/coverage/keuss/examples/snippets/06-random-consumer-producer.js.html +0 -879
- package/coverage/keuss/examples/snippets/index.html +0 -188
- package/coverage/keuss/examples/snippets/redislabs-consumer-producer.js.html +0 -201
- package/coverage/keuss/examples/snippets/with-redis-stats-and-signaller-consumer-producer.js.html +0 -222
- package/coverage/keuss/examples/webhooks/app.js.html +0 -279
- package/coverage/keuss/examples/webhooks/consumer.js.html +0 -363
- package/coverage/keuss/examples/webhooks/index.html +0 -123
- package/coverage/keuss/examples/webhooks/index.js.html +0 -234
- package/coverage/keuss/index.html +0 -149
- package/coverage/keuss/playground/index.html +0 -136
- package/coverage/keuss/playground/pl-rollback.js.html +0 -234
- package/coverage/keuss/playground/pl1.js.html +0 -291
- package/coverage/keuss/playground/q1.js.html +0 -168
- package/coverage/keuss/playground/simple-pl.js.html +0 -195
- package/coverage/keuss/signal/index.html +0 -123
- package/coverage/keuss/signal/local.js.html +0 -306
- package/coverage/keuss/signal/mongo-capped.js.html +0 -378
- package/coverage/keuss/signal/redis-pubsub.js.html +0 -399
- package/coverage/keuss/stats/index.html +0 -123
- package/coverage/keuss/stats/mem.js.html +0 -519
- package/coverage/keuss/stats/mongo.js.html +0 -930
- package/coverage/keuss/stats/redis.js.html +0 -894
- package/coverage/keuss/utils/RedisConn.js.html +0 -150
- package/coverage/keuss/utils/RedisOrderedQueue.js.html +0 -864
- package/coverage/keuss/utils/index.html +0 -110
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -170
- package/docusaurus/README.md +0 -33
- package/docusaurus/babel.config.js +0 -3
- package/docusaurus/blog/2020-08-04-welcome.md +0 -10
- package/docusaurus/docs/about.md +0 -14
- package/docusaurus/docs/api/factory.md +0 -102
- package/docusaurus/docs/api/queue.md +0 -247
- package/docusaurus/docs/api/signal.md +0 -38
- package/docusaurus/docs/api/stats.md +0 -37
- package/docusaurus/docs/changelog.md +0 -51
- package/docusaurus/docs/concepts.md +0 -116
- package/docusaurus/docs/examples.md +0 -10
- package/docusaurus/docs/quickstart.md +0 -195
- package/docusaurus/docs/style-guide.md +0 -202
- package/docusaurus/docs/usage/buckets.md +0 -43
- package/docusaurus/docs/usage/no-signaller.md +0 -16
- package/docusaurus/docs/usage/pipelines/about.md +0 -128
- package/docusaurus/docs/usage/pipelines/building.md +0 -158
- package/docusaurus/docs/usage/pipelines/examples.md +0 -10
- package/docusaurus/docs/usage/pipelines/processors.md +0 -187
- package/docusaurus/docs/usage/putting-all-together.md +0 -153
- package/docusaurus/docs/usage/redis-conns.md +0 -70
- package/docusaurus/docs/usage/shutdown.md +0 -11
- package/docusaurus/docusaurus.config.js +0 -96
- package/docusaurus/package.json +0 -33
- package/docusaurus/sidebars.js +0 -44
- package/docusaurus/src/css/custom.css +0 -25
- package/docusaurus/src/pages/index.js +0 -127
- package/docusaurus/src/pages/styles.module.css +0 -37
- package/docusaurus/static/.nojekyll +0 -0
- package/docusaurus/static/img/favicon.ico +0 -0
- package/docusaurus/static/img/logo.svg +0 -1
- package/docusaurus/yarn.lock +0 -8384
|
@@ -1,879 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>Code coverage report for keuss/examples/snippets/06-random-consumer-producer.js</title>
|
|
5
|
-
<meta charset="utf-8" />
|
|
6
|
-
<link rel="stylesheet" href="../../../prettify.css" />
|
|
7
|
-
<link rel="stylesheet" href="../../../base.css" />
|
|
8
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
9
|
-
<style type='text/css'>
|
|
10
|
-
.coverage-summary .sorter {
|
|
11
|
-
background-image: url(../../../sort-arrow-sprite.png);
|
|
12
|
-
}
|
|
13
|
-
</style>
|
|
14
|
-
</head>
|
|
15
|
-
<body>
|
|
16
|
-
<div class='wrapper'>
|
|
17
|
-
<div class='pad1'>
|
|
18
|
-
<h1>
|
|
19
|
-
<a href="../../../index.html">All files</a> / <a href="index.html">keuss/examples/snippets</a> 06-random-consumer-producer.js
|
|
20
|
-
</h1>
|
|
21
|
-
<div class='clearfix'>
|
|
22
|
-
<div class='fl pad1y space-right2'>
|
|
23
|
-
<span class="strong">0% </span>
|
|
24
|
-
<span class="quiet">Statements</span>
|
|
25
|
-
<span class='fraction'>0/130</span>
|
|
26
|
-
</div>
|
|
27
|
-
<div class='fl pad1y space-right2'>
|
|
28
|
-
<span class="strong">0% </span>
|
|
29
|
-
<span class="quiet">Branches</span>
|
|
30
|
-
<span class='fraction'>0/28</span>
|
|
31
|
-
</div>
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">0% </span>
|
|
34
|
-
<span class="quiet">Functions</span>
|
|
35
|
-
<span class='fraction'>0/28</span>
|
|
36
|
-
</div>
|
|
37
|
-
<div class='fl pad1y space-right2'>
|
|
38
|
-
<span class="strong">0% </span>
|
|
39
|
-
<span class="quiet">Lines</span>
|
|
40
|
-
<span class='fraction'>0/112</span>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
<p class="quiet">
|
|
44
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
45
|
-
</p>
|
|
46
|
-
</div>
|
|
47
|
-
<div class='status-line low'></div>
|
|
48
|
-
<pre><table class="coverage">
|
|
49
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
50
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
51
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
52
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
53
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
54
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
55
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
56
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
57
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
58
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
59
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
60
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
61
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
62
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
63
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
64
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
65
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
66
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
67
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
68
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
69
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
70
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
71
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
72
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
73
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
74
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
75
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
76
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
77
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
78
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
79
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
80
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
81
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
82
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
83
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
84
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
85
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
86
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
87
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
88
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
89
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
90
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
91
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
92
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
93
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
94
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
95
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
96
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
97
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
98
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
99
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
100
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
101
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
102
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
103
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
104
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
105
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
106
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
107
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
108
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
109
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
110
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
111
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
112
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
113
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
114
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
115
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
116
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
117
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
118
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
119
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
120
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
121
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
122
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
123
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
124
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
125
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
126
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
127
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
128
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
129
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
130
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
131
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
132
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
133
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
134
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
135
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
136
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
137
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
138
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
139
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
140
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
141
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
142
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
143
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
144
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
145
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
146
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
147
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
148
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
149
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
150
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
151
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
152
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
153
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
154
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
155
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
156
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
157
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
158
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
159
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
160
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
161
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
162
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
163
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
164
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
165
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
166
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
167
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
168
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
169
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
170
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
171
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
172
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
173
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
174
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
175
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
176
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
177
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
178
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
179
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
180
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
181
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
182
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
183
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
184
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
185
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
186
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
187
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
188
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
189
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
190
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
191
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
192
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
193
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
194
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
195
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
196
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
197
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
198
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
199
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
200
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
201
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
202
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
203
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
204
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
205
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
206
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
207
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
208
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
209
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
210
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
211
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
212
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
213
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
214
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
215
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
216
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
217
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
218
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
219
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
220
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
221
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
222
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
223
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
224
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
225
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
226
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
227
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
228
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
229
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
230
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
231
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
232
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
233
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
234
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
235
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
236
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
237
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
238
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
239
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
240
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
241
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
242
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
243
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
244
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
245
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
246
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
247
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
248
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
249
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
250
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
251
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
252
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
253
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
254
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
255
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
256
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
257
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
258
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
259
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
260
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
261
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
262
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
263
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
264
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
265
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
266
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
267
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
268
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
269
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
270
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
271
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
272
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
273
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
274
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
275
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
276
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
277
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
278
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
279
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
280
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
281
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
282
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
283
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
284
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
285
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
286
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
287
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
288
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
289
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
290
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
291
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
292
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
293
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
294
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
295
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
296
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
297
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
298
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
299
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
300
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
301
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
302
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
303
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
304
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
305
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
306
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
307
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
308
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
309
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
310
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
311
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
312
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
313
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
314
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
315
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
316
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
317
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
318
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
319
|
-
<a name='L271'></a><a href='#L271'>271</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
321
|
-
<span class="cline-any cline-neutral"> </span>
|
|
322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
323
|
-
<span class="cline-any cline-neutral"> </span>
|
|
324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
326
|
-
<span class="cline-any cline-neutral"> </span>
|
|
327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
329
|
-
<span class="cline-any cline-neutral"> </span>
|
|
330
|
-
<span class="cline-any cline-neutral"> </span>
|
|
331
|
-
<span class="cline-any cline-no"> </span>
|
|
332
|
-
<span class="cline-any cline-neutral"> </span>
|
|
333
|
-
<span class="cline-any cline-no"> </span>
|
|
334
|
-
<span class="cline-any cline-no"> </span>
|
|
335
|
-
<span class="cline-any cline-no"> </span>
|
|
336
|
-
<span class="cline-any cline-no"> </span>
|
|
337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
338
|
-
<span class="cline-any cline-neutral"> </span>
|
|
339
|
-
<span class="cline-any cline-no"> </span>
|
|
340
|
-
<span class="cline-any cline-neutral"> </span>
|
|
341
|
-
<span class="cline-any cline-neutral"> </span>
|
|
342
|
-
<span class="cline-any cline-neutral"> </span>
|
|
343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
344
|
-
<span class="cline-any cline-neutral"> </span>
|
|
345
|
-
<span class="cline-any cline-neutral"> </span>
|
|
346
|
-
<span class="cline-any cline-neutral"> </span>
|
|
347
|
-
<span class="cline-any cline-no"> </span>
|
|
348
|
-
<span class="cline-any cline-no"> </span>
|
|
349
|
-
<span class="cline-any cline-no"> </span>
|
|
350
|
-
<span class="cline-any cline-no"> </span>
|
|
351
|
-
<span class="cline-any cline-neutral"> </span>
|
|
352
|
-
<span class="cline-any cline-neutral"> </span>
|
|
353
|
-
<span class="cline-any cline-no"> </span>
|
|
354
|
-
<span class="cline-any cline-neutral"> </span>
|
|
355
|
-
<span class="cline-any cline-neutral"> </span>
|
|
356
|
-
<span class="cline-any cline-neutral"> </span>
|
|
357
|
-
<span class="cline-any cline-neutral"> </span>
|
|
358
|
-
<span class="cline-any cline-no"> </span>
|
|
359
|
-
<span class="cline-any cline-neutral"> </span>
|
|
360
|
-
<span class="cline-any cline-neutral"> </span>
|
|
361
|
-
<span class="cline-any cline-neutral"> </span>
|
|
362
|
-
<span class="cline-any cline-neutral"> </span>
|
|
363
|
-
<span class="cline-any cline-no"> </span>
|
|
364
|
-
<span class="cline-any cline-no"> </span>
|
|
365
|
-
<span class="cline-any cline-no"> </span>
|
|
366
|
-
<span class="cline-any cline-no"> </span>
|
|
367
|
-
<span class="cline-any cline-neutral"> </span>
|
|
368
|
-
<span class="cline-any cline-neutral"> </span>
|
|
369
|
-
<span class="cline-any cline-no"> </span>
|
|
370
|
-
<span class="cline-any cline-no"> </span>
|
|
371
|
-
<span class="cline-any cline-neutral"> </span>
|
|
372
|
-
<span class="cline-any cline-no"> </span>
|
|
373
|
-
<span class="cline-any cline-no"> </span>
|
|
374
|
-
<span class="cline-any cline-no"> </span>
|
|
375
|
-
<span class="cline-any cline-no"> </span>
|
|
376
|
-
<span class="cline-any cline-neutral"> </span>
|
|
377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
379
|
-
<span class="cline-any cline-neutral"> </span>
|
|
380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
381
|
-
<span class="cline-any cline-no"> </span>
|
|
382
|
-
<span class="cline-any cline-neutral"> </span>
|
|
383
|
-
<span class="cline-any cline-neutral"> </span>
|
|
384
|
-
<span class="cline-any cline-neutral"> </span>
|
|
385
|
-
<span class="cline-any cline-neutral"> </span>
|
|
386
|
-
<span class="cline-any cline-no"> </span>
|
|
387
|
-
<span class="cline-any cline-neutral"> </span>
|
|
388
|
-
<span class="cline-any cline-no"> </span>
|
|
389
|
-
<span class="cline-any cline-neutral"> </span>
|
|
390
|
-
<span class="cline-any cline-neutral"> </span>
|
|
391
|
-
<span class="cline-any cline-neutral"> </span>
|
|
392
|
-
<span class="cline-any cline-neutral"> </span>
|
|
393
|
-
<span class="cline-any cline-no"> </span>
|
|
394
|
-
<span class="cline-any cline-neutral"> </span>
|
|
395
|
-
<span class="cline-any cline-neutral"> </span>
|
|
396
|
-
<span class="cline-any cline-neutral"> </span>
|
|
397
|
-
<span class="cline-any cline-neutral"> </span>
|
|
398
|
-
<span class="cline-any cline-neutral"> </span>
|
|
399
|
-
<span class="cline-any cline-neutral"> </span>
|
|
400
|
-
<span class="cline-any cline-no"> </span>
|
|
401
|
-
<span class="cline-any cline-neutral"> </span>
|
|
402
|
-
<span class="cline-any cline-no"> </span>
|
|
403
|
-
<span class="cline-any cline-no"> </span>
|
|
404
|
-
<span class="cline-any cline-no"> </span>
|
|
405
|
-
<span class="cline-any cline-neutral"> </span>
|
|
406
|
-
<span class="cline-any cline-neutral"> </span>
|
|
407
|
-
<span class="cline-any cline-neutral"> </span>
|
|
408
|
-
<span class="cline-any cline-neutral"> </span>
|
|
409
|
-
<span class="cline-any cline-no"> </span>
|
|
410
|
-
<span class="cline-any cline-no"> </span>
|
|
411
|
-
<span class="cline-any cline-no"> </span>
|
|
412
|
-
<span class="cline-any cline-neutral"> </span>
|
|
413
|
-
<span class="cline-any cline-neutral"> </span>
|
|
414
|
-
<span class="cline-any cline-neutral"> </span>
|
|
415
|
-
<span class="cline-any cline-no"> </span>
|
|
416
|
-
<span class="cline-any cline-neutral"> </span>
|
|
417
|
-
<span class="cline-any cline-no"> </span>
|
|
418
|
-
<span class="cline-any cline-no"> </span>
|
|
419
|
-
<span class="cline-any cline-no"> </span>
|
|
420
|
-
<span class="cline-any cline-neutral"> </span>
|
|
421
|
-
<span class="cline-any cline-no"> </span>
|
|
422
|
-
<span class="cline-any cline-neutral"> </span>
|
|
423
|
-
<span class="cline-any cline-no"> </span>
|
|
424
|
-
<span class="cline-any cline-no"> </span>
|
|
425
|
-
<span class="cline-any cline-no"> </span>
|
|
426
|
-
<span class="cline-any cline-no"> </span>
|
|
427
|
-
<span class="cline-any cline-no"> </span>
|
|
428
|
-
<span class="cline-any cline-no"> </span>
|
|
429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-no"> </span>
|
|
431
|
-
<span class="cline-any cline-no"> </span>
|
|
432
|
-
<span class="cline-any cline-no"> </span>
|
|
433
|
-
<span class="cline-any cline-no"> </span>
|
|
434
|
-
<span class="cline-any cline-neutral"> </span>
|
|
435
|
-
<span class="cline-any cline-neutral"> </span>
|
|
436
|
-
<span class="cline-any cline-neutral"> </span>
|
|
437
|
-
<span class="cline-any cline-no"> </span>
|
|
438
|
-
<span class="cline-any cline-neutral"> </span>
|
|
439
|
-
<span class="cline-any cline-neutral"> </span>
|
|
440
|
-
<span class="cline-any cline-neutral"> </span>
|
|
441
|
-
<span class="cline-any cline-no"> </span>
|
|
442
|
-
<span class="cline-any cline-no"> </span>
|
|
443
|
-
<span class="cline-any cline-no"> </span>
|
|
444
|
-
<span class="cline-any cline-no"> </span>
|
|
445
|
-
<span class="cline-any cline-neutral"> </span>
|
|
446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
447
|
-
<span class="cline-any cline-no"> </span>
|
|
448
|
-
<span class="cline-any cline-neutral"> </span>
|
|
449
|
-
<span class="cline-any cline-neutral"> </span>
|
|
450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
451
|
-
<span class="cline-any cline-neutral"> </span>
|
|
452
|
-
<span class="cline-any cline-neutral"> </span>
|
|
453
|
-
<span class="cline-any cline-neutral"> </span>
|
|
454
|
-
<span class="cline-any cline-no"> </span>
|
|
455
|
-
<span class="cline-any cline-neutral"> </span>
|
|
456
|
-
<span class="cline-any cline-neutral"> </span>
|
|
457
|
-
<span class="cline-any cline-neutral"> </span>
|
|
458
|
-
<span class="cline-any cline-neutral"> </span>
|
|
459
|
-
<span class="cline-any cline-neutral"> </span>
|
|
460
|
-
<span class="cline-any cline-neutral"> </span>
|
|
461
|
-
<span class="cline-any cline-neutral"> </span>
|
|
462
|
-
<span class="cline-any cline-no"> </span>
|
|
463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
464
|
-
<span class="cline-any cline-no"> </span>
|
|
465
|
-
<span class="cline-any cline-neutral"> </span>
|
|
466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
468
|
-
<span class="cline-any cline-no"> </span>
|
|
469
|
-
<span class="cline-any cline-neutral"> </span>
|
|
470
|
-
<span class="cline-any cline-neutral"> </span>
|
|
471
|
-
<span class="cline-any cline-neutral"> </span>
|
|
472
|
-
<span class="cline-any cline-neutral"> </span>
|
|
473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
477
|
-
<span class="cline-any cline-no"> </span>
|
|
478
|
-
<span class="cline-any cline-neutral"> </span>
|
|
479
|
-
<span class="cline-any cline-no"> </span>
|
|
480
|
-
<span class="cline-any cline-no"> </span>
|
|
481
|
-
<span class="cline-any cline-no"> </span>
|
|
482
|
-
<span class="cline-any cline-neutral"> </span>
|
|
483
|
-
<span class="cline-any cline-no"> </span>
|
|
484
|
-
<span class="cline-any cline-neutral"> </span>
|
|
485
|
-
<span class="cline-any cline-neutral"> </span>
|
|
486
|
-
<span class="cline-any cline-neutral"> </span>
|
|
487
|
-
<span class="cline-any cline-neutral"> </span>
|
|
488
|
-
<span class="cline-any cline-neutral"> </span>
|
|
489
|
-
<span class="cline-any cline-neutral"> </span>
|
|
490
|
-
<span class="cline-any cline-neutral"> </span>
|
|
491
|
-
<span class="cline-any cline-neutral"> </span>
|
|
492
|
-
<span class="cline-any cline-no"> </span>
|
|
493
|
-
<span class="cline-any cline-no"> </span>
|
|
494
|
-
<span class="cline-any cline-no"> </span>
|
|
495
|
-
<span class="cline-any cline-neutral"> </span>
|
|
496
|
-
<span class="cline-any cline-neutral"> </span>
|
|
497
|
-
<span class="cline-any cline-no"> </span>
|
|
498
|
-
<span class="cline-any cline-no"> </span>
|
|
499
|
-
<span class="cline-any cline-neutral"> </span>
|
|
500
|
-
<span class="cline-any cline-no"> </span>
|
|
501
|
-
<span class="cline-any cline-no"> </span>
|
|
502
|
-
<span class="cline-any cline-neutral"> </span>
|
|
503
|
-
<span class="cline-any cline-no"> </span>
|
|
504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
506
|
-
<span class="cline-any cline-neutral"> </span>
|
|
507
|
-
<span class="cline-any cline-neutral"> </span>
|
|
508
|
-
<span class="cline-any cline-no"> </span>
|
|
509
|
-
<span class="cline-any cline-neutral"> </span>
|
|
510
|
-
<span class="cline-any cline-neutral"> </span>
|
|
511
|
-
<span class="cline-any cline-neutral"> </span>
|
|
512
|
-
<span class="cline-any cline-neutral"> </span>
|
|
513
|
-
<span class="cline-any cline-no"> </span>
|
|
514
|
-
<span class="cline-any cline-neutral"> </span>
|
|
515
|
-
<span class="cline-any cline-no"> </span>
|
|
516
|
-
<span class="cline-any cline-neutral"> </span>
|
|
517
|
-
<span class="cline-any cline-neutral"> </span>
|
|
518
|
-
<span class="cline-any cline-neutral"> </span>
|
|
519
|
-
<span class="cline-any cline-no"> </span>
|
|
520
|
-
<span class="cline-any cline-neutral"> </span>
|
|
521
|
-
<span class="cline-any cline-neutral"> </span>
|
|
522
|
-
<span class="cline-any cline-neutral"> </span>
|
|
523
|
-
<span class="cline-any cline-neutral"> </span>
|
|
524
|
-
<span class="cline-any cline-neutral"> </span>
|
|
525
|
-
<span class="cline-any cline-no"> </span>
|
|
526
|
-
<span class="cline-any cline-neutral"> </span>
|
|
527
|
-
<span class="cline-any cline-no"> </span>
|
|
528
|
-
<span class="cline-any cline-no"> </span>
|
|
529
|
-
<span class="cline-any cline-no"> </span>
|
|
530
|
-
<span class="cline-any cline-neutral"> </span>
|
|
531
|
-
<span class="cline-any cline-neutral"> </span>
|
|
532
|
-
<span class="cline-any cline-neutral"> </span>
|
|
533
|
-
<span class="cline-any cline-neutral"> </span>
|
|
534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
535
|
-
<span class="cline-any cline-neutral"> </span>
|
|
536
|
-
<span class="cline-any cline-no"> </span>
|
|
537
|
-
<span class="cline-any cline-no"> </span>
|
|
538
|
-
<span class="cline-any cline-neutral"> </span>
|
|
539
|
-
<span class="cline-any cline-neutral"> </span>
|
|
540
|
-
<span class="cline-any cline-no"> </span>
|
|
541
|
-
<span class="cline-any cline-no"> </span>
|
|
542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
543
|
-
<span class="cline-any cline-no"> </span>
|
|
544
|
-
<span class="cline-any cline-no"> </span>
|
|
545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
546
|
-
<span class="cline-any cline-no"> </span>
|
|
547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
548
|
-
<span class="cline-any cline-no"> </span>
|
|
549
|
-
<span class="cline-any cline-no"> </span>
|
|
550
|
-
<span class="cline-any cline-neutral"> </span>
|
|
551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
552
|
-
<span class="cline-any cline-neutral"> </span>
|
|
553
|
-
<span class="cline-any cline-no"> </span>
|
|
554
|
-
<span class="cline-any cline-no"> </span>
|
|
555
|
-
<span class="cline-any cline-neutral"> </span>
|
|
556
|
-
<span class="cline-any cline-no"> </span>
|
|
557
|
-
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-no"> </span>
|
|
559
|
-
<span class="cline-any cline-no"> </span>
|
|
560
|
-
<span class="cline-any cline-neutral"> </span>
|
|
561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
562
|
-
<span class="cline-any cline-no"> </span>
|
|
563
|
-
<span class="cline-any cline-no"> </span>
|
|
564
|
-
<span class="cline-any cline-no"> </span>
|
|
565
|
-
<span class="cline-any cline-no"> </span>
|
|
566
|
-
<span class="cline-any cline-no"> </span>
|
|
567
|
-
<span class="cline-any cline-neutral"> </span>
|
|
568
|
-
<span class="cline-any cline-no"> </span>
|
|
569
|
-
<span class="cline-any cline-no"> </span>
|
|
570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
571
|
-
<span class="cline-any cline-no"> </span>
|
|
572
|
-
<span class="cline-any cline-no"> </span>
|
|
573
|
-
<span class="cline-any cline-no"> </span>
|
|
574
|
-
<span class="cline-any cline-no"> </span>
|
|
575
|
-
<span class="cline-any cline-no"> </span>
|
|
576
|
-
<span class="cline-any cline-no"> </span>
|
|
577
|
-
<span class="cline-any cline-no"> </span>
|
|
578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
580
|
-
<span class="cline-any cline-no"> </span>
|
|
581
|
-
<span class="cline-any cline-no"> </span>
|
|
582
|
-
<span class="cline-any cline-neutral"> </span>
|
|
583
|
-
<span class="cline-any cline-no"> </span>
|
|
584
|
-
<span class="cline-any cline-no"> </span>
|
|
585
|
-
<span class="cline-any cline-no"> </span>
|
|
586
|
-
<span class="cline-any cline-neutral"> </span>
|
|
587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
589
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*
|
|
590
|
-
*
|
|
591
|
-
* Runs a set of producers and consumers, where consumers do a reserve-commit-rollback cycle. In each cycle a
|
|
592
|
-
* consumer would randomly choose whether to commit or rollback (10% chance of rollback). No deadletter is used
|
|
593
|
-
* so elements are retried ad infinitum until processed ok
|
|
594
|
-
*
|
|
595
|
-
* Upon completion (all items generated and consumed ok) some stats will be shown
|
|
596
|
-
*
|
|
597
|
-
* It uses bucket-mongo-safe backend for high throughput
|
|
598
|
-
*
|
|
599
|
-
*/
|
|
600
|
-
|
|
601
|
-
var MQ = <span class="cstat-no" title="statement not covered" >require ('../../backends/bucket-mongo-safe');</span>
|
|
602
|
-
|
|
603
|
-
var _ = <span class="cstat-no" title="statement not covered" >require ('lodash');</span>
|
|
604
|
-
var async = <span class="cstat-no" title="statement not covered" >require ('async');</span>
|
|
605
|
-
var Chance = <span class="cstat-no" title="statement not covered" >require ('chance');</span>
|
|
606
|
-
var chance = <span class="cstat-no" title="statement not covered" >new Chance();</span>
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
var factory_opts = <span class="cstat-no" title="statement not covered" >{</span>
|
|
610
|
-
url: 'mongodb://localhost/qeus',
|
|
611
|
-
name: 'Random-NS',
|
|
612
|
-
reject_delta_base: 2000,
|
|
613
|
-
reject_delta_factor: 2000
|
|
614
|
-
};
|
|
615
|
-
|
|
616
|
-
// test dimensions: elems to produce and consume, number of consumers, number of producers
|
|
617
|
-
const num_elems = <span class="cstat-no" title="statement not covered" >10000000;</span>
|
|
618
|
-
const num_producers = <span class="cstat-no" title="statement not covered" >3;</span>
|
|
619
|
-
const num_consumers = <span class="cstat-no" title="statement not covered" >7;</span>
|
|
620
|
-
const commit_likelihood = <span class="cstat-no" title="statement not covered" >95;</span>
|
|
621
|
-
|
|
622
|
-
// stats holder
|
|
623
|
-
var selfs = <span class="cstat-no" title="statement not covered" >{</span>
|
|
624
|
-
consumers: {},
|
|
625
|
-
producers: {}
|
|
626
|
-
};
|
|
627
|
-
|
|
628
|
-
var shareds = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
632
|
-
function <span class="fstat-no" title="function not covered" >consume_one </span>(shared_ctx, self_ctx, cb) {
|
|
633
|
-
<span class="cstat-no" title="statement not covered" > if (shared_ctx.pop_count > shared_ctx.pop_max) {</span>
|
|
634
|
-
<span class="cstat-no" title="statement not covered" > console.log ('pop consumer %s ended', self_ctx.id);</span>
|
|
635
|
-
<span class="cstat-no" title="statement not covered" > shared_ctx.q.cancel ();</span>
|
|
636
|
-
<span class="cstat-no" title="statement not covered" > return cb ();</span>
|
|
637
|
-
}
|
|
638
|
-
|
|
639
|
-
<span class="cstat-no" title="statement not covered" > shared_ctx.pop_count ++;</span>
|
|
640
|
-
<span class="cstat-no" title="statement not covered" > self_ctx.pop_count ++;</span>
|
|
641
|
-
|
|
642
|
-
<span class="cstat-no" title="statement not covered" > shared_ctx.q.pop (self_ctx.id, shared_ctx.pop_opts, <span class="fstat-no" title="function not covered" >(e</span>rr, res) => {</span>
|
|
643
|
-
<span class="cstat-no" title="statement not covered" > if (err) <span class="cstat-no" title="statement not covered" >return cb (err);</span></span>
|
|
644
|
-
<span class="cstat-no" title="statement not covered" > if ((shared_ctx.pop_count % 100000) == 0) <span class="cstat-no" title="statement not covered" >console.log ('%s : consumed #%d elems', self_ctx.id, shared_ctx.pop_count);</span></span>
|
|
645
|
-
<span class="cstat-no" title="statement not covered" > consume_one (shared_ctx, self_ctx, cb);</span>
|
|
646
|
-
});
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
function <span class="fstat-no" title="function not covered" >run_a_pop_consumer </span>(shared_ctx, cb) {
|
|
651
|
-
var self_ctx = <span class="cstat-no" title="statement not covered" >{</span>
|
|
652
|
-
id: chance.word (),
|
|
653
|
-
pop_count: 0
|
|
654
|
-
};
|
|
655
|
-
|
|
656
|
-
<span class="cstat-no" title="statement not covered" > selfs.consumers[self_ctx.id] = self_ctx;</span>
|
|
657
|
-
|
|
658
|
-
<span class="cstat-no" title="statement not covered" > consume_one (shared_ctx, self_ctx, cb);</span>
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
function <span class="fstat-no" title="function not covered" >run_consumers </span>(q, cnt, cb) {
|
|
663
|
-
var shared_ctx = <span class="cstat-no" title="statement not covered" >{</span>
|
|
664
|
-
q: q,
|
|
665
|
-
pop_count: 0,
|
|
666
|
-
pop_max: cnt,
|
|
667
|
-
pop_opts: {}
|
|
668
|
-
};
|
|
669
|
-
|
|
670
|
-
<span class="cstat-no" title="statement not covered" > shareds.pc = shared_ctx;</span>
|
|
671
|
-
|
|
672
|
-
var tasks = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
673
|
-
<span class="cstat-no" title="statement not covered" > for (var i = <span class="cstat-no" title="statement not covered" >0;</span> i < num_consumers; i++) <span class="cstat-no" title="statement not covered" >tasks.push (<span class="fstat-no" title="function not covered" >(c</span>b) => <span class="cstat-no" title="statement not covered" >run_a_pop_consumer (shared_ctx, cb))</span>;</span></span>
|
|
674
|
-
<span class="cstat-no" title="statement not covered" > async.parallel (tasks, cb);</span>
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
678
|
-
|
|
679
|
-
var das_pop = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
680
|
-
var das_ko = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
681
|
-
var das_ok = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
682
|
-
|
|
683
|
-
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
684
|
-
function <span class="fstat-no" title="function not covered" >reserve_and_commit_one </span>(shared_ctx, self_ctx, cb) {
|
|
685
|
-
<span class="cstat-no" title="statement not covered" > self_ctx.pop_count ++;</span>
|
|
686
|
-
|
|
687
|
-
<span class="cstat-no" title="statement not covered" > shared_ctx.q.pop (self_ctx.consumer, shared_ctx.pop_opts, <span class="fstat-no" title="function not covered" >(e</span>rr, res) => {</span>
|
|
688
|
-
<span class="cstat-no" title="statement not covered" > if (err) <span class="cstat-no" title="statement not covered" >return cb (err);</span></span>
|
|
689
|
-
<span class="cstat-no" title="statement not covered" > self_ctx.resv_count ++;</span>
|
|
690
|
-
|
|
691
|
-
<span class="cstat-no" title="statement not covered" > das_pop++;</span>
|
|
692
|
-
|
|
693
|
-
<span class="cstat-no" title="statement not covered" > if (chance.bool({likelihood: commit_likelihood})) {</span>
|
|
694
|
-
<span class="cstat-no" title="statement not covered" > shared_ctx.q.ok (res._id, <span class="fstat-no" title="function not covered" >(e</span>rr) => {</span>
|
|
695
|
-
<span class="cstat-no" title="statement not covered" > if (err) <span class="cstat-no" title="statement not covered" >return cb (err);</span></span>
|
|
696
|
-
<span class="cstat-no" title="statement not covered" > self_ctx.ok_count ++;</span>
|
|
697
|
-
<span class="cstat-no" title="statement not covered" > shared_ctx.pop_count ++;</span>
|
|
698
|
-
<span class="cstat-no" title="statement not covered" > das_ok++;</span>
|
|
699
|
-
|
|
700
|
-
<span class="cstat-no" title="statement not covered" > if (shared_ctx.pop_count > shared_ctx.pop_max) {</span>
|
|
701
|
-
<span class="cstat-no" title="statement not covered" > console.log ('rcr consumer %s ended', self_ctx.id);</span>
|
|
702
|
-
<span class="cstat-no" title="statement not covered" > shared_ctx.q.cancel ();</span>
|
|
703
|
-
<span class="cstat-no" title="statement not covered" > return cb ();</span>
|
|
704
|
-
}
|
|
705
|
-
|
|
706
|
-
// if ((shared_ctx.pop_count % 100000) == 0) console.log ('%s : consumed #%d elems', self_ctx.id, shared_ctx.pop_count);
|
|
707
|
-
<span class="cstat-no" title="statement not covered" > reserve_and_commit_one (shared_ctx, self_ctx, cb);</span>
|
|
708
|
-
});
|
|
709
|
-
}
|
|
710
|
-
else {
|
|
711
|
-
<span class="cstat-no" title="statement not covered" > shared_ctx.q.ko (res._id, <span class="fstat-no" title="function not covered" >(e</span>rr) => {</span>
|
|
712
|
-
<span class="cstat-no" title="statement not covered" > if (err) <span class="cstat-no" title="statement not covered" >return cb (err);</span></span>
|
|
713
|
-
<span class="cstat-no" title="statement not covered" > self_ctx.ko_count ++;</span>
|
|
714
|
-
<span class="cstat-no" title="statement not covered" > das_ko++;</span>
|
|
715
|
-
|
|
716
|
-
// if ((shared_ctx.pop_count % 100000) == 0) console.log ('%s : consumed #%d elems', self_ctx.id, shared_ctx.pop_count);
|
|
717
|
-
<span class="cstat-no" title="statement not covered" > reserve_and_commit_one (shared_ctx, self_ctx, cb);</span>
|
|
718
|
-
});
|
|
719
|
-
}
|
|
720
|
-
});
|
|
721
|
-
}
|
|
722
|
-
|
|
723
|
-
function <span class="fstat-no" title="function not covered" >run_a_rcr_consumer </span>(shared_ctx, cb) {
|
|
724
|
-
var self_ctx = <span class="cstat-no" title="statement not covered" >{</span>
|
|
725
|
-
id: chance.word (),
|
|
726
|
-
pop_count: 0,
|
|
727
|
-
resv_count: 0,
|
|
728
|
-
ko_count: 0,
|
|
729
|
-
ok_count: 0
|
|
730
|
-
};
|
|
731
|
-
|
|
732
|
-
<span class="cstat-no" title="statement not covered" > selfs.consumers[self_ctx.id] = self_ctx;</span>
|
|
733
|
-
|
|
734
|
-
<span class="cstat-no" title="statement not covered" > reserve_and_commit_one (shared_ctx, self_ctx, cb);</span>
|
|
735
|
-
}
|
|
736
|
-
|
|
737
|
-
function <span class="fstat-no" title="function not covered" >run_rcr_consumers </span>(q, cnt, cb) {
|
|
738
|
-
var shared_ctx = <span class="cstat-no" title="statement not covered" >{</span>
|
|
739
|
-
q: q,
|
|
740
|
-
pop_count: 0,
|
|
741
|
-
pop_max: cnt,
|
|
742
|
-
pop_opts: {
|
|
743
|
-
reserve: true
|
|
744
|
-
}
|
|
745
|
-
};
|
|
746
|
-
|
|
747
|
-
<span class="cstat-no" title="statement not covered" > shareds.rcrc = shared_ctx;</span>
|
|
748
|
-
|
|
749
|
-
var tasks = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
750
|
-
<span class="cstat-no" title="statement not covered" > for (var i = <span class="cstat-no" title="statement not covered" >0;</span> i < num_consumers; i++) </span>
|
|
751
|
-
<span class="cstat-no" title="statement not covered" > tasks.push (<span class="fstat-no" title="function not covered" >(c</span>b) => <span class="cstat-no" title="statement not covered" >run_a_rcr_consumer (shared_ctx, cb))</span>;</span>
|
|
752
|
-
|
|
753
|
-
<span class="cstat-no" title="statement not covered" > async.parallel (tasks, cb);</span>
|
|
754
|
-
}
|
|
755
|
-
|
|
756
|
-
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
761
|
-
function <span class="fstat-no" title="function not covered" >produce_one </span>(shared_ctx, self_ctx, cb) {
|
|
762
|
-
<span class="cstat-no" title="statement not covered" > if (shared_ctx.push_count > shared_ctx.push_max) {</span>
|
|
763
|
-
<span class="cstat-no" title="statement not covered" > console.log ('producer %s ended', self_ctx.id);</span>
|
|
764
|
-
<span class="cstat-no" title="statement not covered" > return cb ();</span>
|
|
765
|
-
}
|
|
766
|
-
|
|
767
|
-
<span class="cstat-no" title="statement not covered" > shared_ctx.push_count ++;</span>
|
|
768
|
-
<span class="cstat-no" title="statement not covered" > self_ctx.push_count ++;</span>
|
|
769
|
-
|
|
770
|
-
<span class="cstat-no" title="statement not covered" > shared_ctx.q.push ({a: chance.integer (), b: chance.word (), n: shared_ctx.push_count}, <span class="fstat-no" title="function not covered" >fu</span>nction (err, res) {</span>
|
|
771
|
-
<span class="cstat-no" title="statement not covered" > if (err) <span class="cstat-no" title="statement not covered" >return console.error (err);</span></span>
|
|
772
|
-
// if ((shared_ctx.push_count % 100000) == 0) console.log ('%s : produced #%d elems', self_ctx.id, shared_ctx.push_count);
|
|
773
|
-
<span class="cstat-no" title="statement not covered" > produce_one (shared_ctx, self_ctx, cb);</span>
|
|
774
|
-
});
|
|
775
|
-
}
|
|
776
|
-
|
|
777
|
-
function <span class="fstat-no" title="function not covered" >run_a_producer </span>(shared_ctx, cb) {
|
|
778
|
-
var self_ctx = <span class="cstat-no" title="statement not covered" >{</span>
|
|
779
|
-
id: chance.word (),
|
|
780
|
-
push_count: 0
|
|
781
|
-
};
|
|
782
|
-
|
|
783
|
-
<span class="cstat-no" title="statement not covered" > selfs.producers[self_ctx.id] = self_ctx;</span>
|
|
784
|
-
|
|
785
|
-
<span class="cstat-no" title="statement not covered" > produce_one (shared_ctx, self_ctx, cb);</span>
|
|
786
|
-
}
|
|
787
|
-
|
|
788
|
-
function <span class="fstat-no" title="function not covered" >run_producers </span>(q, cnt, cb) {
|
|
789
|
-
var shared_ctx = <span class="cstat-no" title="statement not covered" >{</span>
|
|
790
|
-
q: q,
|
|
791
|
-
push_count: 0,
|
|
792
|
-
push_max: cnt
|
|
793
|
-
};
|
|
794
|
-
|
|
795
|
-
<span class="cstat-no" title="statement not covered" > shareds.prod = shared_ctx;</span>
|
|
796
|
-
|
|
797
|
-
var tasks = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
798
|
-
<span class="cstat-no" title="statement not covered" > for (var i = <span class="cstat-no" title="statement not covered" >0;</span> i < num_producers; i++) <span class="cstat-no" title="statement not covered" >tasks.push (<span class="fstat-no" title="function not covered" >(c</span>b) => <span class="cstat-no" title="statement not covered" >run_a_producer (shared_ctx, cb))</span>;</span></span>
|
|
799
|
-
<span class="cstat-no" title="statement not covered" > async.parallel (tasks, cb);</span>
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
// initialize factory
|
|
806
|
-
<span class="cstat-no" title="statement not covered" >MQ (factory_opts, <span class="fstat-no" title="function not covered" >fu</span>nction (err, factory) {</span>
|
|
807
|
-
<span class="cstat-no" title="statement not covered" > if (err) <span class="cstat-no" title="statement not covered" >return console.error (err);</span></span>
|
|
808
|
-
|
|
809
|
-
// factory ready, create one queue
|
|
810
|
-
var q_opts = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
811
|
-
var q = <span class="cstat-no" title="statement not covered" >factory.queue ('test_queue_456', q_opts);</span>
|
|
812
|
-
|
|
813
|
-
var timer = <span class="cstat-no" title="statement not covered" >setInterval (<span class="fstat-no" title="function not covered" >()</span> => {</span>
|
|
814
|
-
<span class="cstat-no" title="statement not covered" > console.log ('**** state: %j', _.map (shareds, <span class="fstat-no" title="function not covered" >(v</span>, k) => {<span class="cstat-no" title="statement not covered" >return {cnt: v.push_count || v.pop_count, max: v.push_max || v.pop_max }}</span>));</span>
|
|
815
|
-
|
|
816
|
-
<span class="cstat-no" title="statement not covered" > console.log ('das pop %d, ko %d, ok %d', das_pop, das_ko, das_ok);</span>
|
|
817
|
-
|
|
818
|
-
<span class="cstat-no" title="statement not covered" > q.status (<span class="fstat-no" title="function not covered" >(e</span>rr ,res) => {</span>
|
|
819
|
-
<span class="cstat-no" title="statement not covered" > console.log ('**** status: %j', res);</span>
|
|
820
|
-
});
|
|
821
|
-
}, 2000);
|
|
822
|
-
|
|
823
|
-
<span class="cstat-no" title="statement not covered" > async.parallel ([</span>
|
|
824
|
-
<span class="fstat-no" title="function not covered" > (c</span>b) => <span class="cstat-no" title="statement not covered" >run_producers (q, num_elems, cb),</span>
|
|
825
|
-
// (cb) => run_consumers (q, 250000, cb),
|
|
826
|
-
<span class="fstat-no" title="function not covered" > (c</span>b) => <span class="cstat-no" title="statement not covered" >run_rcr_consumers (q, num_elems, cb),</span>
|
|
827
|
-
], <span class="fstat-no" title="function not covered" >(e</span>rr) => {
|
|
828
|
-
<span class="cstat-no" title="statement not covered" > if (err) {</span>
|
|
829
|
-
<span class="cstat-no" title="statement not covered" > console.error (err);</span>
|
|
830
|
-
}
|
|
831
|
-
|
|
832
|
-
var tot_push = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
833
|
-
var tot_pop = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
834
|
-
var tot_resv = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
835
|
-
var tot_ok = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
836
|
-
var tot_ko = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
837
|
-
|
|
838
|
-
<span class="cstat-no" title="statement not covered" > console.log ('\nProducers: ');</span>
|
|
839
|
-
<span class="cstat-no" title="statement not covered" > _.each (selfs.producers, <span class="fstat-no" title="function not covered" >(v</span>, k) => {<span class="cstat-no" title="statement not covered" >console.log (' %s: pushed %d', v.id, v.push_count), tot_push += v.push_count}</span>);</span>
|
|
840
|
-
|
|
841
|
-
<span class="cstat-no" title="statement not covered" > console.log ('\nConsumers: ');</span>
|
|
842
|
-
<span class="cstat-no" title="statement not covered" > _.each (selfs.consumers, <span class="fstat-no" title="function not covered" >(v</span>, k) => {</span>
|
|
843
|
-
<span class="cstat-no" title="statement not covered" > console.log (' %s: popped %d, resvd %d, committed %d, rollbacked %d', v.id, v.pop_count, v.resv_count, v.ok_count, v.ko_count);</span>
|
|
844
|
-
<span class="cstat-no" title="statement not covered" > tot_pop += v.pop_count;</span>
|
|
845
|
-
<span class="cstat-no" title="statement not covered" > tot_resv += v.resv_count;</span>
|
|
846
|
-
<span class="cstat-no" title="statement not covered" > tot_ok += v.ok_count;</span>
|
|
847
|
-
<span class="cstat-no" title="statement not covered" > tot_ko += v.ko_count;</span>
|
|
848
|
-
});
|
|
849
|
-
|
|
850
|
-
<span class="cstat-no" title="statement not covered" > console.log (' \nTotals: %d popped, %d pushed, resvd %d, committed %d, rollbacked %d', tot_pop, tot_push, tot_resv, tot_ok, tot_ko);</span>
|
|
851
|
-
<span class="cstat-no" title="statement not covered" > clearInterval (timer);</span>
|
|
852
|
-
|
|
853
|
-
<span class="cstat-no" title="statement not covered" > q.status (<span class="fstat-no" title="function not covered" >(e</span>rr ,res) => {</span>
|
|
854
|
-
<span class="cstat-no" title="statement not covered" > console.log ('**** status: %j', res);</span>
|
|
855
|
-
<span class="cstat-no" title="statement not covered" > q.drain (<span class="fstat-no" title="function not covered" >()</span> => <span class="cstat-no" title="statement not covered" >factory.close ())</span>;</span>
|
|
856
|
-
});
|
|
857
|
-
});
|
|
858
|
-
});
|
|
859
|
-
</pre></td></tr>
|
|
860
|
-
</table></pre>
|
|
861
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
862
|
-
</div><!-- /wrapper -->
|
|
863
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
864
|
-
Code coverage
|
|
865
|
-
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Sun Aug 30 2020 20:39:29 GMT+0200 (GMT+02:00)
|
|
866
|
-
</div>
|
|
867
|
-
</div>
|
|
868
|
-
<script src="../../../prettify.js"></script>
|
|
869
|
-
<script>
|
|
870
|
-
window.onload = function () {
|
|
871
|
-
if (typeof prettyPrint === 'function') {
|
|
872
|
-
prettyPrint();
|
|
873
|
-
}
|
|
874
|
-
};
|
|
875
|
-
</script>
|
|
876
|
-
<script src="../../../sorter.js"></script>
|
|
877
|
-
<script src="../../../block-navigation.js"></script>
|
|
878
|
-
</body>
|
|
879
|
-
</html>
|