ddstats-server/tests/multihread.test.js

67 lines
1.7 KiB
JavaScript
Raw Normal View History

import { initWorkers, spread } from '../libs/utils/multithread.js'
2021-10-16 19:11:16 +02:00
import Player from '../schemas/Player.js'
import decodeMsgpack from '../libs/database/sqlite2mongo/decodeMsgpack.js'
2021-10-13 20:27:07 +02:00
import initLog from '../libs/utils/log.js'
const log = initLog("Fib. Test")
2021-10-13 19:45:59 +02:00
2021-10-16 19:11:16 +02:00
initWorkers(10)
2021-10-13 20:27:07 +02:00
2021-10-16 19:11:16 +02:00
// const jobs = 100
// let completed = 0
// for (let i = 0; i < jobs; ++i) {
// spread(
// './fibonacci.js',
// {}
// ).then(
// result => {
// ++completed
// log(`Completed job ${completed}/${jobs} -> ${result}`)
// if (completed === jobs) process.exit(0)
// }
// )
// }
2021-10-16 19:11:16 +02:00
export default async function() {
const cache = decodeMsgpack()
await Player.updateMany(
{},
{
pointsThisWeek: 0,
pointsThisMonth: 0
}
)
2021-10-16 19:11:16 +02:00
let processedPlayers = 0
const totalPlayers = cache.pointsRanks.length
const rawDbFunc = (name, points) => new Promise((resolve, reject) => Player.findOneAndUpdate({ name: name }, { points: points }).then(() => resolve()))
for (const entry of cache.pointsRanks) {
let data = new SharedArrayBuffer(1024 * 10)
// let data = new Array(buffer)
2021-10-16 19:11:16 +02:00
data[0] = 0
data[1] = entry[0]
data[2] = entry[1]
2021-10-16 19:11:16 +02:00
spread(
'./db.test.js',
data
).then(
result => {
console.log(data[0])
++processedPlayers
log(`Process player ${processedPlayers}/${totalPlayers} -> «${entry[0]}» with ${entry[1]} points!`)
if (processedPlayers === totalPlayers)
process.exit(0)
}
)
}
}