@grnsft/if 0.0.6 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.examples/ompls/azure.yml +205 -0
- package/.github/workflows/nodejs-ci.yml +0 -8
- package/README.md +48 -9
- package/build/index.js +1 -2
- package/coverage/clover.xml +132 -1118
- package/coverage/coverage-final.json +9 -26
- package/coverage/lcov-report/config/config.ts.html +3 -66
- package/coverage/lcov-report/config/index.html +15 -15
- package/coverage/lcov-report/config/index.ts.html +3 -3
- package/coverage/lcov-report/config/strings.ts.html +82 -19
- package/coverage/lcov-report/index.html +36 -231
- package/coverage/lcov-report/lib/index.html +43 -13
- package/coverage/lcov-report/lib/models-universe.ts.html +433 -0
- package/coverage/lcov-report/lib/observatory.ts.html +187 -0
- package/coverage/lcov-report/lib/supercomputer.ts.html +553 -0
- package/coverage/lcov-report/util/args.ts.html +23 -8
- package/coverage/lcov-report/util/errors.ts.html +157 -0
- package/coverage/lcov-report/util/index.html +20 -50
- package/coverage/lcov-report/util/yaml.ts.html +17 -11
- package/coverage/lcov.info +225 -2004
- package/examples/impls/test/azure.yml +8 -8
- package/examples/impls/test/ccf.yml +5 -3
- package/examples/impls/test/if-demo.yml +19 -9
- package/examples/impls/test/metadata.yml +3 -2
- package/examples/impls/test/nesting.yml +10 -13
- package/examples/impls/test/sci-e.yml +1 -1
- package/examples/impls/test/sci-m.yml +2 -2
- package/examples/impls/test/sci-o.yml +2 -4
- package/examples/impls/test/sci.yml +38 -15
- package/examples/impls/test/shell.yml +2 -1
- package/examples/impls/{tdp-finder-test.yml → test/tdp-finder.yml} +8 -8
- package/examples/ompls/ccf.yml +3 -1
- package/examples/ompls/if-demo.yml +46 -22
- package/package.json +15 -7
- package/tsconfig.build.json +7 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/build/__mocks__/azure/index.d.ts +0 -11
- package/build/__mocks__/azure/index.js +0 -132
- package/build/__mocks__/boavizta/countries.json +0 -138
- package/build/__mocks__/boavizta/instance_types.json +0 -625
- package/build/__mocks__/boavizta/providers.json +0 -1
- package/build/__mocks__/fs/index.d.ts +0 -3
- package/build/__mocks__/fs/index.js +0 -56
- package/build/__mocks__/model-universe/index.d.ts +0 -31
- package/build/__mocks__/model-universe/index.js +0 -64
- package/build/__mocks__/watt-time/data.json +0 -119
- package/build/__tests__/integration/ompl/index.test.d.ts +0 -1
- package/build/__tests__/integration/ompl/index.test.js +0 -61
- package/build/__tests__/unit/lib/azure-importer/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/azure-importer/index.test.js +0 -152
- package/build/__tests__/unit/lib/boavizta/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/boavizta/index.test.js +0 -579
- package/build/__tests__/unit/lib/case-studies/aveva.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/aveva.test.js +0 -36
- package/build/__tests__/unit/lib/case-studies/emem.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/emem.test.js +0 -108
- package/build/__tests__/unit/lib/case-studies/eshoppen.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/eshoppen.test.js +0 -53
- package/build/__tests__/unit/lib/case-studies/sci-accenture.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/sci-accenture.test.js +0 -23
- package/build/__tests__/unit/lib/ccf/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/ccf/index.test.js +0 -223
- package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.js +0 -73
- package/build/__tests__/unit/lib/models-universe.test.d.ts +0 -1
- package/build/__tests__/unit/lib/models-universe.test.js +0 -193
- package/build/__tests__/unit/lib/observatory.test.d.ts +0 -1
- package/build/__tests__/unit/lib/observatory.test.js +0 -99
- package/build/__tests__/unit/lib/sci/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci/index.test.js +0 -106
- package/build/__tests__/unit/lib/sci-e/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci-e/index.test.js +0 -30
- package/build/__tests__/unit/lib/sci-m/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci-m/index.test.js +0 -58
- package/build/__tests__/unit/lib/sci-o/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci-o/index.test.js +0 -42
- package/build/__tests__/unit/lib/shell-imp/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/shell-imp/index.test.js +0 -21
- package/build/__tests__/unit/lib/supercomputer.test.d.ts +0 -1
- package/build/__tests__/unit/lib/supercomputer.test.js +0 -231
- package/build/__tests__/unit/lib/tdp-finder/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/tdp-finder/index.test.js +0 -62
- package/build/__tests__/unit/lib/teads-aws/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/teads-aws/index.test.js +0 -170
- package/build/__tests__/unit/lib/teads-curve/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/teads-curve/index.test.js +0 -146
- package/build/__tests__/unit/lib/watt-time/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/watt-time/index.test.js +0 -106
- package/build/__tests__/unit/util/args.test.d.ts +0 -1
- package/build/__tests__/unit/util/args.test.js +0 -92
- package/build/__tests__/unit/util/models-universe.test.d.ts +0 -1
- package/build/__tests__/unit/util/models-universe.test.js +0 -193
- package/build/__tests__/unit/util/observatory.test.d.ts +0 -1
- package/build/__tests__/unit/util/observatory.test.js +0 -99
- package/build/__tests__/unit/util/supercomputer.test.d.ts +0 -1
- package/build/__tests__/unit/util/supercomputer.test.js +0 -231
- package/build/__tests__/unit/util/yaml.test.d.ts +0 -1
- package/build/__tests__/unit/util/yaml.test.js +0 -59
- package/build/config/config.d.ts +0 -9
- package/build/config/config.js +0 -51
- package/build/lib/azure-importer/index.d.ts +0 -55
- package/build/lib/azure-importer/index.js +0 -314
- package/build/lib/boavizta/index.d.ts +0 -53
- package/build/lib/boavizta/index.js +0 -254
- package/build/lib/case-studies/aveva-model.d.ts +0 -29
- package/build/lib/case-studies/aveva-model.js +0 -53
- package/build/lib/case-studies/emem-model.d.ts +0 -42
- package/build/lib/case-studies/emem-model.js +0 -93
- package/build/lib/case-studies/eshoppen-model.d.ts +0 -24
- package/build/lib/case-studies/eshoppen-model.js +0 -123
- package/build/lib/case-studies/index.d.ts +0 -4
- package/build/lib/case-studies/index.js +0 -21
- package/build/lib/case-studies/sci-accenture-model.d.ts +0 -10
- package/build/lib/case-studies/sci-accenture-model.js +0 -37
- package/build/lib/ccf/aws-embodied.json +0 -5591
- package/build/lib/ccf/aws-instances.json +0 -21116
- package/build/lib/ccf/aws-use.json +0 -79
- package/build/lib/ccf/azure-embodied.json +0 -6547
- package/build/lib/ccf/azure-instances.json +0 -8332
- package/build/lib/ccf/azure-use.json +0 -58
- package/build/lib/ccf/gcp-embodied.json +0 -3049
- package/build/lib/ccf/gcp-instances.json +0 -3880
- package/build/lib/ccf/gcp-use.json +0 -58
- package/build/lib/ccf/index.d.ts +0 -63
- package/build/lib/ccf/index.js +0 -338
- package/build/lib/cloud-instance-metadata/aws-instances.json +0 -1
- package/build/lib/cloud-instance-metadata/azure-instances.json +0 -1
- package/build/lib/cloud-instance-metadata/index.d.ts +0 -15
- package/build/lib/cloud-instance-metadata/index.js +0 -104
- package/build/lib/index.d.ts +0 -14
- package/build/lib/index.js +0 -32
- package/build/lib/interfaces/ccf.d.ts +0 -19
- package/build/lib/interfaces/ccf.js +0 -3
- package/build/lib/interfaces/index.d.ts +0 -7
- package/build/lib/interfaces/index.js +0 -18
- package/build/lib/observatory.d.ts +0 -20
- package/build/lib/observatory.js +0 -31
- package/build/lib/sci/index.d.ts +0 -13
- package/build/lib/sci/index.js +0 -131
- package/build/lib/sci-e/index.d.ts +0 -38
- package/build/lib/sci-e/index.js +0 -85
- package/build/lib/sci-m/index.d.ts +0 -10
- package/build/lib/sci-m/index.js +0 -124
- package/build/lib/sci-o/index.d.ts +0 -17
- package/build/lib/sci-o/index.js +0 -52
- package/build/lib/shell-imp/index.d.ts +0 -32
- package/build/lib/shell-imp/index.js +0 -82
- package/build/lib/tdp-finder/index.d.ts +0 -19
- package/build/lib/tdp-finder/index.js +0 -98
- package/build/lib/teads-aws/aws-embodied.json +0 -1
- package/build/lib/teads-aws/aws-instances.json +0 -1
- package/build/lib/teads-aws/index.d.ts +0 -58
- package/build/lib/teads-aws/index.js +0 -208
- package/build/lib/teads-curve/index.d.ts +0 -52
- package/build/lib/teads-curve/index.js +0 -158
- package/build/lib/watt-time/index.d.ts +0 -18
- package/build/lib/watt-time/index.js +0 -204
- package/build/types/model-interface.d.ts +0 -16
- package/build/types/model-interface.js +0 -3
- package/build/types/process-args.d.ts +0 -7
- package/build/types/process-args.js +0 -3
- package/build/types/supercomputer.d.ts +0 -4
- package/build/types/supercomputer.js +0 -3
- package/build/util/args.js +0 -48
- package/build/util/errors.d.ts +0 -6
- package/build/util/errors.js +0 -22
- package/build/util/helpers.js +0 -18
- package/build/util/models-universe.d.ts +0 -28
- package/build/util/models-universe.js +0 -95
- package/build/util/observatory.d.ts +0 -20
- package/build/util/observatory.js +0 -31
- package/build/util/supercomputer.d.ts +0 -30
- package/build/util/supercomputer.js +0 -109
- package/docs/implementations/tdp-finder.md +0 -36
- package/examples/impls/test/complex-pipeline.yml +0 -67
- package/examples/impls/test/toto.yaml +0 -22
- package/src/__mocks__/boavizta/countries.json +0 -138
- package/src/__mocks__/boavizta/instance_types.json +0 -625
- package/src/__mocks__/boavizta/providers.json +0 -1
- package/src/__mocks__/watt-time/data.json +0 -119
- package/tsconfig.tsbuildinfo +0 -1
- package/yarn-error.log +0 -5854
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const observatory_1 = require("../../../util/observatory");
|
|
4
|
-
describe('util/observatory: ', () => {
|
|
5
|
-
class MockaviztaModel {
|
|
6
|
-
configure(params) {
|
|
7
|
-
params;
|
|
8
|
-
return Promise.resolve(this);
|
|
9
|
-
}
|
|
10
|
-
execute() {
|
|
11
|
-
return Promise.resolve([{ data: 'mock-data' }]);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
const expectedValue = [
|
|
15
|
-
{
|
|
16
|
-
timestamp: '2023-07-06T00:00',
|
|
17
|
-
duration: 3600,
|
|
18
|
-
'cpu-util': 18.392,
|
|
19
|
-
'energy-cpu': 2.5,
|
|
20
|
-
'embodied-carbon': 0.619,
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
timestamp: '2023-08-06T00:00',
|
|
24
|
-
duration: 3600,
|
|
25
|
-
'cpu-util': 16,
|
|
26
|
-
'energy-cpu': 2.5,
|
|
27
|
-
'embodied-carbon': 0.619,
|
|
28
|
-
},
|
|
29
|
-
]; // model.execute method's result (output mock).
|
|
30
|
-
describe('init Observatory: ', () => {
|
|
31
|
-
it('initializes object with required properties.', () => {
|
|
32
|
-
const inputs = [];
|
|
33
|
-
const lab = new observatory_1.Observatory(inputs);
|
|
34
|
-
expect(lab).toHaveProperty('doInvestigationsWith');
|
|
35
|
-
expect(lab).toHaveProperty('getOutputs');
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
describe('doInvestgationsWith(): ', () => {
|
|
39
|
-
const inputs = [
|
|
40
|
-
{
|
|
41
|
-
timestamp: '2023-07-06T00:00',
|
|
42
|
-
duration: 3600,
|
|
43
|
-
'cpu-util': 18.392,
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
timestamp: '2023-08-06T00:00',
|
|
47
|
-
duration: 3600,
|
|
48
|
-
'cpu-util': 16,
|
|
49
|
-
},
|
|
50
|
-
];
|
|
51
|
-
const params = {
|
|
52
|
-
'core-units': 24,
|
|
53
|
-
'physical-processor': 'Intel® Core™ i7-1185G7',
|
|
54
|
-
allocation: 'LINEAR',
|
|
55
|
-
verbose: true,
|
|
56
|
-
};
|
|
57
|
-
it('returns Observatory class.', async () => {
|
|
58
|
-
const lab = new observatory_1.Observatory(inputs);
|
|
59
|
-
const boaviztaModel = await new MockaviztaModel().configure(params);
|
|
60
|
-
boaviztaModel.execute = jest.fn(() => Promise.resolve(expectedValue));
|
|
61
|
-
const result = await lab.doInvestigationsWith(boaviztaModel);
|
|
62
|
-
expect(result).toBeInstanceOf(observatory_1.Observatory);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
describe('getOutputs(): ', () => {
|
|
66
|
-
const inputs = [
|
|
67
|
-
{
|
|
68
|
-
timestamp: '2023-07-06T00:00',
|
|
69
|
-
duration: 3600,
|
|
70
|
-
'cpu-util': 18.392,
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
timestamp: '2023-08-06T00:00',
|
|
74
|
-
duration: 3600,
|
|
75
|
-
'cpu-util': 16,
|
|
76
|
-
},
|
|
77
|
-
];
|
|
78
|
-
const params = {
|
|
79
|
-
'core-units': 24,
|
|
80
|
-
'physical-processor': 'Intel® Core™ i7-1185G7',
|
|
81
|
-
allocation: 'LINEAR',
|
|
82
|
-
verbose: true,
|
|
83
|
-
};
|
|
84
|
-
it('returns empty outputs data.', () => {
|
|
85
|
-
const lab = new observatory_1.Observatory(inputs);
|
|
86
|
-
const expectedValue = [];
|
|
87
|
-
expect(lab.getOutputs()).toEqual(expectedValue);
|
|
88
|
-
});
|
|
89
|
-
it('returns executed outputs data.', async () => {
|
|
90
|
-
const lab = new observatory_1.Observatory(inputs);
|
|
91
|
-
const boaviztaModel = await new MockaviztaModel().configure(params);
|
|
92
|
-
boaviztaModel.execute = jest.fn(() => Promise.resolve(expectedValue));
|
|
93
|
-
const result = await lab.doInvestigationsWith(boaviztaModel);
|
|
94
|
-
expect(result).toBeInstanceOf(observatory_1.Observatory);
|
|
95
|
-
expect(lab.getOutputs()).toEqual(expectedValue);
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YXRvcnkudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vdW5pdC91dGlsL29ic2VydmF0b3J5LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwyREFBc0Q7QUFFdEQsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtJQUNsQyxNQUFNLGVBQWU7UUFDbkIsU0FBUyxDQUFDLE1BQVc7WUFDbkIsTUFBTSxDQUFDO1lBQ1AsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPO1lBQ0wsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7S0FDRjtJQUVELE1BQU0sYUFBYSxHQUFHO1FBQ3BCO1lBQ0UsU0FBUyxFQUFFLGtCQUFrQjtZQUM3QixRQUFRLEVBQUUsSUFBSTtZQUNkLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFlBQVksRUFBRSxHQUFHO1lBQ2pCLGlCQUFpQixFQUFFLEtBQUs7U0FDekI7UUFDRDtZQUNFLFNBQVMsRUFBRSxrQkFBa0I7WUFDN0IsUUFBUSxFQUFFLElBQUk7WUFDZCxVQUFVLEVBQUUsRUFBRTtZQUNkLFlBQVksRUFBRSxHQUFHO1lBQ2pCLGlCQUFpQixFQUFFLEtBQUs7U0FDekI7S0FDRixDQUFDLENBQUMsK0NBQStDO0lBRWxELFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7UUFDbEMsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtZQUN0RCxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7WUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSx5QkFBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXBDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENB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QUMsQ0FBQztZQUMzQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kZWxQbHVnaW5JbnRlcmZhY2V9IGZyb20gJy4uLy4uLy4uL3R5cGVzL21vZGVsLWludGVyZmFjZSc7XG5pbXBvcnQge09ic2VydmF0b3J5fSBmcm9tICcuLi8uLi8uLi91dGlsL29ic2VydmF0b3J5JztcblxuZGVzY3JpYmUoJ3V0aWwvb2JzZXJ2YXRvcnk6ICcsICgpID0+IHtcbiAgY2xhc3MgTW9ja2F2aXp0YU1vZGVsIGltcGxlbWVudHMgTW9kZWxQbHVnaW5JbnRlcmZhY2Uge1xuICAgIGNvbmZpZ3VyZShwYXJhbXM6IGFueSk6IFByb21pc2U8TW9kZWxQbHVnaW5JbnRlcmZhY2U+IHtcbiAgICAgIHBhcmFtcztcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcyk7XG4gICAgfVxuICAgIGV4ZWN1dGUoKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbe2RhdGE6ICdtb2NrLWRhdGEnfV0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGV4cGVjdGVkVmFsdWUgPSBbXG4gICAge1xuICAgICAgdGltZXN0YW1wOiAnMjAyMy0wNy0wNlQwMDowMCcsXG4gICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICdjcHUtdXRpbCc6IDE4LjM5MixcbiAgICAgICdlbmVyZ3ktY3B1JzogMi41LFxuICAgICAgJ2VtYm9kaWVkLWNhcmJvbic6IDAuNjE5LFxuICAgIH0sXG4gICAge1xuICAgICAgdGltZXN0YW1wOiAnMjAyMy0wOC0wNlQwMDowMCcsXG4gICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICdjcHUtdXRpbCc6IDE2LFxuICAgICAgJ2VuZXJneS1jcHUnOiAyLjUsXG4gICAgICAnZW1ib2RpZWQtY2FyYm9uJzogMC42MTksXG4gICAgfSxcbiAgXTsgLy8gbW9kZWwuZXhlY3V0ZSBtZXRob2QncyByZXN1bHQgKG91dHB1dCBtb2NrKS5cblxuICBkZXNjcmliZSgnaW5pdCBPYnNlcnZhdG9yeTogJywgKCkgPT4ge1xuICAgIGl0KCdpbml0aWFsaXplcyBvYmplY3Qgd2l0aCByZXF1aXJlZCBwcm9wZXJ0aWVzLicsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0czogYW55ID0gW107XG4gICAgICBjb25zdCBsYWIgPSBuZXcgT2JzZXJ2YXRvcnkoaW5wdXRzKTtcblxuICAgICAgZXhwZWN0KGxhYikudG9IYXZlUHJvcGVydHkoJ2RvSW52ZXN0aWdhdGlvbnNXaXRoJyk7XG4gICAgICBleHBlY3QobGFiKS50b0hhdmVQcm9wZXJ0eSgnZ2V0T3V0cHV0cycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZG9JbnZlc3RnYXRpb25zV2l0aCgpOiAnLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXRzOiBhbnkgPSBbXG4gICAgICB7XG4gICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDctMDZUMDA6MDAnLFxuICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgJ2NwdS11dGlsJzogMTguMzkyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGltZXN0YW1wOiAnMjAyMy0wOC0wNlQwMDowMCcsXG4gICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAnY3B1LXV0aWwnOiAxNixcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICdjb3JlLXVuaXRzJzogMjQsXG4gICAgICAncGh5c2ljYWwtcHJvY2Vzc29yJzogJ0ludGVswq4gQ29yZeKEoiBpNy0xMTg1RzcnLFxuICAgICAgYWxsb2NhdGlvbjogJ0xJTkVBUicsXG4gICAgICB2ZXJib3NlOiB0cnVlLFxuICAgIH07XG5cbiAgICBpdCgncmV0dXJucyBPYnNlcnZhdG9yeSBjbGFzcy4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBsYWIgPSBuZXcgT2JzZXJ2YXRvcnkoaW5wdXRzKTtcblxuICAgICAgY29uc3QgYm9hdml6dGFNb2RlbCA9IGF3YWl0IG5ldyBNb2NrYXZpenRhTW9kZWwoKS5jb25maWd1cmUocGFyYW1zKTtcblxuICAgICAgYm9hdml6dGFNb2RlbC5leGVjdXRlID0gamVzdC5mbigoKSA9PiBQcm9taXNlLnJlc29sdmUoZXhwZWN0ZWRWYWx1ZSkpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsYWIuZG9JbnZlc3RpZ2F0aW9uc1dpdGgoYm9hdml6dGFNb2RlbCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlSW5zdGFuY2VPZihPYnNlcnZhdG9yeSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRPdXRwdXRzKCk6ICcsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dHM6IGFueSA9IFtcbiAgICAgIHtcbiAgICAgICAgdGltZXN0YW1wOiAnMjAyMy0wNy0wNlQwMDowMCcsXG4gICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAnY3B1LXV0aWwnOiAxOC4zOTIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA4LTA2VDAwOjAwJyxcbiAgICAgICAgZHVyYXRpb246IDM2MDAsXG4gICAgICAgICdjcHUtdXRpbCc6IDE2LFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgJ2NvcmUtdW5pdHMnOiAyNCxcbiAgICAgICdwaHlzaWNhbC1wcm9jZXNzb3InOiAnSW50ZWzCriBDb3Jl4oSiIGk3LTExODVHNycsXG4gICAgICBhbGxvY2F0aW9uOiAnTElORUFSJyxcbiAgICAgIHZlcmJvc2U6IHRydWUsXG4gICAgfTtcblxuICAgIGl0KCdyZXR1cm5zIGVtcHR5IG91dHB1dHMgZGF0YS4nLCAoKSA9PiB7XG4gICAgICBjb25zdCBsYWIgPSBuZXcgT2JzZXJ2YXRvcnkoaW5wdXRzKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZTogYW55ID0gW107XG5cbiAgICAgIGV4cGVjdChsYWIuZ2V0T3V0cHV0cygpKS50b0VxdWFsKGV4cGVjdGVkVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgZXhlY3V0ZWQgb3V0cHV0cyBkYXRhLicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGxhYiA9IG5ldyBPYnNlcnZhdG9yeShpbnB1dHMpO1xuICAgICAgY29uc3QgYm9hdml6dGFNb2RlbCA9IGF3YWl0IG5ldyBNb2NrYXZpenRhTW9kZWwoKS5jb25maWd1cmUocGFyYW1zKTtcblxuICAgICAgYm9hdml6dGFNb2RlbC5leGVjdXRlID0gamVzdC5mbigoKSA9PiBQcm9taXNlLnJlc29sdmUoZXhwZWN0ZWRWYWx1ZSkpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbGFiLmRvSW52ZXN0aWdhdGlvbnNXaXRoKGJvYXZpenRhTW9kZWwpO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlSW5zdGFuY2VPZihPYnNlcnZhdG9yeSk7XG4gICAgICBleHBlY3QobGFiLmdldE91dHB1dHMoKSkudG9FcXVhbChleHBlY3RlZFZhbHVlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const model_universe_1 = require("../../../__mocks__/model-universe");
|
|
4
|
-
jest.mock('../../../util/models-universe', () => ({
|
|
5
|
-
__esModule: true,
|
|
6
|
-
ModelsUniverse: model_universe_1.ModelsUniverse,
|
|
7
|
-
}));
|
|
8
|
-
const supercomputer_1 = require("../../../util/supercomputer");
|
|
9
|
-
const models_universe_1 = require("../../../util/models-universe");
|
|
10
|
-
const config_1 = require("../../../config");
|
|
11
|
-
const { NOT_INITIALIZED_MODEL } = config_1.STRINGS;
|
|
12
|
-
describe('util/supercomputer: ', () => {
|
|
13
|
-
const impl = {
|
|
14
|
-
name: 'gsf-demo',
|
|
15
|
-
description: 'Hello',
|
|
16
|
-
tags: {
|
|
17
|
-
kind: 'web',
|
|
18
|
-
complexity: 'moderate',
|
|
19
|
-
category: 'cloud',
|
|
20
|
-
},
|
|
21
|
-
initialize: {
|
|
22
|
-
models: [
|
|
23
|
-
{
|
|
24
|
-
name: 'boavizta-cpu',
|
|
25
|
-
kind: 'plugin',
|
|
26
|
-
config: {
|
|
27
|
-
allocation: 'LINEAR',
|
|
28
|
-
verbose: true,
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
],
|
|
32
|
-
},
|
|
33
|
-
graph: {
|
|
34
|
-
children: {
|
|
35
|
-
'front-end': {
|
|
36
|
-
pipeline: ['boavizta-cpu'],
|
|
37
|
-
config: {
|
|
38
|
-
'boavizta-cpu': {
|
|
39
|
-
'core-units': 24,
|
|
40
|
-
processor: 'Intel® Core™ i7-1185G7',
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
inputs: [
|
|
44
|
-
{
|
|
45
|
-
timestamp: '2023-07-06T00:00',
|
|
46
|
-
duration: 3600,
|
|
47
|
-
'cpu-util': 18.392,
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
timestamp: '2023-08-06T00:00',
|
|
51
|
-
duration: 3600,
|
|
52
|
-
'cpu-util': 16,
|
|
53
|
-
},
|
|
54
|
-
],
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
describe('init Supercomputer: ', () => {
|
|
60
|
-
it('initializes object with required properties.', () => {
|
|
61
|
-
const impl = {};
|
|
62
|
-
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
63
|
-
const aterui = new supercomputer_1.Supercomputer(impl, modelsHandbook);
|
|
64
|
-
expect(aterui).toHaveProperty('compute');
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
describe('compute(): ', () => {
|
|
68
|
-
const implWithNestedChildren = {
|
|
69
|
-
name: 'ntt-data-on-premise',
|
|
70
|
-
description: 'https://github.com/Green-Software-Foundation/sci-guide/blob/dev/use-case-submissions/nttdatta-On-Premise-Web-system.md',
|
|
71
|
-
tags: {
|
|
72
|
-
kind: 'web',
|
|
73
|
-
complexity: 'moderate',
|
|
74
|
-
category: 'on-premise',
|
|
75
|
-
},
|
|
76
|
-
initialize: {
|
|
77
|
-
models: [
|
|
78
|
-
{
|
|
79
|
-
name: 'sci-e',
|
|
80
|
-
kind: 'plugin',
|
|
81
|
-
verbose: false,
|
|
82
|
-
path: '',
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
name: 'sci-m',
|
|
86
|
-
kind: 'plugin',
|
|
87
|
-
verbose: false,
|
|
88
|
-
path: '',
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
name: 'sci-o',
|
|
92
|
-
kind: 'plugin',
|
|
93
|
-
verbose: false,
|
|
94
|
-
path: '',
|
|
95
|
-
},
|
|
96
|
-
],
|
|
97
|
-
},
|
|
98
|
-
graph: {
|
|
99
|
-
children: {
|
|
100
|
-
'layer-3-switch': {
|
|
101
|
-
pipeline: ['sci-e', 'sci-m', 'sci-o'],
|
|
102
|
-
config: {
|
|
103
|
-
'sci-m': {
|
|
104
|
-
te: 251000,
|
|
105
|
-
tir: 3600,
|
|
106
|
-
el: 126144000,
|
|
107
|
-
rr: 1,
|
|
108
|
-
tor: 1,
|
|
109
|
-
},
|
|
110
|
-
'sci-o': {
|
|
111
|
-
'grid-carbon-intensity': 457,
|
|
112
|
-
},
|
|
113
|
-
},
|
|
114
|
-
inputs: [
|
|
115
|
-
{
|
|
116
|
-
timestamp: '2023-07-06T00:00',
|
|
117
|
-
duration: 3600,
|
|
118
|
-
'five-min-input-rate': 100,
|
|
119
|
-
'five-min-output-rate': 100,
|
|
120
|
-
'grid-carbon-intensity': 457,
|
|
121
|
-
'energy-network': 0.00496,
|
|
122
|
-
requests: 38032740,
|
|
123
|
-
},
|
|
124
|
-
],
|
|
125
|
-
},
|
|
126
|
-
'layer-2-switch': {
|
|
127
|
-
pipeline: ['sci-e', 'sci-m', 'sci-o'],
|
|
128
|
-
config: {
|
|
129
|
-
'sci-m': {
|
|
130
|
-
te: 251000,
|
|
131
|
-
tir: 3600,
|
|
132
|
-
el: 126144000,
|
|
133
|
-
rr: 1,
|
|
134
|
-
tor: 1,
|
|
135
|
-
},
|
|
136
|
-
'sci-o': {
|
|
137
|
-
grid_ci: 457,
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
children: {
|
|
141
|
-
'switch-1': {
|
|
142
|
-
inputs: [
|
|
143
|
-
{
|
|
144
|
-
timestamp: '2023-07-06T00:00',
|
|
145
|
-
duration: 1,
|
|
146
|
-
'energy-network': 0.000811,
|
|
147
|
-
'grid-carbon-intensity': 457,
|
|
148
|
-
requests: 38032740,
|
|
149
|
-
},
|
|
150
|
-
],
|
|
151
|
-
},
|
|
152
|
-
'switch-2': {
|
|
153
|
-
inputs: [
|
|
154
|
-
{
|
|
155
|
-
timestamp: '2023-07-06T00:00',
|
|
156
|
-
duration: 1,
|
|
157
|
-
'energy-network': 0,
|
|
158
|
-
'grid-carbon-intensity': 457,
|
|
159
|
-
requests: 38032740,
|
|
160
|
-
},
|
|
161
|
-
],
|
|
162
|
-
},
|
|
163
|
-
'switch-3': {
|
|
164
|
-
inputs: [
|
|
165
|
-
{
|
|
166
|
-
timestamp: '2023-07-06T00:00',
|
|
167
|
-
duration: 1,
|
|
168
|
-
'energy-network': 0.000955,
|
|
169
|
-
'grid-carbon-intensity': 457,
|
|
170
|
-
requests: 38032740,
|
|
171
|
-
},
|
|
172
|
-
],
|
|
173
|
-
},
|
|
174
|
-
'switch-4': {
|
|
175
|
-
inputs: [
|
|
176
|
-
{
|
|
177
|
-
timestamp: '2023-07-06T00:00',
|
|
178
|
-
duration: 1,
|
|
179
|
-
'energy-network': 1.14e-8,
|
|
180
|
-
'grid-carbon-intensity': 457,
|
|
181
|
-
requests: 38032740,
|
|
182
|
-
},
|
|
183
|
-
],
|
|
184
|
-
},
|
|
185
|
-
},
|
|
186
|
-
},
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
};
|
|
190
|
-
it('rejects with model is not initialized.', async () => {
|
|
191
|
-
expect.assertions(2);
|
|
192
|
-
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
193
|
-
const aterui = new supercomputer_1.Supercomputer(impl, modelsHandbook);
|
|
194
|
-
const expectedMessage = NOT_INITIALIZED_MODEL('boavizta-cpu');
|
|
195
|
-
try {
|
|
196
|
-
await aterui.compute();
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
if (error instanceof Error) {
|
|
200
|
-
expect(error).toBeInstanceOf(Error);
|
|
201
|
-
expect(error.message).toBe(expectedMessage);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
it('applies computing to given impl.', async () => {
|
|
206
|
-
expect.assertions(1);
|
|
207
|
-
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
208
|
-
impl.initialize.models.forEach((model) => modelsHandbook.writeDown(model));
|
|
209
|
-
const ateruiComputer = new supercomputer_1.Supercomputer(impl, modelsHandbook);
|
|
210
|
-
const ompl = await ateruiComputer.compute();
|
|
211
|
-
const children = ompl.graph.children;
|
|
212
|
-
const childrenNames = Object.keys(children);
|
|
213
|
-
expect(ompl.graph.children[childrenNames[0]]).toHaveProperty('outputs');
|
|
214
|
-
});
|
|
215
|
-
it('applies computing to nested children components.', async () => {
|
|
216
|
-
expect.assertions(4);
|
|
217
|
-
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
218
|
-
implWithNestedChildren.initialize.models.forEach((model) => modelsHandbook.writeDown(model));
|
|
219
|
-
const ateruiComputer = new supercomputer_1.Supercomputer(implWithNestedChildren, modelsHandbook);
|
|
220
|
-
const ompl = await ateruiComputer.compute();
|
|
221
|
-
const children = ompl.graph.children;
|
|
222
|
-
const childrenNames = Object.keys(children);
|
|
223
|
-
const oneWithNested = childrenNames[1];
|
|
224
|
-
const nestedChildren = children[oneWithNested].children;
|
|
225
|
-
Object.keys(nestedChildren).forEach((child) => {
|
|
226
|
-
expect(nestedChildren[child]).toHaveProperty('outputs');
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwZXJjb21wdXRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL19fdGVzdHNfXy91bml0L3V0aWwvc3VwZXJjb21wdXRlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0VBQXNGO0FBRXRGLElBQUksQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRCxVQUFVLEVBQUUsSUFBSTtJQUNoQixjQUFjLEVBQUUsK0JBQWlCO0NBQ2xDLENBQUMsQ0FBQyxDQUFDO0FBRUosK0RBQTBEO0FBQzFELG1FQUE2RDtBQUU3RCw0Q0FBd0M7QUFFeEMsTUFBTSxFQUFDLHFCQUFxQixFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUV4QyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO0lBQ3BDLE1BQU0sSUFBSSxHQUFRO1FBQ2hCLElBQUksRUFBRSxVQUFVO1FBQ2hCLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxLQUFLO1lBQ1gsVUFBVSxFQUFFLFVBQVU7WUFDdEIsUUFBUSxFQUFFLE9BQU87U0FDbEI7UUFDRCxVQUFVLEVBQUU7WUFDVixNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLElBQUksRUFBRSxRQUFRO29CQUNkLE1BQU0sRUFBRTt3QkFDTixVQUFVLEVBQUUsUUFBUTt3QkFDcEIsT0FBTyxFQUFFLElBQUk7cUJBQ2Q7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsUUFBUSxFQUFFO2dCQUNSLFdBQVcsRUFBRTtvQkFDWCxRQUFRLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQzFCLE1BQU0sRUFBRTt3QkFDTixjQUFjLEVBQUU7NEJBQ2QsWUFBWSxFQUFFLEVBQUU7NEJBQ2hCLFNBQVMsRUFBRSx3QkFBd0I7eUJBQ3BDO3FCQUNGO29CQUNELE1BQU0sRUFB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QUUsQ0FBQyxrREFBa0QsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNoRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJCLE1BQU0sY0FBYyxHQUFHLElBQUksZ0NBQWMsRUFBRSxDQUFDO1lBQzVDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDOUQsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FDaEMsQ0FBQztZQUVGLE1BQU0sY0FBYyxHQUFHLElBQUksNkJBQWEsQ0FDdEMsc0JBQXNCLEVBQ3RCLGNBQWMsQ0FDZixDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQUcsTUFBTSxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDckMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdkMsTUFBTSxjQUFjLEdBQVEsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUU3RCxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNqRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbHNVbml2ZXJzZSBhcyBNb2NrTW9kZWxVbml2ZXJzZX0gZnJvbSAnLi4vLi4vLi4vX19tb2Nrc19fL21vZGVsLXVuaXZlcnNlJztcblxuamVzdC5tb2NrKCcuLi8uLi8uLi91dGlsL21vZGVscy11bml2ZXJzZScsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIE1vZGVsc1VuaXZlcnNlOiBNb2NrTW9kZWxVbml2ZXJzZSxcbn0pKTtcblxuaW1wb3J0IHtTdXBlcmNvbXB1dGVyfSBmcm9tICcuLi8uLi8uLi91dGlsL3N1cGVyY29tcHV0ZXInO1xuaW1wb3J0IHtNb2RlbHNVbml2ZXJzZX0gZnJvbSAnLi4vLi4vLi4vdXRpbC9tb2RlbHMtdW5pdmVyc2UnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uLy4uLy4uL2NvbmZpZyc7XG5cbmNvbnN0IHtOT1RfSU5JVElBTElaRURfTU9ERUx9ID0gU1RSSU5HUztcblxuZGVzY3JpYmUoJ3V0aWwvc3VwZXJjb21wdXRlcjogJywgKCkgPT4ge1xuICBjb25zdCBpbXBsOiBhbnkgPSB7XG4gICAgbmFtZTogJ2dzZi1kZW1vJyxcbiAgICBkZXNjcmlwdGlvbjogJ0hlbGxvJyxcbiAgICB0YWdzOiB7XG4gICAgICBraW5kOiAnd2ViJyxcbiAgICAgIGNvbXBsZXhpdHk6ICdtb2RlcmF0ZScsXG4gICAgICBjYXRlZ29yeTogJ2Nsb3VkJyxcbiAgICB9LFxuICAgIGluaXRpYWxpemU6IHtcbiAgICAgIG1vZGVsczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2JvYXZpenRhLWNwdScsXG4gICAgICAgICAga2luZDogJ3BsdWdpbicsXG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBhbGxvY2F0aW9uOiAnTElORUFSJyxcbiAgICAgICAgICAgIHZlcmJvc2U6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICBncmFwaDoge1xuICAgICAgY2hpbGRyZW46IHtcbiAgICAgICAgJ2Zyb250LWVuZCc6IHtcbiAgICAgICAgICBwaXBlbGluZTogWydib2F2aXp0YS1jcHUnXSxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICdib2F2aXp0YS1jcHUnOiB7XG4gICAgICAgICAgICAgICdjb3JlLXVuaXRzJzogMjQsXG4gICAgICAgICAgICAgIHByb2Nlc3NvcjogJ0ludGVswq4gQ29yZeKEoiBpNy0xMTg1RzcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgICAgICAgICAgZHVyYXRpb246IDM2MDAsXG4gICAgICAgICAgICAgICdjcHUtdXRpbCc6IDE4LjM5MixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDgtMDZUMDA6MDAnLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAgICAgJ2NwdS11dGlsJzogMTYsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgZGVzY3JpYmUoJ2luaXQgU3VwZXJjb21wdXRlcjogJywgKCkgPT4ge1xuICAgIGl0KCdpbml0aWFsaXplcyBvYmplY3Qgd2l0aCByZXF1aXJlZCBwcm9wZXJ0aWVzLicsICgpID0+IHtcbiAgICAgIGNvbnN0IGltcGw6IGFueSA9IHt9O1xuICAgICAgY29uc3QgbW9kZWxzSGFuZGJvb2sgPSBuZXcgTW9kZWxzVW5pdmVyc2UoKTtcbiAgICAgIGNvbnN0IGF0ZXJ1aSA9IG5ldyBTdXBlcmNvbXB1dGVyKGltcGwsIG1vZGVsc0hhbmRib29rKTtcblxuICAgICAgZXhwZWN0KGF0ZXJ1aSkudG9IYXZlUHJvcGVydHkoJ2NvbXB1dGUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NvbXB1dGUoKTogJywgKCkgPT4ge1xuICAgIGNvbnN0IGltcGxXaXRoTmVzdGVkQ2hpbGRyZW46IGFueSA9IHtcbiAgICAgIG5hbWU6ICdudHQtZGF0YS1vbi1wcmVtaXNlJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL0dyZWVuLVNvZnR3YXJlLUZvdW5kYXRpb24vc2NpLWd1aWRlL2Jsb2IvZGV2L3VzZS1jYXNlLXN1Ym1pc3Npb25zL250dGRhdHRhLU9uLVByZW1pc2UtV2ViLXN5c3RlbS5tZCcsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIGtpbmQ6ICd3ZWInLFxuICAgICAgICBjb21wbGV4aXR5OiAnbW9kZXJhdGUnLFxuICAgICAgICBjYXRlZ29yeTogJ29uLXByZW1pc2UnLFxuICAgICAgfSxcbiAgICAgIGluaXRpYWxpemU6IHtcbiAgICAgICAgbW9kZWxzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3NjaS1lJyxcbiAgICAgICAgICAgIGtpbmQ6ICdwbHVnaW4nLFxuICAgICAgICAgICAgdmVyYm9zZTogZmFsc2UsXG4gICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdzY2ktbScsXG4gICAgICAgICAgICBraW5kOiAncGx1Z2luJyxcbiAgICAgICAgICAgIHZlcmJvc2U6IGZhbHNlLFxuICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnc2NpLW8nLFxuICAgICAgICAgICAga2luZDogJ3BsdWdpbicsXG4gICAgICAgICAgICB2ZXJib3NlOiBmYWxzZSxcbiAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgZ3JhcGg6IHtcbiAgICAgICAgY2hpbGRyZW46IHtcbiAgICAgICAgICAnbGF5ZXItMy1zd2l0Y2gnOiB7XG4gICAgICAgICAgICBwaXBlbGluZTogWydzY2ktZScsICdzY2ktbScsICdzY2ktbyddLFxuICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICdzY2ktbSc6IHtcbiAgICAgICAgICAgICAgICB0ZTogMjUxMDAwLFxuICAgICAgICAgICAgICAgIHRpcjogMzYwMCxcbiAgICAgICAgICAgICAgICBlbDogMTI2MTQ0MDAwLFxuICAgICAgICAgICAgICAgIHJyOiAxLFxuICAgICAgICAgICAgICAgIHRvcjogMSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ3NjaS1vJzoge1xuICAgICAgICAgICAgICAgICdncmlkLWNhcmJvbi1pbnRlbnNpdHknOiA0NTcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAgICAgICAnZml2ZS1taW4taW5wdXQtcmF0ZSc6IDEwMCxcbiAgICAgICAgICAgICAgICAnZml2ZS1taW4tb3V0cHV0LXJhdGUnOiAxMDAsXG4gICAgICAgICAgICAgICAgJ2dyaWQtY2FyYm9uLWludGVuc2l0eSc6IDQ1NyxcbiAgICAgICAgICAgICAgICAnZW5lcmd5LW5ldHdvcmsnOiAwLjAwNDk2LFxuICAgICAgICAgICAgICAgIHJlcXVlc3RzOiAzODAzMjc0MCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnbGF5ZXItMi1zd2l0Y2gnOiB7XG4gICAgICAgICAgICBwaXBlbGluZTogWydzY2ktZScsICdzY2ktbScsICdzY2ktbyddLFxuICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICdzY2ktbSc6IHtcbiAgICAgICAgICAgICAgICB0ZTogMjUxMDAwLFxuICAgICAgICAgICAgICAgIHRpcjogMzYwMCxcbiAgICAgICAgICAgICAgICBlbDogMTI2MTQ0MDAwLFxuICAgICAgICAgICAgICAgIHJyOiAxLFxuICAgICAgICAgICAgICAgIHRvcjogMSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ3NjaS1vJzoge1xuICAgICAgICAgICAgICAgIGdyaWRfY2k6IDQ1NyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGlsZHJlbjoge1xuICAgICAgICAgICAgICAnc3dpdGNoLTEnOiB7XG4gICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDctMDZUMDA6MDAnLFxuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMSxcbiAgICAgICAgICAgICAgICAgICAgJ2VuZXJneS1uZXR3b3JrJzogMC4wMDA4MTEsXG4gICAgICAgICAgICAgICAgICAgICdncmlkLWNhcmJvbi1pbnRlbnNpdHknOiA0NTcsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzOiAzODAzMjc0MCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ3N3aXRjaC0yJzoge1xuICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDEsXG4gICAgICAgICAgICAgICAgICAgICdlbmVyZ3ktbmV0d29yayc6IDAsXG4gICAgICAgICAgICAgICAgICAgICdncmlkLWNhcmJvbi1pbnRlbnNpdHknOiA0NTcsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzOiAzODAzMjc0MCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ3N3aXRjaC0zJzoge1xuICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDEsXG4gICAgICAgICAgICAgICAgICAgICdlbmVyZ3ktbmV0d29yayc6IDAuMDAwOTU1LFxuICAgICAgICAgICAgICAgICAgICAnZ3JpZC1jYXJib24taW50ZW5zaXR5JzogNDU3LFxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0czogMzgwMzI3NDAsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICdzd2l0Y2gtNCc6IHtcbiAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiAnMjAyMy0wNy0wNlQwMDowMCcsXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxLFxuICAgICAgICAgICAgICAgICAgICAnZW5lcmd5LW5ldHdvcmsnOiAxLjE0ZS04LFxuICAgICAgICAgICAgICAgICAgICAnZ3JpZC1jYXJib24taW50ZW5zaXR5JzogNDU3LFxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0czogMzgwMzI3NDAsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpdCgncmVqZWN0cyB3aXRoIG1vZGVsIGlzIG5vdCBpbml0aWFsaXplZC4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBleHBlY3QuYXNzZXJ0aW9ucygyKTtcblxuICAgICAgY29uc3QgbW9kZWxzSGFuZGJvb2sgPSBuZXcgTW9kZWxzVW5pdmVyc2UoKTtcbiAgICAgIGNvbnN0IGF0ZXJ1aSA9IG5ldyBTdXBlcmNvbXB1dGVyKGltcGwsIG1vZGVsc0hhbmRib29rKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRNZXNzYWdlID0gTk9UX0lOSVRJQUxJWkVEX01PREVMKCdib2F2aXp0YS1jcHUnKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXRlcnVpLmNvbXB1dGUoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yKS50b0JlSW5zdGFuY2VPZihFcnJvcik7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvQmUoZXhwZWN0ZWRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ2FwcGxpZXMgY29tcHV0aW5nIHRvIGdpdmVuIGltcGwuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgZXhwZWN0LmFzc2VydGlvbnMoMSk7XG5cbiAgICAgIGNvbnN0IG1vZGVsc0hhbmRib29rID0gbmV3IE1vZGVsc1VuaXZlcnNlKCk7XG4gICAgICBpbXBsLmluaXRpYWxpemUubW9kZWxzLmZvckVhY2goKG1vZGVsOiBhbnkpID0+XG4gICAgICAgIG1vZGVsc0hhbmRib29rLndyaXRlRG93bihtb2RlbClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGF0ZXJ1aUNvbXB1dGVyID0gbmV3IFN1cGVyY29tcHV0ZXIoaW1wbCwgbW9kZWxzSGFuZGJvb2spO1xuICAgICAgY29uc3Qgb21wbCA9IGF3YWl0IGF0ZXJ1aUNvbXB1dGVyLmNvbXB1dGUoKTtcblxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBvbXBsLmdyYXBoLmNoaWxkcmVuO1xuICAgICAgY29uc3QgY2hpbGRyZW5OYW1lcyA9IE9iamVjdC5rZXlzKGNoaWxkcmVuKTtcblxuICAgICAgZXhwZWN0KG9tcGwuZ3JhcGguY2hpbGRyZW5bY2hpbGRyZW5OYW1lc1swXV0pLnRvSGF2ZVByb3BlcnR5KCdvdXRwdXRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYXBwbGllcyBjb21wdXRpbmcgdG8gbmVzdGVkIGNoaWxkcmVuIGNvbXBvbmVudHMuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgZXhwZWN0LmFzc2VydGlvbnMoNCk7XG5cbiAgICAgIGNvbnN0IG1vZGVsc0hhbmRib29rID0gbmV3IE1vZGVsc1VuaXZlcnNlKCk7XG4gICAgICBpbXBsV2l0aE5lc3RlZENoaWxkcmVuLmluaXRpYWxpemUubW9kZWxzLmZvckVhY2goKG1vZGVsOiBhbnkpID0+XG4gICAgICAgIG1vZGVsc0hhbmRib29rLndyaXRlRG93bihtb2RlbClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGF0ZXJ1aUNvbXB1dGVyID0gbmV3IFN1cGVyY29tcHV0ZXIoXG4gICAgICAgIGltcGxXaXRoTmVzdGVkQ2hpbGRyZW4sXG4gICAgICAgIG1vZGVsc0hhbmRib29rXG4gICAgICApO1xuICAgICAgY29uc3Qgb21wbCA9IGF3YWl0IGF0ZXJ1aUNvbXB1dGVyLmNvbXB1dGUoKTtcblxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBvbXBsLmdyYXBoLmNoaWxkcmVuO1xuICAgICAgY29uc3QgY2hpbGRyZW5OYW1lcyA9IE9iamVjdC5rZXlzKGNoaWxkcmVuKTtcbiAgICAgIGNvbnN0IG9uZVdpdGhOZXN0ZWQgPSBjaGlsZHJlbk5hbWVzWzFdO1xuXG4gICAgICBjb25zdCBuZXN0ZWRDaGlsZHJlbjogYW55ID0gY2hpbGRyZW5bb25lV2l0aE5lc3RlZF0uY2hpbGRyZW47XG5cbiAgICAgIE9iamVjdC5rZXlzKG5lc3RlZENoaWxkcmVuKS5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgIGV4cGVjdChuZXN0ZWRDaGlsZHJlbltjaGlsZF0pLnRvSGF2ZVByb3BlcnR5KCdvdXRwdXRzJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
jest.mock('fs/promises', () => require('../../../__mocks__/fs'));
|
|
4
|
-
const yaml_1 = require("../../../util/yaml");
|
|
5
|
-
describe('util/yaml: ', () => {
|
|
6
|
-
describe('checkIfFileIsYaml(): ', () => {
|
|
7
|
-
it('returns false, in case of not yaml file.', () => {
|
|
8
|
-
const fileName = 'mock-filename';
|
|
9
|
-
const check = (0, yaml_1.checkIfFileIsYaml)(fileName);
|
|
10
|
-
expect(check).toBeFalsy();
|
|
11
|
-
});
|
|
12
|
-
it('returns true, in case of `yml` file.', () => {
|
|
13
|
-
const fileName = 'mock-filename.yml';
|
|
14
|
-
const check = (0, yaml_1.checkIfFileIsYaml)(fileName);
|
|
15
|
-
expect(check).toBeTruthy();
|
|
16
|
-
});
|
|
17
|
-
it('returns true, in case of `yaml` file.', () => {
|
|
18
|
-
const fileName = 'mock-filename.yaml';
|
|
19
|
-
const check = (0, yaml_1.checkIfFileIsYaml)(fileName);
|
|
20
|
-
expect(check).toBeTruthy();
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
describe('openYamlFileAsObject(): ', () => {
|
|
24
|
-
it('should load and serve yaml as object.', async () => {
|
|
25
|
-
expect.assertions(2);
|
|
26
|
-
const result = await (0, yaml_1.openYamlFileAsObject)('mock');
|
|
27
|
-
const expectedType = 'object';
|
|
28
|
-
const expectedYamlName = 'gsf-demo';
|
|
29
|
-
expect(typeof result).toBe(expectedType);
|
|
30
|
-
expect(result.name).toBe(expectedYamlName);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
describe('saveYamlFileAs(): ', () => {
|
|
34
|
-
it('saves yaml file with passed object and path.', async () => {
|
|
35
|
-
const object = {
|
|
36
|
-
name: 'mock-name',
|
|
37
|
-
};
|
|
38
|
-
const pathToFile = 'mock-pathToFile';
|
|
39
|
-
await (0, yaml_1.saveYamlFileAs)(object, pathToFile);
|
|
40
|
-
});
|
|
41
|
-
it('throws error in case if something wrong with path.', async () => {
|
|
42
|
-
const object = {
|
|
43
|
-
name: 'mock-name',
|
|
44
|
-
};
|
|
45
|
-
const pathToFile = 'reject'; // Mock value for rejection.
|
|
46
|
-
const expectedErrorMessage = 'Wrong file path';
|
|
47
|
-
try {
|
|
48
|
-
await (0, yaml_1.saveYamlFileAs)(object, pathToFile);
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
if (error instanceof Error) {
|
|
52
|
-
expect(error).toBeInstanceOf(Error);
|
|
53
|
-
expect(error.message).toBe(expectedErrorMessage);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL19fdGVzdHNfXy91bml0L3V0aWwveWFtbC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztBQUVqRSw2Q0FJNEI7QUFFNUIsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7SUFDM0IsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtRQUNyQyxFQUFFLENBQUMsMENBQTBDLEVBQUUsR0FBRyxFQUFFO1lBQ2xELE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQztZQUVqQyxNQUFNLEtBQUssR0FBRyxJQUFBLHdCQUFpQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7WUFDOUMsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUM7WUFFckMsTUFBTSxLQUFLLEdBQUcsSUFBQSx3QkFBaUIsRUFBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1lBQy9DLE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUFDO1lBRXRDLE1BQU0sS0FBSyxHQUFHLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1FBQ3hDLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNyRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSwyQkFBb0IsRUFBQyxNQUFNLENBQUMsQ0FBQztZQUNsRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUM7WUFDOUIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7WUFFcEMsTUFBTSxDQUFDLE9BQU8sTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7UUFDbEMsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVELE1BQU0sTUFBTSxHQUFHO2dCQUNiLElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUM7WUFDRixNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztZQUVyQyxNQUFNLElBQUEscUJBQWMsRUFBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0RBQW9ELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDbEUsTUFBTSxNQUFNLEdBQUc7Z0JBQ2IsSUFBSSxFQUFFLFdBQVc7YUFDbEIsQ0FBQztZQUNGLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLDRCQUE0QjtZQUV6RCxNQUFNLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDO1lBRS9DLElBQUk7Z0JBQ0YsTUFBTSxJQUFBLHFCQUFjLEVBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQzFDO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO29CQUMxQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2lCQUNsRDthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiamVzdC5tb2NrKCdmcy9wcm9taXNlcycsICgpID0+IHJlcXVpcmUoJy4uLy4uLy4uL19fbW9ja3NfXy9mcycpKTtcblxuaW1wb3J0IHtcbiAgY2hlY2tJZkZpbGVJc1lhbWwsXG4gIG9wZW5ZYW1sRmlsZUFzT2JqZWN0LFxuICBzYXZlWWFtbEZpbGVBcyxcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbC95YW1sJztcblxuZGVzY3JpYmUoJ3V0aWwveWFtbDogJywgKCkgPT4ge1xuICBkZXNjcmliZSgnY2hlY2tJZkZpbGVJc1lhbWwoKTogJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIGZhbHNlLCBpbiBjYXNlIG9mIG5vdCB5YW1sIGZpbGUuJywgKCkgPT4ge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSAnbW9jay1maWxlbmFtZSc7XG5cbiAgICAgIGNvbnN0IGNoZWNrID0gY2hlY2tJZkZpbGVJc1lhbWwoZmlsZU5hbWUpO1xuICAgICAgZXhwZWN0KGNoZWNrKS50b0JlRmFsc3koKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIHRydWUsIGluIGNhc2Ugb2YgYHltbGAgZmlsZS4nLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWxlTmFtZSA9ICdtb2NrLWZpbGVuYW1lLnltbCc7XG5cbiAgICAgIGNvbnN0IGNoZWNrID0gY2hlY2tJZkZpbGVJc1lhbWwoZmlsZU5hbWUpO1xuICAgICAgZXhwZWN0KGNoZWNrKS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyB0cnVlLCBpbiBjYXNlIG9mIGB5YW1sYCBmaWxlLicsICgpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gJ21vY2stZmlsZW5hbWUueWFtbCc7XG5cbiAgICAgIGNvbnN0IGNoZWNrID0gY2hlY2tJZkZpbGVJc1lhbWwoZmlsZU5hbWUpO1xuICAgICAgZXhwZWN0KGNoZWNrKS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdvcGVuWWFtbEZpbGVBc09iamVjdCgpOiAnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBsb2FkIGFuZCBzZXJ2ZSB5YW1sIGFzIG9iamVjdC4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBleHBlY3QuYXNzZXJ0aW9ucygyKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb3BlbllhbWxGaWxlQXNPYmplY3QoJ21vY2snKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkVHlwZSA9ICdvYmplY3QnO1xuICAgICAgY29uc3QgZXhwZWN0ZWRZYW1sTmFtZSA9ICdnc2YtZGVtbyc7XG5cbiAgICAgIGV4cGVjdCh0eXBlb2YgcmVzdWx0KS50b0JlKGV4cGVjdGVkVHlwZSk7XG4gICAgICBleHBlY3QocmVzdWx0Lm5hbWUpLnRvQmUoZXhwZWN0ZWRZYW1sTmFtZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzYXZlWWFtbEZpbGVBcygpOiAnLCAoKSA9PiB7XG4gICAgaXQoJ3NhdmVzIHlhbWwgZmlsZSB3aXRoIHBhc3NlZCBvYmplY3QgYW5kIHBhdGguJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0ID0ge1xuICAgICAgICBuYW1lOiAnbW9jay1uYW1lJyxcbiAgICAgIH07XG4gICAgICBjb25zdCBwYXRoVG9GaWxlID0gJ21vY2stcGF0aFRvRmlsZSc7XG5cbiAgICAgIGF3YWl0IHNhdmVZYW1sRmlsZUFzKG9iamVjdCwgcGF0aFRvRmlsZSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIGVycm9yIGluIGNhc2UgaWYgc29tZXRoaW5nIHdyb25nIHdpdGggcGF0aC4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBvYmplY3QgPSB7XG4gICAgICAgIG5hbWU6ICdtb2NrLW5hbWUnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHBhdGhUb0ZpbGUgPSAncmVqZWN0JzsgLy8gTW9jayB2YWx1ZSBmb3IgcmVqZWN0aW9uLlxuXG4gICAgICBjb25zdCBleHBlY3RlZEVycm9yTWVzc2FnZSA9ICdXcm9uZyBmaWxlIHBhdGgnO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBzYXZlWWFtbEZpbGVBcyhvYmplY3QsIHBhdGhUb0ZpbGUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IpLnRvQmVJbnN0YW5jZU9mKEVycm9yKTtcbiAgICAgICAgICBleHBlY3QoZXJyb3IubWVzc2FnZSkudG9CZShleHBlY3RlZEVycm9yTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
package/build/config/config.d.ts
DELETED
package/build/config/config.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CONFIG = void 0;
|
|
4
|
-
exports.CONFIG = {
|
|
5
|
-
impact: {
|
|
6
|
-
ARGS: {
|
|
7
|
-
impl: {
|
|
8
|
-
type: String,
|
|
9
|
-
optional: true,
|
|
10
|
-
alias: 'i',
|
|
11
|
-
description: 'Path to an input IMPL file.',
|
|
12
|
-
},
|
|
13
|
-
ompl: {
|
|
14
|
-
type: String,
|
|
15
|
-
optional: true,
|
|
16
|
-
description: 'Path to the output IMPL file where the results as saved, if none is provided it prints to stdout.',
|
|
17
|
-
},
|
|
18
|
-
format: {
|
|
19
|
-
type: String,
|
|
20
|
-
optional: true,
|
|
21
|
-
description: 'The output file format. default to yaml but if csv is specified then it formats the outputs as a csv file for loading into another program.',
|
|
22
|
-
defaultValue: 'yaml',
|
|
23
|
-
},
|
|
24
|
-
verbose: {
|
|
25
|
-
type: Boolean,
|
|
26
|
-
optional: true,
|
|
27
|
-
description: 'How much information to output about the calculation to aid investigation and debugging.',
|
|
28
|
-
},
|
|
29
|
-
help: {
|
|
30
|
-
type: Boolean,
|
|
31
|
-
optional: true,
|
|
32
|
-
alias: 'h',
|
|
33
|
-
description: 'Prints this usage guide.',
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
HELP: `impact
|
|
37
|
-
-impl [path to the input impl file]
|
|
38
|
-
-ompl [path to the output impl file]
|
|
39
|
-
-format [yaml|csv]
|
|
40
|
-
-verbose
|
|
41
|
-
-help
|
|
42
|
-
impl: path to an input IMPL file
|
|
43
|
-
ompl: path to the output IMPL file where the results as saved, if none is provided it prints to stdout.
|
|
44
|
-
format: the output file format. default to yaml but if csv is specified then it formats the outputs as a csv file for loading into another program.
|
|
45
|
-
verbose: how much information to output about the calculation to aid investigation and debugging.
|
|
46
|
-
help: prints out the above help instruction.
|
|
47
|
-
`,
|
|
48
|
-
},
|
|
49
|
-
GITHUB_PATH: 'https://github.com',
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSWEsUUFBQSxNQUFNLEdBQUc7SUFDcEIsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxNQUFNO2dCQUNaLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSw2QkFBNkI7YUFDM0M7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLE1BQU07Z0JBQ1osUUFBUSxFQUFFLElBQUk7Z0JBQ2QsV0FBVyxFQUNULG1HQUFtRzthQUN0RztZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsTUFBTTtnQkFDWixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQ1QsNklBQTZJO2dCQUMvSSxZQUFZLEVBQUUsTUFBTTthQUNyQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsT0FBTztnQkFDYixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQ1QsMEZBQTBGO2FBQzdGO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxPQUFPO2dCQUNiLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSwwQkFBMEI7YUFDeEM7U0FDbUM7UUFDdEMsSUFBSSxFQUFFOzs7Ozs7Ozs7OztHQVdQO0tBQ0E7SUFDRCxXQUFXLEVBQUUsb0JBQW9CO0NBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FyZ3VtZW50Q29uZmlnfSBmcm9tICd0cy1jb21tYW5kLWxpbmUtYXJncyc7XG5cbmltcG9ydCB7aW1wYWN0UHJvY2Vzc0FyZ3N9IGZyb20gJy4uL3R5cGVzL3Byb2Nlc3MtYXJncyc7XG5cbmV4cG9ydCBjb25zdCBDT05GSUcgPSB7XG4gIGltcGFjdDoge1xuICAgIEFSR1M6IHtcbiAgICAgIGltcGw6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgYWxpYXM6ICdpJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdQYXRoIHRvIGFuIGlucHV0IElNUEwgZmlsZS4nLFxuICAgICAgfSxcbiAgICAgIG9tcGw6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ1BhdGggdG8gdGhlIG91dHB1dCBJTVBMIGZpbGUgd2hlcmUgdGhlIHJlc3VsdHMgYXMgc2F2ZWQsIGlmIG5vbmUgaXMgcHJvdmlkZWQgaXQgcHJpbnRzIHRvIHN0ZG91dC4nLFxuICAgICAgfSxcbiAgICAgIGZvcm1hdDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnVGhlIG91dHB1dCBmaWxlIGZvcm1hdC4gZGVmYXVsdCB0byB5YW1sIGJ1dCBpZiBjc3YgaXMgc3BlY2lmaWVkIHRoZW4gaXQgZm9ybWF0cyB0aGUgb3V0cHV0cyBhcyBhIGNzdiBmaWxlIGZvciBsb2FkaW5nIGludG8gYW5vdGhlciBwcm9ncmFtLicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ3lhbWwnLFxuICAgICAgfSxcbiAgICAgIHZlcmJvc2U6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICdIb3cgbXVjaCBpbmZvcm1hdGlvbiB0byBvdXRwdXQgYWJvdXQgdGhlIGNhbGN1bGF0aW9uIHRvIGFpZCBpbnZlc3RpZ2F0aW9uIGFuZCBkZWJ1Z2dpbmcuJyxcbiAgICAgIH0sXG4gICAgICBoZWxwOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBhbGlhczogJ2gnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1ByaW50cyB0aGlzIHVzYWdlIGd1aWRlLicsXG4gICAgICB9LFxuICAgIH0gYXMgQXJndW1lbnRDb25maWc8aW1wYWN0UHJvY2Vzc0FyZ3M+LFxuICAgIEhFTFA6IGBpbXBhY3QgXG4gIC1pbXBsIFtwYXRoIHRvIHRoZSBpbnB1dCBpbXBsIGZpbGVdXG4gIC1vbXBsIFtwYXRoIHRvIHRoZSBvdXRwdXQgaW1wbCBmaWxlXVxuICAtZm9ybWF0IFt5YW1sfGNzdl0gXG4gIC12ZXJib3NlXG4gIC1oZWxwIFxuICBpbXBsOiBwYXRoIHRvIGFuIGlucHV0IElNUEwgZmlsZVxuICBvbXBsOiBwYXRoIHRvIHRoZSBvdXRwdXQgSU1QTCBmaWxlIHdoZXJlIHRoZSByZXN1bHRzIGFzIHNhdmVkLCBpZiBub25lIGlzIHByb3ZpZGVkIGl0IHByaW50cyB0byBzdGRvdXQuXG4gIGZvcm1hdDogdGhlIG91dHB1dCBmaWxlIGZvcm1hdC4gZGVmYXVsdCB0byB5YW1sIGJ1dCBpZiBjc3YgaXMgc3BlY2lmaWVkIHRoZW4gaXQgZm9ybWF0cyB0aGUgb3V0cHV0cyBhcyBhIGNzdiBmaWxlIGZvciBsb2FkaW5nIGludG8gYW5vdGhlciBwcm9ncmFtLlxuICB2ZXJib3NlOiBob3cgbXVjaCBpbmZvcm1hdGlvbiB0byBvdXRwdXQgYWJvdXQgdGhlIGNhbGN1bGF0aW9uIHRvIGFpZCBpbnZlc3RpZ2F0aW9uIGFuZCBkZWJ1Z2dpbmcuXG4gIGhlbHA6IHByaW50cyBvdXQgdGhlIGFib3ZlIGhlbHAgaW5zdHJ1Y3Rpb24uXG4gIGAsXG4gIH0sXG4gIEdJVEhVQl9QQVRIOiAnaHR0cHM6Ly9naXRodWIuY29tJyxcbn07XG4iXX0=
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { IOutputModelInterface } from '../interfaces';
|
|
2
|
-
export declare class AzureImporterModel implements IOutputModelInterface {
|
|
3
|
-
authParams: object | undefined;
|
|
4
|
-
staticParams: object | undefined;
|
|
5
|
-
name: string | undefined;
|
|
6
|
-
authenticate(authParams: object): void;
|
|
7
|
-
modelIdentifier(): string;
|
|
8
|
-
/**
|
|
9
|
-
* Validates given `inputs` params. If it's valid, then captures params, then passes to monitor.
|
|
10
|
-
* Returns flattened result from Azure monitor client.
|
|
11
|
-
*/
|
|
12
|
-
execute(inputs: any[]): Promise<any>;
|
|
13
|
-
/**
|
|
14
|
-
* Gets CPU metrics by calling monitor client.
|
|
15
|
-
*/
|
|
16
|
-
private getCPUMetrics;
|
|
17
|
-
/**
|
|
18
|
-
* Gets RAW metrics by calling monitor client.
|
|
19
|
-
*/
|
|
20
|
-
private getRawMetrics;
|
|
21
|
-
/**
|
|
22
|
-
* Use DefaultAzureCredential which works with AZURE_TENANT_ID, AZURE_CLIENT_ID, and AZURE_CLIENT_SECRET environment variables.
|
|
23
|
-
* You can also use other credentials provided by @azure/identity package.
|
|
24
|
-
*/
|
|
25
|
-
private getVmUsage;
|
|
26
|
-
/**
|
|
27
|
-
* Initalize static params.
|
|
28
|
-
*/
|
|
29
|
-
configure(name: string, staticParams: object | undefined): Promise<IOutputModelInterface>;
|
|
30
|
-
/**
|
|
31
|
-
* Takes impl timestamp and duration and returns an Azure formatted `timespan` value.
|
|
32
|
-
*/
|
|
33
|
-
private getTimeSpan;
|
|
34
|
-
/**
|
|
35
|
-
* Formats given `amountOfTime` according to given `unit`.
|
|
36
|
-
* Throws error if given `unit` is not supported.
|
|
37
|
-
*/
|
|
38
|
-
private timeUnitConverter;
|
|
39
|
-
/**
|
|
40
|
-
* Takes granularity as e.g. "1 m", "1 hr" and translates into ISO8601 as expected by the azure API.
|
|
41
|
-
*/
|
|
42
|
-
private getInterval;
|
|
43
|
-
/**
|
|
44
|
-
* Caculates total memory based on data from ComputeManagementClient response.
|
|
45
|
-
*/
|
|
46
|
-
private calculateTotalMemory;
|
|
47
|
-
/**
|
|
48
|
-
* Gathers instance metadata.
|
|
49
|
-
*/
|
|
50
|
-
private getInstanceMetadata;
|
|
51
|
-
/**
|
|
52
|
-
* Calculates number of seconds covered by each individual input using azure-time-window value
|
|
53
|
-
*/
|
|
54
|
-
private calculateDurationPerInput;
|
|
55
|
-
}
|