text: # -*- coding:  latin-1 -*-
  # The Grinder 3.11
  # HTTP script recorded by TCPProxy at Dec 18, 2015 2:50:19 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("supercars-tomcat:8080", 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('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9'),
      NVPair('Accept-Encoding', 'gzip, deflate'),
      NVPair('Accept-Language', 'en-us'), ]
  
  headers0= \
    [ NVPair('Accept', '*/*'),
      NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/supercars.do'), ]
  
  headers1= \
    [ NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
      NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/supercars.do'), ]
  
  headers2= \
    [ NVPair('Accept', '*/*'),
      NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/cars.do?query=manu&mid=3'), ]
  
  headers3= \
    [ NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
      NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/cars.do?query=manu&mid=3'), ]
  
  headers4= \
    [ NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
      NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/car.do?query=car&cid=2'), ]
  
  url0 = 'http://supercars-tomcat:8080'
  
  request101 = createRequest(Test(101, 'GET supercars.do'), url0)
  
  request102 = createRequest(Test(102, 'GET enquire_but.gif'), url0, headers0)
  
  request103 = createRequest(Test(103, 'GET line.gif'), url0, headers0)
  
  request104 = createRequest(Test(104, 'GET Bmw.gif'), url0, headers0)
  
  request105 = createRequest(Test(105, 'GET AstonMartin.gif'), url0, headers0)
  
  request106 = createRequest(Test(106, 'GET Ferrari.gif'), url0, headers0)
  
  request107 = createRequest(Test(107, 'GET insurance_but.gif'), url0, headers0)
  
  request108 = createRequest(Test(108, 'GET Porsche.gif'), url0, headers0)
  
  request109 = createRequest(Test(109, 'GET Jaguar.gif'), url0, headers0)
  
  request110 = createRequest(Test(110, 'GET pipe.gif'), url0, headers0)
  
  request111 = createRequest(Test(111, 'GET Lotus.gif'), url0, headers0)
  
  request201 = createRequest(Test(201, 'GET cars.do'), url0, headers1)
  
  request202 = createRequest(Test(202, 'GET 1.jpg'), url0, headers2)
  
  request301 = createRequest(Test(301, 'GET car.do'), url0, headers3)
  
  request401 = createRequest(Test(401, 'GET enquire.do'), url0, headers4)
  
  request402 = createRequest(Test(402, 'GET submit_button.gif'), url0)
  
  request501 = createRequest(Test(501, 'POST enquire.do'), url0)
  
  request601 = createRequest(Test(601, 'GET supercars.do'), url0)
  
  request701 = createRequest(Test(701, 'GET cars.do'), url0, headers1)
  
  request702 = createRequest(Test(702, 'GET 1.jpg'), url0, headers2)
  
  request801 = createRequest(Test(801, 'GET car.do'), url0, headers3)
  
  request901 = createRequest(Test(901, 'GET car.do'), url0, headers4)
  
  request1001 = createRequest(Test(1001, 'GET search.do'), url0)
  
  request1101 = createRequest(Test(1101, 'POST search.do'), url0)
  
  request1102 = createRequest(Test(1102, 'GET 1.jpg'), url0)
  
  request1201 = createRequest(Test(1201, 'POST search.do'), url0)
  
  request1301 = createRequest(Test(1301, 'GET sell.do'), url0)
  
  request1401 = createRequest(Test(1401, 'POST sell.do'), url0)
  
  request1501 = createRequest(Test(1501, 'GET insurance.do'), url0)
  
  request1601 = createRequest(Test(1601, 'GET about.do'), url0)
  
  request1602 = createRequest(Test(1602, 'GET about_car.gif'), url0)
  
  request1701 = createRequest(Test(1701, 'GET supercars.do'), url0)
  
  request1801 = createRequest(Test(1801, 'GET cars.do'), url0, headers1)
  
  request1802 = createRequest(Test(1802, 'GET 1.jpg'), url0, headers2)
  
  request1901 = createRequest(Test(1901, 'GET car.do'), url0, headers3)
  
  request2001 = createRequest(Test(2001, 'GET car.do'), url0)
  
  request2101 = createRequest(Test(2101, 'GET supercars.do'), url0)
  
  request2201 = createRequest(Test(2201, 'GET cars.do'), url0, headers1)
  
  request2301 = createRequest(Test(2301, 'GET supercars.do'), url0)
  
  request2401 = createRequest(Test(2401, 'GET cars.do'), url0, headers1)
  
  request2501 = createRequest(Test(2501, 'GET supercars.do'), url0)
  
  request2601 = createRequest(Test(2601, 'GET cars.do'), url0, headers1)
  
  request2701 = createRequest(Test(2701, 'GET supercars.do'), url0)
  
  
  class TestRunner:
    """A TestRunner instance is created for each worker thread."""
  
    # A method for each recorded page.
    def page1(self):
      """GET supercars.do (requests 101-111)."""
      result = request101.GET('/Cars_Sample_App/supercars.do', None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'), ))
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'manu'
      # 15 different values for token_mid found in response, using the first one.
      self.token_mid = \
        httpUtilities.valueFromBodyURI('mid') # '3'
  
      grinder.sleep(124)
      request102.GET('/Cars_Sample_App/images/enquire_but.gif')
  
      request103.GET('/Cars_Sample_App/images/line.gif')
  
      request104.GET('/Cars_Sample_App/images/manufacturers/Bmw.gif')
  
      request105.GET('/Cars_Sample_App/images/manufacturers/AstonMartin.gif')
  
      request106.GET('/Cars_Sample_App/images/manufacturers/Ferrari.gif')
  
      request107.GET('/Cars_Sample_App/images/insurance_but.gif')
  
      grinder.sleep(90)
      request108.GET('/Cars_Sample_App/images/manufacturers/Porsche.gif')
  
      request109.GET('/Cars_Sample_App/images/manufacturers/Jaguar.gif')
  
      request110.GET('/Cars_Sample_App/images/pipe.gif')
  
      request111.GET('/Cars_Sample_App/images/manufacturers/Lotus.gif')
  
      return result
  
    def page2(self):
      """GET cars.do (requests 201-202)."""
      result = request201.GET('/Cars_Sample_App/cars.do' +
        '?query=' +
        self.token_query +
        '&mid=' +
        self.token_mid)
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'car'
      # 4 different values for token_cid found in response, using the first one.
      self.token_cid = \
        httpUtilities.valueFromBodyURI('cid') # '2'
  
      grinder.sleep(103)
      request202.GET('/Cars_Sample_App/images/cars/1.jpg')
  
      return result
  
    def page3(self):
      """GET car.do (request 301)."""
      result = request301.GET('/Cars_Sample_App/car.do' +
        '?query=' +
        self.token_query +
        '&cid=' +
        self.token_cid)
      self.token_car = \
        httpUtilities.valueFromBodyURI('car') # '2'
      self.token_carName = \
        httpUtilities.valueFromBodyURI('carName') # 'S'
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'carEnquiries'
  
      return result
  
    def page4(self):
      """GET enquire.do (requests 401-402)."""
      self.token_carName = \
        'SDB9'
      result = request401.GET('/Cars_Sample_App/enquire.do' +
        '?car=' +
        self.token_car +
        '&carName=' +
        self.token_carName)
      self.token_carId = \
        httpUtilities.valueFromHiddenInput('carId') # '2'
  
      grinder.sleep(107)
      request402.GET('/Cars_Sample_App/images/submit_button.gif', None,
        ( NVPair('Accept', '*/*'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/enquire.do?car=2&carName=S%A0DB9'), ))
  
      return result
  
    def page5(self):
      """POST enquire.do (request 501)."""
      self.token_query = \
        'save'
      result = request501.POST('/Cars_Sample_App/enquire.do' +
        '?query=' +
        self.token_query,
        ( NVPair('name', 'appd'),
          NVPair('email', 'appd@nohost.com'),
          NVPair('carName', 'S?DB9'),
          NVPair('carId', self.token_carId),
          NVPair('comment', 'This is my enquiry'),
          NVPair('x', '55'),
          NVPair('y', '16'), ),
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Content-Type', 'application/x-www-form-urlencoded'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/enquire.do?car=2&carName=S%A0DB9'), ))
  
      return result
  
    def page6(self):
      """GET supercars.do (request 601)."""
      result = request601.GET('/Cars_Sample_App/supercars.do', None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/enquire.do?query=save'), ))
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'manu'
      # 14 different values for token_mid found in response; the first matched
      # the last known value of token_mid - don't update the variable.
  
      return result
  
    def page7(self):
      """GET cars.do (requests 701-702)."""
      result = request701.GET('/Cars_Sample_App/cars.do' +
        '?query=' +
        self.token_query +
        '&mid=' +
        self.token_mid)
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'car'
      # 3 different values for token_cid found in response; the first matched
      # the last known value of token_cid - don't update the variable.
  
      grinder.sleep(95)
      request702.GET('/Cars_Sample_App/images/cars/1.jpg')
  
      return result
  
    def page8(self):
      """GET car.do (request 801)."""
      result = request801.GET('/Cars_Sample_App/car.do' +
        '?query=' +
        self.token_query +
        '&cid=' +
        self.token_cid)
      self.token_carName = \
        httpUtilities.valueFromBodyURI('carName') # 'S'
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'carEnquiries'
  
      return result
  
    def page9(self):
      """GET car.do (request 901)."""
      result = request901.GET('/Cars_Sample_App/car.do' +
        '?query=' +
        self.token_query +
        '&cid=' +
        self.token_cid)
  
      return result
  
    def page10(self):
      """GET search.do (request 1001)."""
      result = request1001.GET('/Cars_Sample_App/search.do', None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/car.do?query=carEnquiries&cid=2'), ))
  
      return result
  
    def page11(self):
      """POST search.do (requests 1101-1102)."""
      self.token_query = \
        'search'
      result = request1101.POST('/Cars_Sample_App/search.do' +
        '?query=' +
        self.token_query,
        ( NVPair('criteria', 'Aston'),
          NVPair('x', '46'),
          NVPair('y', '19'), ),
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Content-Type', 'application/x-www-form-urlencoded'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/search.do'), ))
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'car'
      # 3 different values for token_cid found in response; the first matched
      # the last known value of token_cid - don't update the variable.
  
      grinder.sleep(95)
      request1102.GET('/Cars_Sample_App/images/cars/1.jpg', None,
        ( NVPair('Accept', '*/*'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/search.do?query=search'), ))
  
      return result
  
    def page12(self):
      """POST search.do (request 1201)."""
      self.token_query = \
        'search'
      result = request1201.POST('/Cars_Sample_App/search.do' +
        '?query=' +
        self.token_query,
        ( NVPair('criteria', 'Bobble'),
          NVPair('x', '57'),
          NVPair('y', '5'), ),
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Content-Type', 'application/x-www-form-urlencoded'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/search.do?query=search'), ))
  
      return result
  
    def page13(self):
      """GET sell.do (request 1301)."""
      result = request1301.GET('/Cars_Sample_App/sell.do', None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/search.do?query=search'), ))
  
      return result
  
    def page14(self):
      """POST sell.do (request 1401)."""
      self.token_query = \
        'save'
      result = request1401.POST('/Cars_Sample_App/sell.do' +
        '?query=' +
        self.token_query,
        ( NVPair('manufacturer', '3'),
          NVPair('model', 'DB9'),
          NVPair('name', 's'),
          NVPair('colour', 'Black'),
          NVPair('year', '2012'),
          NVPair('price', '110000'),
          NVPair('summary', 'Nice'),
          NVPair('description', 'Super nice'),
          NVPair('x', '39'),
          NVPair('y', '13'), ),
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Content-Type', 'application/x-www-form-urlencoded'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/sell.do'), ))
  
      return result
  
    def page15(self):
      """GET insurance.do (request 1501)."""
      result = request1501.GET('/Cars_Sample_App/insurance.do', None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/sell.do?query=save'), ))
  
      return result
  
    def page16(self):
      """GET about.do (requests 1601-1602)."""
      result = request1601.GET('/Cars_Sample_App/about.do', None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/insurance.do'), ))
  
      grinder.sleep(118)
      request1602.GET('/Cars_Sample_App/images/about_car.gif', None,
        ( NVPair('Accept', '*/*'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/about.do'), ))
  
      return result
  
    def page17(self):
      """GET supercars.do (request 1701)."""
      result = request1701.GET('/Cars_Sample_App/supercars.do', None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/about.do'), ))
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'manu'
      # 14 different values for token_mid found in response; the first matched
      # the last known value of token_mid - don't update the variable.
  
      return result
  
    def page18(self):
      """GET cars.do (requests 1801-1802)."""
      result = request1801.GET('/Cars_Sample_App/cars.do' +
        '?query=' +
        self.token_query +
        '&mid=' +
        self.token_mid)
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'car'
      # 4 different values for token_cid found in response; the first matched
      # the last known value of token_cid - don't update the variable.
  
      grinder.sleep(98)
      request1802.GET('/Cars_Sample_App/images/cars/1.jpg')
  
      return result
  
    def page19(self):
      """GET car.do (request 1901)."""
      self.token_cid = \
        '26'
      result = request1901.GET('/Cars_Sample_App/car.do' +
        '?query=' +
        self.token_query +
        '&cid=' +
        self.token_cid)
      self.token_car = \
        httpUtilities.valueFromBodyURI('car') # '26'
      self.token_carName = \
        httpUtilities.valueFromBodyURI('carName') # 's'
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'carEnquiries'
  
      return result
  
    def page20(self):
      """GET car.do (request 2001)."""
      result = request2001.GET('/Cars_Sample_App/car.do' +
        '?query=' +
        self.token_query +
        '&cid=' +
        self.token_cid, None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/car.do?query=car&cid=26'), ))
  
      return result
  
    def page21(self):
      """GET supercars.do (request 2101)."""
      result = request2101.GET('/Cars_Sample_App/supercars.do', None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/car.do?query=carEnquiries&cid=26'), ))
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'manu'
      # 14 different values for token_mid found in response; the first matched
      # the last known value of token_mid - don't update the variable.
  
      return result
  
    def page22(self):
      """GET cars.do (request 2201)."""
      self.token_mid = \
        '8'
      result = request2201.GET('/Cars_Sample_App/cars.do' +
        '?query=' +
        self.token_query +
        '&mid=' +
        self.token_mid)
  
      return result
  
    def page23(self):
      """GET supercars.do (request 2301)."""
      result = request2301.GET('/Cars_Sample_App/supercars.do', None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/cars.do?query=manu&mid=8'), ))
      # 15 different values for token_mid found in response, using the first one.
      self.token_mid = \
        httpUtilities.valueFromBodyURI('mid') # '3'
  
      return result
  
    def page24(self):
      """GET cars.do (request 2401)."""
      self.token_mid = \
        '7'
      result = request2401.GET('/Cars_Sample_App/cars.do' +
        '?query=' +
        self.token_query +
        '&mid=' +
        self.token_mid)
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'car'
      # 6 different values for token_cid found in response, using the first one.
      self.token_cid = \
        httpUtilities.valueFromBodyURI('cid') # '20'
  
      return result
  
    def page25(self):
      """GET supercars.do (request 2501)."""
      result = request2501.GET('/Cars_Sample_App/supercars.do', None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/cars.do?query=manu&mid=7'), ))
      self.token_query = \
        httpUtilities.valueFromBodyURI('query') # 'manu'
      # 15 different values for token_mid found in response, using the first one.
      self.token_mid = \
        httpUtilities.valueFromBodyURI('mid') # '3'
  
      return result
  
    def page26(self):
      """GET cars.do (request 2601)."""
      self.token_mid = \
        '1'
      result = request2601.GET('/Cars_Sample_App/cars.do' +
        '?query=' +
        self.token_query +
        '&mid=' +
        self.token_mid)
  
      return result
  
    def page27(self):
      """GET supercars.do (request 2701)."""
      result = request2701.GET('/Cars_Sample_App/supercars.do', None,
        ( NVPair('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
          NVPair('Referer', 'http://supercars-tomcat:8080/Cars_Sample_App/cars.do?query=manu&mid=1'), ))
      # 15 different values for token_mid found in response, using the first one.
      self.token_mid = \
        httpUtilities.valueFromBodyURI('mid') # '3'
  
      return result
  
    def __call__(self):
      """Called for every run performed by the worker thread."""
      self.page1()      # GET supercars.do (requests 101-111)
  
      grinder.sleep(2117)
      self.page2()      # GET cars.do (requests 201-202)
  
      grinder.sleep(1867)
      self.page3()      # GET car.do (request 301)
  
      grinder.sleep(4351)
      self.page4()      # GET enquire.do (requests 401-402)
  
      grinder.sleep(16341)
      self.page5()      # POST enquire.do (request 501)
  
      grinder.sleep(1309)
      self.page6()      # GET supercars.do (request 601)
  
      grinder.sleep(669)
      self.page7()      # GET cars.do (requests 701-702)
  
      grinder.sleep(1260)
      self.page8()      # GET car.do (request 801)
  
      grinder.sleep(837)
      self.page9()      # GET car.do (request 901)
  
      grinder.sleep(1108)
      self.page10()     # GET search.do (request 1001)
  
      grinder.sleep(3146)
      self.page11()     # POST search.do (requests 1101-1102)
  
      grinder.sleep(2822)
      self.page12()     # POST search.do (request 1201)
  
      grinder.sleep(1333)
      self.page13()     # GET sell.do (request 1301)
  
      grinder.sleep(17417)
      self.page14()     # POST sell.do (request 1401)
  
      grinder.sleep(6680)
      self.page15()     # GET insurance.do (request 1501)
  
      grinder.sleep(600)
      self.page16()     # GET about.do (requests 1601-1602)
  
      grinder.sleep(584)
      self.page17()     # GET supercars.do (request 1701)
  
      grinder.sleep(1049)
      self.page18()     # GET cars.do (requests 1801-1802)
  
      grinder.sleep(2901)
      self.page19()     # GET car.do (request 1901)
  
      grinder.sleep(1441)
      self.page20()     # GET car.do (request 2001)
  
      grinder.sleep(791)
      self.page21()     # GET supercars.do (request 2101)
  
      grinder.sleep(1365)
      self.page22()     # GET cars.do (request 2201)
  
      grinder.sleep(1067)
      self.page23()     # GET supercars.do (request 2301)
  
      grinder.sleep(1284)
      self.page24()     # GET cars.do (request 2401)
  
      grinder.sleep(879)
      self.page25()     # GET supercars.do (request 2501)
  
      grinder.sleep(1066)
      self.page26()     # GET cars.do (request 2601)
  
      grinder.sleep(974)
      self.page27()     # GET supercars.do (request 2701)
  
  
  # 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)
  Test(500, 'Page 5').record(TestRunner.page5)
  Test(600, 'Page 6').record(TestRunner.page6)
  Test(700, 'Page 7').record(TestRunner.page7)
  Test(800, 'Page 8').record(TestRunner.page8)
  Test(900, 'Page 9').record(TestRunner.page9)
  Test(1000, 'Page 10').record(TestRunner.page10)
  Test(1100, 'Page 11').record(TestRunner.page11)
  Test(1200, 'Page 12').record(TestRunner.page12)
  Test(1300, 'Page 13').record(TestRunner.page13)
  Test(1400, 'Page 14').record(TestRunner.page14)
  Test(1500, 'Page 15').record(TestRunner.page15)
  Test(1600, 'Page 16').record(TestRunner.page16)
  Test(1700, 'Page 17').record(TestRunner.page17)
  Test(1800, 'Page 18').record(TestRunner.page18)
  Test(1900, 'Page 19').record(TestRunner.page19)
  Test(2000, 'Page 20').record(TestRunner.page20)
  Test(2100, 'Page 21').record(TestRunner.page21)
  Test(2200, 'Page 22').record(TestRunner.page22)
  Test(2300, 'Page 23').record(TestRunner.page23)
  Test(2400, 'Page 24').record(TestRunner.page24)
  Test(2500, 'Page 25').record(TestRunner.page25)
  Test(2600, 'Page 26').record(TestRunner.page26)
  Test(2700, 'Page 27').record(TestRunner.page27)
  