R: создание тестовых случаев типа lapply()


Я работал над кодом для создания параллельной функции типа lapply (), которая использует механизм Amazon Elastic Map Reduce в качестве "сетки" для обработки (да, это картограф без редуктора). После того, как я получу стабильный код, я абстрагирую его как форек-сервер. Но сначала мне нужно построить тесты, чтобы проверить код, который у меня есть.

Каковы были бы некоторые хорошие тестовые случаи для этой функции?

Мой канонический тестовый случай прямо сейчас выглядит следующим образом:

myList <- NULL
set.seed(1)
for (i in 1:10){
  a <- c(rnorm(999), NA)
  myList[[i]] <- a
}
outputLocal <- lapply(myList, mean, na.rm=T)
outputEmr   <- emrlapply(myList, mean, myCluster, na.rm=T)
all.equal(outputEmr, outputLocal) 

Этот тестовый случай гарантирует, что необязательный аргумент na.rm=T передается правильно на удаленные машины. Какие еще тестовые случаи я мог бы использовать? В настоящее время я не поддерживаю аргументы simplify или USE.NAMES, хотя буду поддерживать их в будущем.

1 2

1 ответ:

Что произойдет, если вы пройдете emrlapply

  • список векторов символов
  • пустой список
  • список, который пуст только после удаления всех значений NA
  • NULL
  • вектор (lapply работает с векторами)
  • матрица
  • a данные.каркас
  • список списков

Вам также нужен тест, чтобы увидеть, если ваша функция изящно обрабатывает EMR, не будучи доступной или не имея необходимых пакетов.