【发布时间】:2017-06-21 17:04:03
【问题描述】:
简短的错误说明:
来自 PerfSDK 的Ms.Dynamics.Performance.CreateUsers.exe 抛出 错误
在https://mytest.sandbox.operations.dynamics.com/Services/AxUserManagement/Service.svc/ws2007FedHttp 上没有可以接受消息的端点侦听。
长错误描述:
我已经根据PerfSDK and multiuser testing with Visual Studio Online指南的第一部分中的描述从 XML 记录创建了一个单用户 C# 测试并使用 PerfSDK 成功运行它。
我在运行实验第二部分所述的多用户负载测试时遇到了问题。上面的链接似乎是描述如何从单用户测试创建多用户测试以及如何使用 Visual Studio Online 在沙盒环境中运行它的唯一在线资源。我还看过一些视频,例如Tools to Measure and Improve Microsoft Dynamics AX Performance、Performance Tools 等,但没有一个视频像上面的文章那样详细地解释了需要采取的所有步骤。
我做了以下事情:
- 在 Dynamics 365 中使用任务记录器创建了一个场景的记录 用于运营。
- 使用 Visual Studio 中的录制创建 C# perf 测试
PerfSDKSample项目来自PerfSDK文件夹。 - 按照所有“使用 Perf 运行单用户性能测试的步骤” SDK'来自article;
- 构建解决方案并从测试资源管理器成功运行我的测试: Internet Explorer 打开启动和回放我的场景 已经记录了。
注意:我使用 DEV 环境usnconeboxax1aos.cloud.onebox.dynamics.com 进行测试。当我尝试在CloudEnvironment.Config(沙箱,例如mysandbox.sandbox.operations.dynamics.com)中使用另一个主机名时,单用户测试失败并显示以下错误消息:
System.TypeInitializationException:“MS.Dynamics.TestTools.CloudCommonTestUtilities.Authentication.UserManagement”的类型初始化程序引发了异常。 ---> System.ServiceModel.EndpointNotFoundException:在https://mysandbox.sandbox.operations.dynamics.com/Services/AxUserManagement/Service.svc/ws2007FedHttp 没有可以接受消息的端点监听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。 ---> System.Net.WebException: 远程服务器返回错误: (404) Not Found..
- 对于多用户测试,我从 Visual Studio 启动了 Visual Studio 在线传送门https://app.vssps.visualstudio.com/profile/view
- 我修改了TestSetup方法如下:
单用户测试设置:
public void TestSetup()
{
SetupData();
_userContext = new UserContext(UserManagement.AdminUser);
Client = DispatchedClient.DefaultInstance;
Client.ForceEditMode = false;
Client.Company = "GB01";
Client.Open();
}
多用户测试设置:
public void TestSetup()
{
var testroot = System.Environment.GetEnvironmentVariable("DeploymentDir");
if (string.IsNullOrEmpty(testroot))
{
testroot = System.IO.Directory.GetCurrentDirectory();
}
Environment.SetEnvironmentVariable("testroot", testroot);
if (this.TestContext != null)
{
timerProvider = new TimerProvider(this.TestContext);
}
SetupData();
_userContext = new UserContext(UserManagement.AdminUser);
Client = new DispatchedClientHelper().GetClient();
Client.ForceEditMode = false;
Client.Company = "GB01";
Client.Open();
}
- 我将
CloudEnvironment.Config中的主机名设置为沙盒 URL,例如mysandbox.sandbox.operations.dynamics.com。 - 登录沙盒机器并安装我之前为单用户测试生成的证书。
- 更新了沙盒机器上的 wif.config,其方式与之前在 DEV 中更新的方式相同,并重新启动了 IIS。
- 在解决方案资源管理器中双击
vsonline.testsettings并使用上述article 中推荐的设置(针对我的证书和测试场景进行了相应修改)。 - 从解决方案资源管理器中打开
SampleLoadTest.loadtest并对其进行调整,使其仅在测试混合节点中使用我的测试,从而减少测试持续时间和用户数量。 - 运行负载测试。
负载测试以一些错误结束。第一个TestError同上:
初始化方法 MS.Dynamics.Performance.Application.TaskRecorder.GenJnlBase.TestSetup 抛出异常。 System.TypeInitializationException:System.TypeInitializationException:“MS.Dynamics.TestTools.CloudCommonTestUtilities.Authentication.UserManagement”的类型初始化程序引发异常。 ---> System.ServiceModel.EndpointNotFoundException: 在https://mysandbox.sandbox.operations.dynamics.com/Services/AxUserManagement/Service.svc/ws2007FedHttp 没有可以接受消息的端点监听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。 ---> System.Net.WebException: 远程服务器返回错误: (404) Not Found..
- 最后,当沙盒环境 URL 设置在
CloudEnvironment.Config、Ms.Dynamics.Performance.CreateUsers.exe以同样的错误失败:
C:\PerfSDK>Ms.Dynamics.Performance.CreateUsers.exe 3 GB01 失败并出现以下错误: System.TypeInitializationException:“MS.Dynamics.TestTools.CloudCommonTestUtilities.Authentication.UserManagement”的类型初始化程序引发异常。 ---> System.ServiceModel.EndpointNotFoundException:在https://mytest.sandbox.operations.dynamics.com/Services/AxUserManagement/Service.svc/ws2007FedHttp 处没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。 ... 在 [0] 处重新抛出异常: 在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg) 在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 类型) 在 MS.Dynamics.TestTools.CloudCommonTestUtilities.AxUserManagementServiceReference.IAxUserManagement.EnumUsers() 在 MS.Dynamics.TestTools.CloudCommonTestUtilities.Authentication.UserManagement.PopulateAxUsers() 在 MS.Dynamics.TestTools.CloudCommonTestUtilities.Authentication.UserManagement..cctor() --- 内部异常堆栈跟踪结束 --- 在 MS.Dynamics.TestTools.CloudCommonTestUtilities.Authentication.UserManagement.get_AdminUser() 在 MS.Dynamics.Performance.CreateUsers.Program.Main(String[] args)
【问题讨论】:
标签: performance-testing load-testing dynamics-365-operations