示例#1
0
async function getOutputDevelopment({ directory, env = {} }) {
  try {
    const { stdout, stderr } = await execa(
      './node_modules/.bin/react-scripts',
      ['start', '--smoke-test'],
      {
        cwd: directory,
        env: Object.assign(
          {},
          {
            BROWSER: 'none',
            PORT: await getPort(),
            CI: 'false',
            FORCE_COLOR: '0',
          },
          env
        ),
      }
    );
    return { stdout: stripAnsi(stdout), stderr: stripAnsi(stderr) };
  } catch (err) {
    return {
      stdout: '',
      stderr: stripAnsi(
        err.message
          .split(os.EOL)
          .slice(2)
          .join(os.EOL)
      ),
    };
  }
}
	return () => {
		return getPort()
			.then((port) => {
				const server = plugins.liveServer('server', {
					env: {
						PORT: port,
						NODE_ENV: 'production',
					},
				}, false);

				return server.start()
					.then(() => {}, () => {}, () => {
						if (!isRunning) {
							isRunning = true;
							return backstop('reference', {
								config: require('../tests/backstop/backstop.config.js')({
									port: port
								})
							})
								.then(() => {
									server.stop();
								}).catch(() => {
									server.stop();
									process.exit(1);
								});
						}
					});
			});
	};
示例#3
0
var localfile = function(ctx, next) {
  if (ctx.mode !== 'launch') return next();
  if (!contains(ctx.options.playlist, isFile)) return next();

  getPort(function(err, port) {
    var route = router();
    var list = ctx.options.playlist.slice(0);

    ctx.options.playlist = list.map(function(item, idx) {
      if (!isFile(item)) return item;
      return {
        path: 'http://' + internalIp() + ':' + port + '/' + idx,
        type: 'video/mp4',
        media: {
          metadata: {
            title: path.basename(item.path)
          }
        }
      };
    });

    route.all('/{idx}', function(req, res) {
      serveMp4(req, res, list[req.params.idx].path);
    });

    http.createServer(route).listen(port);
    next();
  });
};
  async startServer(): Promise<void> {
    // Find a port at runtime. Default to 4000 if it is available
    this.port =
      typeof process.env.SUBTITLES_PORT === 'number'
        ? parseInt(process.env.SUBTITLES_PORT, 10)
        : await getPort({ port: 4000 });

    // Start the static file server for the subtitle files
    const server = express();
    // Enable CORS
    // https://github.com/thibauts/node-castv2-client/wiki/How-to-use-subtitles-with-the-DefaultMediaReceiver-app#subtitles
    server.use((req, res, next) => {
      if (req.headers.origin) {
        res.headers['Access-Control-Allow-Origin'] = req.headers.origin;
      }
      next();
    });
    server.use(express.static(this.basePath));
    this.server = server.listen(this.port);

    console.info(
      `Subtitle server serving on http://localhost:${this.port}, serving ${
        this.basePath
      }`
    );
  }
 ncp('./app', './test/app', function (err) {
     if (err) return done(err);
     getPort(function (err, availablePort) {
         if (err) return done(err);
         port = availablePort;
         done();
     })
 });
示例#6
0
 return queue.add(async () => {
   const ports = []
   for (let i = 0; i < numPorts; i++) {
     const port = await getPort()
     ports.push(port)
   }
   return { ports }
 })
示例#7
0
  beforeAll(async () => {
    const scriptPath = join(appDir, 'server.js')
    context.appPort = appPort = await getPort()
    const env = clone(process.env)
    env.PORT = `${appPort}`

    server = await initNextServerScript(scriptPath, /Ready on/, env)
  })
示例#8
0
 /**
  * Start the engine. Will prepare everything before you will start your run:
  * * Start XVFB (if it is configured)
  * * Set connectivity
  * * Start the extension server
  */
 async start() {
   this.options.devToolsPort = await getPort({
     port: getPort.makeRange(9222, 9350),
     host: '127.0.0.1'
   });
   return Promise.all([
     this.myXVFB.start(),
     addConnectivity(this.options),
     this.myExtensionServer.start()
   ]);
 }
示例#9
0
文件: cache.js 项目: mattiasrunge/mcs
    before(async () => {
        const args = {
            level: "debug",
            config: "test/data/config.json",
            port: await getPort()
        };

        await main.start(args);

        cachePath = await utils.createTmpDir();
        await fs.ensureDir(cachePath);
    });
