Мне нравится писать два или больше метода тестирования выполниться на параллельных потоках, и каждый из них выполняет вызовы в объект под тестом. Я использовал Сон (), звонит для координирования порядка вызовов от различных потоков, но это не действительно надежно. Это также намного медленнее, потому что необходимо спать достаточно долго, что синхронизация обычно работает.
я нашел библиотека Multithreaded TC Java от той же группы, которая записала FindBugs. Это позволяет Вам определить порядок событий, не используя Сон (), и это надежно. Я еще не попробовал его.
самое большое ограничение к этому подходу - то, что он только позволяет Вам протестировать сценарии, которые Вы подозреваете, доставит неприятности. Как другие сказали, действительно необходимо изолировать многопоточный код в небольшое количество простых классов для имения любой надежды на полное тестирование их.
, Как только Вы тщательно протестировали сценарии, Вы ожидаете доставлять неприятности, ненаучный тест, который бросает набор одновременных запросов в классе некоторое время, является хорошим способом искать неожиданную проблему.
Обновление: я играл немного с библиотекой Multithreaded TC Java, и она работает хорошо. Я также портировал некоторые его функции к версии.NET, которую я называю TickingTest.
Я обнаружил, что dx_auth неплохо работает в Codeigniter, и уже использовал его раньше. Это, безусловно, самая полнофункциональная библиотека аутентификации для Codeigniter.
Мне нужно было сделать несколько вещей, чтобы изменить ее, поэтому я расширил их класс User несколькими функциями для своих целей (некоторые из их функций не работают. именно то, что вы могли ожидать ..). Вот фрагмент некоторых сделанных мной настроек:
$CI = &get_instance();
$CI->load->model("dx_auth/users");
/**
* For most things, try and use the dx_auth models,
* because it's already done, and some stuff is more
* annoying to figure out than might be expected.
*
* For anything site-specific, use this model instead.
*
*/
class UserModel extends Users {
/**
* Sometimes when dx_auth sucks, you have to compensate
* functions that return useful results.
*
* @param int $id id of user to check if banned
* @return int $banned returns the result (0 or 1)
*/
public function is_banned($id) {
$query = "SELECT banned FROM users WHERE id=".(int)$id;
$result=$this->db->query($query);
$row = $result->row_array();
return $row['banned'];
}
}
Я использую Zend_Auth. Но в целом я работаю с Zend Framework. Насколько я знаю, он хорошо интегрируется с CI. С Zend_Auth я использую адаптер Db_Table и SHA1 с глобальной солью. Думаю, этого достаточно для многих целей.
Похоже, этот может быть именно тем, что вы ищете, если хотите, чтобы zend-auth работал в codeigniter. Пожалуйста, обновите свой вопрос еще раз, если вы сочтете zend-auth и codeigniter хорошим сочетанием ..
Я лично обнаружил, что взлом dx_auth довольно затруднен, особенно из-за отсутствия документации, и я хотел бы дать что-нибудь еще выстрел, если это звучит многообещающе.