【问题标题】:Expect-like tool for binary protocol testing用于二进制协议测试的类 Expect 工具
【发布时间】:2010-01-17 17:31:18
【问题描述】:

我想使用Expect 之类的东西为简单的面向字节的协议编写测试。测试脚本看起来像一个普通的流:

send "data"
expect "data"

(将写入发送到标准输出并期望从标准输入读取足够多的内容,如果不匹配则退出。)

我不能使用 expect 本身,因为它是为缓冲的、面向行的交互而设计的。出于同样的原因,使用 grep 或 awk 进行模式匹配已失效。

有我可以使用的 UNIX 工具或库吗?如果它是标准且可移植的,那就更好了,因为它需要与现有程序集成。

【问题讨论】:

    标签: testing binary protocols expect


    【解决方案1】:

    一个有点丑陋的解决方案是编写一个小的 perl 或 python 脚本,将二进制流转换为文本十六进制数字,然后使用 Expect 来处理它。

    【讨论】:

    • 看来我会用 perl 的 getc() 来剖析协议。不是我最喜欢学习的语言,但它无处不在。
    • pack / unpack 将是“剖析”协议的最佳选择,而 getc 对于非面向行的二进制协议来说是一个非常糟糕的选择。使用 read 和 print(或 sysread 和 syswrite 以避免缓冲)与对方交谈。
    【解决方案2】:

    pexpect 应该让你毫无问题地使用二进制(字节字符串),如果你对 Python 的逻辑没问题——它是纯 Python 并且可移植到所有足够的 unix-y 平台(基本上是一个带有 pty 的平台) ;-)。同样,Python 的正则表达式和其他字节字符串操作对任何二进制字符串都没有问题。和 structarray 等 Python 标准库模块简化了对此类二进制字节字符串的操作以及它们与其他类型的有意义的数据表示的来回转换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 2015-08-16
      • 2023-04-11
      • 2010-11-24
      • 1970-01-01
      相关资源
      最近更新 更多