2019-07-27 22:44:32 +08:00
|
|
|
|
#ifndef ACL_TEST_STRUCT_INCLUDE_H
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define ACL_TEST_STRUCT_INCLUDE_H
|
|
|
|
|
|
|
|
|
|
# ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
# endif
|
|
|
|
|
|
2017-06-02 14:47:24 +08:00
|
|
|
|
#include "../stdlib/acl_array.h"
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
typedef struct AUT_LINE {
|
2019-07-27 22:44:32 +08:00
|
|
|
|
char cmd_name[128]; /* 命令函数名称 */
|
|
|
|
|
int result; /* 执行结果 */
|
|
|
|
|
int argc; /* 参数个数 */
|
|
|
|
|
ACL_ARRAY *argv; /* 参数列表 */
|
|
|
|
|
char *args_str; /* 参数列表的备份 */
|
|
|
|
|
int valid_line_idx; /* 该有效配置行在所有有效配置行中的行号 */
|
|
|
|
|
int line_number; /* 该有效配置行在配置文件中的行号 */
|
|
|
|
|
void *arg_inner; /* 内部注册自己的参数到该结构中 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
void (*free_arg_inner)(void*);
|
2019-07-27 22:44:32 +08:00
|
|
|
|
void *arg_outer; /* 外部应用注册自己的参数到该结构中 */
|
|
|
|
|
int obj_type; /* 是内部命令对象还是外部命令对象标志位,
|
2014-11-19 00:25:21 +08:00
|
|
|
|
* defined as: AUT_OBJ_
|
|
|
|
|
*/
|
|
|
|
|
} AUT_LINE;
|
|
|
|
|
|
|
|
|
|
typedef int (*AUT_FN) (AUT_LINE *test_line, void *arg);
|
|
|
|
|
|
|
|
|
|
/**
|
2019-07-27 22:44:32 +08:00
|
|
|
|
* 说明: 单元测试所采用的一致的数据结构
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
|
|
|
|
typedef struct AUT_FN_ITEM {
|
2019-07-27 22:44:32 +08:00
|
|
|
|
const char *cmd_name; /* 命令字名称 */
|
|
|
|
|
const char *fn_name; /* 函数名称 */
|
|
|
|
|
AUT_FN fn_callback; /* 测试用回调函数 */
|
|
|
|
|
void *arg; /* 测试回调函数所用的参数 */
|
|
|
|
|
int inner; /* 是否是内部的命令 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
} AUT_FN_ITEM;
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 内部数据结构定义 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
typedef struct {
|
|
|
|
|
char *name;
|
|
|
|
|
char *value;
|
|
|
|
|
} AUT_ARG_ITEM;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
2019-07-27 22:44:32 +08:00
|
|
|
|
int match_number; /* 成对命令中相互间的匹配号,
|
|
|
|
|
* 例如: loop_begin 与 loop_end 之间
|
|
|
|
|
* 对非成对的命令项无效, 如对:
|
|
|
|
|
* stop 命令项.
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2019-07-27 22:44:32 +08:00
|
|
|
|
AUT_LINE *peer; /* 与该有效配置行成对的另一个对象 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
int flag; /* define as: AUT_FLAG_ */
|
|
|
|
|
int status; /* define as: AUT_STAT_ */
|
2019-07-27 22:44:32 +08:00
|
|
|
|
int valid_line_idx; /* 在所有有效配置行中的下标位置 */
|
|
|
|
|
|
|
|
|
|
/* 私有类型定义如下 */
|
|
|
|
|
/* 针对循环执行命令序列 */
|
|
|
|
|
int nloop_max; /* 最大循环次数, 由配置文件中获得 */
|
|
|
|
|
int nloop_cur; /* 当前循环的次数 */
|
|
|
|
|
int offset_valid_line_idx; /* 相对有效配置行下标索引 */
|
|
|
|
|
int loop_sleep; /* 循环执行时的休息 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
} AUT_CMD_TOKEN;
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
#define AUT_OBJ_OUTER 0 /* 默认为外部命令对象 */
|
|
|
|
|
#define AUT_OBJ_INNER 1 /* 为内部对象 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
#define AUT_FLAG_LOOP_BEGIN 1
|
|
|
|
|
#define AUT_FLAG_LOOP_BREAK 2
|
|
|
|
|
#define AUT_FLAG_LOOP_CONTINUE 3
|
|
|
|
|
#define AUT_FLAG_LOOP_END 4
|
|
|
|
|
|
|
|
|
|
#define AUT_FLAG_IF 5
|
|
|
|
|
#define AUT_FLAG_ELSE 6
|
|
|
|
|
#define AUT_FLAG_ELIF 7
|
|
|
|
|
#define AUT_FLAG_ENDIF 8
|
|
|
|
|
|
|
|
|
|
#define AUT_FLAG_STOP 9
|
|
|
|
|
|
|
|
|
|
#define AUT_STAT_FREE 0
|
|
|
|
|
#define AUT_STAT_BUSY 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define AUT_LOOP_BREAK -100
|
|
|
|
|
|
|
|
|
|
#define VAR_AUT_LOG_PRINT 0x0001
|
|
|
|
|
#define VAR_AUT_LOG_FPRINT 0x0010
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 配置文件中的关键字 */
|
|
|
|
|
/* 日志记录级别 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_LOG "LOG"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 执行停止标志位 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_STOP "STOP"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 休息标志位 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_SLEEP "SLEEP"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 暂停标志位 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_PAUSE "PAUSE"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 循环执行开始标志位 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_LOOP_BEGIN "LOOP_BEGIN"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 循环执行停止标志位 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_LOOP_END "LOOP_END"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 跳出循环执行 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_LOOP_BREAK "LOOP_BREAK"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 循环继续 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_LOOP_CONTINUE "LOOP_CONTINUE"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 条件判断开始语句 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_IF "IF"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 条件判断 else 语句 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_ELSE "ELSE"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 条件判断结束语句 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_ENDIF "ENDIF"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/* 跳转执行语句 */
|
2014-11-19 00:25:21 +08:00
|
|
|
|
#define VAR_AUT_GOTO "GOTO"
|
|
|
|
|
|
2019-07-27 22:44:32 +08:00
|
|
|
|
/*----------------- 内部保留的一些配置文件参数 -----------------------------*/
|
2014-11-19 00:25:21 +08:00
|
|
|
|
/**
|
2019-07-27 22:44:32 +08:00
|
|
|
|
* 通用的整数值参数名变量:
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*
|
2019-07-27 22:44:32 +08:00
|
|
|
|
* 对于 VAR_AUT_SLEEP 则表示为休息的秒数值;
|
|
|
|
|
* 对于 VAR_AUT_LOOP_BEGIN 则表示循环的次数
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#define VAR_AUT_ITEM_COUNT "COUNT"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
# endif
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|