У меня есть тест JUnit, который ищет пользователя, который не менял свой пароль за последние 355 дней. В тесте я сохраняю пользователя с его последней датой обновления пароля в системную дату / время - 355 дней. Затем я запускаю функцию, которая должна забрать этого пользователя для дополнительной обработки.
Тест проходит локально, как при запуске теста самостоятельно, так и при запуске всего набора тестов. Однако по какой-то причине тест не проходит между 12 и 13 часами при развертывании нашего кода в Jenkins. Это не постоянный провал, либо. Иногда простое повторное развертывание без изменений позволяет выполнить тест успешно. Что может быть причиной этой проблемы?
Для справки тест выглядит следующим образом:
@Test
public void passwordExpiryTest() {
Timestamp currentTimeMinus355Days = new Timestamp(System.currentTimeMillis() - 30672000000L);
createUser("expiringUser", currentTimeMinus355Days);
createUser("recentUser", new Timestamp(System.currentTimeMillis() - 864000000L));
List<User> passwordExpiringUsers = userDao.getUsersWithPasswordExpiringInTenDays();
Assert.assertEquals(1, passwordExpiringUsers.size());
}
А userDao.getUsersWithPasswordExpiringInTenDays представляет собой запрос SQL (в таблицу Postgres):
SELECT * FROM users WHERE last_password_update IS NOT NULL AND EXTRACT(epoch FROM (NOW() - last_password_update))/86400 >= 355 AND EXTRACT(epoch FROM (NOW() - last_password_update))/86400 <= 356")