2013-02-27 4 views
1

응용 프로그램 서버 (JBoss)에서 실행 된 일부 테스트가 있습니다. 우리는 젠킨스에서 이러한 테스트를 통합하려고합니다. 젠킨스에서백그라운드 프로세스에 따라 프로세스 시작

다음 단계는 (모든 단계가 개미 단계입니다)이 있습니다 :

  • ... (다른 단계) 배경
  • 시작 서버
  • 실행 테스트
  • 정지 서버
  • ... (다른 단계)

서버를 ba에서 시작해야합니다. ckground를 사용하여 다음 작업을 수행하십시오. 나는 이것을 모방하는 다음 스크립트를 작성했습니다 :

export LAUNCH_JBOSS_IN_BACKGROUND=1 
./run.sh & 
sleep 400 
cd /testTriggerLocation 
ant run-tests 
kill `cat $jBossHome/4.0.5/bin/jboss.pid` 

run.sh 서버를 시작하고이 시작된 후에는 jboss.pid에서 JVM의 프로세스 ID를 저장합니다.

일반적인 방법 (포 그라운드 프로세스)에서 JBoss는 시작까지 약 100 초가 걸리지 만 여기서는 sleep 인수에 종속 된 값을 사용합니다. 200 초를 넣으면 190 ~210 초가 걸리고, 300 초라면 290 ~ 310 초가 걸립니다. 문제는 서버가 시작되기 전에 테스트가 시작되면 분명히 실패한다는 것입니다. 이 방법을 동기화 할 수 있습니까? 아니면 다른 방법이 있을까요?

+0

왜 run.sh를 포크로 필요합니까 : 나는 실행하는 것이 하나님을 사용하여 내 경우

? –

+0

run.sh 또는 시작된 로그가 로그를 생성합니까? 그렇다면 여기에 로그에있는 무엇인가를 지켜 볼 수있는 무언가가있을 수 있습니다. "시작"이라고 말하면서 무엇이든지 준비 할 수 있다고 말하면서 ... 그런 다음 스크립트를 그냥 잠을 자지 말고 계속하십시오. –

+0

@EarlGray Jenkins에서 전경 프로세스라면 무기한 실행되어 테스트가 실행되지 않기 때문에. – m3th0dman

답변

0

supervisord 또는 God과 같은 간단한 프로세스 관리자를 사용하여 테스트를 실행하는 동안 프로세스를 데몬이 처리 할 수 ​​있습니다.

god -c my-project.god 
ruby test-runner.rb 
god terminate 
관련 문제