gpt4 book ai didi

java - 运行 Flexunit 测试时 BlazeDS 错误 : Detected duplicate HTTP-based FlexSessions

转载 作者:行者123 更新时间:2023-12-01 16:00:41 26 4
gpt4 key购买 nike

我正在使用 Maven Flexmojos 插件在命令行上针对 Jetty/Java/Spring Security/BlazeDS 后端运行一些 FlexUnit4 集成测试。这些集成测试在独立版本的 Flash 播放器中运行。其中一项测试尝试了几种不同的登录场景,如下所示:

    [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.

如果我尝试登录/注销两次,也会发生这种情况。所有登录和注销方法都基于使用 AMFChannelSet 的 ChannelSet.login 和 ChannelSet.logout。

更新:我相信我找到了问题的根源。独立播放器不使用 cookie,因此会混淆 BlazeDS 后端。参见这里:http://www.webappsolution.com/wordpress/2009/11/25/flexunit-4-testing-services-in-flash-player-issue/

最佳答案

问题的间歇性使我猜测正在发生竞争状况。使用 Charles 代理协议(protocol)调试实用程序,我能够看到 AMF 请求/响应消息。我不确定(现在仍然不确定),但我最好的猜测是,第二次登录尝试发生在服务器有机会完全禁用前一个 FlexSession 之前。

因此,为了在登录尝试之间“争取时间”,我将测试方法分为不同的测试类和中提琴......一切都正常。

也许测试后 sleep /延迟也能达到目的,但我找不到 ActionScript sleep 函数。

关于java - 运行 Flexunit 测试时 BlazeDS 错误 : Detected duplicate HTTP-based FlexSessions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4020652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com