mirror of
https://github.com/linuxserver/core.git
synced 2026-02-20 05:07:19 +08:00
120 lines
3.8 KiB
JavaScript
120 lines
3.8 KiB
JavaScript
"use strict";
|
|
"use server";
|
|
|
|
require("c9/inline-mocha")(module);
|
|
require("amd-loader");
|
|
|
|
var childProcess = require("child_process");
|
|
var fs = require("fs");
|
|
var net = require("net");
|
|
|
|
var socketPath = process.env.HOME + "/.c9/chrome.sock";
|
|
if (process.platform == "win32")
|
|
socketPath = "\\\\.\\pipe\\" + socketPath.replace(/\//g, "\\");
|
|
|
|
process.chdir(__dirname);
|
|
|
|
function debuggerProxy(id, handlers) {
|
|
var p1 = childProcess.spawn(process.execPath, ["./chrome-debug-proxy.js"]);
|
|
p1.stdout.once("data", function(data) {
|
|
handlers.onStart && handlers.onStart();
|
|
});
|
|
p1.stdout.on("data", function(data) {
|
|
console.log(id, data + "");
|
|
});
|
|
p1.stderr.on("data", function(data) {
|
|
console.log(id, data + "");
|
|
});
|
|
p1.on("close", function(code) {
|
|
console.log(id, code);
|
|
});
|
|
p1.on("exit", function(code) {
|
|
handlers.onExit && handlers.onExit(code);
|
|
console.log(id, code);
|
|
});
|
|
p1.on("error", function(code) {
|
|
console.log(id, code);
|
|
});
|
|
return {
|
|
kill: p1.kill.bind(p1),
|
|
};
|
|
}
|
|
|
|
describe.skip(__filename, function() {
|
|
var p1, p2, p3;
|
|
this.timeout(100000);
|
|
it("should exit if another server is running", function(done) {
|
|
try {
|
|
fs.unlinkSync(socketPath);
|
|
} catch (e) {}
|
|
p1 = debuggerProxy("p1", {
|
|
onStart: function() {
|
|
|
|
},
|
|
onExit: function() {
|
|
done();
|
|
}
|
|
});
|
|
p2 = debuggerProxy("p2", {
|
|
onExit: function() {
|
|
done();
|
|
}
|
|
});
|
|
});
|
|
it("should connect to new node", function(done) {
|
|
var port = 58974;
|
|
p3 = childProcess.spawn(process.execPath, [
|
|
"--inspect=" + port, "-e", "var fs=require('fs'); path=process.argv[1];"
|
|
+ "setInterval(x=>fs.existsSync(path) || process.exit(1), 100)", socketPath
|
|
], { stdio: "inherit" });
|
|
var client = net.connect(socketPath, function() {
|
|
client.on("data", function handShake(data) {
|
|
console.log("=====" + data);
|
|
var msg = JSON.parse(data.slice(0, -1));
|
|
if (msg.$ == "connected") {
|
|
p3.kill();
|
|
done();
|
|
}
|
|
});
|
|
client.write(JSON.stringify({ m: "ping" }) + "\0");
|
|
client.write(JSON.stringify({ $: "connect", port: port }) + "\0");
|
|
});
|
|
});
|
|
|
|
it("should connect to old node", function(done) {
|
|
var port = 58374;
|
|
p3 = childProcess.spawn(process.execPath, [
|
|
"--debug=" + port, "-e", "var fs=require('fs'); path=process.argv[1];"
|
|
+ "setInterval(x=>fs.existsSync(path) || process.exit(1), 100)", socketPath
|
|
], { stdio: "inherit" });
|
|
var client = net.connect(socketPath, function() {
|
|
client.on("data", function handShake(data) {
|
|
data = data.toString("utf8");
|
|
console.log("=====" + data.toString("utf8"));
|
|
var msg = data[0] == "{" && JSON.parse(data.slice(0, -1));
|
|
console.log(msg)
|
|
if (msg.$ == "connected") {
|
|
var req = {
|
|
seq: 3,
|
|
type: 'request',
|
|
command: 'scripts',
|
|
arguments: { types: 4, includeSource: false }
|
|
};
|
|
client.write(JSON.stringify(req) + "\0");
|
|
}
|
|
else if (msg.request_seq == 3) {
|
|
p3.kill();
|
|
done();
|
|
}
|
|
});
|
|
client.write(JSON.stringify({ $: "connect", port: port }) + "\0");
|
|
});
|
|
});
|
|
after(function() {
|
|
p1 && p1.kill();
|
|
p2 && p2.kill();
|
|
p3 && p3.kill();
|
|
fs.unlinkSync(socketPath);
|
|
});
|
|
});
|