Веб-сокеты, потенциально мешающие работе Travis-CI - PullRequest
0 голосов
/ 29 мая 2018

Я погуглил, но не смог найти каких-либо конкретных вопросов, связанных с моим вопросом.Это отсутствие проблем заставляет меня поверить, что это проблема с моей конкретной сборкой.

Я недавно добавил socket.io в сторонний проект, просто чтобы немного поэкспериментировать с веб-сокетами.До добавления socket.io моя сборка Travis прошла бы без проблем;однако, после сокетов моя сборка Travis будет проходить через движения и отображать проходящие тесты только для зависания до 10-минутного тайм-аута.

Я использую Node и React.Команда тестирования, которую я использую, - "test": "react-scripts test --env=jsdom". Набор тестов - это просто базовое тестирование дыма на компоненты и некоторая проверка содержимого.При необходимости я могу поделиться набором тестов, но, поскольку все тесты показывают, что они проходили в Travis, я не счел нужным поделиться.

Что может вызвать зависание моей сборки Travis?Насколько я мог найти в своем исследовании, если вы не тестируете сокеты напрямую, они не должны мешать Трэвису.Я еще не добавил ни одного тестирования для сокетов или компонентов, которые их используют.

Вот мой server.js:

const express = require("express");
const bodyParser = require("body-parser");
const path = require("path");
const passport = require('passport')
const PORT = process.env.PORT || 3001;
const changeCat = require("./utils/randomCat");
const routes = require("./routes");
const authCheckMiddleware = require("./server/middleware/auth-check");
const FacebookTokenStrategy = require('passport-facebook-token');
let config;
if(process.env.MONGODB_URI) {
  config = process.env
} else {
  config = require("./config/index");
}

const app = express();

//...server logic...//

const server = app.listen(PORT, function() {
  console.log(`? ==> Server now on port ${PORT}!`);
});

let user = {
  userCount: 0,
  activeUsers: 0
};
const io = require("socket.io").listen(server);
io.on('connection', (socket) => { 
  user.userCount++;
  socket.emit("broadcast", user);

  socket.on("disconnect", () => {
    user.userCount--;
    user.activeUsers--;
    socket.emit("broadcast", user);
  });

  socket.on("deactivateUser", () => {
    user.activeUsers--
    socket.emit("broadcast", user);
  });

  socket.on("activateUser", () => {
    user.activeUsers = user.userCount
    socket.emit("broadcast", user);
  });

  setInterval(() => socket.emit("broadcast", user),1000);

  socket.on("error", err => {
    console.log(`Received error from user: ${socket.id}`);
    console.log(err);
  });

  socket.on('connect_failed', err => {
    console.log(err)
    console.log("connect failed")
  });
});

Наконец, мой .travis.yml :

language: node_js

node_js:
  - "stable"

before_script: 
  - cd client
  - npm install

script:
  - npm run test

Краткое описание проекта: в основном это приложение для викторин, которое каждые 5 минут запускает викторину с другой категорией.

отредактировано @ 1: 25P для редактирования заголовка

...