2013-02-20 4 views
2

VUser 스크립트가 실행될 때마다 고유 한 파일을 업로드하려고합니다 (컨트롤러 시나리오의 vusers 에서처럼). 다른 포럼에서 몇 가지 예제를 찾아서 함께 사용해보십시오.loadrunner 모든 VUser와 uplod 고유 한 파일

Action() 
{ 

char command[100]; 
sprintf(command, “copy C:\\source_dir\\srcFile.txt C:\\source_dir\\srcFile-%s.txt”,    
lr_eval_string (”{iteration_number}”)); 
system(command); 

web_submit_data("FileUpload", 
"Action={URL}", 
"Method=POST", 
"EncType=multipart/form-data", 
"TargetFrame=", 
"RecContentType=text/html", 
"Mode=HTML", 
ITEMDATA, 
"Name=File", "Value=C:\\source_dir\\srcFile-%s.txt", "File=yes", ENDITEM, 
LAST); 

sprintf(command, “del C:\\source_dir\\srcFile-%s.txt”, lr_eval_string (”{iteration_number}”)); 
system(command); 

return 0; 


} 

그러나이 스크립트는 매번 100 개의 파일을 만들지 만 내가 원하는 것은 아닙니다. 1. 스크립트를 수정하여 100 개의 고유 한 파일을 만들 수 있습니까 (한 번). 2. 컨트롤러의 VUser에 한 번 업로드 (web_submit_data 기능)를 실행하십시오. 3. 결국 파일을 삭제 하시겠습니까?

파일 생성을 VUser 스크립트의 마지막 부분에있는 init 및 파일에 넣을 수 있습니까?

+0

https://groups.google.com/d/msg/lr-loadrunner/dk1ojhjP06A/hioxhi6zjeIJ – Pacerier

답변

2

몇 가지 옵션이 있습니다.

  1. 테스트 중에 필요한 모든 파일을 사전 생성 한 다음 가상 사용자 스크립트에 고유 한 매개 변수로 정규화 된 파일 이름을 전달할 수 있습니다. 파일이로드 생성기에있는 경우, 가상 사용자가 드라이브의 읽기 헤드를 놓고 경쟁 할 때 영향을 줄 수있는 일부 읽기 경합이 있습니다. 파일이 네트워크 연결 스토리지에있는 경우 파일을 네트워크를 통해로드 생성기로 이동 한 다음 업로드를 위해 생성기에서 다시 이동합니다. 테스트 기간 동안 파일을 작은 보조 드라이브 (SSD)에 올려 놓으면 읽기 액세스를 크게 향상시킬 수 있습니다.
  2. 즉석에서 파일을 만들 수 있습니다. (a) 랜덤 파일 크기 정의 (b) 랜덤 파일 이름 정의 (c) 로컬 컨텍스트에서 파일 쓰기 (d) 업로드 용 스크립트에서 파일 사용 (e) 파일 삭제. 이 모든 것은 업로드 된 파일이 각 사용자의 반복마다 고유 한 파일 이름 및 크기 여야한다는 가정하에 반복의 컨텍스트에서 수행됩니다. 이를 위해서는 성능 테스트 중에 하드 디스크 사용에 관한 많은 모범 사례 규칙을 위반해야합니다. 수만 먹을거야? 수백? 로컬 디스크 하위 시스템에 대한 액세스를 위해 모두 경합하는 가상 사용자 스레드는 일반적으로 CPU가 우선 순위가 높은 I/O 인터럽트 작업을 위해 사용자 프로세스에서 멀리 떨어져있는 동안 모든 가상 사용자의 속도를 줄이기위한 방법입니다. 쓰기/쓰기 | 파일을 읽고 삭제 한 상태에서 하드 드라이브의 읽기/쓰기 헤드. 이 모델에는 더 많은 부하 생성기가 필요하며 테스트 베드에서 부과 된 응답 왜곡을 확인하기 위해 단일 사용자를 실행하는 참조 제어 생성기가 절대적으로 필요합니다.
+0

확인을 참조하십시오. 나는 너의 첫번째 제안을 위해 갈 것이다.실제로 미리 생성 된 모든 파일을 외장 디스크에 저장하고 컨트롤러 또는로드 생성기에 연결하고 내 스크립트에서이 외부 디스크 (내 스크립트의 매개 변수 설정)를 참조하도록 권합니다. –

+0

ESATA를 사용하지 않으면 외장 디스크가 더 느려집니다. 가장 빠른 방법은 각 부하 생성기에서 두 번째 드라이브로 내부 SSD를 사용하는 것입니다. 이 두 번째 내부 하드 드라이브에 미리 생성 된 파일을 저장 한 다음 매개 변수 파일을 사용하여 파일 이름 및 위치 정보를 스크립트에 전달하십시오. 테스트 중에 왜곡 현상이 있는지 테스트하는 동안로드 생성기를 면밀히 모니터링하고 적어도 세 개의로드 생성기 (기본로드 2 개, 제어용 2 개)가 있어야한다고 가정합니다. 당신은 아마도 더 많은 부하 생성기를 필요로 할 것입니다. –

+0

@ JamesPulley, +1 하드 디스크 병목 현상에 관한 좋은 조언. – Pacerier

1

스크립트가 거의 다 있다고 생각합니다. 내가 보는 문제는 당신이 만들고있는 파일에 대한 고유 한 파일 이름이 없다는 것입니다. 100 명의 사용자 각각은 동일한 반복 번호로 시작합니다.

당신이 뭔가를하려고 'vuser'라는 스크립트의 매개 변수 목록에서 새 매개 변수를 작성하고 그것을 유형 'Vuser ID'를 할당 할 수 있습니다. 이 값은 컨트롤러에서 실행할 때 개별 가상 사용자의 수로 채워집니다. 이렇게하면 파일을 사용하는 동안 사용자가 서로 밟지 않도록 할 수 있습니다. 이것을 파일 이름에 다음과 같이 추가하십시오 :

sprintf(command, "copy C:\\source_dir\\srcFile.txt C:\\source_dir\\srcFile-%s%s.txt,    
lr_eval_string ("{iteration_number}") 
lr_eval_string ("{vuser}")); 

이것은 모든 사용자가 컨트롤러의 동일한 그룹에 속해있는 한 작동합니다. 여러 그룹에 걸쳐 이것을 사용하는 경우 파일 이름에 '그룹 이름'매개 변수를 추가하여 동일한 작업을 수행하십시오.