前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >NS3_Tutorial 中文版: 第三

NS3_Tutorial 中文版: 第三

作者头像
py3study
发布于 2020-01-09 08:47:09
发布于 2020-01-09 08:47:09
1K0
举报
文章被收录于专栏:python3python3

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条目。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
require和import的区别
CommonJs 规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的 exports属性(即module.exports)是对外的接口,加载某个模块,其实是加载该模块的module.exports属性。
木子星兮
2020/07/16
1.2K0
10个最佳ES6特性
为了保证可读性,本文采用意译而非直译,并且对源代码进行了大量修改。另外,本文版权归原作者所有,翻译仅用于学习。
疯狂的技术宅
2019/03/28
5030
前端MVC Vue2学习总结(七)——ES6与Module模块化、Vue-cli脚手架搭建、开发、发布项目与综合示例
使用vue-cli可以规范项目,提高开发效率,但是使用vue-cli时需要一些ECMAScript6的知识,特别是ES6中的模块管理内容,本章先介绍ES6中的基础与模块化的内容再使用vue-cli开发vue项目。 一、ECMAScript6概要 ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaSc
张果
2018/03/30
1.8K0
前端MVC Vue2学习总结(七)——ES6与Module模块化、Vue-cli脚手架搭建、开发、发布项目与综合示例
前端模块化详解(完整版)
上例子通过jquery方法将页面的背景颜色改成红色,所以必须先引入jQuery库,就把这个库当作参数传入。这样做除了保证模块的独立性,还使得模块之间的依赖关系变得明显。
小生方勤
2019/06/01
2.2K0
前端模块化详解(完整版)
在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可;如今CPU、浏览器性能得到了极大的提升,很多页面逻辑迁移到了客户端(表单验证等),随着web2.0时代的到来,Ajax技术得到广泛应用,jQuery等前端库层出不穷,前端代码日益膨胀,此时在JS方面就会考虑使用模块化规范去管理。 本文内容主要有理解模块化,为什么要模块化,模块化的优缺点以及模块化规范,并且介绍下开发中最流行的CommonJS, AMD, ES6、CMD规范。本文试图站在小白的角度,用通俗易懂的笔调介绍这些枯燥无味的概念,希望诸君阅读后,对模块化编程有个全新的认识和理解!
Nealyang
2019/09/29
1.3K0
前端模块化详解(完整版)
前端模块化的今生
众所周知,早期 JavaScript 原生并不支持模块化,直到 2015 年,TC39 发布 ES6,其中有一个规范就是 ES modules(为了方便表述,后面统一简称 ESM)。但是在 ES6 规范提出前,就已经存在了一些模块化方案,比如 CommonJS(in Node.js)、AMD。ESM 与这些规范的共同点就是都支持导入(import)和导出(export)语法,只是其行为的关键词也一些差异。
ConardLi
2019/12/17
7040
前端模块化-CommonJS,AMD,CMD,ES6
随着 JavaScript 工程越来越大,团队协作不可避免,为了更好地对代码进行管理和测试,模块化的概念逐渐引入前端。模块化可以降低协同开发的成本,减少代码量,同时也是“高内聚,低耦合”的基础。
李振
2021/11/26
4230
Javascript模块化详解
前端的发展日新月异,前端工程的复杂度也不可同日而语。原始的开发方式,随着项目复杂度提高,代码量越来越多,所需加载的文件也越来越多,这个时候就需要考虑如下几个问题:
Clearlove
2021/03/11
6290
Javascript模块化详解
深入理解 ES Module
Module是ES6 出现的一个新的语法,提供一种将 JavaScript 程序拆分为可按需导入的单独模块的机制。在未出现之前,我们可能使用 commonjs等模块规范。随着ES Module的普及和推广,浏览器已经支持原生的模块规范。
前端知知
2022/09/29
4340
深入理解 ES Module
【译】开始在web中使用JS Modules
原文:《Using JavaScript modules on the web》 https://developers.google.com/web/fundamentals/primers/modules 译者序 JS modules,即ES6的模块化特性,通过 <scripttype="modules">可以实现不经过打包直接在浏览器中import/export,此玩法确实让人眼前一亮。 先看看 <scripttype="modules">的兼容性。目前只有较新版本的chrome/firefox/saf
QQ音乐前端团队
2018/08/12
1.2K0
模块化的一些小研究
我们知道最常见的模块化方案有CommonJS、AMD、CMD、ES6,AMD规范一般用于浏览器,异步的,因为模块加载是异步的,js解释是同步的,所以有时候导致依赖还没加载完毕,同步的代码运行结束;CommonJS规范一般用于服务端,同步的,因为在服务器端所有文件都存储在本地的硬盘上,传输速率快而且稳定。
lhyt
2022/09/21
3320
【THE LAST TIME】深入浅出 JavaScript 模块化
随着互联网的发展,前端开发也变的越来越复杂,从一开始的表单验证到现在动不动上千上万行代码的项目开发,团队协作就是我们不可避免的工作方式,为了更好地管理功能逻辑,模块化的概念也就渐渐产生了。
Nealyang
2020/01/14
7090
【THE LAST TIME】深入浅出 JavaScript 模块化
五分钟带你回顾前端模块化发展史
CSS 早在 2.1 的版本就提出了 @import 来实现模块化,但是 JavaScript 直到 ES6 才出现官方的模块化方案 ES Module。尽管早期 JavaScript 语言规范上不支持模块化,但这并没有阻止 JavaScript 的发展。官方没有模块化标准,那么我们就自己动手创建标准。社区里的前辈们创建并实现了规范,这些规范便是前端模块化发展之路上智慧的结晶。
童欧巴
2020/03/30
8890
五分钟带你回顾前端模块化发展史
Vue学习-ES6的模块化实现
在实际编写js脚本时,可能会遇到多个js脚本中变量或函数重复命名的情况,如果全部为全局变量,则在使用的时候会产生很多麻烦。因此出现了模块化的概念,即可以把每一个js脚本当作一个独立的模块,不同模块间的内容互不干扰,这样在实际使用起来的时候会避免很多不必要的麻烦。
花猪
2022/02/17
4120
模块化的一些小研究0.前言1.script标签引入2.AMD与CMD3.CommonJS与ES64.循环依赖5.webpack是如何处理模块化的
我们知道最常见的模块化方案有CommonJS、AMD、CMD、ES6,AMD规范一般用于浏览器,异步的,因为模块加载是异步的,js解释是同步的,所以有时候导致依赖还没加载完毕,同步的代码运行结束;CommonJS规范一般用于服务端,同步的,因为在服务器端所有文件都存储在本地的硬盘上,传输速率快而且稳定。
lhyt
2018/10/31
1.3K0
50 种 ES6 模块,面试被问麻了
快来免费体验ChatGpt plus版本的,我们出的钱 体验地址:https://chat.waixingyun.cn可以加入网站底部技术群,一起找bug,...
前端小智@大迁世界
2024/02/12
1980
50 种 ES6 模块,面试被问麻了
【译】开始在web使用JS Modules
原文说的JS modules,实际上指的是ES6的模块化特性,通过<script type="module">可以实现不经过打包直接在浏览器中import/export,此玩法确实让人眼前一亮。
elson
2018/07/04
2K0
【译】开始在web使用JS Modules
[译]ES6 模块化入门
在 ES6 之前,我们已经知道了 RequireJS,AngularJS 的依赖注入,以及 CommonJS,具体可以看笔者的上一篇文章《JS模块化历史简介》。当我们学习 ES6 的模块化,就会发现它的发展深受 CommonJS 的影响。通过这篇文章,我们将看到 export 和 import 语句,以及 ES6 模块是怎么与 CommonJS 模块兼容的。
savokiss
2019/11/06
8260
【前端】:模块化 - 打包技术
ES modules export live bindings, not values, so values can be changed after they are initially imported as per.
WEBJ2EE
2020/09/01
1.5K0
【前端】:模块化 - 打包技术
javaScript模块化解析「建议收藏」
上面说提到的结构,就是模块;按照这种结构划分开发程序的过程,就是模块化开发的过程;
全栈程序员站长
2022/11/15
5040
javaScript模块化解析「建议收藏」
相关推荐
require和import的区别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档