使用 R ational Functional Tester 进行应用软件系统级自动化性 能测试(上)
RFT Java Native API 的实现
通过上述的操作,我们得到了被测软件的进程句柄并最终得到了进程的 CPU 时间和内存信息,但是,这些 API 的操作都是在 C++ 的环境下完成的,我们没有办法在 RFT 的 Java Script 中直接进行这些调用。因此我们需要把上述的操作封装成动态链接库,并通过 Java Native API 完成对动态链接库的调用,而最终在 RFT 的 Java Script 中得到进程的系统性能信息。
Java Native Interface 允许 Java 程序调用本地用 C++ 等其它语言编写的程序或类库。我们将经过一系列的步骤来完成我们的 Java Native API。
首先在 RFT 的 Java Script 代码 JavaNative_PerfmonWin.Java 中加上 JNI 的定义:
public native long getProcessorInfo(String processorName,String InfoType); |
编译通过生成对应的 class 文件后,在 class 文件的目录下执行:
Javah –jni JavaNative_PerfmonWin.class |
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class JavaNative_PerfmonWin */ #ifndef _Included_JavaNative_PerfmonWin #define _Included_JavaNative_PerfmonWin #ifdef __cplusplus extern "C" { #endif /* * Class: JavaNative_PerfmonWin * Method: getProcessorCPUTime * Signature: (LJava/lang/String;LJava/lang/String;)J */ JNIEXPORT jlong JNICALL Java_JavaNative_PerfmonWin_getProcessorInfo (JNIEnv *, jclass, jstring, jstring); #ifdef __cplusplus } #endif #endif |