在线文档教程

9.测试和工具 | 9. Testing and tools

9测试和工具

9.1追踪

我们已经安装了我们的代码以启用跟踪。运行跟踪已禁用的应用程序会导致可忽略的性能开销(对返回原子的函数的外部调用)。激活跟踪不需要重新编译代码,因为我们依赖Erlang / OTP内置的对动态跟踪激活的支持。在我们的例子中,对给定外部函数的调用进行跟踪。

事件跟踪可以在通用消息序列图表工具中查看,也可以et作为标准输出查看(事件写入stdio)。

enable_tracedisable_traceset_trace获得更多信息。

9.2测量与变换

我们已经包含了一些简单的编解码器测量工具(meas),性能测试(mstone1和mstone2)以及消息转换。

该工具位于示例/ meas目录中。

要求

  • Erlang/OTP,版本R13B01或更高版本。

  • 版本3.11或更高版本申请。

  • 版本1.6.10或更高版本Asn 1申请。

  • Flex库。没有它,Flex动力编解码器不能使用。

测量结果

测量运行(meas)的结果是四个excel兼容的文本文件:

  • decode_time.xls - >解码结果

  • encode_time.xls - >编码结果

  • total_time.xls - >总计(解码+编码)结果

  • message_size.xls - >消息大小

指令

该工具包含四项内容:

  • 转换模块

  • 测量(测量)模块(s)

  • mstone(mstone1和mstone2)模块(s)

  • 基本的消息文件

讯息转换

不同工具使用的消息包含在单个消息包文件中(有关详细信息,请参阅下文)。该文件中的消息仅使用一个编解码器进行编码。在测量启动过程中,读取消息,然后转换为测量中使用的所有编解码器格式。

消息转换由转换模块完成。它用于将用一个编解码器编码的一组消息转换为另一个基本编解码器。

Measurement(s)

有两种不同的测量工具:

  • MEAS:用于执行编解码器测量。也就是说,要了解megaco应用程序提供的不同编解码器可以预期哪种性能。通过在解码/编码功能上迭代每条消息大约2秒并计算解码/编码的数量来完成测量。最好通过修改该工具提供的meas.sh.skel框架脚本来运行。要手动运行它,请执行以下操作:%erl -pa <path-megaco-ebin-dir> -pa <path-to-meas-module-dir> Erlang(BEAM)仿真器版本5.6源Eshell V5.7.1(使用^ G)1> megaco_codec_meas:start()。... 2> halt()。或者为了使它更容易,假设应该在所有编解码器上完成一项措施(如上所述):%erl -noshell -pa <path-megaco-ebin-dir> \ -pa <path-to-meas-module-dir >

  • mstone 1和mstone 2*

这是两种不同的SMP性能监控工具。

mstone1为每个由megaco应用程序支持的编解码器配置创建一个进程,让它们运行一段时间(全部同时),编码和解码megaco消息。总共处理的消息数是mstone1(1)值。

有不同的方法来运行mstone1工具,例如使用或不使用驱动程序,只使用灵活授权的配置。

最好通过修改该工具提供的mstone1.sh.skel框架脚本来运行。

所述mstone2类似于mstone1工具,但在这种情况下,每个所创建的过程使得仅一个通过消息运行,然后退出。一旦进程退出,就会创建一个新的进程(具有相同的配置和消息)来代替它。总共处理的消息数是mstone2(1)值。

这两个工具都使用工具提供的消息包(time_test.msgs),尽管它可以在任何消息包上运行,只要它具有相同的结构即可。

消息包文件

这只是一个erlang兼容的文本文件,具有以下结构:{codec_name(), messages_list()}

codec_name() = pretty | compact | ber | per | erlang (how the messages are encoded) messages_list() = [{message_name(), message()}] message_name() = atom() message() = binary()

编解码器名称是编解码器的名称,编码器中的所有消息message_list()均已使用该名称进行编码。

通过调用export_messages函数可以将该文件导出到文件结构。 如果用外部工具进行测量,这可能是有用的。 导出消息将创建一个具有以下结构的目录树:

<message package>/pretty/<message-files> compact/ per/ ber/<message-files> erlang/

该文件包含版本1,2和版本3消息。

注记

二进制编解码器

有两种使用二进制编码的基本方法:使用与包相关的名称和终止标识变换(“本地”编码配置)或不使用。该转换将包相关名称和终止标识转换为更方便的内部表单(等同于解码的文本信息)。

转换在完成实际解码后完成。

此外,可以使用链接驱动程序来执行某些解码/编码,解码和编码('驱动程序'编码配置)。

因此,在测试中,使用四种不同的编码配置测试二进制编解码器,以确定不同选项如何影响性能:使用转换和无驱动程序([]),无转换和无驱动程序(本机),使用转换和驱动程序驱动程序),最后没有转换,并与驱动程序(驱动程序,本机)。

包含测试消息

其中一些消息是从RFC的旧版本的调用流示例中提取出来的,而另一些消息是为了测试Megaco的特定特性而创建的。

测量工具目录名

请确保命名包含以'megaco-'开头的测量二进制文件的目录,例如megaco-meas。这会混淆erlang应用程序加载器(erlang应用程序被命名,例如megaco-1.0.2)。