@grnsft/if 0.0.5 → 0.0.6
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/build/__tests__/unit/lib/models-universe.test.d.ts +1 -0
- package/build/__tests__/unit/lib/models-universe.test.js +193 -0
- package/build/__tests__/unit/lib/observatory.test.d.ts +1 -0
- package/build/__tests__/unit/lib/observatory.test.js +99 -0
- package/build/__tests__/unit/lib/supercomputer.test.d.ts +1 -0
- package/build/__tests__/unit/lib/supercomputer.test.js +231 -0
- package/build/config/config.d.ts +0 -23
- package/build/config/config.js +1 -24
- package/build/index.js +3 -3
- package/build/lib/models-universe.d.ts +28 -0
- package/build/lib/models-universe.js +95 -0
- package/build/lib/observatory.d.ts +20 -0
- package/build/lib/observatory.js +31 -0
- package/build/lib/supercomputer.d.ts +30 -0
- package/build/lib/supercomputer.js +109 -0
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const model_universe_1 = require("../../../__mocks__/model-universe");
|
|
4
|
+
const models_universe_1 = require("../../../lib/models-universe");
|
|
5
|
+
const config_1 = require("../../../config");
|
|
6
|
+
const { MISSING_CLASSNAME, MISSING_PATH, NOT_OUTPUT_MODEL_EXTENSION, NOT_INITIALIZED_MODEL, } = config_1.STRINGS;
|
|
7
|
+
describe('util/models-universe: ', () => {
|
|
8
|
+
describe('init ModelsUniverse', () => {
|
|
9
|
+
it('initializes object with required properties.', () => {
|
|
10
|
+
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
11
|
+
expect(typeof modelsHandbook.getInitializedModel).toBe('function');
|
|
12
|
+
expect(typeof modelsHandbook.initalizedModels).toBe('object');
|
|
13
|
+
expect(typeof modelsHandbook.writeDown).toBe('function');
|
|
14
|
+
expect(modelsHandbook.initalizedModels).toEqual({});
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe('writeDown(): ', () => {
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
jest.resetModules();
|
|
20
|
+
jest.restoreAllMocks();
|
|
21
|
+
});
|
|
22
|
+
it('throws error in case model is not supported.', () => {
|
|
23
|
+
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
24
|
+
const modelInfo = {
|
|
25
|
+
config: {
|
|
26
|
+
allocation: 'mock-allocation',
|
|
27
|
+
verbose: true,
|
|
28
|
+
},
|
|
29
|
+
name: 'test',
|
|
30
|
+
};
|
|
31
|
+
const expectedMessage = `Missing or wrong model: ${modelInfo.name}.`;
|
|
32
|
+
try {
|
|
33
|
+
modelsHandbook.writeDown(modelInfo);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (error instanceof Error) {
|
|
37
|
+
expect(error.message).toEqual(expectedMessage);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
it('registers `shell` model in initalized models list.', () => {
|
|
42
|
+
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
43
|
+
const modelInfo = {
|
|
44
|
+
config: {
|
|
45
|
+
allocation: 'mock-allocation',
|
|
46
|
+
verbose: true,
|
|
47
|
+
},
|
|
48
|
+
name: 'mock-name',
|
|
49
|
+
};
|
|
50
|
+
const modelsList = modelsHandbook.writeDown(modelInfo);
|
|
51
|
+
expect(modelsList).toHaveProperty(modelInfo.name);
|
|
52
|
+
expect(typeof modelsList[modelInfo.name]).toBe('function');
|
|
53
|
+
});
|
|
54
|
+
it('registers `plugin` model in initalized models list.', () => {
|
|
55
|
+
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
56
|
+
const modelInfo = {
|
|
57
|
+
config: {
|
|
58
|
+
allocation: 'mock-allocation',
|
|
59
|
+
verbose: true,
|
|
60
|
+
},
|
|
61
|
+
name: 'mock-name',
|
|
62
|
+
};
|
|
63
|
+
const modelsList = modelsHandbook.writeDown(modelInfo);
|
|
64
|
+
expect(modelsList).toHaveProperty(modelInfo.name);
|
|
65
|
+
expect(typeof modelsList[modelInfo.name]).toBe('function');
|
|
66
|
+
});
|
|
67
|
+
it('throws `missing classname` error while registration of `plugin` model.', async () => {
|
|
68
|
+
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
69
|
+
const modelInfo = {
|
|
70
|
+
config: {
|
|
71
|
+
allocation: 'mock-allocation',
|
|
72
|
+
verbose: true,
|
|
73
|
+
},
|
|
74
|
+
name: 'mock-name',
|
|
75
|
+
};
|
|
76
|
+
const modelsList = modelsHandbook.writeDown(modelInfo);
|
|
77
|
+
const model = modelsList[modelInfo.name];
|
|
78
|
+
expect.assertions(2);
|
|
79
|
+
try {
|
|
80
|
+
await model({
|
|
81
|
+
'core-units': 1,
|
|
82
|
+
'physical-processor': 'intel',
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
if (error instanceof Error) {
|
|
87
|
+
expect(error).toBeInstanceOf(Error);
|
|
88
|
+
expect(error.message).toEqual(MISSING_CLASSNAME);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
it('throws `missing path parameter` error while registration of `plugin` model.', async () => {
|
|
93
|
+
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
94
|
+
const modelInfo = {
|
|
95
|
+
config: {
|
|
96
|
+
allocation: 'mock-allocation',
|
|
97
|
+
verbose: true,
|
|
98
|
+
},
|
|
99
|
+
name: 'mock-name',
|
|
100
|
+
model: 'MockaviztaModel',
|
|
101
|
+
};
|
|
102
|
+
const modelsList = modelsHandbook.writeDown(modelInfo);
|
|
103
|
+
const model = modelsList[modelInfo.name];
|
|
104
|
+
expect.assertions(2);
|
|
105
|
+
try {
|
|
106
|
+
await model({
|
|
107
|
+
'core-units': 1,
|
|
108
|
+
'physical-processor': 'intel',
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
if (error instanceof Error) {
|
|
113
|
+
expect(error).toBeInstanceOf(Error);
|
|
114
|
+
expect(error.message).toEqual(MISSING_PATH);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
it('should successfully initalize plugin model.', async () => {
|
|
119
|
+
jest.mock('mockavizta-model', () => ({
|
|
120
|
+
__esModule: true,
|
|
121
|
+
MockaviztaModel: model_universe_1.MockModel,
|
|
122
|
+
}), { virtual: true });
|
|
123
|
+
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
124
|
+
const modelInfo = {
|
|
125
|
+
config: {
|
|
126
|
+
allocation: 'mock-allocation',
|
|
127
|
+
verbose: true,
|
|
128
|
+
},
|
|
129
|
+
name: 'mock-name',
|
|
130
|
+
model: 'MockaviztaModel',
|
|
131
|
+
path: 'https://github.com/mock/mockavizta-model',
|
|
132
|
+
};
|
|
133
|
+
const modelsList = modelsHandbook.writeDown(modelInfo);
|
|
134
|
+
const model = modelsList[modelInfo.name];
|
|
135
|
+
expect.assertions(1);
|
|
136
|
+
const response = await model({
|
|
137
|
+
'core-units': 1,
|
|
138
|
+
'physical-processor': 'intel',
|
|
139
|
+
});
|
|
140
|
+
expect(response).toBeInstanceOf(model_universe_1.MockModel);
|
|
141
|
+
});
|
|
142
|
+
it('should throw `input model does not extend base interface` error.', async () => {
|
|
143
|
+
jest.mock('mockavizta-model', () => ({
|
|
144
|
+
__esModule: true,
|
|
145
|
+
MockaviztaModel: class FakeModel {
|
|
146
|
+
},
|
|
147
|
+
}), { virtual: true });
|
|
148
|
+
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
149
|
+
const modelInfo = {
|
|
150
|
+
config: {
|
|
151
|
+
allocation: 'mock-allocation',
|
|
152
|
+
verbose: true,
|
|
153
|
+
},
|
|
154
|
+
name: 'mock-name',
|
|
155
|
+
model: 'MockaviztaModel',
|
|
156
|
+
path: 'https://github.com/mock/mockavizta-model',
|
|
157
|
+
};
|
|
158
|
+
const modelsList = modelsHandbook.writeDown(modelInfo);
|
|
159
|
+
const model = modelsList[modelInfo.name];
|
|
160
|
+
expect.assertions(2);
|
|
161
|
+
try {
|
|
162
|
+
await model({
|
|
163
|
+
'core-units': 1,
|
|
164
|
+
'physical-processor': 'intel',
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
if (error instanceof Error) {
|
|
169
|
+
expect(error).toBeInstanceOf(Error);
|
|
170
|
+
expect(error.message).toEqual(NOT_OUTPUT_MODEL_EXTENSION);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
describe('getInitializedModel(): ', () => {
|
|
176
|
+
it('throws error in case if model is not initalized.', async () => {
|
|
177
|
+
const modelsHandbook = new models_universe_1.ModelsUniverse();
|
|
178
|
+
const modelName = 'mock-modelName';
|
|
179
|
+
const config = {};
|
|
180
|
+
const expectedMessage = NOT_INITIALIZED_MODEL(modelName);
|
|
181
|
+
try {
|
|
182
|
+
await modelsHandbook.getInitializedModel(modelName, config);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (error instanceof Error) {
|
|
186
|
+
expect(error).toBeInstanceOf(Error);
|
|
187
|
+
expect(error.message).toEqual(expectedMessage);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLXVuaXZlcnNlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvX190ZXN0c19fL3VuaXQvbGliL21vZGVscy11bml2ZXJzZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0VBQTREO0FBRTVELGtFQUE0RDtBQUU1RCw0Q0FBd0M7QUFJeEMsTUFBTSxFQUNKLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLHFCQUFxQixHQUN0QixHQUFHLGdCQUFPLENBQUM7QUFFWixRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO0lBQ3RDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7UUFDbkMsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtZQUN0RCxNQUFNLGNBQWMsR0FBRyxJQUFJLGdDQUFjLEVBQUUsQ0FBQztZQUU1QyxNQUFNLENBQUMsT0FBTyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkUsTUFBTSxDQUFDLE9BQU8sY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxPQUFPLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7UUFDN0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENB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LGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV6RCxJQUFJO2dCQUNGLE1BQU0sY0FBYyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUM3RDtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtvQkFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDcEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7aUJBQ2hEO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vY2tNb2RlbH0gZnJvbSAnLi4vLi4vLi4vX19tb2Nrc19fL21vZGVsLXVuaXZlcnNlJztcblxuaW1wb3J0IHtNb2RlbHNVbml2ZXJzZX0gZnJvbSAnLi4vLi4vLi4vbGliL21vZGVscy11bml2ZXJzZSc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vLi4vY29uZmlnJztcblxuaW1wb3J0IHtJbXBsSW5pdGlhbGl6ZU1vZGVsfSBmcm9tICcuLi8uLi8uLi90eXBlcy9tb2RlbHMtdW5pdmVyc2UnO1xuXG5jb25zdCB7XG4gIE1JU1NJTkdfQ0xBU1NOQU1FLFxuICBNSVNTSU5HX1BBVEgsXG4gIE5PVF9PVVRQVVRfTU9ERUxfRVhURU5TSU9OLFxuICBOT1RfSU5JVElBTElaRURfTU9ERUwsXG59ID0gU1RSSU5HUztcblxuZGVzY3JpYmUoJ3V0aWwvbW9kZWxzLXVuaXZlcnNlOiAnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdpbml0IE1vZGVsc1VuaXZlcnNlJywgKCkgPT4ge1xuICAgIGl0KCdpbml0aWFsaXplcyBvYmplY3Qgd2l0aCByZXF1aXJlZCBwcm9wZXJ0aWVzLicsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vZGVsc0hhbmRib29rID0gbmV3IE1vZGVsc1VuaXZlcnNlKCk7XG5cbiAgICAgIGV4cGVjdCh0eXBlb2YgbW9kZWxzSGFuZGJvb2suZ2V0SW5pdGlhbGl6ZWRNb2RlbCkudG9CZSgnZnVuY3Rpb24nKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgbW9kZWxzSGFuZGJvb2suaW5pdGFsaXplZE1vZGVscykudG9CZSgnb2JqZWN0Jyk7XG4gICAgICBleHBlY3QodHlwZW9mIG1vZGVsc0hhbmRib29rLndyaXRlRG93bikudG9CZSgnZnVuY3Rpb24nKTtcbiAgICAgIGV4cGVjdChtb2RlbHNIYW5kYm9vay5pbml0YWxpemVkTW9kZWxzKS50b0VxdWFsKHt9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dyaXRlRG93bigpOiAnLCAoKSA9PiB7XG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBqZXN0LnJlc2V0TW9kdWxlcygpO1xuICAgICAgamVzdC5yZXN0b3JlQWxsTW9ja3MoKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3MgZXJyb3IgaW4gY2FzZSBtb2RlbCBpcyBub3Qgc3VwcG9ydGVkLicsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vZGVsc0hhbmRib29rID0gbmV3IE1vZGVsc1VuaXZlcnNlKCk7XG4gICAgICBjb25zdCBtb2RlbEluZm86IEltcGxJbml0aWFsaXplTW9kZWwgPSB7XG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIGFsbG9jYXRpb246ICdtb2NrLWFsbG9jYXRpb24nLFxuICAgICAgICAgIHZlcmJvc2U6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5hbWU6ICd0ZXN0JyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGV4cGVjdGVkTWVzc2FnZSA9IGBNaXNzaW5nIG9yIHdyb25nIG1vZGVsOiAke21vZGVsSW5mby5uYW1lfS5gO1xuXG4gICAgICB0cnkge1xuICAgICAgICBtb2RlbHNIYW5kYm9vay53cml0ZURvd24obW9kZWxJbmZvKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvRXF1YWwoZXhwZWN0ZWRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3JlZ2lzdGVycyBgc2hlbGxgIG1vZGVsIGluIGluaXRhbGl6ZWQgbW9kZWxzIGxpc3QuJywgKCkgPT4ge1xuICAgICAgY29uc3QgbW9kZWxzSGFuZGJvb2sgPSBuZXcgTW9kZWxzVW5pdmVyc2UoKTtcbiAgICAgIGNvbnN0IG1vZGVsSW5mbzogSW1wbEluaXRpYWxpemVNb2RlbCA9IHtcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgYWxsb2NhdGlvbjogJ21vY2stYWxsb2NhdGlvbicsXG4gICAgICAgICAgdmVyYm9zZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbmFtZTogJ21vY2stbmFtZScsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtb2RlbHNMaXN0ID0gbW9kZWxzSGFuZGJvb2sud3JpdGVEb3duKG1vZGVsSW5mbyk7XG4gICAgICBleHBlY3QobW9kZWxzTGlzdCkudG9IYXZlUHJvcGVydHkobW9kZWxJbmZvLm5hbWUpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBtb2RlbHNMaXN0W21vZGVsSW5mby5uYW1lXSkudG9CZSgnZnVuY3Rpb24nKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWdpc3RlcnMgYHBsdWdpbmAgbW9kZWwgaW4gaW5pdGFsaXplZCBtb2RlbHMgbGlzdC4nLCAoKSA9PiB7XG4gICAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IG5ldyBNb2RlbHNVbml2ZXJzZSgpO1xuICAgICAgY29uc3QgbW9kZWxJbmZvOiBJbXBsSW5pdGlhbGl6ZU1vZGVsID0ge1xuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBhbGxvY2F0aW9uOiAnbW9jay1hbGxvY2F0aW9uJyxcbiAgICAgICAgICB2ZXJib3NlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBuYW1lOiAnbW9jay1uYW1lJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1vZGVsc0xpc3QgPSBtb2RlbHNIYW5kYm9vay53cml0ZURvd24obW9kZWxJbmZvKTtcbiAgICAgIGV4cGVjdChtb2RlbHNMaXN0KS50b0hhdmVQcm9wZXJ0eShtb2RlbEluZm8ubmFtZSk7XG4gICAgICBleHBlY3QodHlwZW9mIG1vZGVsc0xpc3RbbW9kZWxJbmZvLm5hbWVdKS50b0JlKCdmdW5jdGlvbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBgbWlzc2luZyBjbGFzc25hbWVgIGVycm9yIHdoaWxlIHJlZ2lzdHJhdGlvbiBvZiBgcGx1Z2luYCBtb2RlbC4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IG5ldyBNb2RlbHNVbml2ZXJzZSgpO1xuICAgICAgY29uc3QgbW9kZWxJbmZvOiBJbXBsSW5pdGlhbGl6ZU1vZGVsID0ge1xuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBhbGxvY2F0aW9uOiAnbW9jay1hbGxvY2F0aW9uJyxcbiAgICAgICAgICB2ZXJib3NlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBuYW1lOiAnbW9jay1uYW1lJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1vZGVsc0xpc3QgPSBtb2RlbHNIYW5kYm9vay53cml0ZURvd24obW9kZWxJbmZvKTtcbiAgICAgIGNvbnN0IG1vZGVsID0gbW9kZWxzTGlzdFttb2RlbEluZm8ubmFtZV07XG5cbiAgICAgIGV4cGVjdC5hc3NlcnRpb25zKDIpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBtb2RlbCh7XG4gICAgICAgICAgJ2NvcmUtdW5pdHMnOiAxLFxuICAgICAgICAgICdwaHlzaWNhbC1wcm9jZXNzb3InOiAnaW50ZWwnLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yKS50b0JlSW5zdGFuY2VPZihFcnJvcik7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvRXF1YWwoTUlTU0lOR19DTEFTU05BTUUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIGBtaXNzaW5nIHBhdGggcGFyYW1ldGVyYCBlcnJvciB3aGlsZSByZWdpc3RyYXRpb24gb2YgYHBsdWdpbmAgbW9kZWwuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbW9kZWxzSGFuZGJvb2sgPSBuZXcgTW9kZWxzVW5pdmVyc2UoKTtcbiAgICAgIGNvbnN0IG1vZGVsSW5mbzogSW1wbEluaXRpYWxpemVNb2RlbCA9IHtcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgYWxsb2NhdGlvbjogJ21vY2stYWxsb2NhdGlvbicsXG4gICAgICAgICAgdmVyYm9zZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbmFtZTogJ21vY2stbmFtZScsXG4gICAgICAgIG1vZGVsOiAnTW9ja2F2aXp0YU1vZGVsJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1vZGVsc0xpc3QgPSBtb2RlbHNIYW5kYm9vay53cml0ZURvd24obW9kZWxJbmZvKTtcbiAgICAgIGNvbnN0IG1vZGVsID0gbW9kZWxzTGlzdFttb2RlbEluZm8ubmFtZV07XG5cbiAgICAgIGV4cGVjdC5hc3NlcnRpb25zKDIpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBtb2RlbCh7XG4gICAgICAgICAgJ2NvcmUtdW5pdHMnOiAxLFxuICAgICAgICAgICdwaHlzaWNhbC1wcm9jZXNzb3InOiAnaW50ZWwnLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yKS50b0JlSW5zdGFuY2VPZihFcnJvcik7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvRXF1YWwoTUlTU0lOR19QQVRIKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZXNzZnVsbHkgaW5pdGFsaXplIHBsdWdpbiBtb2RlbC4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBqZXN0Lm1vY2soXG4gICAgICAgICdtb2NrYXZpenRhLW1vZGVsJyxcbiAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICBfX2VzTW9kdWxlOiB0cnVlLFxuICAgICAgICAgIE1vY2thdml6dGFNb2RlbDogTW9ja01vZGVsLFxuICAgICAgICB9KSxcbiAgICAgICAge3ZpcnR1YWw6IHRydWV9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IG5ldyBNb2RlbHNVbml2ZXJzZSgpO1xuICAgICAgY29uc3QgbW9kZWxJbmZvOiBJbXBsSW5pdGlhbGl6ZU1vZGVsID0ge1xuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBhbGxvY2F0aW9uOiAnbW9jay1hbGxvY2F0aW9uJyxcbiAgICAgICAgICB2ZXJib3NlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBuYW1lOiAnbW9jay1uYW1lJyxcbiAgICAgICAgbW9kZWw6ICdNb2NrYXZpenRhTW9kZWwnLFxuICAgICAgICBwYXRoOiAnaHR0cHM6Ly9naXRodWIuY29tL21vY2svbW9ja2F2aXp0YS1tb2RlbCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtb2RlbHNMaXN0ID0gbW9kZWxzSGFuZGJvb2sud3JpdGVEb3duKG1vZGVsSW5mbyk7XG4gICAgICBjb25zdCBtb2RlbCA9IG1vZGVsc0xpc3RbbW9kZWxJbmZvLm5hbWVdO1xuXG4gICAgICBleHBlY3QuYXNzZXJ0aW9ucygxKTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtb2RlbCh7XG4gICAgICAgICdjb3JlLXVuaXRzJzogMSxcbiAgICAgICAgJ3BoeXNpY2FsLXByb2Nlc3Nvcic6ICdpbnRlbCcsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlSW5zdGFuY2VPZihNb2NrTW9kZWwpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBgaW5wdXQgbW9kZWwgZG9lcyBub3QgZXh0ZW5kIGJhc2UgaW50ZXJmYWNlYCBlcnJvci4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBqZXN0Lm1vY2soXG4gICAgICAgICdtb2NrYXZpenRhLW1vZGVsJyxcbiAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICBfX2VzTW9kdWxlOiB0cnVlLFxuICAgICAgICAgIE1vY2thdml6dGFNb2RlbDogY2xhc3MgRmFrZU1vZGVsIHt9LFxuICAgICAgICB9KSxcbiAgICAgICAge3ZpcnR1YWw6IHRydWV9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IG5ldyBNb2RlbHNVbml2ZXJzZSgpO1xuICAgICAgY29uc3QgbW9kZWxJbmZvOiBJbXBsSW5pdGlhbGl6ZU1vZGVsID0ge1xuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBhbGxvY2F0aW9uOiAnbW9jay1hbGxvY2F0aW9uJyxcbiAgICAgICAgICB2ZXJib3NlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBuYW1lOiAnbW9jay1uYW1lJyxcbiAgICAgICAgbW9kZWw6ICdNb2NrYXZpenRhTW9kZWwnLFxuICAgICAgICBwYXRoOiAnaHR0cHM6Ly9naXRodWIuY29tL21vY2svbW9ja2F2aXp0YS1tb2RlbCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtb2RlbHNMaXN0ID0gbW9kZWxzSGFuZGJvb2sud3JpdGVEb3duKG1vZGVsSW5mbyk7XG4gICAgICBjb25zdCBtb2RlbCA9IG1vZGVsc0xpc3RbbW9kZWxJbmZvLm5hbWVdO1xuXG4gICAgICBleHBlY3QuYXNzZXJ0aW9ucygyKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbW9kZWwoe1xuICAgICAgICAgICdjb3JlLXVuaXRzJzogMSxcbiAgICAgICAgICAncGh5c2ljYWwtcHJvY2Vzc29yJzogJ2ludGVsJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGV4cGVjdChlcnJvcikudG9CZUluc3RhbmNlT2YoRXJyb3IpO1xuICAgICAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0VxdWFsKE5PVF9PVVRQVVRfTU9ERUxfRVhURU5TSU9OKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0SW5pdGlhbGl6ZWRNb2RlbCgpOiAnLCAoKSA9PiB7XG4gICAgaXQoJ3Rocm93cyBlcnJvciBpbiBjYXNlIGlmIG1vZGVsIGlzIG5vdCBpbml0YWxpemVkLicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1vZGVsc0hhbmRib29rID0gbmV3IE1vZGVsc1VuaXZlcnNlKCk7XG5cbiAgICAgIGNvbnN0IG1vZGVsTmFtZSA9ICdtb2NrLW1vZGVsTmFtZSc7XG4gICAgICBjb25zdCBjb25maWcgPSB7fTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRNZXNzYWdlID0gTk9UX0lOSVRJQUxJWkVEX01PREVMKG1vZGVsTmFtZSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG1vZGVsc0hhbmRib29rLmdldEluaXRpYWxpemVkTW9kZWwobW9kZWxOYW1lLCBjb25maWcpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IpLnRvQmVJbnN0YW5jZU9mKEVycm9yKTtcbiAgICAgICAgICBleHBlY3QoZXJyb3IubWVzc2FnZSkudG9FcXVhbChleHBlY3RlZE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const observatory_1 = require("../../../lib/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YXRvcnkudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9fX3Rlc3RzX18vdW5pdC9saWIvb2JzZXJ2YXRvcnkudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDBEQUFxRDtBQUVyRCxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQ2xDLE1BQU0sZUFBZTtRQUNuQixTQUFTLENBQUMsTUFBVztZQUNuQixNQUFNLENBQUM7WUFDUCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU87WUFDTCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztLQUNGO0lBRUQsTUFBTSxhQUFhLEdBQUc7UUFDcEI7WUFDRSxTQUFTLEVBQUUsa0JBQWtCO1lBQzdCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsVUFBVSxFQUFFLE1BQU07WUFDbEIsWUFBWSxFQUFFLEdBQUc7WUFDakIsaUJBQWlCLEVBQUUsS0FBSztTQUN6QjtRQUNEO1lBQ0UsU0FBUyxFQUFFLGtCQUFrQjtZQUM3QixRQUFRLEVBQUUsSUFBSTtZQUNkLFVBQVUsRUFBRSxFQUFFO1lBQ2QsWUFBWSxFQUFFLEdBQUc7WUFDakIsaUJBQWlCLEVBQUUsS0FBSztTQUN6QjtLQUNGLENBQUMsQ0FBQywrQ0FBK0M7SUFFbEQsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtRQUNsQyxFQUFFLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFO1lBQ3RELE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztZQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLHlCQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFcEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FB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QyxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbFBsdWdpbkludGVyZmFjZX0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvbW9kZWwtaW50ZXJmYWNlJztcbmltcG9ydCB7T2JzZXJ2YXRvcnl9IGZyb20gJy4uLy4uLy4uL2xpYi9vYnNlcnZhdG9yeSc7XG5cbmRlc2NyaWJlKCd1dGlsL29ic2VydmF0b3J5OiAnLCAoKSA9PiB7XG4gIGNsYXNzIE1vY2thdml6dGFNb2RlbCBpbXBsZW1lbnRzIE1vZGVsUGx1Z2luSW50ZXJmYWNlIHtcbiAgICBjb25maWd1cmUocGFyYW1zOiBhbnkpOiBQcm9taXNlPE1vZGVsUGx1Z2luSW50ZXJmYWNlPiB7XG4gICAgICBwYXJhbXM7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMpO1xuICAgIH1cbiAgICBleGVjdXRlKCk6IFByb21pc2U8YW55W10+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW3tkYXRhOiAnbW9jay1kYXRhJ31dKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBleHBlY3RlZFZhbHVlID0gW1xuICAgIHtcbiAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDctMDZUMDA6MDAnLFxuICAgICAgZHVyYXRpb246IDM2MDAsXG4gICAgICAnY3B1LXV0aWwnOiAxOC4zOTIsXG4gICAgICAnZW5lcmd5LWNwdSc6IDIuNSxcbiAgICAgICdlbWJvZGllZC1jYXJib24nOiAwLjYxOSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDgtMDZUMDA6MDAnLFxuICAgICAgZHVyYXRpb246IDM2MDAsXG4gICAgICAnY3B1LXV0aWwnOiAxNixcbiAgICAgICdlbmVyZ3ktY3B1JzogMi41LFxuICAgICAgJ2VtYm9kaWVkLWNhcmJvbic6IDAuNjE5LFxuICAgIH0sXG4gIF07IC8vIG1vZGVsLmV4ZWN1dGUgbWV0aG9kJ3MgcmVzdWx0IChvdXRwdXQgbW9jaykuXG5cbiAgZGVzY3JpYmUoJ2luaXQgT2JzZXJ2YXRvcnk6ICcsICgpID0+IHtcbiAgICBpdCgnaW5pdGlhbGl6ZXMgb2JqZWN0IHdpdGggcmVxdWlyZWQgcHJvcGVydGllcy4nLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dHM6IGFueSA9IFtdO1xuICAgICAgY29uc3QgbGFiID0gbmV3IE9ic2VydmF0b3J5KGlucHV0cyk7XG5cbiAgICAgIGV4cGVjdChsYWIpLnRvSGF2ZVByb3BlcnR5KCdkb0ludmVzdGlnYXRpb25zV2l0aCcpO1xuICAgICAgZXhwZWN0KGxhYikudG9IYXZlUHJvcGVydHkoJ2dldE91dHB1dHMnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2RvSW52ZXN0Z2F0aW9uc1dpdGgoKTogJywgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0czogYW55ID0gW1xuICAgICAge1xuICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgICAgZHVyYXRpb246IDM2MDAsXG4gICAgICAgICdjcHUtdXRpbCc6IDE4LjM5MixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDgtMDZUMDA6MDAnLFxuICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgJ2NwdS11dGlsJzogMTYsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAnY29yZS11bml0cyc6IDI0LFxuICAgICAgJ3BoeXNpY2FsLXByb2Nlc3Nvcic6ICdJbnRlbMKuIENvcmXihKIgaTctMTE4NUc3JyxcbiAgICAgIGFsbG9jYXRpb246ICdMSU5FQVInLFxuICAgICAgdmVyYm9zZTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgaXQoJ3JldHVybnMgT2JzZXJ2YXRvcnkgY2xhc3MuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbGFiID0gbmV3IE9ic2VydmF0b3J5KGlucHV0cyk7XG5cbiAgICAgIGNvbnN0IGJvYXZpenRhTW9kZWwgPSBhd2FpdCBuZXcgTW9ja2F2aXp0YU1vZGVsKCkuY29uZmlndXJlKHBhcmFtcyk7XG5cbiAgICAgIGJvYXZpenRhTW9kZWwuZXhlY3V0ZSA9IGplc3QuZm4oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGV4cGVjdGVkVmFsdWUpKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbGFiLmRvSW52ZXN0aWdhdGlvbnNXaXRoKGJvYXZpenRhTW9kZWwpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZUluc3RhbmNlT2YoT2JzZXJ2YXRvcnkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0T3V0cHV0cygpOiAnLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXRzOiBhbnkgPSBbXG4gICAgICB7XG4gICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDctMDZUMDA6MDAnLFxuICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgJ2NwdS11dGlsJzogMTguMzkyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGltZXN0YW1wOiAnMjAyMy0wOC0wNlQwMDowMCcsXG4gICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAnY3B1LXV0aWwnOiAxNixcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICdjb3JlLXVuaXRzJzogMjQsXG4gICAgICAncGh5c2ljYWwtcHJvY2Vzc29yJzogJ0ludGVswq4gQ29yZeKEoiBpNy0xMTg1RzcnLFxuICAgICAgYWxsb2NhdGlvbjogJ0xJTkVBUicsXG4gICAgICB2ZXJib3NlOiB0cnVlLFxuICAgIH07XG5cbiAgICBpdCgncmV0dXJucyBlbXB0eSBvdXRwdXRzIGRhdGEuJywgKCkgPT4ge1xuICAgICAgY29uc3QgbGFiID0gbmV3IE9ic2VydmF0b3J5KGlucHV0cyk7XG5cbiAgICAgIGNvbnN0IGV4cGVjdGVkVmFsdWU6IGFueSA9IFtdO1xuXG4gICAgICBleHBlY3QobGFiLmdldE91dHB1dHMoKSkudG9FcXVhbChleHBlY3RlZFZhbHVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGV4ZWN1dGVkIG91dHB1dHMgZGF0YS4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBsYWIgPSBuZXcgT2JzZXJ2YXRvcnkoaW5wdXRzKTtcbiAgICAgIGNvbnN0IGJvYXZpenRhTW9kZWwgPSBhd2FpdCBuZXcgTW9ja2F2aXp0YU1vZGVsKCkuY29uZmlndXJlKHBhcmFtcyk7XG5cbiAgICAgIGJvYXZpenRhTW9kZWwuZXhlY3V0ZSA9IGplc3QuZm4oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGV4cGVjdGVkVmFsdWUpKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGxhYi5kb0ludmVzdGlnYXRpb25zV2l0aChib2F2aXp0YU1vZGVsKTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZUluc3RhbmNlT2YoT2JzZXJ2YXRvcnkpO1xuICAgICAgZXhwZWN0KGxhYi5nZXRPdXRwdXRzKCkpLnRvRXF1YWwoZXhwZWN0ZWRWYWx1ZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const model_universe_1 = require("../../../__mocks__/model-universe");
|
|
4
|
+
jest.mock('../../../lib/models-universe', () => ({
|
|
5
|
+
__esModule: true,
|
|
6
|
+
ModelsUniverse: model_universe_1.ModelsUniverse,
|
|
7
|
+
}));
|
|
8
|
+
const supercomputer_1 = require("../../../lib/supercomputer");
|
|
9
|
+
const models_universe_1 = require("../../../lib/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwZXJjb21wdXRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL19fdGVzdHNfXy91bml0L2xpYi9zdXBlcmNvbXB1dGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzRUFBc0Y7QUFFdEYsSUFBSSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGNBQWMsRUFBRSwrQkFBaUI7Q0FDbEMsQ0FBQyxDQUFDLENBQUM7QUFFSiw4REFBeUQ7QUFDekQsa0VBQTREO0FBRTVELDRDQUF3QztBQUV4QyxNQUFNLEVBQUMscUJBQXFCLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXhDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7SUFDcEMsTUFBTSxJQUFJLEdBQVE7UUFDaEIsSUFBSSxFQUFFLFVBQVU7UUFDaEIsV0FBVyxFQUFFLE9BQU87UUFDcEIsSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFLEtBQUs7WUFDWCxVQUFVLEVBQUUsVUFBVTtZQUN0QixRQUFRLEVBQUUsT0FBTztTQUNsQjtRQUNELFVBQVUsRUFBRTtZQUNWLE1BQU0sRUFBRTtnQkFDTjtvQkFDRSxJQUFJLEVBQUUsY0FBYztvQkFDcEIsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsTUFBTSxFQUFFO3dCQUNOLFVBQVUsRUFBRSxRQUFRO3dCQUNwQixPQUFPLEVBQUUsSUFBSTtxQkFDZDtpQkFDRjthQUNGO1NBQ0Y7UUFDRCxLQUFLLEVBQUU7WUFDTCxRQUFRLEVBQUU7Z0JBQ1IsV0FBVyxFQUFFO29CQUNYLFFBQVEsRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDMUIsTUFBTSxFQUFFO3dCQUNOLGNBQWMsRUFBRTs0QkFDZCxZQUFZLEVBQUUsRUFBRTs0QkFDaEIsU0FBUyxFQUFFLHdCQUF3Qjt5QkFDcEM7cUJBQ0Y7b0JBQ0QsTUFBTSxFQUFF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RSxDQUFDLGtEQUFrRCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2hFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFckIsTUFBTSxjQUFjLEdBQUcsSUFBSSxnQ0FBYyxFQUFFLENBQUM7WUFDNUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUM5RCxjQUFjLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUNoQyxDQUFDO1lBRUYsTUFBTSxjQUFjLEdBQUcsSUFBSSw2QkFBYSxDQUN0QyxzQkFBc0IsRUFDdEIsY0FBYyxDQUNmLENBQUM7WUFDRixNQUFNLElBQUksR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUU1QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNyQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV2QyxNQUFNLGNBQWMsR0FBUSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDO1lBRTdELE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZGVsc1VuaXZlcnNlIGFzIE1vY2tNb2RlbFVuaXZlcnNlfSBmcm9tICcuLi8uLi8uLi9fX21vY2tzX18vbW9kZWwtdW5pdmVyc2UnO1xuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2xpYi9tb2RlbHMtdW5pdmVyc2UnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBNb2RlbHNVbml2ZXJzZTogTW9ja01vZGVsVW5pdmVyc2UsXG59KSk7XG5cbmltcG9ydCB7U3VwZXJjb21wdXRlcn0gZnJvbSAnLi4vLi4vLi4vbGliL3N1cGVyY29tcHV0ZXInO1xuaW1wb3J0IHtNb2RlbHNVbml2ZXJzZX0gZnJvbSAnLi4vLi4vLi4vbGliL21vZGVscy11bml2ZXJzZSc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vLi4vY29uZmlnJztcblxuY29uc3Qge05PVF9JTklUSUFMSVpFRF9NT0RFTH0gPSBTVFJJTkdTO1xuXG5kZXNjcmliZSgndXRpbC9zdXBlcmNvbXB1dGVyOiAnLCAoKSA9PiB7XG4gIGNvbnN0IGltcGw6IGFueSA9IHtcbiAgICBuYW1lOiAnZ3NmLWRlbW8nLFxuICAgIGRlc2NyaXB0aW9uOiAnSGVsbG8nLFxuICAgIHRhZ3M6IHtcbiAgICAgIGtpbmQ6ICd3ZWInLFxuICAgICAgY29tcGxleGl0eTogJ21vZGVyYXRlJyxcbiAgICAgIGNhdGVnb3J5OiAnY2xvdWQnLFxuICAgIH0sXG4gICAgaW5pdGlhbGl6ZToge1xuICAgICAgbW9kZWxzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnYm9hdml6dGEtY3B1JyxcbiAgICAgICAgICBraW5kOiAncGx1Z2luJyxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIGFsbG9jYXRpb246ICdMSU5FQVInLFxuICAgICAgICAgICAgdmVyYm9zZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIGdyYXBoOiB7XG4gICAgICBjaGlsZHJlbjoge1xuICAgICAgICAnZnJvbnQtZW5kJzoge1xuICAgICAgICAgIHBpcGVsaW5lOiBbJ2JvYXZpenRhLWNwdSddLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgJ2JvYXZpenRhLWNwdSc6IHtcbiAgICAgICAgICAgICAgJ2NvcmUtdW5pdHMnOiAyNCxcbiAgICAgICAgICAgICAgcHJvY2Vzc29yOiAnSW50ZWzCriBDb3Jl4oSiIGk3LTExODVHNycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDctMDZUMDA6MDAnLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzYwMCxcbiAgICAgICAgICAgICAgJ2NwdS11dGlsJzogMTguMzkyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGltZXN0YW1wOiAnMjAyMy0wOC0wNlQwMDowMCcsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAgICAgICAnY3B1LXV0aWwnOiAxNixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICBkZXNjcmliZSgnaW5pdCBTdXBlcmNvbXB1dGVyOiAnLCAoKSA9PiB7XG4gICAgaXQoJ2luaXRpYWxpemVzIG9iamVjdCB3aXRoIHJlcXVpcmVkIHByb3BlcnRpZXMuJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW1wbDogYW55ID0ge307XG4gICAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IG5ldyBNb2RlbHNVbml2ZXJzZSgpO1xuICAgICAgY29uc3QgYXRlcnVpID0gbmV3IFN1cGVyY29tcHV0ZXIoaW1wbCwgbW9kZWxzSGFuZGJvb2spO1xuXG4gICAgICBleHBlY3QoYXRlcnVpKS50b0hhdmVQcm9wZXJ0eSgnY29tcHV0ZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29tcHV0ZSgpOiAnLCAoKSA9PiB7XG4gICAgY29uc3QgaW1wbFdpdGhOZXN0ZWRDaGlsZHJlbjogYW55ID0ge1xuICAgICAgbmFtZTogJ250dC1kYXRhLW9uLXByZW1pc2UnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vR3JlZW4tU29mdHdhcmUtRm91bmRhdGlvbi9zY2ktZ3VpZGUvYmxvYi9kZXYvdXNlLWNhc2Utc3VibWlzc2lvbnMvbnR0ZGF0dGEtT24tUHJlbWlzZS1XZWItc3lzdGVtLm1kJyxcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAga2luZDogJ3dlYicsXG4gICAgICAgIGNvbXBsZXhpdHk6ICdtb2RlcmF0ZScsXG4gICAgICAgIGNhdGVnb3J5OiAnb24tcHJlbWlzZScsXG4gICAgICB9LFxuICAgICAgaW5pdGlhbGl6ZToge1xuICAgICAgICBtb2RlbHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnc2NpLWUnLFxuICAgICAgICAgICAga2luZDogJ3BsdWdpbicsXG4gICAgICAgICAgICB2ZXJib3NlOiBmYWxzZSxcbiAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3NjaS1tJyxcbiAgICAgICAgICAgIGtpbmQ6ICdwbHVnaW4nLFxuICAgICAgICAgICAgdmVyYm9zZTogZmFsc2UsXG4gICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdzY2ktbycsXG4gICAgICAgICAgICBraW5kOiAncGx1Z2luJyxcbiAgICAgICAgICAgIHZlcmJvc2U6IGZhbHNlLFxuICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBncmFwaDoge1xuICAgICAgICBjaGlsZHJlbjoge1xuICAgICAgICAgICdsYXllci0zLXN3aXRjaCc6IHtcbiAgICAgICAgICAgIHBpcGVsaW5lOiBbJ3NjaS1lJywgJ3NjaS1tJywgJ3NjaS1vJ10sXG4gICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgJ3NjaS1tJzoge1xuICAgICAgICAgICAgICAgIHRlOiAyNTEwMDAsXG4gICAgICAgICAgICAgICAgdGlyOiAzNjAwLFxuICAgICAgICAgICAgICAgIGVsOiAxMjYxNDQwMDAsXG4gICAgICAgICAgICAgICAgcnI6IDEsXG4gICAgICAgICAgICAgICAgdG9yOiAxLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAnc2NpLW8nOiB7XG4gICAgICAgICAgICAgICAgJ2dyaWQtY2FyYm9uLWludGVuc2l0eSc6IDQ1NyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDctMDZUMDA6MDAnLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzNjAwLFxuICAgICAgICAgICAgICAgICdmaXZlLW1pbi1pbnB1dC1yYXRlJzogMTAwLFxuICAgICAgICAgICAgICAgICdmaXZlLW1pbi1vdXRwdXQtcmF0ZSc6IDEwMCxcbiAgICAgICAgICAgICAgICAnZ3JpZC1jYXJib24taW50ZW5zaXR5JzogNDU3LFxuICAgICAgICAgICAgICAgICdlbmVyZ3ktbmV0d29yayc6IDAuMDA0OTYsXG4gICAgICAgICAgICAgICAgcmVxdWVzdHM6IDM4MDMyNzQwLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgICdsYXllci0yLXN3aXRjaCc6IHtcbiAgICAgICAgICAgIHBpcGVsaW5lOiBbJ3NjaS1lJywgJ3NjaS1tJywgJ3NjaS1vJ10sXG4gICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgJ3NjaS1tJzoge1xuICAgICAgICAgICAgICAgIHRlOiAyNTEwMDAsXG4gICAgICAgICAgICAgICAgdGlyOiAzNjAwLFxuICAgICAgICAgICAgICAgIGVsOiAxMjYxNDQwMDAsXG4gICAgICAgICAgICAgICAgcnI6IDEsXG4gICAgICAgICAgICAgICAgdG9yOiAxLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAnc2NpLW8nOiB7XG4gICAgICAgICAgICAgICAgZ3JpZF9jaTogNDU3LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiB7XG4gICAgICAgICAgICAgICdzd2l0Y2gtMSc6IHtcbiAgICAgICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiAnMjAyMy0wNy0wNlQwMDowMCcsXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxLFxuICAgICAgICAgICAgICAgICAgICAnZW5lcmd5LW5ldHdvcmsnOiAwLjAwMDgxMSxcbiAgICAgICAgICAgICAgICAgICAgJ2dyaWQtY2FyYm9uLWludGVuc2l0eSc6IDQ1NyxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHM6IDM4MDMyNzQwLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAnc3dpdGNoLTInOiB7XG4gICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDctMDZUMDA6MDAnLFxuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMSxcbiAgICAgICAgICAgICAgICAgICAgJ2VuZXJneS1uZXR3b3JrJzogMCxcbiAgICAgICAgICAgICAgICAgICAgJ2dyaWQtY2FyYm9uLWludGVuc2l0eSc6IDQ1NyxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHM6IDM4MDMyNzQwLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAnc3dpdGNoLTMnOiB7XG4gICAgICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogJzIwMjMtMDctMDZUMDA6MDAnLFxuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMSxcbiAgICAgICAgICAgICAgICAgICAgJ2VuZXJneS1uZXR3b3JrJzogMC4wMDA5NTUsXG4gICAgICAgICAgICAgICAgICAgICdncmlkLWNhcmJvbi1pbnRlbnNpdHknOiA0NTcsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzOiAzODAzMjc0MCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ3N3aXRjaC00Jzoge1xuICAgICAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6ICcyMDIzLTA3LTA2VDAwOjAwJyxcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDEsXG4gICAgICAgICAgICAgICAgICAgICdlbmVyZ3ktbmV0d29yayc6IDEuMTRlLTgsXG4gICAgICAgICAgICAgICAgICAgICdncmlkLWNhcmJvbi1pbnRlbnNpdHknOiA0NTcsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzOiAzODAzMjc0MCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGl0KCdyZWplY3RzIHdpdGggbW9kZWwgaXMgbm90IGluaXRpYWxpemVkLicsIGFzeW5jICgpID0+IHtcbiAgICAgIGV4cGVjdC5hc3NlcnRpb25zKDIpO1xuXG4gICAgICBjb25zdCBtb2RlbHNIYW5kYm9vayA9IG5ldyBNb2RlbHNVbml2ZXJzZSgpO1xuICAgICAgY29uc3QgYXRlcnVpID0gbmV3IFN1cGVyY29tcHV0ZXIoaW1wbCwgbW9kZWxzSGFuZGJvb2spO1xuXG4gICAgICBjb25zdCBleHBlY3RlZE1lc3NhZ2UgPSBOT1RfSU5JVElBTElaRURfTU9ERUwoJ2JvYXZpenRhLWNwdScpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhdGVydWkuY29tcHV0ZSgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IpLnRvQmVJbnN0YW5jZU9mKEVycm9yKTtcbiAgICAgICAgICBleHBlY3QoZXJyb3IubWVzc2FnZSkudG9CZShleHBlY3RlZE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnYXBwbGllcyBjb21wdXRpbmcgdG8gZ2l2ZW4gaW1wbC4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBleHBlY3QuYXNzZXJ0aW9ucygxKTtcblxuICAgICAgY29uc3QgbW9kZWxzSGFuZGJvb2sgPSBuZXcgTW9kZWxzVW5pdmVyc2UoKTtcbiAgICAgIGltcGwuaW5pdGlhbGl6ZS5tb2RlbHMuZm9yRWFjaCgobW9kZWw6IGFueSkgPT5cbiAgICAgICAgbW9kZWxzSGFuZGJvb2sud3JpdGVEb3duKG1vZGVsKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgYXRlcnVpQ29tcHV0ZXIgPSBuZXcgU3VwZXJjb21wdXRlcihpbXBsLCBtb2RlbHNIYW5kYm9vayk7XG4gICAgICBjb25zdCBvbXBsID0gYXdhaXQgYXRlcnVpQ29tcHV0ZXIuY29tcHV0ZSgpO1xuXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IG9tcGwuZ3JhcGguY2hpbGRyZW47XG4gICAgICBjb25zdCBjaGlsZHJlbk5hbWVzID0gT2JqZWN0LmtleXMoY2hpbGRyZW4pO1xuXG4gICAgICBleHBlY3Qob21wbC5ncmFwaC5jaGlsZHJlbltjaGlsZHJlbk5hbWVzWzBdXSkudG9IYXZlUHJvcGVydHkoJ291dHB1dHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdhcHBsaWVzIGNvbXB1dGluZyB0byBuZXN0ZWQgY2hpbGRyZW4gY29tcG9uZW50cy4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBleHBlY3QuYXNzZXJ0aW9ucyg0KTtcblxuICAgICAgY29uc3QgbW9kZWxzSGFuZGJvb2sgPSBuZXcgTW9kZWxzVW5pdmVyc2UoKTtcbiAgICAgIGltcGxXaXRoTmVzdGVkQ2hpbGRyZW4uaW5pdGlhbGl6ZS5tb2RlbHMuZm9yRWFjaCgobW9kZWw6IGFueSkgPT5cbiAgICAgICAgbW9kZWxzSGFuZGJvb2sud3JpdGVEb3duKG1vZGVsKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgYXRlcnVpQ29tcHV0ZXIgPSBuZXcgU3VwZXJjb21wdXRlcihcbiAgICAgICAgaW1wbFdpdGhOZXN0ZWRDaGlsZHJlbixcbiAgICAgICAgbW9kZWxzSGFuZGJvb2tcbiAgICAgICk7XG4gICAgICBjb25zdCBvbXBsID0gYXdhaXQgYXRlcnVpQ29tcHV0ZXIuY29tcHV0ZSgpO1xuXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IG9tcGwuZ3JhcGguY2hpbGRyZW47XG4gICAgICBjb25zdCBjaGlsZHJlbk5hbWVzID0gT2JqZWN0LmtleXMoY2hpbGRyZW4pO1xuICAgICAgY29uc3Qgb25lV2l0aE5lc3RlZCA9IGNoaWxkcmVuTmFtZXNbMV07XG5cbiAgICAgIGNvbnN0IG5lc3RlZENoaWxkcmVuOiBhbnkgPSBjaGlsZHJlbltvbmVXaXRoTmVzdGVkXS5jaGlsZHJlbjtcblxuICAgICAgT2JqZWN0LmtleXMobmVzdGVkQ2hpbGRyZW4pLmZvckVhY2goKGNoaWxkOiBhbnkpID0+IHtcbiAgICAgICAgZXhwZWN0KG5lc3RlZENoaWxkcmVuW2NoaWxkXSkudG9IYXZlUHJvcGVydHkoJ291dHB1dHMnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
package/build/config/config.d.ts
CHANGED
|
@@ -1,29 +1,6 @@
|
|
|
1
1
|
import { ArgumentConfig } from 'ts-command-line-args';
|
|
2
2
|
import { impactProcessArgs } from '../types/process-args';
|
|
3
3
|
export declare const CONFIG: {
|
|
4
|
-
MODEL_IDS: {
|
|
5
|
-
AZURE_IMPORTER: string;
|
|
6
|
-
BOAVIZTA_CPU: string;
|
|
7
|
-
BOAVIZTA_CLOUD: string;
|
|
8
|
-
AVEVA: string;
|
|
9
|
-
EMEM: string;
|
|
10
|
-
ESHOPPEN: string;
|
|
11
|
-
ESHOPPEN_CPU: string;
|
|
12
|
-
ESHOPPEN_MEM: string;
|
|
13
|
-
ESHOPPEN_NET: string;
|
|
14
|
-
SCI_ACCENTURE: string;
|
|
15
|
-
CCF: string;
|
|
16
|
-
SCI: string;
|
|
17
|
-
SCI_E: string;
|
|
18
|
-
SCI_M: string;
|
|
19
|
-
SCI_O: string;
|
|
20
|
-
SHELL_MODEL: string;
|
|
21
|
-
TDP: string;
|
|
22
|
-
TEADS_AWS: string;
|
|
23
|
-
TEADS_CURVE: string;
|
|
24
|
-
WATT_TIME: string;
|
|
25
|
-
CLOUD_INSTANCE_METADATA: string;
|
|
26
|
-
};
|
|
27
4
|
impact: {
|
|
28
5
|
ARGS: ArgumentConfig<impactProcessArgs>;
|
|
29
6
|
HELP: string;
|