|
本帖最后由 ares444 于 2013-1-25 12:17 编辑
各位,最近由于工作需要,要测试一个C/S架构的系统性能。要编写tuxedo的性能测试脚本。采用的FML32格式。
本来,我准备使用录制回放的方式来搞定脚本,但是很不幸,客户端是在unix上的,无法直接使用loadrunner进行录制。我在网上也找了个方案《多机代理方式录制》,但是没有能够成功。
于是,我想试着手工编写tuxedo脚本。【第一步】:我定义了一个front.fml32,内容如下:
#name rel_number type flags comments
*base 2000
CHANNELID 1 string - channel id
MSGTYPE 2 long - message type
MESSAGE 3 carray - transaction message
SNODEID 4 string - send node
RNODEID 5 string - recv node
【第二步】:
编译生成对应的*.h文件,front.fml32.h如下:
/*
fname
fldid */
/*
-----
----- */
#define
CHANNELID
((FLDID32)167774161)
/* number: 2001
type: string */
#define
MSGTYPE
((FLDID32)33556434)
/* number: 2002
type: long */
#define
MESSAGE
((FLDID32)201328595)
/* number: 2003
type: carray */
#define
SNODEID
((FLDID32)167774164)
/* number: 2004
type: string */
#define
RNODEID
((FLDID32)167774165)
/* number: 2005
type: string */
【第三步】:编写脚本,这里卡住了。
在编写脚本中我发现了个问题,脚本好像根本就没有读我的fml32描述文件“front.fml32”,我做了个试验,代码如下:
action.c:
#include "lrt.h"#include "front.fml32.h"
//我把front.fml32.h放到的了loadrunner的include目录
Action()
{
/*****************************************************************************
设定环境变量,其中FLDTBLDIR32用于指定fml文件存放路径,FIELDTBLS32指定FML文件名称。
/*****************************************************************************/
static char *env_allow_array[] = {
"WSNADDR=",
"FLDTBLDIR32=",
"FIELDTBLS32=",
NULL
};
lrt_set_env_list(env_allow_array);
lrt_tuxputenv("WSNADDR=//192.168.21.1:15010");
lrt_tuxputenv("FLDTBLDIR32=E:\bea\tuxedo8.1\etc"); //我把front.fml32放在了这个目录
lrt_tuxputenv("FIELDTBLS32=front.fml32");
lrt_abort_on_error();
lr_output_message("name is %s", lrt_Fname32(33556434));
lr_output_message("id is %d", lrt_Fldid32("CHANNELID"));
rc = lrt_getFerror32();
lr_output_message("error code is %d", rc);
lr_output_message("error message is %s", lrt_Fstrerror(rc));
return 0;
}
预期输出:name is MSGTYPE
id is 167774161
实际报错:
Action.c(10): lrt_Fname32
Action.c(10): fieldid = 33556434
Action.c(10): Fname = (null)
Action.c(10): 错误: lrt_Fname:
Action.c(10): name is (null)
Action.c(11): lrt_Fldid32
Action.c(11): name = "CHANNELID"
Action.c(11): Fldid = 0
Action.c(11): 错误: lrt_Fldid32:
Action.c(11): id is 0
Action.c(14): lrt_getFerror32()
Action.c(14): getFerror32 = 11
Action.c(16): error code is 11
Action.c(18): lrt_Fstrerror
Action.c(18): err = 11
Action.c(18): Ferror = LIBFML_CAT:11: ERROR: Cannot find or open field table
Action.c(18): 确定
Action.c(18): error message is LIBFML_CAT:11: ERROR: Cannot find or open field table
请问,这个是什么原因啊?我在网上找了半天,没找到原因。。。。请赐教。。这个问题解决以后,我在继续往下摸索。。解决不了再继续请假
|
|