Я использую подключаемый модуль Maven Flexmojos для запуска некоторых тестов интеграции FlexUnit4 в командной строке с бэкэндом Jetty/Java/Spring Security/BlazeDS. Эти интеграционные тесты выполняются в автономной версии флеш-плеера. Один из этих тестов пытается несколько различных сценариев входа в систему следующим образом:Ошибка BlazeDS при запуске тестов Flexunit: обнаруженные дубликаты FlexSessions на основе HTTP
[Test(async)]
public function userLogin_badCredentials_FailedLogin():void {
var username:String = "guest";
var password:String = "not_the_right_password";
var token:AsyncToken = authenticationService.userLogin(username, password);
token.addResponder(Async.asyncResponder(this, new TestResponder(handleRemoteObjectNoExpectedResult, handleRemoteObjectExpectedFaultBadCredentials), TIMEOUT, username, handleTestTimeout));
}
[Test(async)]
public function userLoginLogout_UserLoggedIn_SuccessfulLoginLogout():void {
var username:String = "admin";
var password:String = "admin";
var token:AsyncToken = authenticationService.userLogin(username, password);;
token.addResponder(Async.asyncResponder(this, new TestResponder(userLoginLogout2_UserLoggedIn_SuccessfulLoginLogout, handleUnexpectedFault), TIMEOUT, username, handleTestTimeout));
}
public function userLoginLogout2_UserLoggedIn_SuccessfulLoginLogout(event:ResultEvent, passThroughData:Object):void {
// Must have logged in correctly
assertTrue(serviceManager.channelSet.authenticated);
// Now lets test logout
var token:AsyncToken = authenticationService.userLogout();
token.addResponder(Async.asyncResponder(this, new TestResponder(handleExpectedResult, handleUnexpectedFault), TIMEOUT, null, handleTestTimeout));
}
Либо один из этих тестов проходит 100% сам по себе, но работает и оба друг за друга я периодически (около 75% времени) получение ошибки:
Channel.Ping.Failed error Detected duplicate HTTP-based FlexSessions, generally
due to the remote host disabling session cookies. Session cookies must be enabled
to manage the client connection correctly.
Это также случается, если я попытаюсь дважды войти в систему/выйти из системы. Все методы входа и выхода основаны на каналах ChannelSet.login и ChannelSet.logout, которые используют AMFChannelSet.
Обновление: Я считаю, что я нашел источник проблемы. Автономный проигрыватель не использует файлы cookie и, следовательно, путает бэкэнд BlazeDS. См. Здесь: http://www.webappsolution.com/wordpress/2009/11/25/flexunit-4-testing-services-in-flash-player-issue/
попытайтесь установить уровень журнала на отладку в blazeds; это довольно многословный –