Auto Generated Jython Sript is not working -- Need help

Ravi Kumar Maddi <[email protected]> Mon, 28 Jul 2014 15:37:35 +0530
Newsgroups gmane.comp.java.grinder.user
Message-ID <CAP3Rjauw2zJEHQ5+ct7GEOuq6pneh=d0ZmXwfKpVQ9ZESOAqfQ@mail.gmail.com>
I generated Jython Script script by using TCPProxy Console. I generated
script for just 4 pages. But I am trying to run that script with grinder
agent, But it is not working. I am getting only login page only working
after every page giving 403 error.


Please find attached my grinder.properties and grinder.py files.

Please need help......

------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk

_______________________________________________
grinder-use mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/grinder-use
grinder.properties (application/octet-stream, 160 B) - not displayed
grinder.py (application/octet-stream, 5.9 KB)
# The Grinder 3.11
# HTTP script recorded by TCPProxy at 25 Jul, 2014 6:07:04 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
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)

def createRequest(test, url, headers=None):
    """Create an instrumented HTTPRequest."""
    request = HTTPRequest(url=url)
    if headers: request.headers=headers
    test.record(request, HTTPRequest.getHttpMethodFilter())
    return request

# 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('Accept-Language', 'en-US,en;q=0.5'),
    NVPair('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0'), ]

headers0= \
  [ NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
    NVPair('Referer', 'http://mycompany.com/'), ]

url0 = 'http://mycompany.com:80'

request101 = createRequest(Test(101, 'GET /'), url0)

request201 = createRequest(Test(201, 'POST home'), url0, headers0)

request202 = createRequest(Test(202, 'GET home'), url0, headers0)

request203 = createRequest(Test(203, 'GET /'), url0, headers0)

request301 = createRequest(Test(301, 'GET about'), url0, headers0)

request401 = createRequest(Test(401, 'GET architecture-group'), url0)

request402 = createRequest(Test(402, 'GET Project Del.PNG'), url0)

request403 = createRequest(Test(403, 'GET 1.gif'), url0)


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

  # A method for each recorded page.
  def page1(self):
    """GET / (request 101)."""
    result = request101.GET('/', None,
      ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
        NVPair('If-Modified-Since', 'Fri, 25 Jul 2014 11:48:08 +0000'),
        NVPair('If-None-Match', '\"1406288888\"'), ))
    self.token_form_build_id = \
      httpUtilities.valueFromHiddenInput('form_build_id') # 'form-jL1d4hHwiL-1rr34g20q_UNP64QdrOSC33v...'
    self.token_form_id = \
      httpUtilities.valueFromHiddenInput('form_id') # 'user_login_block'

    return result

  def page2(self):
    """POST home (requests 201-203)."""
    self.token_destination = \
      'node/103'
    
    # Expecting 302 'Found'
    result = request201.POST('/home' +
      '?destination=' +
      self.token_destination,
      ( NVPair('name', 'myuser'),
        NVPair('pass', 'mypassword'),
        NVPair('form_build_id', self.token_form_build_id),
        NVPair('form_id', self.token_form_id),
        NVPair('op', 'Log in'), ),
      ( NVPair('Content-Type', 'application/x-www-form-urlencoded'), ))

    grinder.sleep(61)
    
    # Expecting 301 'Moved Permanently'
    request202.GET('/home')

    grinder.sleep(20)
    request203.GET('/', None,
      ( NVPair('If-Modified-Since', 'Fri, 25 Jul 2014 12:35:04 +0000'),
        NVPair('If-None-Match', '\"1406291704\"'), ))

    return result

  def page3(self):
    """GET about (request 301)."""
    result = request301.GET('/content/about')
    # 2 different values for token_page_id found in response, using the first one.
    self.token_page_id = \
      httpUtilities.valueFromBodyURI('page_id') # '1155'
    self.token_form_build_id = \
      httpUtilities.valueFromHiddenInput('form_build_id') # 'form-lR-C1y-2HiOQm6WAC4tsqp_jra5l2yQ9KKR...'
    self.token_form_token = \
      httpUtilities.valueFromHiddenInput('form_token') # 'kogSWRmK-dBEE5AdCKul1rF5iNooQxicjFQaxfGL...'
    self.token_form_id = \
      httpUtilities.valueFromHiddenInput('form_id') # 'search_block_form'

    return result

  def page4(self):
    """GET architecture-group (requests 401-403)."""
    result = request401.GET('/content/architecture-group', None,
      ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
        NVPair('Referer', 'http://mycompany.com/content/about'), ))
    self.token_form_build_id = \
      httpUtilities.valueFromHiddenInput('form_build_id') # 'form-GnuBgklTmk0f7lre8pCi6Aqq30XQoXLLbl2...'

    grinder.sleep(44)
    request402.GET('/sites/default/files/Project Del.PNG', None,
      ( NVPair('Accept', 'image/png,image/*;q=0.8,*/*;q=0.5'),
        NVPair('Referer', 'http://mycompany.com/content/architecture-group'), ))

    grinder.sleep(194)
    request403.GET('/sites/all/themes/perspective/images/loaders/1.gif', None,
      ( NVPair('Accept', 'image/png,image/*;q=0.8,*/*;q=0.5'),
        NVPair('Referer', 'http://mycompany.com/sites/all/themes/perspective/css/themes/40.css?n8fsyg'), ))

    return result

  def writeToFile(self, text):
    filename = "pages/%s-nip_page-%d.html" % (grinder.processName, grinder.runNumber)
    pageFile = open(filename, "w")
    print >> pageFile, text
    file.close()
           

  def __call__(self):
    """Called for every run performed by the worker thread."""
    result = self.page1()      # GET / (request 101)
    self.writeToFile(result.text)

    grinder.sleep(30176)
    result = self.page2()      # POST home (requests 201-203)
    self.writeToFile(result.text)

    grinder.sleep(10965)
    result = self.page3()      # GET about (request 301)
    self.writeToFile(result.text)

    grinder.sleep(2440)
    result = self.page4()      # GET architecture-group (requests 401-403)
    self.writeToFile(result.text)

# Instrument page methods.
Test(100, 'Page 1').record(TestRunner.page1)
Test(200, 'Page 2').record(TestRunner.page2)
Test(300, 'Page 3').record(TestRunner.page3)
Test(400, 'Page 4').record(TestRunner.page4)