你可以通过运行“./test.py -c core”脚本进行ns-3软件包单元测试,
./test.py -c core
这些测试可以被waf并行执行的,最后你可以看到如下的结果:
47 of 47 tests passed (47 passed, 0 failed, 0 crashed, 0 valgrind errors)
这是条相当重要的信息。
实际中,你看到的可能是类似于如下的信息:
Waf: Entering directory ‘/home/craigdo/repos/ns-3-allinone/ns-3-dev/build’
Waf: Leaving directory ‘/home/craigdo/repos/ns-3-allinone/ns-3-dev/build’
’build’ finished successfully (1.799s)
PASS: TestSuite ns3-wifi-interference
PASS: TestSuite histogram
PASS: TestSuite sample
PASS: TestSuite ipv4-address-helper
PASS: TestSuite devices-wifi
PASS: TestSuite propagation-loss-model
...
PASS: TestSuite object
PASS: TestSuite random-number-generators
47 of 47 tests passed (47 passed, 0 failed, 0 crashed, 0 valgrind errors)
用户通常可以运行此命令来检查ns-3软件包是否正确编译了。
你也可以使用我们的回归测试包来保证你的发行版和
工具链产生的二进制文件会产生同参考输出文件相同的结果。你在运行/download.py过程中会下载这些参考记录。 (警告:
ns-3.2和
ns-3.3发布版不使用ns-3-allinone环境,当你进行回归测试时需要在线环境,因为在直接运行测试之前它们需要同一个在线
源码库进行参考记录的动态同步)。
在回归测试中
Waf会允许一系列的测试,这些测试会产生我们所说的记录文件,记录文件的内容会和参考记录相对比,如果它们相同,那么回归测试会报告一个通过状态(PASS);如果回归测试失败你会看到一个失败标记(
FAIL),和一个指针指向有问题的记录文件和它的联合参考记录文件,还附带一个差异参数和选项以便检查哪里出现错误了。如果在一个
pcap文件中出现错误, 在对比之前常使用
tcpdump来将
pcap文件转换为文本文件。
如果需要的支持缺失,某些回归测试会被跳过,测试状态会被标记为跳过(SKIP)。
注意:回归测试也是并行的,所以产生的信息也可能是交叉出现的。
要进行回归测试,需要给Waf提供回归标记:
./waf --regression
可以看到如下信息显示进行了多项测试:
Entering directory ‘/home/craigdo/repos/ns-3-allinone/ns-3-dev/build’
[647/669] regression-test (test-csma-bridge)
[648/669] regression-test (test-csma-broadcast)
[649/669] regression-test (test-csma-multicast)
[650/669] regression-test (test-csma-one-subnet)
PASS test-csma-multicast
[651/669] regression-test (test-csma-packet-Socket)
PASS test-csma-bridge
...
Regression testing summary:
PASS: 22 of 22 tests passed
Waf: Leaving directory ‘/home/craigdo/repos/ns-3-allinone/ns-3-dev/build’
’build’ finished successfully (25.826s)
如果你想看看在回归测试中有哪些
项目测试的例子,可以使用如下命令:
cd build/debug/regression/traces/second.ref
tcpdump -nn -tt -r second-2-0.pcap
这些结果对于熟悉
tcpdump或者
网络嗅探器是很清楚的,在本
教程的后半部分我们会更多地提及
pcap文件。
在一切完成后,请用cd命令返回顶层ns-3目录:
cd ../../../../..
3.4 运行第一个脚本
我们通常使用Waf运行脚本,这将使编译系统正确设置共享库的路径,并保证这些共享库在运行时可用,如果要运行一个程序,只需在Waf加入—run选项即可,让我们在ns-3环境下运行常见的hello world程序试一下:
./waf --run hello-simulator
Waf首先检查程序正确编译了,而且还可以根据需要重新执行编译。
Waf执行了此程序,并输出如下信息:
Hello Simulator
祝贺你. 你现在是一名ns-3用户了!
如果你想在其他工具下如gdb或者valgrind下运行程序,可参见本Wiki条目。
0