2010-10-26 2 views
0

Я использую подключаемый модуль 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/

ответ

1

Периодический характер проблемы привел меня к предположению о том, что произошло состояние гонки. Используя утилиту отладки протокола прокси-сервера Charles, я смог увидеть сообщения запроса/ответа AMF. Я не был (и все еще не уверен), но, насколько я понимаю, вторая попытка входа в систему происходила до того, как сервер имел возможность полностью отключить предыдущую FlexSession.

Итак, чтобы «выиграть время» между попытками входа в систему, я отделил методы тестирования на разные классы тестов и альт ... все это Just Worked.

Возможно, пост-тест сна/задержки также сделал бы трюк, но я не мог найти функцию сна ActionScript.

+2

попытайтесь установить уровень журнала на отладку в blazeds; это довольно многословный –

 Смежные вопросы

  • Нет связанных вопросов^_^