示例#10
0
test.cb('start markserv via "readme" command', t => {
	t.plan(3)

	const expected = String(
		fs.readFileSync(
			path.join(__dirname, 'markserv-cli.expected.html')
		)
	)

	getPort().then(port => {
		const cliOpts = {
			input: [],
			flags: {
				port,
				livereloadport: false,
				address: 'localhost',
				silent: true,
				browser: false
			}
		}

		const done = () => {
			t.end()
		}

		readme.run(cliOpts).then(service => {
			const closeServer = () => {
				service.httpServer.close(done)
			}

			const opts = {
				url: service.launchUrl,
				timeout: 1000 * 2
			}

			request(opts, (err, res, body) => {
				if (err) {
					t.fail(err)
					closeServer()
				}

				t.true(body.includes(expected))

				t.is(res.statusCode, 200)
				t.pass()
				closeServer()
			})
		}).catch(err => {
			t.fail(err)
			t.end()
		})
	})
})
示例#11
0
    (async () => {
        let randomUnusedPortToListenToTCPPeerConnections = await getPort();

        basketutil.log('type: ' + peerType + ', masterPeerId: ' + masterPeerId.toString('hex') + ', channel: ' + channelName + ', port: ' + randomUnusedPortToListenToTCPPeerConnections);

        swarm.listen(randomUnusedPortToListenToTCPPeerConnections);
        swarm.join(channel);

        swarm.on('connection', (conn, info) => {
            let seq = counterforConnections,
                checkMasterPeerId = info.id.toString('hex');

            basketutil.log(`Master Connected #${seq} to peer: ${checkMasterPeerId}`);

            // Keep peer alive
            if (info.initiator) {
                try {
                    conn.setKeepAlive(true, 600);
                } catch (exception) {
                    basketutil.log('exception', exception);
                }
            }

            conn.on('data', data => {
                basketutil.log('From: ' + checkMasterPeerId);
                let mPeerId = masterPeerId.toString('hex');
                if (checkMasterPeerId == mPeerId) {
                    basketutil.log('ignore messages sent by myself');
                }
                basketutil.log('From: ' + checkMasterPeerId);
                basketutil.log('Received message' + Buffer.from(data, 'hex'));
                let message = JSON.parse(data);
                roomsCallbackFromP2P(checkMasterPeerId, message.type, message.data);
            });

            conn.on('close', () => {
                basketutil.log(`Master Connection ${seq} closed, peer id: ${checkMasterPeerId}`);
                // If last connection delete
                if (peers[checkMasterPeerId].seq === seq) {
                    delete peers[checkMasterPeerId]
                }
            });

            // Save connection
            if (!peers[checkMasterPeerId]) {
                peers[checkMasterPeerId] = {}
            }
            peers[checkMasterPeerId].conn = conn;
            peers[checkMasterPeerId].seq = seq;
            counterforConnections++

        })
    })();
示例#12
0
    function Browser(cb) {
        var that = this;

        getPort().then(function(port) {

            that._upnpSSDP = new SSDP(port);
            that._devices = [];

            _classCallCheck(that, Browser);
            cb();

        });
    }
示例#13
0
module.exports = function startServer(path) {
    var app = connect();
    app.use(middleware.regProjectFinder(path));
    app.use(middleware.underscore);
    app.use(middleware.mwl);
    app.use(middleware.static);
    app.use(middleware.fallback);
    return port().then(function gotPort(num) {
        return {
            server: app.listen(num),
            port: num,
        };
    });
};
示例#14
0
async function isSuccessfulDevelopment({ directory }) {
  const { stdout, stderr } = await execa(
    './node_modules/.bin/react-scripts',
    ['start', '--smoke-test'],
    {
      cwd: directory,
      env: { BROWSER: 'none', PORT: await getPort() },
    }
  );

  if (!/Compiled successfully/.test(stdout)) {
    throw new Error(`stdout: ${stdout}${os.EOL + os.EOL}stderr: ${stderr}`);
  }
}
示例#15
0
    before(function*() {
        let tmpobj = tmp.dirSync();

        let args = {
            level: false,
            config: "test/data/config.json",
            repositoriesPath: tmpobj.name,
            port: yield getPort()
        };

        yield fs.ensureDirAsync(args.repositoriesPath + "/repo1");

        yield main.start(args, "A.B.C");
    });
示例#16
0
var executeRemoteChildProcess = function (runOpts, options) {
  if(!options) options = {};
  if(!options.cwd) options.cwd = process.cwd();
  var child = new FakeChild(options.stdio);
  var client = new RcpClient();

  var needServer = !runOpts.address;

  getPort().then(port => {
    runOpts.address = runOpts.address || {
      hostname: '127.0.0.1',
      port: port
    };

    var maxTimeoutLen = options.bridgeTimeout || 1000 * 60 * 3;

    if (needServer) {
      var serverOptions = {
        maxTimeoutLen: maxTimeoutLen,
        autoClose: true
      }
      invokeElevatedCmd(runOpts.address, serverOptions);
    }

    var mustFinish = false;
    var maxTimeout = setTimeout(function () {
      mustFinish = true;
    }, maxTimeoutLen);

    var openAndConnectChild = function () {
      client.open(runOpts.address, function (err) {
        if (err) {
          if (!mustFinish && err.code && err.code==='ECONNREFUSED') {
            return setTimeout(openAndConnectChild, 100);
          }
          clearTimeout(maxTimeout);
          child.emit('error', err);
          return child.emit('close', -2) //unsure which code is correct
        }
        clearTimeout(maxTimeout);
        delete options.bridgeTimeout;
        client.runRemote(child, runOpts, options)
      })
    }
    openAndConnectChild();
  });

  return child;
}
示例#17
0
/**
 * Start server for penthouse
 *
 * @param opts
 * @returns {Promise}
 */
