2013년 11월 11일 월요일

인피니스팬 아퀼리언(Arquillian) 컨테이너 1.1.0.Alpha1 릴리스

인피니스팬 사용자 여러분,

인피니스팬 아퀼리언 컨테이너의 새로운 버전이 메이븐 아티펙트(artifact)로 제이보스 메이븐 저장소에 릴리스 되었습니다. 이전 버전은 이 포스트에서 발표되었으며, 그 포스트는 제이보스 메이븐 저장소의 주소와 그 설치 방법, 인피니스팬 아퀼리언 컨테이너 자체의 주소 등의 정보를 포함하고 있습니다.

버전 5.3 부터 인피니스팬 서버가 JBoss AS 7에 기반하고 infinispan-arquillian-container라는 서브모듈이 지워질 수도 있기 때문에, 아마도 이제 우리는 이 프로젝트를 인피니스팬 아퀼리언 컨테이너 보다는 인피니스팬 아퀼리언 확장이라고 불러야 할 것 입니다.

결과적으로 인피니스팬 서버를 위한 아퀼리언 설정은 간단해졌습니다.


인피니스팬 서버를 사용한 테스트 개발

이제 arquillian.xml 파일을 작성하는 단 한가지 방법만 존재합니다.


 
    
        
            
                /path/to/infinispan/server1
                9999
                testuser
                testpassword
                clustered.xml
                -Djava.net.preferIPv4Stack=true -Djboss.node.name=node0
            
        
        
            
                /path/to/infinispan/server2
                10099
                testuser
                testpassword
                clustered.xml
                -Djava.net.preferIPv4Stack=true -Djboss.node.name=node1 -Djboss.socket.binding.port-offset=100
            
        
    


ispnHome 속성은 더이상 존재하지 않습니다. 인피니스팬 서버를 가리키는 패스는 이제 jbossHome으로 지정합니다. serverConfg 속성은 해당 서버의 설정을 지정합니다.

인피니스팬 아퀼리언 확장을 사용하여 테스트를 실행하기 위해, 아래의 의존성들을 사용합니다.
org.jboss.as:jboss-as-arquillian-container-managed:jar:7.2.0.Final:test
org.infinispan.arquillian.container:infinispan-arquillian-impl:jar:1.1.0.Alpha1:test

이제 우리의 테스트에서 서버를 실행하기 위한 설정을 마쳤습니다. 이젠 테스트를 좀 더 효과적으로 할 수 있도록 하는 약간의 추가작업을 소개합니다.


RemoteInfinispanServers

@InfinispanResource를 RemoteInfinispanServer 타입의 인스턴스 변수에 붙여서 실행되고 있는 인피니스팬 서버에 대한 참조를 여전히 주입시킬 수 있습니다.

@InfinispanResource("container1")
RemoteInfinispanServer server1;

주입 대상의 인피니스팬 서버가 여러개라면 각각의 서버를 주입하는 대신 이제 아래 코드를 사용 가능합니다.

@InfinispanResource
RemoteInfinispanServers servers;

그리고 서버 변수 위에서 .getServer(이름)을 호출하여 각각의 서버를 얻어 올 수 있습니다. 이름은 반듯이 arquillian.xml에 존재하는 컨테이너 정의와 대응하여야 합니다. 이 호출의 결과로 RemoteInfinispanServer를 얻습니다.


WithRunningServer

지금까지 사용자는 전체 테스트 묶음(mode="suite") 전이나 각각의 별도의 클래스(mode="class") 테스트 전에 인피니스팬 서버를 시작해야만 했었습니다. WithRunningServer 애노테이션은 테스트 메소드 이전에 자동으로 서버를 시작하고 이후에는 서버를 정지하게 합니다. 예를 들면,

@WithRunningServer({ "container1", "container2" })
public void testMethod() { ... }

이런 경우에 컨테이너는 arquillian.xml 파일에 mode="manual"라고 표시해서 인피니스팬 아퀼리언 확장이 자체적으로 이 서버들의 라이프사이클을 책임진다는 것에 주의하세요.

@WithRunningServer 애노테이선이 클래스에 붙을 때, 그 서버는 테스트 클래스 내의 첫번째 메소드 호출 전에 시작되고 JUnit의 @AfterClass 이벤트가 불려질 때 정지하게 됩니다.


IPv6 지원

인피니스팬 아퀼리언 확장은 이제 IPv6 상에서 실행되는 인피니스팬 서버와 동작 가능하고 이는 JMX를 통해 서버에 접속 가능하기 때문입니다.


내장모드 인피니스팬 테스트하기

인피니스팬 서버 대신 인피니스팬 라이브러리와 테스트를 실행하는 것은 지난 번 버전으로 부터 변화가 없습니다. 이것에 대해서는 이전 블로그 포스트를 읽기 바랍니다.

이 프로젝트를 한 발짝 더 가게 도와준 Michal Linhard와 Vitalii Chepeliuk에게 감사드립니다.

감사합니다.
마틴(Martin)

원문:
Tuesday, 5 November 2013, Infinispan Arquillian Container 1.1.0.Alpha1 released

댓글 없음:

댓글 쓰기