SHARE
TWEET

Untitled

a guest Jul 21st, 2017 71 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.util.concurrent.BlockingQueue;
  6. import java.util.concurrent.LinkedBlockingQueue;
  7. import java.io.*;
  8.  
  9. public class LoadTestPremium extends java.lang.Thread{
  10.     static String username = "apps";
  11.     static String password = "aplikasi";
  12.     static String host = "127.0.0.1";
  13.     static String port = "3306";
  14.     static String batchfile="";
  15.     static int thread=1;
  16.     static int iteration=1;
  17.     static int maxattempt=1;
  18.     int threadNumber;
  19.     static BlockingQueue<String> queue = new LinkedBlockingQueue<String>();
  20.  
  21.     public LoadTestPremium ( int num )
  22.     {    // Assign to member variable
  23.         threadNumber = num;
  24.     }
  25.  
  26.     public void run()
  27.     {
  28.         long startThreadTime=System.currentTimeMillis();
  29.         java.util.Date dt=new java.util.Date();
  30.         dt.setTime(startThreadTime);
  31.         System.out.println ("Thread " + threadNumber + " start. " + dt);
  32.  
  33.         if (threadNumber==0){
  34.           //Thread 0 bertugas membaca QUERY String dari batchfile baris per baris
  35.           //kemudian menyimpannya di dalam queue
  36.           for(int i=0;i<iteration;i++){
  37.             try{    // Create an input stream, reading from the specified file        
  38.               InputStream fileInput = new FileInputStream ( batchfile );
  39.               InputStreamReader reader = new InputStreamReader ( fileInput );
  40.               BufferedReader bufReader = new BufferedReader ( reader );
  41.               String SQL;
  42.               while((SQL=bufReader.readLine())!=null){
  43.                     queue.add(SQL);
  44.               }
  45.               fileInput.close();            
  46.             }catch (IOException ioe){
  47.               System.out.println ("I/O error - " + ioe);
  48.             }
  49.           }
  50.           for(int i=0;i<thread;i++){
  51.             queue.add("STOP");
  52.           }
  53.         }else{
  54.             //Thread 1, 2, 3, ...,thread bertugas membaca String dari queue
  55.             //Jika string berupa QUERY maka dia akan menjalankannya
  56.             //Jika string ini berharga 'STOP' maka thread akan berhenti
  57.             String receivedString="";
  58.             try {
  59.                 receivedString = queue.take();
  60.             } catch (InterruptedException e1) {
  61.                 e1.printStackTrace();
  62.             }
  63.             while(!receivedString.equals("STOP")){
  64.             //lakukan berulang ulang selama belum berhasil dan paling banyak maxattempt
  65.               int nattempt=0;
  66.               boolean continueTrying=true;
  67.               while(continueTrying){
  68.                 nattempt ++;
  69.                 continueTrying=false;
  70.                 long startQueryTime=System.currentTimeMillis();
  71.                 dt.setTime(startQueryTime);
  72.                 String logStr="Execution " + threadNumber+ "\t" + dt;
  73.                 //proses lebih lanjut jika ada kata "use"
  74.                 if (receivedString.length()<=3 || !receivedString.substring(0,3).toLowerCase().equals("use"))
  75.                   continue;
  76.                 //harus mengandung titik koma
  77.                 int posisiTitikKoma=receivedString.indexOf(";");
  78.                 if (posisiTitikKoma<0)
  79.                   continue;
  80.                 String schema=receivedString.substring(4, posisiTitikKoma).trim();
  81.                 Connection conn = null;
  82.                 String SQL="";
  83.                 try {
  84.                     String url = "jdbc:mysql://"+host+":"+port+"/"+schema;
  85.                     Class.forName ("com.mysql.jdbc.Driver").newInstance ();
  86.                     conn = DriverManager.getConnection (url, username, password);
  87.                     PreparedStatement ps=null;
  88.                     SQL=receivedString.substring(posisiTitikKoma+1).trim();
  89.                     ps=conn.prepareStatement(SQL);
  90.                     ResultSet rs=ps.executeQuery();
  91.                     if(rs!=null)
  92.                         rs.close();
  93.                     ps.close();
  94.                 } catch (Exception e) {
  95.                     System.out.println ("Error: Cannot connect to database server or wrong query: " + receivedString);
  96.                     if(nattempt<maxattempt)
  97.                       continueTrying=true;
  98.                 } finally {
  99.                   if (conn != null) {
  100.                     try {
  101.                       conn.close ();
  102.                     }catch (Exception e) {
  103.                         System.out.println ("Error: Cannot close connection");
  104.                         if(nattempt<maxattempt)
  105.                               continueTrying=true;
  106.                     }
  107.                   }
  108.                 }
  109.                 long endQueryTime=System.currentTimeMillis();
  110.                 dt.setTime(endQueryTime);
  111.                 logStr = logStr + "\t" + dt;
  112.                 logStr = logStr + "\t" + (endQueryTime-startQueryTime) + "\t" + SQL;
  113.                 System.out.println (logStr);
  114.                 try {
  115.                     receivedString=queue.take();
  116.                 } catch (InterruptedException e) {
  117.                     e.printStackTrace();
  118.                 }                
  119.               }
  120.             }                        
  121.         }
  122.         long endThreadTime=System.currentTimeMillis();
  123.         System.out.println ("Thread " + threadNumber + " stop. " + (endThreadTime-startThreadTime) + " milliseconds");
  124.     }
  125.  
  126.     public static void main(String args[]) throws IOException
  127.     {
  128.         for (int i=0;i<args.length;i++){
  129.             if(args[i].length()>=2 && args[i].substring(0,2).equals("-u"))
  130.                 username=args[i].substring(2);
  131.             if(args[i].length()>=2 && args[i].substring(0,2).equals("-p"))
  132.                 password=args[i].substring(2);
  133.             if(args[i].length()>=12 && args[i].substring(0,12).equals("--batchfile="))
  134.                 batchfile=args[i].substring(12);
  135.             if(args[i].length()>=9 && args[i].substring(0,9).equals("--thread="))
  136.                 thread=Integer.parseInt( args[i].substring(9));
  137.             if(args[i].length()>=12 && args[i].substring(0,12).equals("--iteration="))
  138.                 iteration=Integer.parseInt( args[i].substring(12));
  139.             if(args[i].length()>=7 && args[i].substring(0,7).equals("--host="))
  140.                 host=args[i].substring(7);
  141.             if(args[i].length()>=7 && args[i].substring(0,7).equals("--port="))
  142.                 port=args[i].substring(7);
  143.             if(args[i].length()>=13 && args[i].substring(0,13).equals("--maxattempt="))
  144.                 maxattempt=Integer.parseInt(args[i].substring(13));
  145.         }
  146.         Thread t[]=new Thread[thread+1];
  147.         for(int i=0; i<=thread;i++){
  148.             t[i] = new LoadTestPremium(i);
  149.         }
  150.         for(int i=0; i<=thread;i++){
  151.             t[i].start();
  152.         }
  153.     }
  154.  
  155. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top