function startServer(opts) {
    var cb = serveStatic(opts.base);

    return getPort().then(function (port) {
        var server = http.createServer(function (req, res) {
            var done = finalhandler(req, res);
            cb(req, res, done);
        }).listen(port);

        return {
            instance: server,
            port: port
        };
    });
}
示例#18
0
	return function () {
		return getPort().then(function (port) {
			var server = http.createServer(fn);

			server.host = host;
			server.port = port;
			server.url = 'http://' + host + ':' + port;
			server.protocol = 'http';

			server.listen(port);
			server.close = pify(server.close);

			return server;
		});
	};
示例#19
0
    test.skip("works with yarn install", async () => {
      const cwd = await initFixture("BootstrapCommand/integration-lifecycle");

      const port = await getPort(42042);
      const mutex = ["--mutex", `network:${port}`];

      // NOTE: yarn doesn't support linking binaries from transitive dependencies,
      // so it's important to test _both_ lifecycle variants.
      // TODO: ...eventually :P
      // FIXME: yarn doesn't understand file:// URLs... /sigh
      await execa("yarn", ["install", "--no-lockfile", ...mutex], { cwd });

      const { stdout, stderr } = await execa("yarn", ["test", "--silent", ...mutex], { cwd });
      expect(stdout).toMatchSnapshot("yarn postinstall: stdout");
      expect(stderr).toMatchSnapshot("yarn postinstall: stderr");
    });
示例#20
0
 return function (req, res, next) {
   if (!client) return respondError(res, "Client not started")
   var torrentId = req.body.torrent;
   var torrent = client.get(torrentId);
   if (!torrent) return respondError(res, "Torrent not found")
   var okId = torrent.infoHash;
   if (torrentServers[okId])
     return res.status(200).json({body: torrentServers[okId].href})
   getPort().then(function (port) {
     var server = torrent.createServer()
     server.listen(port)
     torrentServers[okId] = {
       href: 'http://localhost:' + port + '/',
       server: server
     }
     return res.status(200).json({body: torrentServers[okId].href})
   });
 }
示例#21
0
 srtToVtt(ctx.options.subtitles, function(err, data) {
   if (err) return next();
   getPort(function(err, port) {
     if (err) return next();
     var addr = 'http://' + internalIp() + ':' + port;
     http.createServer(function(req, res) {
       res.writeHead(200, {
         'Access-Control-Allow-Origin': '*',
         'Content-Length': data.length,
         'Content-type': 'text/vtt;charset=utf-8'
       });
       res.end(data);
     }).listen(port);
     ctx.options.subtitles = addr;
     attachSubtitles(ctx);
     next();
   });
 });
