2012年2月7日 星期二

在LoadRunner中使用SSH連接Linux


  今天發現一個非常好的Jar包,純Java實現SSH連接:jsch-0.1.41.jar
 
只要能向Linux伺服器發送命令並拿到其返回值,那麼可以做的事情就有很多了。譬如直接使用Shell、寫好一個腳本放在伺服器上讓你調。
 
下面為LoadRunnerJavaVuser代碼,收集Linux系統的系統負載,並生成自訂圖表:
import lrapi.*;
import com.jcraft.jsch.*;
import java.io.InputStream;
 
 
public class Actions
{
  String mUserName =
 "higkoo";
  String mHostName =
 "192.168.10.31";
  String mPwd =
 "123456";
  String mCommand =
 "uptime | awk -F\" \" '{print $12}'";

    
public int init() throws Throwable {
     
return 0;
    }
//end of init
   
   
public int action() throws Throwable {
   
try{
     JSch jsch=
new JSch();
     Session session=jsch.
getSession(mUserName, mHostName, 22);
     session.
setPassword(mPwd);
     session.
setConfig("StrictHostKeyChecking", "no");
     session.
connect(30000);  // making a connection with timeout.
    
     Channel channel = session.
openChannel("exec");
     ((ChannelExec) channel).
setCommand(mCommand);
     InputStream in = channel.
getInputStream();
     channel.
connect();
    
int nextChar;
     StringBuffer sb =
 new StringBuffer();
    
while(true){
      
while ((nextChar = in.read()) != -1) {
       sb.
append((char) nextChar);
       }
      
if (channel.isClosed()) {
       System.
out.println("exit-status: "
         + channel.
getExitStatus());
      
break;
       }
      
try {
       Thread.
sleep(1000);
       }
 catch (Exception ee) {
         System.
out.println(ee.getMessage());
       }
      }
      lr.
user_data_point( "Load Avg" , Double.parseDouble(sb.toString()) ); //Data Point
      channel.
disconnect();
      session.
disconnect();
    }
catch(Exception e){
     System.
out.println(e);
    }
     
return 0;
    }
//end of action
 
   
public int end() throws Throwable {
     
return 0;
    }
//end of end
}
  當然,這個腳本只是隨便舉了個例子,剩下的就由你發揮了!http://img.baidu.com/hi/jx/j_0049.gif
 
因為LoadRunnerJavaVuser才開始瞭解JavaJava真的很強大!起初需要使用LR做一些複雜一點的事情,必須調用DLL完成。不會C++,每次要實現什麼功能都得請戰友幫忙實現。對代碼不太感冒的我,要將性能測試進行到底,不得不去瞭解程式本身。Java的開源、跨平臺,Linux開源、穩定,相關的程式、元件也不斷被人們接受和壯大。話題扯遠了,談談LRJava吧。
  LR
JavaVuser可以直接運行Java程式,而且還可以使用LR自帶的Java運行庫,非常好用!
 
方法:“File”功能表——“Add Files to Script”,然後在腳本開始前添加import引用,即可調用其中的方法。
  
不足的是,LR的編輯器不好用,但是可以在其它編輯器寫好代碼後再拷過來。LR支援Jar包的調用,可以把寫好的程式打包起來以供調用。調用Jar的功能也有個不足:只能調用第一層Jar包,不能調用包中包
 
如果專案使用Java開發,測試到一些不容易實現的功能時,可以直接讓開發提供一個Jar包來用。因為這些功能開發都已經實現了,不需要額外的開發成本,一定程度上保證了一致性。
 
關於本篇講到的ssh連接Linux,只是陳述了一個思路,核心就是靠Java實現。用其它語言來包裝LR,很好 很強大!

沒有留言: