3.3  测试ns-3
你可以通过运行./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.2ns-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条目。