Тестирование параллельного / параллельного выполнения - PullRequest
3 голосов
/ 24 сентября 2011

В настоящее время я пишу небольшую платформу для управляемых спросом рабочих процессов.API теперь стабилен, и я работаю над улучшением тестов.Легко показать, что вычисления верны (что является хорошим началом), однако основной интерес фреймворка заключается в параллельном запуске подзадач (когда это необходимо и возможно).

Существует ли способ автоматического тестированиячто два разных куска кода работают параллельно / параллельно?Я предпочитаю не полагаться на измерения времени выполнения (ускорения).

Фреймворк написан на scala и во многом зависит от Akka Futures.

РЕДАКТИРОВАТЬ:

Вот пример:

val foo = step {
  //... defines an arbitrary task
}

// Runs 5 times the code inside step foo
val foos = repeat( 5 )( foo )

Я хотел бы быть уверен, что код внутри foo выполняется 5 раз параллельно.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2011

Я не вижу способа сделать это без изменения задач (то есть, когда вам нужно проверить, что две специфические задачи выполняются параллельно).Но если вы можете изменить задачи, просто добавьте актера в систему.Сделайте так, чтобы каждая задача отправляла сообщения этому актеру при начале или завершении работы.Если субъект получает два Starting сообщения подряд, задачи должны выполняться параллельно (или хотя бы в разных потоках).

1 голос
/ 25 сентября 2011

Этот тест не имеет никакого смысла для меня. На компьютере с менее чем 5 ядрами вы не можете получить параллелизм 5 эффект.

Надеюсь, это поможет,

Ура, √

...