2015-03-25 1 views
0

Я написал код для создания DIFF двух текстовых файлов в Java/Eclipse, используя org.apache.commons.io.FileUtils и установить операции. Код работает нормально. , но тот же код не работает в утверждении BeanShell от JMeter. Линии с заданиями, задающими ошибку. Код:JMeter BeanShell Assertion не может идентифицировать методы FileUtil

import org.apache.commons.io.FileUtils; 
import java.io.*; 
import java.util.Date; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.concurrent.TimeUnit; 
import java.util.ArrayList; 
import java.util.Collection; 

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm"); 
Date startdate = new Date(); 
Date enddate = null; 
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("C://Work//JMeter//Logs//D2MDS.txt"))); 
out.println("Automated ETL Validator -- START -- " + dateFormat.format(startdate)); 
out.println("========================================================================="); 

try { 
Set<String> Slines = new TreeSet<String>(FileUtils.readLines(new File ("C://Work//JMeter//Data//SourceSQLLog.csv"))); 
//Set<String> Tlines = new TreeSet<String>(FileUtils.readLines(new File ("C://Work//JMeter//Data//TargetSQLLog.csv"))); 
//Slines.removeAll(Tlines); 
//out.println(Slines); 
} 
catch (Exception e) { 
out.println(ExceptionUtils.getStackTrace(e)); 
} 

Date enddate = new Date(); 
enddate = new Date(); 
long duration = enddate.getTime() - startdate.getTime(); 
long diffInMinutes = TimeUnit.MILLISECONDS.toMinutes(duration); 

out.println("========================================================================="); 
out.println("Automated ETL Validator -- END -- " + dateFormat.format(enddate)); 
out.println("\n\n\n*************************************************************************"); 
out.println("EXECUTION SUMMARY"); 
out.println("===================="); 
out.println("Total Lines in Extract File: " + ${__V(ret_val_#)}); 
out.println("Total Failures in Extract File: " + fail_cnt); 
out.println("Failed Lines of Extract File = " + fail_ln); 
out.println("Extract Validation -- END -- " + dateFormat.format(enddate) + " -- Duration: " + diffInMinutes + " Minutes"); 
out.close(); 

Beanshell Assertion бросает неясную ошибку:

Assertion failure message: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval In file: inline evaluation of: ``import org.apache.commons.io.FileUtils; import java.io.*; import java.util.Date; . . . '' Encountered "=" at line 18, column 20. 

5 Jar файлы находятся внутри/Lib папки JMeter в. Как заставить JMeter распознавать методы Set.

Благодаря

ответ

1

Первое:

Это не связано с использованием FileUtils класса, точка неисправности линии 18 согласно

Encountered "=" at line 18, column 20.

Изменение строки # 18 из

Date enddate = new Date(); 

до

enddate = new Date(); 

как вы уже определили его по строке # 3 Переводчик без перебора не разбирается в строке 18, поскольку переменная присутствует в этой области.

Второй

Beanshell не Java, так

Set<String> Slines = new TreeSet<String> 

также не будет. Вам нужно будет удалить алмазные кронштейны

Set Slines = new TreeSet... 

Третье:

Кроме того, я не вижу, где fail_cnt и fail_ln определены и хотел бы предложить, чтобы заменить

${__V(ret_val_#)} 

с

vars.get("ret_val_#"); 

См. How to use BeanShell: JMeter's favorite built-in component руководство для советов и трюков, связанных с Beanshell.

Надеюсь, это поможет.