2014-11-05 1 views
0

Jmeter 사용 테스트 비동기 POST 요청을로드하려고 시도 중입니다. 요청이 이루어지면 mongoDB 문서를 처리 할 작업자 대기열에 넣습니다. 대기열이 처리 될 때까지 스레드가 앞으로 이동하는 것을 원하지 않습니다. 완료 상태를 기다리는 방법이 있습니까?JMeter로 처리 할 대기열에 들어가는 비동기 POST 요청 테스트

내 스레드 단계는 다음과 같습니다.

  1. 로그인
  2. 이벤트에 비디오를 추가 이벤트 (POST) (POST)
  3. 프로세스 이벤트 (비동기 POST)를 만듭니다 "이것은 처리를 위해 대기열에 비디오를두고 요청입니다에, 이벤트에서 GET을 수행하고 "상태"인 비디오의 상태를 볼 수 있습니다 : "인코딩"또는 "상태": "준비". "
  4. 삭제 이벤트가 (삭제)
  5. 비디오 시청 (GET)

나는 상태가 준비하지만 경우 이벤트 상태를 계속 확인 만 밖으로 이동 내 스레드에서 잠시 컨트롤러를 추가하는 시도가 didn를 ' 3 번만 반복하고 아무 작업도하지 않는 것처럼 작동하는 것처럼 보입니다. 잘못 사용했을 수도 있습니다.

이것은 내 컨트롤러가 어떻게 생겼는지입니다.

While Controller w/ condition ${__javaScript(${status}!="Ready")} 
    GET Event Status 
     HTTP Header Manager 
     Json Path Extractor for status - $.status 
     Constant Timer - 1000 

아무도 비동기 호출과 비슷한 문제가 있습니까? 또는이 문제를 해결하는 방법에 대한 몇 가지 아이디어를 통해?

감사

+0

while 루프 컨트롤러가 좋습니다. 어떻게 구성하니? 테스트 계획을 보여 주면 도움이 될 것입니다. 주된 문제는 while 컨트롤러에서 바로 조건을 얻는 것입니다. 수면을 취하거나 루프에 대기하여 상태 요청으로 서버를 채우지 않을 수도 있습니다. – CharlieS

+0

작동하는 컨트롤러가 있는데 첫 번째 요청에서 컨트롤러는 200과 같은 값을 반환하지만 동일한 요청을 다시 반복해야하는 경우 304를 반환합니까? 이것이 왜 일어나는지 이해하지 못합니까? 나는 컨트롤러를 가지고 무엇을하고 있는지 보여주기 위해 나의 질문을 편집했다. –

+0

헤더 매니저는 무엇을하고 있는가? 정말로 필요합니까? 304는 특정 요청 내용을 기반으로 한 서버 응답입니다. 동일한 두 가지 샘플 요청과 응답을 보여줄 수 있습니까? – CharlieS

답변

0

스레드 그룹 1
으로 Beanshell 샘플러 - props.put ("끝", "FALSE");
HTTP1
HTTP2
....
루프 및/또는 지연 (이벤트에 GET과 "상태"되는 영상의 상태 참조 : "인코딩"또는 "상태". "준비"를 ")
IF 컨트롤러 - "$ {상태}"== "준비"
으로 Beanshell 샘플러 - props.put ("끝", "TRUE");

동안 컨트롤러 - $ {__ BeanShell이다 (props.get ("완료")! = null || props.get ("finish") == "TRUE")}
동영상보기 (GET)
이벤트 삭제 (DELETE)

희망이 도움이 될 것입니다.

+0

루프 아래에 IF 컨트롤러, Beanshell 샘플러 및 While 컨트롤러를 모두 설치 하시겠습니까? –

+0

아니요, 상태를 확인하는 요청 만 IF 컨트롤러에 있어야합니다. –