Почему добавление операторов console.log предотвращает тайм-ауты теста? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть некоторый код, который отлично работает локально, протестирован с использованием Supertest, но когда тот же тест выполняется на CircleCI, он не работает из-за тайм-аута.

Код, о котором идет речь,

for (const id of ids) {
  const urls = await scrapeLinks(id) // invokes puppeteer on a dockerised mock server
  await connectUrls(fbId, urls) // updates database using sequelize
}

Локально работает, все работает нормально.

Выполнение тех же тестов на CircleCI, выполнение этого кода занимает слишком много времени, и время ожидания истекло.

Но , если я добавлю пару console.log строк, то тесты будут не время ожидания

for (const id of ids) {
  console.log('start', id)
  const urls = await scrapeLinks(id) // invokes puppeteer on a dockerised mock server
  console.log('urls', urls)
  await connectUrls(fbId, urls) // updates database using sequelize
  console.log('end', id)
}

Выполнение тестов, работающих нормально, как локально, так и на CircleCI.

Моим простым исправлением было, конечно, просто увеличить время ожидания моих тестов с 2 до 5 секунд.

Но мой вопрос: почему добавление console.log строк после каждого шага ускоряет выполнение кода?

1 Ответ

0 голосов
/ 06 сентября 2018

Вероятно, это связано со свойством CircleCI no_output_timeout, которое определяется как:

Прошедшее время команда может работать без вывода. Строка представляет собой десятичное число с единичным суффиксом, например «20 м», «1,25 ч», «5 с» (по умолчанию: 10 минут)

Поэтому, если ваша программа превысит заданное время, установленное этим свойством без предоставления вывода, ваша программа будет иметь тайм-аут.

...