2014-07-21 4 views
1

나는 모든 종류의 문제를 일으킨 jMeter 프로젝트를 가지고 있습니다. 주로 실행되는 동안 다양한 데이터를 저장하고 범위를 지정하기 때문입니다.jMeter - Beanshell bsh.shared 초기화 파일의 hashmap 데이터?

이제 작업이 거의 끝났으며 Beanshell 공유 hashmap을 사용하여 데이터를 저장했습니다. 내가하는 일 때문에 스레드의 안전성에 대해 걱정할 필요가 없습니다.

작동하지만 스레드 그룹이 실행될 때마다 다시 초기화됩니다. 모든 스레드 그룹 외부에 초기화 단계를 넣었음에도 불구하고.

그래서 내가 알기에, 해결책은 모든 시작 데이터를 시작시 한 번만 실행되는 초기화 파일에 저장하는 것입니다. 하지만 내가 어떻게해야할지 모르겠다. 이전에 ".bshrc"파일에 사용했던 Beanshell Preprocessor의 코드를 복사하고 jMeter 속성 파일을 ".bshrc"파일의 위치로 업데이트했지만 작동하지 않는 것 같습니다. 실제로 아무 것도하지 않은 것처럼 보입니다. 테스트를 실행할 때 값이없고 모든 것이 실패합니다.

나는 사용하여 시도했다 :

beanshell.init.file = ../빈/data.bshrc 및 beanshell.preprocessor.init = ../빈/data.bshrc

I을 init 파일을 설정하는 일종의 바보 가이드를 찾으려고했지만 도움이되는 것을 찾을 수 없습니다. Beanshell을 많이 사용하게 된 것은 이번이 처음이며 Java 지식은 매우 제한적입니다!

원래 Beanshell 프리 프로세서가 활성화 된 상태에서 테스트를 한 번 실행하면됩니다. 이것은 해시 맵을 설정하고 거기에서부터 메모리에 상주합니다. 나는이 실행을 멈추고, 전 처리기를 사용 불가능하게하고, 모든 후속 작업은 정상적으로 작동한다.

누구나?

답변

3

나는 당신이 액세스 할 수있는 모든 다른 스레드 그룹에 이전에 실행되는 setUp Thread Group을 사용하는 것이 좋습니다 및 메인 스레드 그룹 (들) 그 후

bsh.shared.myMap = new java.util.HashMap(); 
bsh.shared.myMap.put("foo","bar"); 
// any other operations 

같은으로 Beanshell 샘플러와 거기에 테스트 데이터를 정의 할 jmeter.util.BeanShellTestE -

log.info("foo = " + bsh.shared.myMap.get("foo")); 

2014년 7월 22일 10시 6분 48초 정보와 같은으로 Beanshell 사용 테스트 요소 (샘플러, 사전/사후 프로세서, 어설 션)에서 myMap 값 lement : foo = bar

Apache JMeter의 Beanshell 스크립팅 및 Beanshell 요리 책에 대한 자세한 내용은 How to use BeanShell: JMeter's favorite built-in component 안내서를 참조하십시오.

"무거운"작업에 Beanshell을 사용하는 경우 JSR223 SamplerGroovy language으로 전환하는 것이 좋습니다.이 경우 성능이 기본 Java 코드와 비슷합니다.

+0

예. 그게 내가 어제 게시 한 직후에 바꾼 것입니다. 그것은 충분히 잘 작동합니다. 그러나 외부 파일은 작업하기가 더 쉬울 것이므로 여전히 초기화 파일을 작동시키고 싶습니다. 나는 그것을 할 수 있다는 것을 안다, 나는 그것을 설정하는 방법을 모르겠다. Beanshell을 사용하는 것만으로 여러 스레드 그룹에 걸쳐 공유 배열에 액세스 할 수 있습니다.테스트가 설정된 방식으로 스레드로부터 안전 할 필요는 없습니다. 한 스레드 그룹은 다른 스레드 그룹이 다른 인스턴스에서 사용하는 인스턴스를 사용하지 않습니다. 그러나 중앙 집중화 된 데이터 풀이 있으면 확장 성이 훨씬 뛰어납니다. 따라서 배열. – ColinMcC

관련 문제