当前位置: 首页 > news >正文

suricata增加单元测试编译失败

一、环境

$ lsb_release  -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.5 LTS
Release:	22.04
Codename:	jammy

suricata: suricata7.0.5
IDE: vscode

二、背景

在suricata中开发了某个功能后,增加unittest时,无法编译通过。

三、unittest增加过程

3.1 增加Add功能

src/util-add.h

#ifndef __UTIL_ADD_H__
#define __UTIL_ADD_H__int Add(int a, int b);#ifdef UNITTESTS
void AddRegisterTests(void);
#endif#endif

src/util-add.c

#include "util-add.h"int Add(int a, int b)
{return a+b;
}#ifdef UNITTESTS
#include "tests/util-add.c"
#endif

3.2 添加源码编译

src/Makefile.am

noinst_HEADERS = \...util-add.h \...libsuricata_c_a_SOURCES = \...util-add.c \...

3.3 增加unittest

src/tests/util-add.c

#include "util-add.h"
#include "util-unittest.h"static int AddTest01(void)
{int a = Add(1, 2);FAIL_IF(a != 3);PASS;
}void AddRegisterTests(void)
{UtRegisterTests("AddTest01", AddTest01);
}

3.4 注册单元测试

src/runmode-unittests.c

#ifdef UNITTESTS
...
#include "util-add.h"
...
#endif...#ifdef UNITTESTS
static void RegisterUnittests(void)
{...AddRegisterTests();...
}
#endif

3.5 编译

$ ./configure --enable-unittest

请添加图片描述

$ make -j8

请添加图片描述

四、问题排查

明明有AddRegisterTests函数的实现,为啥报错说没有实现呢?
经过对比发现vscode未识别到宏UNITTESTS的定义
请添加图片描述

经过查找发现UNITTESTS定义在src/autoconf.h,
请添加图片描述

src/autoconf.h是通过文件src/suricata-common.h引用的
请添加图片描述

因此在src/util-add.c中增加 #include "suricata-common.h"解决。

五、总结

因缺少引用头文件src/suricata-common.h,导致UNITTESTS宏在util-add.c中未定义,致使并未编译src/tests/util-add.c
以后添加功能,都引用suricata-common.h头文件,此文件为公共头文件。

相关文章:

  • 3DGS-to-PC:3DGS模型一键丝滑转 点云 or Mesh 【Ubuntu 20.04】【2025最新版!!】
  • STM32 变量存储
  • window 显示驱动开发-指定 DMA 缓冲区的段
  • 2.3 定积分
  • 恰到好处TDR
  • #在 CentOS 7 中手动编译安装软件操作及原理
  • c#修改ComboBox当前选中项的文本
  • ExcelJS库的使用
  • vue2/3 中使用 @vue-office/docx 在网页中预览(docx、excel、pdf)文件
  • 关于nextjs中next-sitemap插件生成文件样式丢失问题及自定义样式处理
  • vue的table表格选择回显不显示
  • vue H5解决安卓手机软键盘弹出,页面高度被顶起
  • 网卡网孔速率的协商是如何进行的?
  • 【小记】word批量生成准考证
  • element中表格文字剧中可以使用的属性
  • 初识 Pandas:Python 数据分析的利器
  • 七、MyBatis-Plus高级用法:最优化持久层开发
  • 力扣2094题解
  • Stream Deck纯软件实现高性价比平替
  • HTML5 定位详解:相对定位、绝对定位和固定定位
  • AI观察|从万元到百万元,DeepSeek一体机江湖混战
  • 库尔德工人党决定自行解散
  • 淡马锡辟谣:淡马锡和太白投资未在中国销售任何投资产品或金融工具
  • 我国7名优秀护理工作者荣获第50届南丁格尔奖
  • 让胖东来“自闭”的玉石生意,究竟水有多深?
  • 我国成功发射遥感四十号02组卫星