2011-11-25 8 views
0

SamplerRequest 객체의 하위 결과를 출력하는 jmeter 그래프 리스너를 찾고 있습니다. 나는 아직 그것을 찾지 못했고 나는 그것을 얻는 데 매우 열중하고있다.SampleResult.subResult에 대한 Jmeter 그래프 리스너

+0

SamplerRequest 객체 란 무엇입니까? 절대 들어 본 적 없어요 ... 링크를 제공해 주시겠습니까? –

+0

죄송합니다. SampleResult는 'SamplerRequest'가 아닙니다. – wonchi

+0

질문 하나 더 - "출력"이란 무엇입니까? Jmeter의 결과 트리 구성 요소는 하위 결과를 잘 보여줍니다 ... –

답변

0

알고있는 유일한 옵션은 Hits Per Second 그래프입니다. 결과 및 하위 결과를 표시하지만 트랜잭션 컨트롤러에서만, 포함 된 리소스는 표시하지 않습니다. 저자에게 새로운 그래프를 구현하도록 요청할 수 있습니다 ...

1

이전 질문, 알아요.

불행히도 SampleResult에 첨부 된 하위 결과의 결과를 그래프로 표시하는 JMeter 그래프 리스너가없는 것 같습니다. 방금 같은 문제에 직면하면서, 나는 내 자신의 것을 쓰기로했습니다.

단계 :

  1. 는 항아리로 아래의 클래스를 컴파일합니다.
  2. jMeter의 lib/ext 폴더에 jar 파일을 넣습니다.
  3. 테스트 계획을 열고 메뉴를 탐색하여 정상적으로 수신기를 추가하고 "SubResult Distributed Response Graph"를 선택하십시오.
  4. 테스트 계획을 실행하십시오.

클래스 :

아래의 클래스는 응답 시간 분포 그래프를 제공 할 것입니다, 그 의지는 그래프 하위 결과. 내가 자바 1.5에서 컴파일했기 때문에

public class SubResultDistributedResponseTimeListener extends DistributionGraphVisualizer { 

private static final Logger LOG = LoggingManager.getLoggerForClass(); 

@Override 
public void add(final SampleResult res) { 
    final List<SampleResult> subResults = Arrays.asList(res.getSubResults()); 
    final SubResultDistributedResponseTimeListener inst = this; 

    JMeterUtils.runSafe(new Runnable() { 
     public void run() { 
      for (SampleResult r : subResults) { 
       long time = r.getEndTime() - r.getStartTime(); 
       LOG.info("Adding result; start: " + r.getStartTime() + " end: " + r.getEndTime() + " duration: " + time); 
       SamplingStatCalculator model = inst.getCustomModel(); 
       if (model != null) { 
        model.addSample(r); 
        inst.updateGui(model.getCurrentSample()); 
       } 
      } 
     } 
    }); 

} 

// we need this because DistributionGraphVisualizer has a private field 'model' which 
// deals with updating the screen. Watch out for SecurityManager problems with 
// accessing private fields. 
public SamplingStatCalculator getCustomModel() { 
    try { 
     Field f = DistributionGraphVisualizer.class.getDeclaredField("model"); 
     f.setAccessible(true); 
     return (SamplingStatCalculator) f.get(this); 
    } catch (NoSuchFieldException e) { 
     e.printStackTrace(); 
    } catch (SecurityException e) { 
     e.printStackTrace(); 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

@Override 
public String getName() { 
    return "SubResult Distributed Response Graph"; 
} 

@Override 
public String getStaticLabel() { 
    return this.getName(); 
} 

@Override 
public String getLabelResource() { // add this Listeners name to the right click context menu. 
    return this.getName(); 
} 

NB는 끔찍하게 못생긴 catch 블록이었다.

원하는 경우 다른 그래프 수신기를 확장하려면 독자에게 맡기 겠습니다.