我想利用网络仿真来模拟单元测试中的各种网络速度和丢包率。我正在尝试对我的网络层进行基准测试,结合不同的丢包率。我在这里遵循了这些说明,但仍然无法让它发挥作用。
我尝试通过环回连接127.0.0.1进行测试,并从单元测试中下载远程文件。在这两种情况下,网络速度都不会降低。
这是使用Visual Studio 2013 Premium
如何让网络仿真设置与单元测试一起使用?
答案 0 :(得分:1)
要使其发挥作用:
以前下载时间不到一秒的图像文件,现在花了将近一分钟进行56kbps仿真:
[TestMethod]
public void TestMethod1()
{
string page = "http://upload.wikimedia.org/wikipedia/commons/5/53/Wikipedia-logo-en-big.png";
// ... Use HttpClient.
using (HttpClient client = new HttpClient())
{
byte[] result = client.GetByteArrayAsync(page).Result;
Console.WriteLine("length" + result.Length);
}
}
testsettings GUI仅提供少量网络配置文件。如果您将Testsettings文件作为Notepad ++之类的XML文件打开,则可以调整网络设置并调整数据包丢失/延迟以测试各种情况。
您不能使用127.0.0.1,因为它会绕过大部分网络层以提高性能,包括绕过仿真器。安装Microsoft Loopback Adapter会添加一个带有自己的IP地址的接口,仿真器驱动程序可以绑定该接口。
如果在完成上述过程绑定网络仿真驱动程序后安装了Microsoft环回适配器,则它只绑定到现有接口。要绑定到新安装的界面,您必须卸载并重新安装网络仿真驱动程序。从开始 - >程序 - > Visual Studio工具 - >开发人员命令提示符...,运行以下两个命令:
VSTestConfig NETWORKEMULATION /uninstall
VSTestConfig NETWORKEMULATION /install
第二个命令应该指示它绑定的接口数量。
从命令行确定环回运行ipconfig/all
的IP地址,并查找带有描述" Microsoft Loopback Adapter"的条目。此IP地址将是您对客户端/服务器测试进行编码所需的IP地址。
Ethernet adapter Local Area Connection 2:
...
Description . . . . . . . . . . . : Microsoft Loopback Adapter
...
Link-local IPv6 Address . . . . . : fe80::e0d2:c0f8:b3f8:2199%20(Preferred)
Autoconfiguration IPv4 Address. . : 169.254.33.153(Preferred)
由于网络仿真驱动程序绑定到所有可用接口,因此当您运行单元测试并且模拟启动时,您的Internet连接也将变慢。您可以从“网络连接属性”对话框中取消选中/禁用其他接口的仿真驱动程序。它将在此连接使用以下项目下列为 Microsoft VSTS网络仿真NDIS6驱动程序:(在单元测试运行时不执行此操作,I有一个蓝屏,它损坏了驱动程序,不得不再次手动重新安装)