示例#22
0
module.exports = opts => {
	opts = opts || {};

	return getPort().then(port => {
		const s = http.createServer((req, res) => {
			setTimeout(() => {
				s.emit(req.url, req, res);
			}, (opts.delay || 0) * 1000);
		});

		s.port = port;
		s.url = `http://localhost:${port}`;
		s.close = pify(s.close);

		s.on('/', (req, res) => {
			res.writeHead(200, {'Content-Type': 'text/html'});
			res.end('<html style="background-color: black;"></html>');
		});

		s.on('/cookies', (req, res) => {
			const color = cookie.parse(req.headers.cookie).color || 'white';
			const style = [
				`background-color: ${color}; position: absolute;`,
				'top: 0; right: 0; bottom: 0; left: 0;'
			].join(' ');

			res.writeHead(200, {'Content-Type': 'text/html'});
			res.end(`<body><div style="${style}"></div></body>`);
		});

		s.on('/redirect', (req, res) => {
			res.writeHead(302, {location: `http://localhost:${port}/`});
			res.end();
		});

		s.listen(port);

		return s;
	});
};
示例#23
0
async function serve(bundler, port, useHTTPS = false) {
  let handler = middleware(bundler);
  let server;
  if (!useHTTPS) {
    server = http.createServer(handler);
  } else if (typeof useHTTPS === 'boolean') {
    server = https.createServer(generateCertificate(bundler.options), handler);
  } else {
    server = https.createServer(await getCertificate(useHTTPS), handler);
  }

  let freePort = await getPort({port});
  server.listen(freePort);

  return new Promise((resolve, reject) => {
    server.on('error', err => {
      logger.error(new Error(serverErrors(err, server.address().port)));
      reject(err);
    });

    server.once('listening', () => {
      let addon =
        server.address().port !== port
          ? `- ${logger.chalk.yellow(
              `configured port ${port} could not be used.`
            )}`
          : '';

      logger.persistent(
        `Server running at ${logger.chalk.cyan(
          `${useHTTPS ? 'https' : 'http'}://localhost:${server.address().port}`
        )} ${addon}`
      );

      resolve(server);
    });
  });
}
示例#24
0
文件: restart.js 项目: whxaxes/blog
async function restart() {
  const { pidList, port: oldPort } = getEggRunningInfo();

  // reload nginx only
  if (process.env.ONLY_NGINX) {
    return nginxReload(oldPort);
  }

  // restart server
  const port = await getPort();
  const { stdout } = shell.exec('npm start', {
    env: {
      ...process.env,
      NODE_ENV: 'production',
      EGG_SERVER_ENV: 'prod',
      PORT: port,
    },
  });

  const appUrl = `http://127.0.0.1:${port}`;
  if (!stdout.includes(`started on ${appUrl}`)) {
    throw new Error('app start not success');
  }

  // check server status
  const resp = await urllib.curl(appUrl);
  assert(resp.status === 200, 'app start not success');
  console.info('app started success in ' + appUrl);

  // update nginx config
  nginxReload(port);

  // kill egg server pid
  pidList.forEach(pid => {
    shell.exec('kill -9 ' + pid);
    console.info('kill process ' + pid);
  });
}
示例#25
0
文件: servers.js 项目: rlugojr/hotel
function run (cmd, opts = {}) {
  const startServer = (port) => {
    process.env.PORT = port

    const serverAddress = `http://localhost:${port}`

    add(serverAddress, opts)
    console.log(serverAddress)

    exitHook(() => rm(opts))

    const [command, ...args] = getCmd(cmd)
    cp.spawnSync(command, args, {
      stdio: 'inherit'
    })
  }

  if (opts.port) {
    startServer(opts.port)
  } else {
    getPort(startServer)
  }
}
示例#26
0
tmp.tmpName(function _tempNameGenerated(err, path) {
    if (err) throw err;
    fileToQuit = path;

    getPort().then(port => {
      address = {
        hostname: '127.0.0.1',
        port: port,
        port: port
      }
      var serverOptions = {
        maxTimeoutLen:  1000 * 60 * 3,
        autoClose:      false,
        fileToQuit:     fileToQuit,
        tokenToQuit:    tokenToQuit
      }
      invokeElevatedCmd(address, serverOptions);
      pendings.splice(0, pendings.length).forEach(function(fn){
        fn();
      })
    }).catch(function (err) {
      console.log(err);
    });
});
示例#27
0
文件: cli.js 项目: BlockCat/reloadify
function buildArgs(cb) {
  var argv = minimist(process.argv.slice(2));
  var port = argv.port || argv.p || 0;
  var silent = Boolean(argv.silent || argv.s);
  var folders = [];

  if (argv.h || argv.help) { return displayUsage(); }

  argv.folder = argv.folder || argv.f;

  if (!argv.folder) {
    console.error('----------------------');
    console.error('Error: folder missing!');
    console.error('----------------------\n');

    return displayUsage();
  }

  folders = Array.isArray(argv.folder) ? argv.folder : [argv.folder];

  folders.map(function(folder) {
    return path.resolve(__dirname + '/..', folder);
  });

  cb = dezalgo(cb);

  if (port === 0) {
    getPort(errTo(cb, function(foundPort) {
      cb(null, folders, foundPort, silent);
    }));
  } else {
    port = parseInt(port, 10);

    cb(null, folders, port, silent);
  }
}
示例#28
0
    before(async () => {
        port = await getPort();

        await server.run(port);
    });
示例#29
0
 .then(() => {
   return getPort()
 })
示例#30
0
文件: util.js 项目: jdf2e/yg_server
            }
            _read() {
                socket.on('stdin', (input) => {
                    console.log('stdin', input);
                    this.push(input);
                    this.push(null);
                });
            }
        }

        let projPath = path.join(config.YG_BASE_PATH, puuid);
        console.log(projPath);
        let outerPort;
        if (util.PORT_POOL[puuid]) {
            outerPort = await getPort({
                port: ~~util.PORT_POOL[puuid]
            });
        } else {
            outerPort = await getPort();
        }
        util.PORT_POOL[puuid] = outerPort;
        socket.emit("receive", {
            outerPort: outerPort
        });


        let evn = [`PATH=/root/.nvm/versions/node/v${nodeVersion}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`];

        /**
         * 注射器,多种构建平台猜测配置文件
         */