feat: open child process for each mock machine
This commit is contained in:
parent
20727a60cd
commit
86e437a23a
3 changed files with 70 additions and 55 deletions
59
test/stress/child.js
Normal file
59
test/stress/child.js
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
const https = require('https')
|
||||||
|
const path = require('path')
|
||||||
|
const fs = require('fs')
|
||||||
|
const uuid = require('uuid')
|
||||||
|
|
||||||
|
function getCert (machineIndex) {
|
||||||
|
try {
|
||||||
|
return {
|
||||||
|
key: fs.readFileSync(path.resolve(__dirname, 'machines', `${machineIndex}`, 'client.key')),
|
||||||
|
cert: fs.readFileSync(path.resolve(__dirname, 'machines', `${machineIndex}`, 'client.pem'))
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function connectionInfo (machineIndex) {
|
||||||
|
try {
|
||||||
|
return JSON.parse(fs.readFileSync(path.resolve(__dirname, 'machines', `${machineIndex}`, 'connection_info.json')))
|
||||||
|
} catch (e) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let counter = 0
|
||||||
|
|
||||||
|
function request (machineIndex, pid) {
|
||||||
|
https.get({
|
||||||
|
hostname: 'localhost',
|
||||||
|
port: 3000,
|
||||||
|
path: '/poll?state=chooseCoin&model=unknown&version=7.5.0-beta.0&idle=true&pid=' + pid + '&sn=' + counter,
|
||||||
|
method: 'GET',
|
||||||
|
key: getCert(machineIndex).key,
|
||||||
|
cert: getCert(machineIndex).cert,
|
||||||
|
ca: connectionInfo(machineIndex).ca,
|
||||||
|
headers: {
|
||||||
|
date: new Date().toISOString(),
|
||||||
|
'request-id': uuid.v4()
|
||||||
|
}
|
||||||
|
}, res => {
|
||||||
|
res.on('data', (d) => {
|
||||||
|
process.send({ message: Buffer.from(d).toString() })
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
counter++
|
||||||
|
}
|
||||||
|
|
||||||
|
process.on('message', (msg) => {
|
||||||
|
console.log('Message from parent:', msg)
|
||||||
|
|
||||||
|
const pid = uuid.v4()
|
||||||
|
request(msg.machineIndex, pid)
|
||||||
|
|
||||||
|
setInterval(() => {
|
||||||
|
const pid = uuid.v4()
|
||||||
|
request(msg.machineIndex, pid)
|
||||||
|
}, 5000)
|
||||||
|
})
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
const https = require('https')
|
|
||||||
const path = require('path')
|
const { fork } = require('child_process')
|
||||||
const fs = require('fs')
|
|
||||||
const uuid = require('uuid')
|
|
||||||
const cmd = require('./scripts')
|
const cmd = require('./scripts')
|
||||||
const variables = require('./utils/variables')
|
const variables = require('./utils/variables')
|
||||||
|
|
||||||
|
|
@ -11,58 +9,16 @@ async function createMachines () {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCert (machineIndex) {
|
async function run () {
|
||||||
try {
|
await createMachines()
|
||||||
return {
|
|
||||||
key: fs.readFileSync(path.resolve(__dirname, 'machines', `${machineIndex}`, 'client.key')),
|
|
||||||
cert: fs.readFileSync(path.resolve(__dirname, 'machines', `${machineIndex}`, 'client.pem'))
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function connectionInfo (machineIndex) {
|
for (let i = 1; i <= variables.NUMBER_OF_MACHINES; i++) {
|
||||||
console.log(machineIndex)
|
const forked = fork('child.js')
|
||||||
try {
|
forked.send({ machineIndex: i })
|
||||||
return JSON.parse(fs.readFileSync(path.resolve(__dirname, 'machines', `${machineIndex}`, 'connection_info.json')))
|
forked.on('message', msg => {
|
||||||
} catch (e) {
|
console.log(`Message from child ${i}: ${msg}`)
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let index = 0
|
|
||||||
|
|
||||||
function request (machineIndex, pid) {
|
|
||||||
https.get({
|
|
||||||
hostname: 'localhost',
|
|
||||||
port: 3000,
|
|
||||||
path: '/poll?state=chooseCoin&model=unknown&version=7.5.0-beta.0&idle=true&pid=' + pid + '&sn=' + index,
|
|
||||||
method: 'GET',
|
|
||||||
key: getCert(machineIndex).key,
|
|
||||||
cert: getCert(machineIndex).cert,
|
|
||||||
ca: connectionInfo(machineIndex).ca,
|
|
||||||
headers: {
|
|
||||||
date: new Date().toISOString(),
|
|
||||||
'request-id': uuid.v4()
|
|
||||||
}
|
|
||||||
}, res => {
|
|
||||||
res.on('data', (d) => {
|
|
||||||
console.log(Buffer.from(d).toString())
|
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
|
|
||||||
index++
|
|
||||||
}
|
|
||||||
|
|
||||||
function run () {
|
|
||||||
createMachines().then(() => {
|
|
||||||
for (let i = 1; i <= variables.NUMBER_OF_MACHINES; i++) {
|
|
||||||
const pid = uuid.v4()
|
|
||||||
request(i, pid)
|
|
||||||
setInterval(() => request(i, pid), 5000)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
run()
|
run()
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ async function execCommand (cmd) {
|
||||||
} else {
|
} else {
|
||||||
console.log(stdout)
|
console.log(stdout)
|
||||||
console.error(stderr)
|
console.error(stderr)
|
||||||
// resolve({ stdout, stderr })
|
resolve({ stdout, stderr })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue