2012-07-09 5 views
1

그라인더를 사용하여 webapp을 테스트하고 있습니다. 나는 TCP 프록시를 사용하여 스크립트를 생성했다. 그것은 잘 작동,하지만 난 그것에 로거를 추가 할 때, 다음과 같은 오류가 생성됩니다그라인더를 로깅하는 동안 오류가 발생했습니다

Error running worker process 
    net.grinder.scriptengine.jython.JaythonScriptExceutionException: 
    SyntaxError ('invalid syntax', ('c:\\........ \\script_name.py', 79, 9, 
    "\tlog('Arvind Purohit')")) 
    (no code object) at line 0 

이 내 스크립트입니다

# The Grinder 3.9.1 
# HTTP script recorded by TCPProxy at 9 Jul, 2012 3:08:10 PM 

from net.grinder.script import Test 
from net.grinder.script.Grinder import grinder 
from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest 
from HTTPClient import NVPair 
log = grinder.logger.info 
connectionDefaults = HTTPPluginControl.getConnectionDefaults() 
httpUtilities = HTTPPluginControl.getHTTPUtilities() 

# To use a proxy server, uncomment the next line and set the host and port. 
# connectionDefaults.setProxyServer("localhost", 8001) 

# These definitions at the top level of the file are evaluated once, 
# when the worker process is started. 

connectionDefaults.defaultHeaders = \ 
    [ NVPair('Accept-Encoding', 'gzip, deflate'), 
    NVPair('User-Agent', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)'), ] 

headers0= \ 
    [ NVPair('Accept', '*/*'), 
    NVPair('Referer', 'http://192.168.1.53:8081/JSP-LOGIN/login.jsp'), 
    NVPair('Accept-Language', 'en-IN'), ] 

headers1= \ 
    [ NVPair('Accept', 'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*'), 
    NVPair('Referer', 'http://192.168.1.53:8081/JSP-LOGIN/login.jsp'), 
    NVPair('Accept-Language', 'en-IN'), ] 

headers2= \ 
    [ NVPair('Accept', 'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*'), 
    NVPair('Referer', 'http://192.168.1.53:8081/JSP-LOGIN/welcome.jsp'), 
    NVPair('Accept-Language', 'en-IN'), ] 

url0 = 'http://192.168.1.53:8081' 

# Create an HTTPRequest for each request, then replace the 
# reference to the HTTPRequest with an instrumented version. 
# You can access the unadorned instance using request101.__target__. 
# ========= START -================ 
request101 = HTTPRequest(url=url0) 
request101 = Test(101, 'GET login.jsp').wrap(request101) 

request102 = HTTPRequest(url=url0, headers=headers0) 
request102 = Test(102, 'GET valid.js').wrap(request102) 

request103 = HTTPRequest(url=url0) 
request103 = Test(103, 'GET favicon.ico').wrap(request103) 

# ====== login============= 
request201 = HTTPRequest(url=url0, headers=headers1) 
request201 = Test(201, 'POST loginmid.jsp').wrap(request201) 

request202 = HTTPRequest(url=url0, headers=headers1) 
request202 = Test(202, 'GET welcome.jsp').wrap(request202) 

# ==========LOGOUT============ 
request301 = HTTPRequest(url=url0, headers=headers2) 
request301 = Test(301, 'GET logout.jsp').wrap(request301) 

request302 = HTTPRequest(url=url0, headers=headers2) 
request302 = Test(302, 'GET login.jsp').wrap(request302) 

request303 = HTTPRequest(url=url0, headers=headers0) 
request303 = Test(303, 'GET valid.js').wrap(request303) 


class TestRunner: 
    """A TestRunner instance is created for each worker thread.""" 

    # A method for each recorded page. 
    def page1(self): 
    """GET login.jsp (requests 101-103).""" 
    result = request101.GET('/JSP-LOGIN/login.jsp', None, 
     (NVPair('Accept', 'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*'), 
     NVPair('Accept-Language', 'en-IN'),)) 
    log('ARVIND PUROHIT') 
    grinder.sleep(13) 
    request102.GET('/JSP-LOGIN/valid.js') 

    grinder.sleep(62) 
    request103.GET('/favicon.ico', None, 
     (NVPair('Accept', '*/*'),)) 

    return result 

    def page2(self): 
    """POST loginmid.jsp (requests 201-202).""" 

    # Expecting 302 'Moved Temporarily' 
    result = request201.POST('/JSP-LOGIN/loginmid.jsp', 
     (NVPair('userName', 'A'), 
     NVPair('password', 'A'), 
     NVPair('Submit', 'Login'),), 
     (NVPair('Content-Type', 'application/x-www-form-urlencoded'),)) 

    grinder.sleep(15) 
    request202.GET('/JSP-LOGIN/welcome.jsp') 
    self.token_flag = \ 
     httpUtilities.valueFromBodyURI('flag') # 'edit' 

    return result 

    def page3(self): 
    """GET logout.jsp (requests 301-303).""" 

    # Expecting 302 'Moved Temporarily' 
    result = request301.GET('/JSP-LOGIN/logout.jsp') 

    request302.GET('/JSP-LOGIN/login.jsp') 

    request303.GET('/JSP-LOGIN/valid.js', None, 
     (NVPair('If-Modified-Since', 'Tue, 03 Jul 2012 10:18:40 GMT'), 
     NVPair('If-None-Match', 'W/\"4436-1341310720000\"'),)) 

    return result 

    def __call__(self): 
    """Called for every run performed by the worker thread.""" 
    self.page1()  # GET login.jsp (requests 101-103) 

    grinder.sleep(12893) 
    self.page2()  # POST loginmid.jsp (requests 201-202) 

    grinder.sleep(16403) 
    self.page3()  # GET logout.jsp (requests 301-303) 

def instrumentMethod(test, method_name, c=TestRunner): 
    """Instrument a method with the given Test.""" 
    unadorned = getattr(c, method_name) 
    import new 
    method = new.instancemethod(test.wrap(unadorned), None, c) 
    setattr(c, method_name, method) 

# Replace each method with an instrumented version. 
# You can call the unadorned method using self.page1.__target__(). 
instrumentMethod(Test(100, 'Page 1'), 'page1') 
instrumentMethod(Test(200, 'Page 2'), 'page2') 
instrumentMethod(Test(300, 'Page 3'), 'page3') 
+0

오류를 텍스트로 제공해주십시오. 이미지가 너무 작아 읽을 수 없습니다. – jurgemaister

+0

Starnge behavior .... 난 그냥 위의 스크립트를 복사하여 오류를 재현하기 위해 복사, 그것은 잘 작동하지만 내가 로그에 다른 스크립트와 똑같은 일을 나는 동일한 오류가 발생하고 있습니까? 인코딩 관련 문제입니까? 그런데 오류가 * 오류 worker-bootstrap : 작업자 process.grinder.scriptengine.jython.JaythonScriptExceutionException을 (를) 실행하는 동안 오류가 발생했습니다 : SyrntexError ('잘못된 구문', ('c : \\ ........ \\ scrypt_name .py ',,, "\ tlog ('Arvind Purohit ')))) * – Arvind

답변

2

난 그냥 파이썬 (주보다는 더 적은)를 배우고, 하지만 \t의 문제 일 수 있습니다. 그것은 다음과 같이 4 개 공간을 예상하고있어, 대신 탭의,

\tlog('Arvind Purohit') 

:하지만

파이썬은이를 읽고 그것을 작동해야하는 이유 당신이 그것을 복사/붙여 넣기 할 때의

log('Arvind Purohit') 

. 이 문제를 피하기 위해 모든 문자를 보여주는 편집기를 사용하고 수직선이 들여 쓰기 않도록 "0 행에 코드 객체 없음" 오류가 발생하지 않도록하십시오.

관련 문제