Issues

Issues

Selenium Hub에 Node 등록 시 설정한 설정 값이 덮어 씌워지는 문제

현상

Node 등록할 때 명시한 maxSession의 수와 실제 테스트가 수행되는 세션의 수가 다른문제. 생성되는 세션의 수는 maven-surefire-plugin의 forkCount의 수를 따라감.

노드 등록

Selenium Hub에 Node를 등록하기 위해 java 프로세스를 생성하고 옵션 값으로 maxInstances-maxSession을 주어 최대 생성할 인스턴스와 세션의 수를 지정.

1
java -jar selenium-server-standalone-2.53.0.jar -role node -hub http://HUB_IP:4444/grid/register -port 5555 -browser browserName=firefox,maxInstances=3 -maxSession 3


노드 등록 확인

Hub에 등록한 Node의 정보 확인

image

image

pom.xml

등록한 Node를 대상으로 병렬 테스트를 수행할 경우, pom.xml에 명시한 maven-surefire-plugin의 forkCount의 수 만큼 세션이 생성되고 테스트가 수행 됨.

1
2
3
4
5
6
7
8
9
10
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-surefire-plugin</artifactId>
	<version>${surefire-plugin.version}</version>
	<configuration>
  		<forkCount>${surefire-plugin.forkCount}</forkCount>
  		<reuseForks>false</reuseForks>
		<argLine>-Xmx512m</argLine>
	</configuration>
</plugin>
테스트 수행 시

forkCount에 명시한 10개의 세션 생성 후, 테스트 수행

image

해결

RemoteWebDriver를 이용해 노드를 등록하는 경우, 대상 URL을 허브의 URL을 대상으로 드라이버를 생성해야 함.

1
2
3
4
DesiredCapabilities capFirefox = DesiredCapabilities.firefox();
capFirefox.setPlatform(Platform.WINDOWS);
capFirefox.setVersion(FIREFOX_VERSION);
driver = new RemoteWebDriver(new URL(HUB_URL), capFirefox);
원인

Selenium Grid는 하나의 허브에 하나 이상의 노드를 연결해 사용하는 구조. 그렇지만 지금까지는 노드를 생성해 허브와 연결해놓고 요청을 노드에 직접 주는 방식으로 테스트했기 때문에 허브의 Console에서는 몇 개의 인스턴스가 사용 중인지를 알 수가 없었음. 따라서, 요청을 허브로 보내지도록 변경.

아래는 9개의 테스트를 실행하였을 경우, 2개의 인스턴스가 사용 중이고, 7개의 인스턴스를 필요로하는 작업이 대기중임을 Console에서 확인할 수 있음.

image

tomcat starting is slow

현상

image

위와 같이 톰캣 재시작을 하는데 엄청나게 오래걸림.

원인

톰캣7이상은 JRE의 SecureRandom 이라는 클래스로 랜덤값을 사용하는데, 이 SecureRandom을 초기화 하는데 사용되는 entropy source가 모자란 경우 지연될 수 있다 이런 내용.

아래는 tomcat wiki이고, 링크를 통해 가면 위의 문제에 관한 JRE, JDK의 이슈도 있음.

http://wiki.apache.org/tomcat/HowTo/FasterStartUp#Entropy_Source

과정

수정 대상 파일

/home1/irteam/apps/jdk/jre/lib/security/java.security

line number 70 securerandom.source=file:/dev/urandom 에서 securerandom.source=file:/dev/./urandom 으로 수정

결과

tomcat start시 약 8~12분(평균 600000ms) 걸리던 시간이 통상적인 수치(약 5~6초)로 돌아옴