groovy로 tcp 소켓 클라이언트 스크립트를 만들었는데 validate를 실패합니다.

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

groovy로 tcp 소켓 클라이언트 스크립트를 만들었는데 validate를 실패합니다.

이상곤
안녕하세요 좋은 솔루션을 알게 되어서 성능 테스트를 진행하려고 하는데 http request 말고 tcp로 하려니 너무 어렵네요 ㅠㅠ

tcp 소켓을 이용하는 클라이언트를 groovy로 작성하고 있습니다. 그런데 Socket 클래스를 어떻게 사용하는지 잘 모르겠습니다.

httprequest 대신에 Socket 객체를 스크립트에서 static으로 선언하고 작성했습니다.

@RunWith(GrinderRunner)
class TestRunner {

        public static GTest test
        public static Socket socket;
.....
@BeforeProcess
        public static void beforeProcess() {
// HTTPPluginControl.getConnectionDefaults().timeout = 6000
                test = new GTest(1, "Test1")
       
        socket = new Socket();
                test.record(socket)
                grinder.logger.info("before process.")
        }

@Test
        public void test(){

          InetSocketAddress inetSocketAddress = new InetSocketAddress("192.168.1.112", 20804)
        socket.connect(inetSocketAddress, 3000)
        assertThat(socket.isConnected(), is(true))
       }

이렇게 만들었는데 validation에서 아래와 같은 Excpetion이 발생합니다.

2014-04-01 16:18:26,798 ERROR Script error - Error while initialize test runner
net.grinder.engine.common.EngineException: Error while initialize test runner

...
Caused by: net.grinder.script.NonInstrumentableTypeException: Cannot instrument class java.net.Socket because it belongs to the bootstrap classloader

socket 클래스를 어떻게 사용할 수 있는지 알고 싶습니다.

감사합니다.
Reply | Threaded
Open this post in threaded view
|

Re: groovy로 tcp 소켓 클라이언트 스크립트를 만들었는데 validate를 실패합니다.

junoyoon
Administrator
socket 은 bootstrap class 라 인스투르멘테이션이 않됩니다. 다음과 같이 하세요.

       @BeforeProcess
        public static void beforeProcess() {
                test = new GTest(1, "Test1")
                grinder.logger.info("before process.")
        }
     
     @BeforeThread
      public void beforeThread() {
             socket = new Socket();
             test.record(this, "doConnect");
      }
     public doConnect(Socket socket,  InetSocketAddress inetSocketAddress ) {
        socket.connect(inetSocketAddress, 3000)
      }

     @Test
      public void test(){
          InetSocketAddress inetSocketAddress = new InetSocketAddress("192.168.1.112", 20804)
          doConnect(socket, inetSocketAddress);
          assertThat(socket.isConnected(), is(true))
       }
Reply | Threaded
Open this post in threaded view
|

Re: groovy로 tcp 소켓 클라이언트 스크립트를 만들었는데 validate를 실패합니다.

이상곤
감사합니다~^^