@grnsft/if 0.1.7 → 0.1.8
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/coverage/clover.xml +218 -235
- package/coverage/coverage-final.json +11 -11
- package/coverage/lcov-report/config/config.ts.html +3 -9
- package/coverage/lcov-report/config/index.html +7 -7
- package/coverage/lcov-report/config/index.ts.html +3 -3
- package/coverage/lcov-report/config/strings.ts.html +19 -7
- package/coverage/lcov-report/index.html +19 -19
- package/coverage/lcov-report/lib/index.html +16 -16
- package/coverage/lcov-report/lib/models-universe.ts.html +4 -4
- package/coverage/lcov-report/lib/observatory.ts.html +10 -10
- package/coverage/lcov-report/lib/planet-aggregator.ts.html +76 -46
- package/coverage/lcov-report/lib/supercomputer.ts.html +68 -308
- package/coverage/lcov-report/models/index.html +7 -7
- package/coverage/lcov-report/models/index.ts.html +2 -2
- package/coverage/lcov-report/models/planet-aggregator.ts.html +271 -0
- package/coverage/lcov-report/models/time-sync.ts.html +129 -117
- package/coverage/lcov-report/util/args.ts.html +1 -1
- package/coverage/lcov-report/util/errors.ts.html +1 -1
- package/coverage/lcov-report/util/index.html +1 -1
- package/coverage/lcov-report/util/units-dealer.ts.html +12 -12
- package/coverage/lcov-report/util/yaml.ts.html +9 -9
- package/coverage/lcov.info +343 -372
- package/examples/impls/test/aggregation-test.yml +2 -2
- package/examples/impls/test/nesting.yml +93 -42
- package/examples/impls/test/sci.yml +3 -3
- package/examples/impls/test/shell.yml +5 -5
- package/examples/ompls/nesting.yml +91 -85
- package/examples/ompls/sci.yml +4 -3
- package/examples/ompls/shell.yml +7 -7
- package/jest.config.js +1 -1
- package/package.json +1 -1
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>7/7</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>6/6</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>7/7</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -100,9 +100,13 @@
|
|
|
100
100
|
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
101
|
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
102
|
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
104
108
|
<span class="cline-any cline-neutral"> </span>
|
|
105
|
-
<span class="cline-any cline-yes">
|
|
109
|
+
<span class="cline-any cline-yes">7x</span>
|
|
106
110
|
<span class="cline-any cline-neutral"> </span>
|
|
107
111
|
<span class="cline-any cline-neutral"> </span>
|
|
108
112
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -112,7 +116,7 @@
|
|
|
112
116
|
<span class="cline-any cline-neutral"> </span>
|
|
113
117
|
<span class="cline-any cline-yes">3x</span>
|
|
114
118
|
<span class="cline-any cline-neutral"> </span>
|
|
115
|
-
<span class="cline-any cline-yes">
|
|
119
|
+
<span class="cline-any cline-yes">3x</span>
|
|
116
120
|
<span class="cline-any cline-neutral"> </span>
|
|
117
121
|
<span class="cline-any cline-neutral"> </span>
|
|
118
122
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -137,6 +141,10 @@
|
|
|
137
141
|
<span class="cline-any cline-neutral"> </span>
|
|
138
142
|
<span class="cline-any cline-neutral"> </span>
|
|
139
143
|
<span class="cline-any cline-neutral"> </span>
|
|
144
|
+
<span class="cline-any cline-yes">3x</span>
|
|
145
|
+
<span class="cline-any cline-neutral"> </span>
|
|
146
|
+
<span class="cline-any cline-yes">3x</span>
|
|
147
|
+
<span class="cline-any cline-neutral"> </span>
|
|
140
148
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {ClassContainerParams} from '../types/models-universe';
|
|
141
149
|
|
|
142
150
|
export const STRINGS = {
|
|
@@ -173,6 +181,10 @@ https://github.com/Green-Software-Foundation/if/issues/new?assignees=&labels
|
|
|
173
181
|
INVALID_TIME_NORMALIZATION: 'Start time or end time is missing.',
|
|
174
182
|
INVALID_TIME_INTERVAL: 'Interval is missing.',
|
|
175
183
|
INVALID_OBSERVATION_OVERLAP: 'Observation timestamps overlap.',
|
|
184
|
+
INVALID_AGGREGATION_METHOD: (metric: string) =>
|
|
185
|
+
`Aggregation is not possible for given ${metric} since method is 'none'.`,
|
|
186
|
+
METRIC_MISSING: (metric: string, index: number) =>
|
|
187
|
+
`Aggregation metric ${metric} is not found in inputs[${index}].`,
|
|
176
188
|
};
|
|
177
189
|
</pre></td></tr></table></pre>
|
|
178
190
|
|
|
@@ -181,7 +193,7 @@ https://github.com/Green-Software-Foundation/if/issues/new?assignees=&labels
|
|
|
181
193
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
182
194
|
Code coverage generated by
|
|
183
195
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
184
|
-
at 2024-01-
|
|
196
|
+
at 2024-01-15T13:07:43.773Z
|
|
185
197
|
</div>
|
|
186
198
|
<script src="../prettify.js"></script>
|
|
187
199
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">99.
|
|
26
|
+
<span class="strong">99.1% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>332/335</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">97.05% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>66/68</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>65/65</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">99.
|
|
47
|
+
<span class="strong">99.06% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>319/322</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -84,13 +84,13 @@
|
|
|
84
84
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
85
85
|
</td>
|
|
86
86
|
<td data-value="100" class="pct high">100%</td>
|
|
87
|
-
<td data-value="
|
|
87
|
+
<td data-value="12" class="abs high">12/12</td>
|
|
88
88
|
<td data-value="100" class="pct high">100%</td>
|
|
89
89
|
<td data-value="0" class="abs high">0/0</td>
|
|
90
90
|
<td data-value="100" class="pct high">100%</td>
|
|
91
|
-
<td data-value="6" class="abs high">6/6</td>
|
|
92
|
-
<td data-value="100" class="pct high">100%</td>
|
|
93
91
|
<td data-value="8" class="abs high">8/8</td>
|
|
92
|
+
<td data-value="100" class="pct high">100%</td>
|
|
93
|
+
<td data-value="10" class="abs high">10/10</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
@@ -99,13 +99,13 @@
|
|
|
99
99
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
100
100
|
</td>
|
|
101
101
|
<td data-value="100" class="pct high">100%</td>
|
|
102
|
-
<td data-value="
|
|
103
|
-
<td data-value="
|
|
104
|
-
<td data-value="
|
|
102
|
+
<td data-value="122" class="abs high">122/122</td>
|
|
103
|
+
<td data-value="96.55" class="pct high">96.55%</td>
|
|
104
|
+
<td data-value="29" class="abs high">28/29</td>
|
|
105
105
|
<td data-value="100" class="pct high">100%</td>
|
|
106
|
-
<td data-value="
|
|
106
|
+
<td data-value="23" class="abs high">23/23</td>
|
|
107
107
|
<td data-value="100" class="pct high">100%</td>
|
|
108
|
-
<td data-value="
|
|
108
|
+
<td data-value="118" class="abs high">118/118</td>
|
|
109
109
|
</tr>
|
|
110
110
|
|
|
111
111
|
<tr>
|
|
@@ -114,13 +114,13 @@
|
|
|
114
114
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
115
115
|
</td>
|
|
116
116
|
<td data-value="100" class="pct high">100%</td>
|
|
117
|
-
<td data-value="
|
|
117
|
+
<td data-value="132" class="abs high">132/132</td>
|
|
118
118
|
<td data-value="100" class="pct high">100%</td>
|
|
119
|
-
<td data-value="
|
|
119
|
+
<td data-value="32" class="abs high">32/32</td>
|
|
120
120
|
<td data-value="100" class="pct high">100%</td>
|
|
121
121
|
<td data-value="22" class="abs high">22/22</td>
|
|
122
122
|
<td data-value="100" class="pct high">100%</td>
|
|
123
|
-
<td data-value="
|
|
123
|
+
<td data-value="130" class="abs high">130/130</td>
|
|
124
124
|
</tr>
|
|
125
125
|
|
|
126
126
|
<tr>
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
147
147
|
Code coverage generated by
|
|
148
148
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
149
|
-
at 2024-01-
|
|
149
|
+
at 2024-01-15T13:07:43.773Z
|
|
150
150
|
</div>
|
|
151
151
|
<script src="prettify.js"></script>
|
|
152
152
|
<script>
|
|
@@ -25,28 +25,28 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>122/122</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">96.55% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>28/29</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>23/23</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>118/118</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -100,8 +100,8 @@
|
|
|
100
100
|
</td>
|
|
101
101
|
<td data-value="100" class="pct high">100%</td>
|
|
102
102
|
<td data-value="7" class="abs high">7/7</td>
|
|
103
|
-
<td data-value="
|
|
104
|
-
<td data-value="2" class="abs
|
|
103
|
+
<td data-value="50" class="pct medium">50%</td>
|
|
104
|
+
<td data-value="2" class="abs medium">1/2</td>
|
|
105
105
|
<td data-value="100" class="pct high">100%</td>
|
|
106
106
|
<td data-value="3" class="abs high">3/3</td>
|
|
107
107
|
<td data-value="100" class="pct high">100%</td>
|
|
@@ -114,13 +114,13 @@
|
|
|
114
114
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
115
115
|
</td>
|
|
116
116
|
<td data-value="100" class="pct high">100%</td>
|
|
117
|
-
<td data-value="
|
|
117
|
+
<td data-value="25" class="abs high">25/25</td>
|
|
118
118
|
<td data-value="100" class="pct high">100%</td>
|
|
119
|
-
<td data-value="
|
|
119
|
+
<td data-value="6" class="abs high">6/6</td>
|
|
120
120
|
<td data-value="100" class="pct high">100%</td>
|
|
121
|
-
<td data-value="
|
|
121
|
+
<td data-value="4" class="abs high">4/4</td>
|
|
122
122
|
<td data-value="100" class="pct high">100%</td>
|
|
123
|
-
<td data-value="
|
|
123
|
+
<td data-value="24" class="abs high">24/24</td>
|
|
124
124
|
</tr>
|
|
125
125
|
|
|
126
126
|
<tr>
|
|
@@ -129,13 +129,13 @@
|
|
|
129
129
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
130
130
|
</td>
|
|
131
131
|
<td data-value="100" class="pct high">100%</td>
|
|
132
|
-
<td data-value="
|
|
132
|
+
<td data-value="44" class="abs high">44/44</td>
|
|
133
133
|
<td data-value="100" class="pct high">100%</td>
|
|
134
|
-
<td data-value="
|
|
134
|
+
<td data-value="11" class="abs high">11/11</td>
|
|
135
135
|
<td data-value="100" class="pct high">100%</td>
|
|
136
|
-
<td data-value="
|
|
136
|
+
<td data-value="7" class="abs high">7/7</td>
|
|
137
137
|
<td data-value="100" class="pct high">100%</td>
|
|
138
|
-
<td data-value="
|
|
138
|
+
<td data-value="42" class="abs high">42/42</td>
|
|
139
139
|
</tr>
|
|
140
140
|
|
|
141
141
|
</tbody>
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
147
147
|
Code coverage generated by
|
|
148
148
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
149
|
-
at 2024-01-
|
|
149
|
+
at 2024-01-15T13:07:43.773Z
|
|
150
150
|
</div>
|
|
151
151
|
<script src="../prettify.js"></script>
|
|
152
152
|
<script>
|
|
@@ -359,9 +359,9 @@ import {CONFIG, STRINGS} from '../config';
|
|
|
359
359
|
|
|
360
360
|
import {
|
|
361
361
|
ClassContainerParams,
|
|
362
|
-
GraphOptions,
|
|
363
362
|
ImplInitializeModel,
|
|
364
363
|
InitalizedModels,
|
|
364
|
+
ModelOptions,
|
|
365
365
|
} from '../types/models-universe';
|
|
366
366
|
|
|
367
367
|
const {ModelInitializationError, ModelCredentialError} = ERRORS;
|
|
@@ -465,10 +465,10 @@ export class ModelsUniverse {
|
|
|
465
465
|
|
|
466
466
|
const Model = await this.handModel(model, path);
|
|
467
467
|
|
|
468
|
-
const callback = async (
|
|
468
|
+
const callback = async (options: ModelOptions) => {
|
|
469
469
|
const params = {
|
|
470
470
|
...config,
|
|
471
|
-
...
|
|
471
|
+
...options,
|
|
472
472
|
};
|
|
473
473
|
|
|
474
474
|
const initalizedModel = await new Model().configure(params);
|
|
@@ -502,7 +502,7 @@ export class ModelsUniverse {
|
|
|
502
502
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
503
503
|
Code coverage generated by
|
|
504
504
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
505
|
-
at 2024-01-
|
|
505
|
+
at 2024-01-15T13:07:43.773Z
|
|
506
506
|
</div>
|
|
507
507
|
<script src="../prettify.js"></script>
|
|
508
508
|
<script>
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">50% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>1/2</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -104,31 +104,31 @@
|
|
|
104
104
|
<span class="cline-any cline-neutral"> </span>
|
|
105
105
|
<span class="cline-any cline-yes">2x</span>
|
|
106
106
|
<span class="cline-any cline-neutral"> </span>
|
|
107
|
-
<span class="cline-any cline-yes">
|
|
107
|
+
<span class="cline-any cline-yes">11x</span>
|
|
108
108
|
<span class="cline-any cline-neutral"> </span>
|
|
109
109
|
<span class="cline-any cline-neutral"> </span>
|
|
110
110
|
<span class="cline-any cline-neutral"> </span>
|
|
111
111
|
<span class="cline-any cline-neutral"> </span>
|
|
112
112
|
<span class="cline-any cline-neutral"> </span>
|
|
113
|
-
<span class="cline-any cline-yes">
|
|
113
|
+
<span class="cline-any cline-yes">11x</span>
|
|
114
114
|
<span class="cline-any cline-neutral"> </span>
|
|
115
115
|
<span class="cline-any cline-neutral"> </span>
|
|
116
116
|
<span class="cline-any cline-neutral"> </span>
|
|
117
117
|
<span class="cline-any cline-neutral"> </span>
|
|
118
118
|
<span class="cline-any cline-neutral"> </span>
|
|
119
119
|
<span class="cline-any cline-neutral"> </span>
|
|
120
|
-
<span class="cline-any cline-yes">
|
|
120
|
+
<span class="cline-any cline-yes">9x</span>
|
|
121
121
|
<span class="cline-any cline-neutral"> </span>
|
|
122
|
-
<span class="cline-any cline-yes">
|
|
122
|
+
<span class="cline-any cline-yes">9x</span>
|
|
123
123
|
<span class="cline-any cline-neutral"> </span>
|
|
124
|
-
<span class="cline-any cline-yes">
|
|
124
|
+
<span class="cline-any cline-yes">9x</span>
|
|
125
125
|
<span class="cline-any cline-neutral"> </span>
|
|
126
126
|
<span class="cline-any cline-neutral"> </span>
|
|
127
127
|
<span class="cline-any cline-neutral"> </span>
|
|
128
128
|
<span class="cline-any cline-neutral"> </span>
|
|
129
129
|
<span class="cline-any cline-neutral"> </span>
|
|
130
130
|
<span class="cline-any cline-neutral"> </span>
|
|
131
|
-
<span class="cline-any cline-yes">
|
|
131
|
+
<span class="cline-any cline-yes">9x</span>
|
|
132
132
|
<span class="cline-any cline-neutral"> </span>
|
|
133
133
|
<span class="cline-any cline-neutral"> </span>
|
|
134
134
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {ModelParams, ModelPluginInterface} from '../types/model-interface';
|
|
@@ -151,7 +151,7 @@ export class Observatory {
|
|
|
151
151
|
* Does investigations by given `output` information
|
|
152
152
|
*/
|
|
153
153
|
public async doInvestigationsWith(modelInstance: ModelPluginInterface) {
|
|
154
|
-
const reuseCalculation = this.outputs.length ? this.outputs
|
|
154
|
+
const reuseCalculation = this.outputs.length ? <span class="branch-0 cbranch-no" title="branch not covered" >this.outputs </span>: this.inputs;
|
|
155
155
|
|
|
156
156
|
this.outputs = await modelInstance.execute(reuseCalculation);
|
|
157
157
|
|
|
@@ -172,7 +172,7 @@ export class Observatory {
|
|
|
172
172
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
173
173
|
Code coverage generated by
|
|
174
174
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
175
|
-
at 2024-01-
|
|
175
|
+
at 2024-01-15T13:07:43.773Z
|
|
176
176
|
</div>
|
|
177
177
|
<script src="../prettify.js"></script>
|
|
178
178
|
<script>
|
|
@@ -25,28 +25,28 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>25/25</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>6/6</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>4/4</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>24/24</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -116,9 +116,20 @@
|
|
|
116
116
|
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
117
|
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
118
|
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a
|
|
120
|
-
<
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
|
|
130
|
+
<span class="cline-any cline-yes">2x</span>
|
|
121
131
|
<span class="cline-any cline-neutral"> </span>
|
|
132
|
+
<span class="cline-any cline-yes">2x</span>
|
|
122
133
|
<span class="cline-any cline-neutral"> </span>
|
|
123
134
|
<span class="cline-any cline-neutral"> </span>
|
|
124
135
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -126,6 +137,8 @@
|
|
|
126
137
|
<span class="cline-any cline-neutral"> </span>
|
|
127
138
|
<span class="cline-any cline-neutral"> </span>
|
|
128
139
|
<span class="cline-any cline-yes">2x</span>
|
|
140
|
+
<span class="cline-any cline-yes">2x</span>
|
|
141
|
+
<span class="cline-any cline-neutral"> </span>
|
|
129
142
|
<span class="cline-any cline-neutral"> </span>
|
|
130
143
|
<span class="cline-any cline-neutral"> </span>
|
|
131
144
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -134,86 +147,103 @@
|
|
|
134
147
|
<span class="cline-any cline-neutral"> </span>
|
|
135
148
|
<span class="cline-any cline-neutral"> </span>
|
|
136
149
|
<span class="cline-any cline-neutral"> </span>
|
|
137
|
-
<span class="cline-any cline-yes">
|
|
150
|
+
<span class="cline-any cline-yes">6x</span>
|
|
151
|
+
<span class="cline-any cline-yes">6x</span>
|
|
152
|
+
<span class="cline-any cline-neutral"> </span>
|
|
153
|
+
<span class="cline-any cline-yes">6x</span>
|
|
154
|
+
<span class="cline-any cline-yes">1x</span>
|
|
138
155
|
<span class="cline-any cline-neutral"> </span>
|
|
139
156
|
<span class="cline-any cline-neutral"> </span>
|
|
140
157
|
<span class="cline-any cline-neutral"> </span>
|
|
141
|
-
<span class="cline-any cline-yes">2x</span>
|
|
142
158
|
<span class="cline-any cline-neutral"> </span>
|
|
143
159
|
<span class="cline-any cline-neutral"> </span>
|
|
144
160
|
<span class="cline-any cline-neutral"> </span>
|
|
145
161
|
<span class="cline-any cline-neutral"> </span>
|
|
146
|
-
<span class="cline-any cline-yes">16x</span>
|
|
147
|
-
<span class="cline-any cline-yes">16x</span>
|
|
148
162
|
<span class="cline-any cline-neutral"> </span>
|
|
149
|
-
<span class="cline-any cline-yes">16x</span>
|
|
150
|
-
<span class="cline-any cline-yes">22x</span>
|
|
151
|
-
<span class="cline-any cline-yes">28x</span>
|
|
152
163
|
<span class="cline-any cline-yes">2x</span>
|
|
153
164
|
<span class="cline-any cline-neutral"> </span>
|
|
154
165
|
<span class="cline-any cline-neutral"> </span>
|
|
155
166
|
<span class="cline-any cline-neutral"> </span>
|
|
167
|
+
<span class="cline-any cline-yes">6x</span>
|
|
168
|
+
<span class="cline-any cline-neutral"> </span>
|
|
169
|
+
<span class="cline-any cline-yes">6x</span>
|
|
170
|
+
<span class="cline-any cline-neutral"> </span>
|
|
171
|
+
<span class="cline-any cline-yes">5x</span>
|
|
172
|
+
<span class="cline-any cline-yes">9x</span>
|
|
173
|
+
<span class="cline-any cline-yes">9x</span>
|
|
174
|
+
<span class="cline-any cline-yes">1x</span>
|
|
175
|
+
<span class="cline-any cline-neutral"> </span>
|
|
156
176
|
<span class="cline-any cline-neutral"> </span>
|
|
157
|
-
<span class="cline-any cline-yes">
|
|
158
|
-
<span class="cline-any cline-yes">
|
|
159
|
-
<span class="cline-any cline-yes">
|
|
160
|
-
<span class="cline-any cline-yes">26x</span>
|
|
177
|
+
<span class="cline-any cline-yes">8x</span>
|
|
178
|
+
<span class="cline-any cline-yes">8x</span>
|
|
179
|
+
<span class="cline-any cline-yes">8x</span>
|
|
161
180
|
<span class="cline-any cline-neutral"> </span>
|
|
162
|
-
<span class="cline-any cline-yes">26x</span>
|
|
163
|
-
<span class="cline-any cline-yes">16x</span>
|
|
164
|
-
<span class="cline-any cline-yes">13x</span>
|
|
165
181
|
<span class="cline-any cline-neutral"> </span>
|
|
182
|
+
<span class="cline-any cline-yes">8x</span>
|
|
183
|
+
<span class="cline-any cline-yes">4x</span>
|
|
184
|
+
<span class="cline-any cline-yes">1x</span>
|
|
166
185
|
<span class="cline-any cline-neutral"> </span>
|
|
167
186
|
<span class="cline-any cline-neutral"> </span>
|
|
168
187
|
<span class="cline-any cline-neutral"> </span>
|
|
169
|
-
<span class="cline-any cline-
|
|
188
|
+
<span class="cline-any cline-neutral"> </span>
|
|
189
|
+
<span class="cline-any cline-yes">8x</span>
|
|
170
190
|
<span class="cline-any cline-neutral"> </span>
|
|
171
191
|
<span class="cline-any cline-neutral"> </span>
|
|
172
192
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {ERRORS} from '../util/errors';
|
|
193
|
+
import {UnitsDealer} from '../util/units-dealer';
|
|
194
|
+
|
|
195
|
+
import {STRINGS} from '../config';
|
|
173
196
|
|
|
174
|
-
import {
|
|
175
|
-
AggregationResult,
|
|
176
|
-
PlanetAggregatorParams,
|
|
177
|
-
} from '../types/planet-aggregator';
|
|
178
197
|
import {ModelParams} from '../types/model-interface';
|
|
198
|
+
import {AggregationResult} from '../types/planet-aggregator';
|
|
179
199
|
import {UnitKeyName} from '../types/units';
|
|
200
|
+
import {UnitsDealerUsage} from '../types/units-dealer';
|
|
180
201
|
|
|
181
202
|
const {InvalidAggregationParams} = ERRORS;
|
|
203
|
+
const {INVALID_AGGREGATION_METHOD, METRIC_MISSING} = STRINGS;
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Validates metrics array before applying aggregator.
|
|
207
|
+
* If aggregation method is `none`, then throws error.
|
|
208
|
+
*/
|
|
209
|
+
const checkIfMetricsAreValid = (
|
|
210
|
+
metrics: UnitKeyName[],
|
|
211
|
+
dealer: UnitsDealerUsage
|
|
212
|
+
) => {
|
|
213
|
+
metrics.forEach(metric => {
|
|
214
|
+
const method = dealer.askToGiveMethodFor(metric);
|
|
215
|
+
|
|
216
|
+
if (method === 'none') {
|
|
217
|
+
throw new InvalidAggregationParams(INVALID_AGGREGATION_METHOD(method));
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
};
|
|
182
221
|
|
|
183
222
|
/**
|
|
184
|
-
* Aggregates child node level metrics.
|
|
223
|
+
* Aggregates child node level metrics. Validates if metric aggregation type is `none`, then rejects with error.
|
|
224
|
+
* Otherwise iterates over inputs by aggregating per given `metrics`.
|
|
185
225
|
*/
|
|
186
|
-
export const planetAggregator = (
|
|
226
|
+
export const planetAggregator = async (
|
|
187
227
|
inputs: ModelParams[],
|
|
188
|
-
|
|
228
|
+
metrics: UnitKeyName[]
|
|
189
229
|
) => {
|
|
190
|
-
|
|
191
|
-
!params['aggregation-metrics'] ||
|
|
192
|
-
params['aggregation-metrics'].length === 0
|
|
193
|
-
) {
|
|
194
|
-
throw new InvalidAggregationParams(
|
|
195
|
-
'Provided aggregation metrics are invalid. Please provide an array of strings.'
|
|
196
|
-
);
|
|
197
|
-
}
|
|
230
|
+
const dealer = await UnitsDealer();
|
|
198
231
|
|
|
199
|
-
|
|
200
|
-
const aggregationMethod = params['aggregation-method'];
|
|
232
|
+
checkIfMetricsAreValid(metrics, dealer);
|
|
201
233
|
|
|
202
234
|
return inputs.reduce((acc, input, index) => {
|
|
203
|
-
for (const metric of
|
|
235
|
+
for (const metric of metrics) {
|
|
204
236
|
if (!(metric in input)) {
|
|
205
|
-
throw new InvalidAggregationParams(
|
|
206
|
-
`Aggregation metric ${metric} is not found in inputs[${index}].`
|
|
207
|
-
);
|
|
237
|
+
throw new InvalidAggregationParams(METRIC_MISSING(metric, index));
|
|
208
238
|
}
|
|
209
239
|
|
|
210
240
|
const accessKey = `aggregated-${metric}`;
|
|
211
|
-
const value = parseFloat(input[metric]);
|
|
212
241
|
acc[accessKey] = acc[accessKey] ?? 0;
|
|
213
|
-
acc[accessKey] +=
|
|
242
|
+
acc[accessKey] += parseFloat(input[metric]);
|
|
214
243
|
|
|
244
|
+
/** Checks for the last iteration. */
|
|
215
245
|
if (index === inputs.length - 1) {
|
|
216
|
-
if (
|
|
246
|
+
if (dealer.askToGiveMethodFor(metric) === 'avg') {
|
|
217
247
|
acc[accessKey] /= inputs.length;
|
|
218
248
|
}
|
|
219
249
|
}
|
|
@@ -229,7 +259,7 @@ export const planetAggregator = (
|
|
|
229
259
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
230
260
|
Code coverage generated by
|
|
231
261
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
232
|
-
at 2024-01-
|
|
262
|
+
at 2024-01-15T13:07:43.773Z
|
|
233
263
|
</div>
|
|
234
264
|
<script src="../prettify.js"></script>
|
|
235
265
|
<script>
|