foundation-server
Version:
An extremely efficient, highly scalable, all-in-one, easy to setup cryptocurrency mining pool
750 lines (665 loc) • 77.5 kB
JavaScript
/*
*
* Utils (Updated)
*
*/
/* eslint-disable-next-line no-unused-vars */
const colors = require('colors');
const os = require('os');
const utils = require('../main/utils');
////////////////////////////////////////////////////////////////////////////////
describe('Test utility functionality', () => {
test('Test implemented calculateAverage', () => {
const data = [{ luck: 101.43 }, { luck: 19.47 }, { luck: 47.56 }, { luck: 87.13 },
{ luck: 423.71 }, { luck: 114.65 }, { luck: 237.15 }, { luck: 12.11 }, { luck: 54.67 },
{ luck: 667.10 }, { luck: 9.14 }, { luck: 17.23 }, { luck: 551.41 }, { luck: 67.79 }];
expect(utils.calculateAverage(data, 'luck')).toBe(172.18);
expect(utils.calculateAverage([], 'luck')).toBe(0);
expect(utils.calculateAverage([{ luck: null }], 'luck')).toBe(0);
});
test('Test implemented checkNumber', () => {
expect(utils.checkNumber('1')).toBe(true);
expect(utils.checkNumber('test')).toBe(false);
expect(utils.checkNumber('2.05')).toBe(true);
expect(utils.checkNumber('73')).toBe(true);
expect(utils.checkNumber('73a')).toBe(false);
expect(utils.checkNumber(5353)).toBe(false);
});
test('Test implemented checkSoloMining [1]', () => {
const data = { 'port': '3001' };
const config = { 'ports': [{ 'port': '3001', 'type': 'solo' }]};
expect(utils.checkSoloMining(config, data)).toBe(true);
});
test('Test implemented checkSoloMining [2]', () => {
const data = { 'ports': { '3001': '' }};
const config = { 'ports': [{ 'port': '3001', 'type': 'shared' }]};
expect(utils.checkSoloMining(config, data)).toBe(false);
});
test('Test implemented checkSoloMining [3]', () => {
const data = { 'port': '3001' };
const config = { 'ports': [{ 'port': '3001' }]};
expect(utils.checkSoloMining(config, data)).toBe(false);
});
test('Test implemented checkSoloMining [4]', () => {
const data = { 'port': '3002' };
const config = { 'ports': [{ 'port': '3001', 'type': 'solo' }]};
expect(utils.checkSoloMining(config, data)).toBe(false);
});
test('Test implemented coinsRound', () => {
expect(utils.coinsRound(10.103091, 2)).toBe(10.10);
expect(utils.coinsRound(198.1313, 3)).toBe(198.131);
expect(utils.coinsRound(2020.31933, 2)).toBe(2020.32);
expect(utils.coinsRound(18.1131, 1)).toBe(18.1);
expect(utils.coinsRound(461.931, 0)).toBe(462);
});
test('Test implemented coinsToSatoshis', () => {
expect(utils.coinsToSatoshis(5, 100)).toBe(500);
expect(utils.coinsToSatoshis(8, 1000)).toBe(8000);
expect(utils.coinsToSatoshis(13, 1000)).toBe(13000);
expect(utils.coinsToSatoshis(100, 10)).toBe(1000);
expect(utils.coinsToSatoshis(15, 100)).toBe(1500);
});
test('Test implemented combineMiners [1]', () => {
const shared = [
'{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a","solo":false,"work":8}',
'{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a","solo":false,"work":8}',
'{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}'];
const solo = [
'{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}'];
expect(utils.combineMiners(shared, solo)).toBe(2);
});
test('Test implemented combineMiners [2]', () => {
const shared = [
'{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a","solo":false,"work":8}',
'{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a","solo":false,"work":8}',
'{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}'];
expect(utils.combineMiners(shared)).toBe(1);
});
test('Test implemented combineMiners [3]', () => {
const solo = [
'{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}'];
expect(utils.combineMiners(null, solo)).toBe(1);
});
test('Test implemented combineMiners [4]', () => {
expect(utils.combineMiners(null)).toBe(0);
});
test('Test implemented countMiners [1]', () => {
const shares = [
{ time: 1623901893182, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 },
{ time: 1623901919389, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 },
{ time: 1623901929800, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 },
{ time: 1623901944054, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 }];
expect(utils.countMiners(shares)).toBe(1);
});
test('Test implemented countMiners [2]', () => {
const shares = [
{ time: 1623901893182, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1', solo: false, work: 8 },
{ time: 1623901919389, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 },
{ time: 1623901929800, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1', solo: false, work: 8 },
{ time: 1623901944054, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 }];
expect(utils.countMiners(shares)).toBe(1);
});
test('Test implemented countMiners [3]', () => {
const shares = [
{ time: 1623901893182, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1', solo: false, work: 8 },
{ time: 1623901919389, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1', solo: false, work: 8 },
{ time: 1623901929800, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1', solo: false, work: 8 },
{ time: 1623901944054, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3d.worker1', solo: false, work: 8 }];
expect(utils.countMiners(shares)).toBe(4);
});
test('Test implemented countMiners [4]', () => {
const shares = [
{ time: 1623901893182, solo: false, work: 8 },
{ time: 1623901919389, solo: false, work: 8 },
{ time: 1623901929800, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1', solo: false, work: 8 },
{ time: 1623901944054, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3d.worker1', solo: false, work: 8 }];
expect(utils.countMiners(shares)).toBe(2);
});
test('Test implemented countMiners [5]', () => {
expect(utils.countMiners(null)).toBe(0);
});
test('Test implemented countOccurences', () => {
const array = [1, 5, 3, 2, 1, 2, 1, 1, 2, 3, 1];
expect(utils.countOccurences(array, 1)).toBe(5);
expect(utils.countOccurences(array, 2)).toBe(3);
expect(utils.countOccurences(array, 5)).toBe(1);
});
test('Test implemented combineWorkers [1]', () => {
const shared = [
'{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a","solo":false,"work":8}',
'{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a","solo":false,"work":8}',
'{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}'];
const solo = [
'{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}'];
expect(utils.combineWorkers(shared, solo)).toBe(3);
});
test('Test implemented combineWorkers [2]', () => {
const shared = [
'{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a","solo":false,"work":8}',
'{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a","solo":false,"work":8}',
'{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}'];
expect(utils.combineWorkers(shared)).toBe(2);
});
test('Test implemented combineWorkers [3]', () => {
const solo = [
'{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}'];
expect(utils.combineWorkers(null, solo)).toBe(2);
});
test('Test implemented combineWorkers [4]', () => {
expect(utils.combineWorkers(null)).toBe(0);
});
test('Test implemented countWorkers [1]', () => {
const shares = [
{ time: 1623901893182, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 },
{ time: 1623901919389, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 },
{ time: 1623901929800, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 },
{ time: 1623901944054, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 }];
expect(utils.countWorkers(shares)).toBe(1);
});
test('Test implemented countWorkers [2]', () => {
const shares = [
{ time: 1623901893182, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1', solo: false, work: 8 },
{ time: 1623901919389, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 },
{ time: 1623901929800, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1', solo: false, work: 8 },
{ time: 1623901944054, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2', solo: false, work: 8 }];
expect(utils.countWorkers(shares)).toBe(2);
});
test('Test implemented countWorkers [3]', () => {
const shares = [
{ time: 1623901893182, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1', solo: false, work: 8 },
{ time: 1623901919389, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1', solo: false, work: 8 },
{ time: 1623901929800, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1', solo: false, work: 8 },
{ time: 1623901944054, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3d.worker1', solo: false, work: 8 }];
expect(utils.countWorkers(shares)).toBe(4);
});
test('Test implemented countWorkers [4]', () => {
const shares = [
{ time: 1623901893182, solo: false, work: 8 },
{ time: 1623901919389, solo: false, work: 8 },
{ time: 1623901929800, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1', solo: false, work: 8 },
{ time: 1623901944054, worker: 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3d.worker1', solo: false, work: 8 }];
expect(utils.countWorkers(shares)).toBe(2);
});
test('Test implemented countWorkers [5]', () => {
expect(utils.countWorkers(null)).toBe(0);
});
test('Test implemented countProcessForks [1]', () => {
const config = { 'clustering': { 'enabled': false, 'forks': 'auto' }};
expect(utils.countProcessForks(config)).toBe(1);
});
test('Test implemented countProcessForks [2]', () => {
const config = { 'clustering': { 'enabled': true, 'forks': 'auto' }};
expect(utils.countProcessForks(config)).toBe(os.cpus().length);
});
test('Test implemented countProcessForks [3]', () => {
const config = { 'clustering': { 'enabled': true, 'forks': 2 }};
expect(utils.countProcessForks(config)).toBe(2);
});
test('Test implemented countProcessForks [4]', () => {
const config = { 'clustering': { 'enabled': true }};
expect(utils.countProcessForks(config)).toBe(1);
});
test('Test implemented listBlocks [1]', () => {
const blocks = [
'{"time":1623901893182,"height":123456,"hash":"8de06f6e73dbff454023a95f29f87c3","reward":123,"transaction":"bc0b3f953ff408cfb298b034daf5ecd480","work":234,"luck":34.56,"worker":"miner2","solo":false,"round":"12345678"}',
'{"time":1623901893183,"height":123457,"hash":"8de0623a95f29f6e73dbff4540f87c3","reward":123,"transaction":"b53ff408cfb298c0b3f9b034daf5ecd480","work":234,"luck":34.56,"worker":"miner1","solo":false,"round":"12345679"}',
'{"time":1623901893184,"height":123458,"hash":"8de0bff4540236f6e73da95f29f87c3","reward":123,"transaction":"bc0b3f4daf5ecd4953ff408cfb298b0380","work":234,"luck":34.56,"worker":"miner1","solo":false,"round":"12345680"}'];
const expected = [
{'hash': '8de0bff4540236f6e73da95f29f87c3', 'height': 123458, 'luck': 34.56, 'reward': 123, 'round': '12345680', 'solo': false, 'time': 1623901893184, 'transaction': 'bc0b3f4daf5ecd4953ff408cfb298b0380', 'work': 234, 'worker': 'miner1'},
{'hash': '8de0623a95f29f6e73dbff4540f87c3', 'height': 123457, 'luck': 34.56, 'reward': 123, 'round': '12345679', 'solo': false, 'time': 1623901893183, 'transaction': 'b53ff408cfb298c0b3f9b034daf5ecd480', 'work': 234, 'worker': 'miner1'}];
const processed = utils.listBlocks(blocks, 'miner1');
expect(processed).toStrictEqual(expected);
});
test('Test implemented listBlocks [2]', () => {
const blocks = [
'{"time":1623901893182,"height":123456,"hash":"8de06f6e73dbff454023a95f29f87c3","reward":123,"transaction":"bc0b3f953ff408cfb298b034daf5ecd480","work":234,"luck":34.56,"worker":"miner2","solo":false,"round":"12345678"}',
'{"time":1623901893183,"height":123457,"hash":"8de0623a95f29f6e73dbff4540f87c3","reward":123,"transaction":"b53ff408cfb298c0b3f9b034daf5ecd480","work":234,"luck":34.56,"worker":"miner1","solo":false,"round":"12345679"}',
'{"time":1623901893184,"height":123458,"hash":"8de0bff4540236f6e73da95f29f87c3","reward":123,"transaction":"bc0b3f4daf5ecd4953ff408cfb298b0380","work":234,"luck":34.56,"worker":"miner1","solo":false,"round":"12345680"}'];
const processed = utils.listBlocks(blocks, 'miner3');
expect(processed).toStrictEqual([]);
});
test('Test implemented listBlocks [3]', () => {
const processed = utils.listBlocks(null, 'miner3');
expect(processed).toStrictEqual([]);
});
test('Test implemented listIdentifiers [1]', () => {
const shares = [
'{"time":1623901893182,"identifier":"","worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}'];
const expected = [''];
const processed = utils.listIdentifiers(shares);
expect(processed).toStrictEqual(expected);
});
test('Test implemented listIdentifiers [2]', () => {
const shares = [
'{"time":1623901893182,"identifier":"a","worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}',
'{"time":1623901893182,"identifier":"b","worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}'];
const expected = ['a', 'b'];
const processed = utils.listIdentifiers(shares);
expect(processed).toStrictEqual(expected);
});
test('Test implemented listIdentifiers [3]', () => {
const shares = [
'{"time":1623901893182,"identifier":"a","worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}',
'{"time":1623901893182,"identifier":"","worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}'];
const expected = ['a', ''];
const processed = utils.listIdentifiers(shares);
expect(processed).toStrictEqual(expected);
});
test('Test implemented listIdentifiers [4]', () => {
const shares = [
'{"time":1623901893182,"identifier":"a","worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}',
'{"time":1623901893182,"identifier":"a","worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}'];
const expected = ['a'];
const processed = utils.listIdentifiers(shares);
expect(processed).toStrictEqual(expected);
});
test('Test implemented listIdentifiers [5]', () => {
const processed = utils.listIdentifiers(null);
expect(processed).toStrictEqual(['']);
});
test('Test implemented listIdentifiers [6]', () => {
const shares = [
'{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}'];
const expected = [''];
const processed = utils.listIdentifiers(shares);
expect(processed).toStrictEqual(expected);
});
test('Test implemented listWorkers [1]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}'};
const expected = ['tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2'];
const processed = utils.listWorkers(shares);
expect(processed).toStrictEqual(expected);
});
test('Test implemented listWorkers [2]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2': '{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2","solo":false,"work":8}'};
const expected = [
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2'];
const processed = utils.listWorkers(shares);
expect(processed).toStrictEqual(expected);
});
test('Test implemented listWorkers [3]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2': '{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2","solo":false,"work":8}'};
const expected = [
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2'];
const processed = utils.listWorkers(shares, 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a');
expect(processed).toStrictEqual(expected);
});
test('Test implemented listWorkers [4]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2': '{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2","solo":false,"work":8}'};
const expected = ['tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1'];
const processed = utils.listWorkers(shares, 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1');
expect(processed).toStrictEqual(expected);
});
test('Test implemented listWorkers [5]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2': '{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2","solo":false,"work":8}'};
const expected = ['tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1'];
const processed = utils.listWorkers(shares, 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1');
expect(processed).toStrictEqual(expected);
});
test('Test implemented listWorkers [6]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623901944054,"solo":false,"work":8}'};
const expected = ['tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1'];
const processed = utils.listWorkers(shares, 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a');
expect(processed).toStrictEqual(expected);
});
test('Test implemented listWorkers [7]', () => {
expect(utils.listWorkers(null)).toStrictEqual([]);
});
test('Test implemented loggerSeverity', () => {
expect(utils.loggerSeverity.debug).toBe(1);
expect(utils.loggerSeverity.warning).toBe(2);
expect(utils.loggerSeverity.error).toBe(3);
expect(utils.loggerSeverity.special).toBe(4);
});
test('Test implemented loggerColors', () => {
expect(utils.loggerColors('debug', `${'test'}`)).toBe('test'.green);
expect(utils.loggerColors('warning', `${'test'}`)).toBe('test'.yellow);
expect(utils.loggerColors('error', `${'test'}`)).toBe('test'.red);
expect(utils.loggerColors('special', `${'test'}`)).toBe('test'.cyan);
expect(utils.loggerColors('other', `${'test'}`)).toBe('test'.italic);
});
test('Test implemented processBlocks', () => {
const blocks = [
'{"time":1623862569773,"height":1928702,"hash":"1a26babf21149764100660b6e75bff1e6d34926aa52366dc8323fa7456378943","reward":1250008474,"transaction":"61f857486100d35f5ccb447f55847924d463f7507c54882e5f518c6acdee7328","work":8,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false}',
'{"time":1623901893184,"height":1928855,"hash":"f5026aa6116665d3e18a4219d9ae93dab3a016feee7921726258bedee418af8d","reward":1250006928,"transaction":"2c81c6aed147484ca41cd977338826875b5e142f94321b1a508b71f29e515a63","work":8,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false}'];
const expected = [
{'hash': 'f5026aa6116665d3e18a4219d9ae93dab3a016feee7921726258bedee418af8d', 'height': 1928855, 'reward': 1250006928, 'solo': false, 'time': 1623901893184, 'transaction': '2c81c6aed147484ca41cd977338826875b5e142f94321b1a508b71f29e515a63', 'work': 8, 'worker': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a'},
{'hash': '1a26babf21149764100660b6e75bff1e6d34926aa52366dc8323fa7456378943', 'height': 1928702, 'reward': 1250008474, 'solo': false, 'time': 1623862569773, 'transaction': '61f857486100d35f5ccb447f55847924d463f7507c54882e5f518c6acdee7328', 'work': 8, 'worker': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a'}];
const processed = utils.processBlocks(blocks);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processHistorical [1]', () => {
const history = [
'{"time":1644811914019,"hashrate":{"shared":0,"solo":0},"network":{"difficulty":"30.92082613006793","hashrate":"238159035.4426813"},"status":{"miners":0,"workers":0}}',
'{"time":1644811916016,"hashrate":{"shared":0,"solo":0},"network":{"difficulty":"30.92082613006793","hashrate":"238159035.4426813"},"status":{"miners":0,"workers":0}}',
'{"time":1644811918017,"hashrate":{"shared":0,"solo":0},"network":{"difficulty":"30.92082613006793","hashrate":"238159035.4426813"},"status":{"miners":0,"workers":0}}'];
const processed = utils.processHistorical(history);
const expected = [
{'hashrate': {'shared': 0, 'solo': 0}, 'network': {'difficulty': '30.92082613006793', 'hashrate': '238159035.4426813'}, 'status': {'miners': 0, 'workers': 0}, 'time': 1644811914019},
{'hashrate': {'shared': 0, 'solo': 0}, 'network': {'difficulty': '30.92082613006793', 'hashrate': '238159035.4426813'}, 'status': {'miners': 0, 'workers': 0}, 'time': 1644811916016},
{'hashrate': {'shared': 0, 'solo': 0}, 'network': {'difficulty': '30.92082613006793', 'hashrate': '238159035.4426813'}, 'status': {'miners': 0, 'workers': 0}, 'time': 1644811918017}];
expect(processed).toStrictEqual(expected);
});
test('Test implemented processHistorical [2]', () => {
expect(utils.processHistorical(null)).toStrictEqual([]);
});
test('Test implemented processIdentifiers [1]', () => {
const multiplier = 10;
const hashrateWindow = 10;
const processed = utils.processIdentifiers(null, multiplier, hashrateWindow);
const expected = [];
expect(processed).toStrictEqual(expected);
});
test('Test implemented processIdentifiers [2]', () => {
const shares = [
'{"time":1623901893182,"identifier":"a","worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","times":20.15,"solo":false,"types":{"valid":1,"invalid":0,"stale":0},"work":8}'];
const multiplier = 10;
const hashrateWindow = 10;
const processed = utils.processIdentifiers(shares, multiplier, hashrateWindow);
const expected = [{'hashrate': 8,'identifier':'a'}];
expect(processed).toStrictEqual(expected);
});
test('Test implemented processLuck [1]', () => {
const blocks = ['{"luck":101.43}', '{"luck":19.47}', '{"luck":47.56}', '{"luck":87.13}',
'{"luck":423.71}', '{"luck":114.65}', '{"luck":237.15}', '{"luck":12.11}', '{"luck":54.67}',
'{"luck":667.10}', '{"luck":9.14}', '{"luck":17.23}', '{"luck":551.41}', '{"luck":67.79}'];
const processed = utils.processLuck(blocks, []);
expect(processed.luck1).toBe(101.43);
expect(processed.luck10).toBe(176.5);
expect(processed.luck100).toBe(172.18);
});
test('Test implemented processLuck [2]', () => {
const processed = utils.processLuck([], []);
expect(processed.luck1).toBe(0);
expect(processed.luck10).toBe(0);
expect(processed.luck100).toBe(0);
});
test('Test implemented processLuck [3]', () => {
const processed = utils.processLuck(['{"luck":101.43}'], []);
expect(processed.luck1).toBe(101.43);
expect(processed.luck10).toBe(101.43);
expect(processed.luck100).toBe(101.43);
});
test('Test implemented processLuck [4]', () => {
const pending = ['{"luck":101.43}', '{"luck":19.47}', '{"luck":47.56}', '{"luck":87.13}',
'{"luck":423.71}', '{"luck":114.65}', '{"luck":237.15}', '{"luck":12.11}', '{"luck":54.67}',
'{"luck":667.10}', '{"luck":9.14}', '{"luck":17.23}', '{"luck":551.41}', '{"luck":67.79}'];
const confirmed = ['{"luck":222.55}'];
const processed = utils.processLuck(pending, confirmed);
expect(processed.luck1).toBe(101.43);
expect(processed.luck10).toBe(176.5);
expect(processed.luck100).toBe(175.54);
});
test('Test implemented processMiners [1]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","times":20.15,"solo":false,"types":{"valid":1,"invalid":0,"stale":0},"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1': '{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","times":18.75,"solo":false,"types":{"valid":1,"invalid":0,"stale":0},"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1': '{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1","times":16.14,"solo":false,"types":{"valid":1,"invalid":1,"stale":0},"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2': '{"time":1623901949876,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2","times":75.15,"solo":false,"types":{"valid":1,"invalid":0,"stale":0},"work":8}'};
const hashrate = [
'{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","solo":false,"work":8}',
'{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1","solo":false,"work":8}',
'{"time":1623901949876,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2","solo":false,"work":8}'];
const expected = [
{"time": 1623901893182, 'effort': null, 'hashrate': 0.02666666666666667, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a', 'shares': {'invalid': 0, 'stale': 0, 'valid': 1}, 'times': 20.15, 'work': 8},
{"time": 1623901919389, 'effort': null, 'hashrate': 0.02666666666666667, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b', 'shares': {'invalid': 0, 'stale': 0, 'valid': 1}, 'times': 18.75, 'work': 8},
{"time": 1623901949876, 'effort': null, 'hashrate': 0.05333333333333334, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c', 'shares': {'invalid': 1, 'stale': 0, 'valid': 2}, 'times': 75.15, 'work': 16}];
const processed = utils.processMiners(shares, hashrate, 1, 300, false);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processMiners [2]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"effort":45.66}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1': '{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","solo":false,"work":8,"effort":76.12}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1': '{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1","solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2': '{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2","solo":false,"work":8}'};
const hashrate = [
'{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","solo":false,"work":8}',
'{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2","solo":false,"work":8}'];
const expected = [
{"time": 1623901919389, 'effort': null, 'hashrate': 0.02666666666666667, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': null, 'work': 8},
{"time": 1623901944054, 'effort': null, 'hashrate': 0.05333333333333334, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': null, 'work': 16}];
const processed = utils.processMiners(shares, hashrate, 1, 300, false);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processMiners [3]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","times":20.15,"solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","times":10.15,"solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1': '{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","times":100.55,"solo":true,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1': '{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1","times":24.15,"solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2': '{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2","times":75.15,"solo":false,"work":8}'};
const hashrate = [
'{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","solo":false,"work":0}',
'{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2","solo":false,"work":8}'];
const expected = [
{"time": 1623901893182, 'effort': null, 'hashrate': 0.02666666666666667, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': 20.15, 'work': 16},
{"time": 1623901944054, 'effort': null, 'hashrate': 0.05333333333333334, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': 75.15, 'work': 16}];
const processed = utils.processMiners(shares, hashrate, 1, 300, true);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processMiners [4]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","times":20.15,"solo":false,"types":{},"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","times":10.15,"solo":false,"types":{},"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1': '{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","times":100.55,"solo":true,"types":{},"work":0}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1': '{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1","times":24.15,"solo":false,"types":{},"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2': '{"time":1623901929799,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2","times":75.15,"solo":false,"types":{},"work":8}'};
const hashrate = [
'{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2","solo":false,"work":8}'];
const expected = [
{"time": 1623901893182, 'effort': null, 'hashrate': 0.02666666666666667, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': 20.15, 'work': 16},
{"time": 1623901929800, 'effort': null, 'hashrate': 0.05333333333333334, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': 75.15, 'work': 16}];
const processed = utils.processMiners(shares, hashrate, 1, 300, false);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processMiners [5]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","times":0,"solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","times":0,"solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1': '{"time":1623901919389,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","times":20.15,"solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1': '{"time":1623901929800,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1","times":20.15,"solo":false,"work":8}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2': '{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2","times":18.17,"solo":false,"work":8}'};
const hashrate = [
'{"time":1623901893182,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker1","solo":false,"work":8}',
'{"time":1623901944054,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c.worker2","solo":false,"work":8}'];
const expected = [
{"time": 1623901893182, 'effort': null, 'hashrate': 0.02666666666666667, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': 0, 'work': 16},
{"time": 1623901919389, 'effort': null, 'hashrate': 0, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': 20.15, 'work': 8},
{"time": 1623901944054, 'effort': null, 'hashrate': 0.05333333333333334, 'miner': 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': 20.15, 'work': 16}];
const processed = utils.processMiners(shares, hashrate, 1, 300, false);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processMiners [6]', () => {
const shares = {
'RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j': '{"time":1623901893182,"worker":"RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j","times":20.15,"solo":false,"work":196}',
'RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.minerLHR': '{"time":1623901893182,"worker":"RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.minerLHR","times":20530.15,"solo":false,"work":5517}'};
const hashrate = [
'{"time":1623901893182,"worker":"RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.minerLHR","solo":false,"work":8}',
'{"time":1623901944054,"worker":"RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.minerLHR","solo":false,"work":8}',
'{"time":1623901944054,"worker":"RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.minerLHR","solo":false,"work":8}'];
const expected = [{"time": 1623901893182, 'effort': null, 'hashrate': 0.08, 'miner': 'RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': 20530.15, 'work': 5713}];
const processed = utils.processMiners(shares, hashrate, 1, 300, false);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processMiners [7]', () => {
const shares = {
'RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker1': '{"time":1623901893182,"worker":"RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker1","times":20.15,"solo":true,"effort":42.65,"work":196}',
'RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker2': '{"time":1623901893182,"worker":"RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker2","times":20.15,"solo":true,"work":196}',
'RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker3': '{"time":1623901893185,"worker":"RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker3","times":77.15,"solo":true,"effort":95.65,"work":5517}'};
const expected = [{"time": 1623901893185, 'effort': 138.3, 'hashrate': 0, 'miner': 'RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': 77.15, 'work': 5909}];
const processed = utils.processMiners(shares, [], 1, 300, false);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processMiners [7]', () => {
const shares = {
'RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker1': '{"time":1623901893182,"worker":"RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker1","times":20.15,"solo":true,"effort":42.65,"work":196}',
'RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker2': '{"time":1623901893182,"worker":"RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker2","times":20.15,"solo":true,"work":196}',
'RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker3': '{"time":1623901893185,"worker":"RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j.worker3","times":77.15,"solo":true,"effort":95.65,"work":5517}'};
const expected = [{"time": 1623901893185, 'effort': 138.3, 'hashrate': 0, 'miner': 'RFeE924XmUhqJqUpRJykryxumNBwiMfZ4j', 'shares': {'invalid': 0, 'stale': 0, 'valid': 0}, 'times': 77.15, 'work': 5909}];
const processed = utils.processMiners(shares, [], 1, 300, false);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processMiners [8]', () => {
expect(utils.processMiners(null)).toStrictEqual([]);
});
test('Test implemented processPayments [1]', () => {
const payments = {
tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a: '11.87468051',
tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b: '11.87468051'};
const expected = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a': 11.87468051,
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b': 11.87468051};
const processed = utils.processPayments(payments);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processPayments [2]', () => {
const payments = {
tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a: '11.87468051',
tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b: '11.87468051'};
const expected = {'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a': 11.87468051};
const processed = utils.processPayments(payments, 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a');
expect(processed).toStrictEqual(expected);
});
test('Test implemented processPayments [3]', () => {
const payments = {
tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a: '11.87468051',
tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b: '11.87468051',
tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3c: '0'};
const expected = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a': 11.87468051,
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b': 11.87468051};
const processed = utils.processPayments(payments);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processPayments [4]', () => {
const payments = {
tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a: 'test',
tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b: '11.87468051'};
const expected = {'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b': 11.87468051};
const processed = utils.processPayments(payments);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processPayments [5]', () => {
expect(utils.processPayments(null)).toStrictEqual({});
});
test('Test implemented processRecords', () => {
const records = [
'{"time":1643679193061,"paid":284.9976,"transaction":"6105c705c2db1b4835083e57b6a8ed146681354c628afb08c818472bd392010b"}',
'{"time":1643679193061,"paid":288.9976,"transaction":"6105c705c2db1b4835083e57b6a8ed146681354c628afb08c818472bd392010c"}'];
const expected = [
{'paid': 284.9976, 'time': 1643679193061, 'transaction': '6105c705c2db1b4835083e57b6a8ed146681354c628afb08c818472bd392010b'},
{'paid': 288.9976, 'time': 1643679193061, 'transaction': '6105c705c2db1b4835083e57b6a8ed146681354c628afb08c818472bd392010c'}];
const processed = utils.processRecords(records);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processShares [1]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623862569778,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","work":24,"effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2': '{"time":1623862569778,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2","work":16,"effort":41.65}',
};
const expected = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a': 24,
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b': 16};
const processed = utils.processShares(shares);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processShares [2]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","work":8,"effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","work":8,"effort":43.11}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","work":8,"effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2","work":16,"effort":43.11}',
};
const expected = {'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a': 16};
const processed = utils.processShares(shares, 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a');
expect(processed).toStrictEqual(expected);
});
test('Test implemented processShares [3]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","work":0,"effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","work":8,"effort":43.11}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","work":16,"effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2","work":8,"effort":43.11}',
};
const expected = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a': 8,
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b': 24};
const processed = utils.processShares(shares);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processShares [4]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","work":8,"effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","work":8,"effort":43.11}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","work":16,"effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2","work":8,"effort":43.11}',
};
const expected = {'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': 8};
const processed = utils.processShares(shares, 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1', 'worker');
expect(processed).toStrictEqual(expected);
});
test('Test implemented processShares [5]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","work":"blah","effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","work":8,"effort":43.11}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","work":16,"effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2","work":8,"effort":43.11}',
};
const processed = utils.processShares(shares, 'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1');
expect(processed).toStrictEqual({});
});
test('Test implemented processShares [6]', () => {
const processed = utils.processShares(null);
expect(processed).toStrictEqual({});
});
test('Test implemented processTimes [1]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623862569778,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","times":20,"work":24,"effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2': '{"time":1623862569778,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2","times":15,"work":16,"effort":41.65}',
};
const expected = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a': 20,
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b': 15};
const processed = utils.processTimes(shares);
expect(processed).toStrictEqual(expected);
});
test('Test implemented processTimes [2]', () => {
const shares = {
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker1","times":20.531,"work":8,"effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3a.worker2","times":210,"work":8,"effort":43.11}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker1","times":13.40,"work":8,"effort":42.16}',
'tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2': '{"time":1623862569772,"worker":"tltc1qkek8r3uymzqyajzezqgl84u08c0z8shjuwqv3b.worker2","times":20,"work":16,"effort"