57 lines
2.0 KiB
JavaScript
57 lines
2.0 KiB
JavaScript
// Copyright (c) Vitaliy Filippov, 2019+
|
|
// License: VNPL-1.1 (see README.md for details)
|
|
|
|
const LPOptimizer = require('./lp-optimizer.js');
|
|
|
|
const osd_tree = {
|
|
100: { 110: { 111: 1, 112: 1 }, 120: { 121: 1, 122: 1 } },
|
|
200: { 210: { 211: 1, 212: 1 }, 220: { 221: 1, 222: 1 } },
|
|
300: { 310: { 311: 1, 312: 1 }, 320: { 321: 1, 322: 1 } },
|
|
400: { 410: { 411: 1, 412: 1 }, 420: { 421: 1, 422: 1 } },
|
|
500: { 510: { 511: 1, 512: 1 }, 520: { 521: 1, 522: 1 } },
|
|
};
|
|
|
|
const osd_tree2 = {
|
|
100: { 111: 1, 112: 1, 121: 1, 122: 1 },
|
|
200: { 211: 1, 212: 1, 221: 1, 222: 1 },
|
|
300: { 311: 1, 312: 1, 321: 1, 322: 1 },
|
|
400: { 411: 1, 412: 1, 421: 1, 422: 1 },
|
|
500: { 511: 1, 512: 1, 521: 1, 522: 1 },
|
|
};
|
|
|
|
const osd_tree3 = {
|
|
100: { 111: 1, 112: 1, 121: 1, 122: 1 },
|
|
200: { 211: 1, 212: 1, 221: 1, 222: 1 },
|
|
300: { 311: 1, 312: 1, 321: 1, 322: 1 },
|
|
400: { 411: 1, 412: 1, 421: 1, 422: 1 },
|
|
500: { 511: 1 },
|
|
};
|
|
|
|
async function run()
|
|
{
|
|
let r;
|
|
console.log(r = LPOptimizer.random_hier_combinations(osd_tree, [ 3, 2, 1 ], 10000, false, true));
|
|
console.log(r = LPOptimizer.random_hier_combinations(osd_tree2, [ 3, 2 ], 0, false, true));
|
|
// Will contain 'Z':
|
|
console.log(r = LPOptimizer.random_combinations(osd_tree2, 6, 0, true));
|
|
console.log(r = LPOptimizer.extract_tree_levels(
|
|
{ level: 'dc', children: [
|
|
{ level: 'rack', children: [
|
|
{ level: 'host', children: [
|
|
{ level: 'osd', id: 'OSD5', size: 10 },
|
|
] },
|
|
] },
|
|
{ level: 'osd', id: 'OSD10', size: 10 },
|
|
] },
|
|
[ 'rack', 'osd' ],
|
|
{ dc: 1, rack: 2, host: 3, osd: 4 }
|
|
));
|
|
if (JSON.stringify(r) != '{"rack1":{"OSD5":10},"rack2":{"OSD10":10}}')
|
|
throw new Error('extract_tree_levels failed');
|
|
// should not contain Z:
|
|
console.log(r = LPOptimizer.random_hier_combinations(osd_tree3, [ 3, 2 ], 0, false, true));
|
|
console.log('OK');
|
|
}
|
|
|
|
run().catch(console.error);
|