我目前正在使用Discord机器人,但遇到一个问题,除非您具有root特权,否则我们的ping命令在Linux上不起作用。 问题是我们的CI解决方案(Travis-CI)使用Linux,并且出于安全原因,当前不允许我们以root用户身份运行测试。 我们正在使用摩卡咖啡进行测试。
代码如下:
const ping = require('net-ping');
function pingTarget(target, callback){
// create a ping session used to try to reach backends
// in case it doesn't exist (unit test)
if(!session)
session = ping.createSession(options);
try {
resolveHostname(target, (err, result) => {
if(err){
callback({
hostname: target,
ip: "DNS Resolve fail",
}, err, 0);
}
session.pingHost(result, function (error, targetIP, sent, rcvd) {
// get ping.
var ms = rcvd - sent;
// log for more details
console.log(
"Pinged hostname : " + target +
" IP : " + result +
" Ping : " + ms + " ms."
);
// calls delegate with args
callback(
{
hostname: target,
ip: targetIP
}, error, ms);
});
});
} catch (error) {
callback(
{
hostname: target,
ip: "Ping fail"
}, error, 0);
}
}
这是测试:
describe("#pingServer()", () => {
it("pings a server", () => {
status.pingTarget(
"localhost",
(target, error, ms) => {
expect(error).to.be.a('null');
expect(ms).to.be.below(5);
}
);
});
});
是否可以在不需要root特权的情况下ping通远程主机?如果不是,是否有任何方法可以使测试可选,以确保CI构建不会失败?
谢谢!