Ejemplo n.º 1
0
 def test_load_modification(self):
     self.configure({
         "execution": {
             "concurrency": 50,
             "hold-for": "30s",
             "scenario": {
                 "script": get_res_path("http_simple.xml"),
             }
         }
     })
     self.obj.settings.merge({
         "path": get_res_path(TOOL_NAME),
     })
     self.obj.prepare()
     original_config = TsungConfig(None)
     original_config.load(get_res_path("http_simple.xml"))
     original_load = original_config.find('//tsung/load')[0]
     modified_config = TsungConfig(None)
     modified_config.load(self.obj.tsung_config)
     loads = modified_config.find('//tsung/load')
     self.assertEqual(len(loads), 1)
     modified_load = loads[0]
     self.assertNotEqual(etree.tostring(original_load),
                         etree.tostring(modified_load))
     self.assertEqual(modified_load.get('duration'), '30')
Ejemplo n.º 2
0
 def test_requests_headers(self):
     self.obj.execution.merge({
         "concurrency": 50,
         "hold-for": "30s",
         "scenario": {
             "default-address":
             "http://example.com",
             "headers": {
                 "X-Answer": "42",
             },
             "requests": [{
                 "url": "/",
                 "headers": {
                     "X-Jedi": "Luke Skywalker",
                 },
             }],
         }
     })
     self.obj.settings.merge({
         "path": get_res_path(TOOL_NAME),
     })
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     headers = config.find('//http/http_header')
     self.assertEqual(len(headers), 2)
     headers_list = [(h.get('name'), h.get('value')) for h in headers]
     self.assertIn(("X-Jedi", "Luke Skywalker"), headers_list)
     self.assertIn(("X-Answer", "42"), headers_list)
Ejemplo n.º 3
0
 def test_sessions_thinktime(self):
     obj = TsungExecutor()
     obj.engine = EngineEmul()
     obj.execution.merge({
         "concurrency": 50,
         "hold-for": "30s",
         "scenario": {
             "default-address": "http://example.com",
             "requests": [{
                 "url": "/",
                 "think-time": "1s",
             }, {
                 "url": "/reserve.php",
                 "think-time": "2s",
             }],
         }
     })
     obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     obj.prepare()
     config = TsungConfig(None)
     config.load(obj.tsung_config)
     thinktimes = config.find('//thinktime')
     self.assertEqual(len(thinktimes), 2)
     self.assertEqual(thinktimes[0].get("value"), "1")
     self.assertEqual(thinktimes[1].get("value"), "2")
Ejemplo n.º 4
0
 def test_requests_headers(self):
     self.obj.execution.merge({
         "concurrency": 50,
         "hold-for": "30s",
         "scenario": {
             "default-address": "http://example.com",
             "headers": {
                 "X-Answer": "42",
             },
             "requests": [{
                 "url": "/",
                 "headers": {
                     "X-Jedi": "Luke Skywalker",
                 },
             }],
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     headers = config.find('//http/http_header')
     self.assertEqual(len(headers), 2)
     headers_list = [(h.get('name'), h.get('value')) for h in headers]
     self.assertIn(("X-Jedi", "Luke Skywalker"), headers_list)
     self.assertIn(("X-Answer", "42"), headers_list)
Ejemplo n.º 5
0
 def test_sessions_thinktime(self):
     self.obj.execution.merge({
         "concurrency": 50,
         "hold-for": "30s",
         "scenario": {
             "default-address":
             "http://example.com",
             "requests": [{
                 "url": "/",
                 "think-time": "1s",
             }, {
                 "url": "/reserve.php",
                 "think-time": "2s",
             }],
         }
     })
     self.obj.settings.merge({
         "path": get_res_path(TOOL_NAME),
     })
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     thinktimes = config.find('//thinktime')
     self.assertEqual(len(thinktimes), 2)
     self.assertEqual(thinktimes[0].get("value"), "1")
     self.assertEqual(thinktimes[1].get("value"), "2")
Ejemplo n.º 6
0
 def test_requests_custom(self):
     self.obj.execution.merge({
         "concurrency": 50,
         "hold-for": "30s",
         "scenario": {
             "default-address": "http://example.com",
             "requests": [{
                 "url": "/",
                 "think-time": "1s",
                 "method": "GET"
             }, {
                 "url": "/reserve.php",
                 "think-time": "2s",
                 "method": "POST",
                 "body": "123",
             }, {
                 "url": "/reserve.php",
                 "think-time": "3s",
                 "method": "PUT",
                 "body-file": get_res_path("http_simple.xml"),
             }],
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     urls = config.find('//http')
     self.assertEqual(len(urls), 3)
     self.assertEqual(urls[0].get("method"), "GET")
     self.assertEqual(urls[1].get("method"), "POST")
     self.assertEqual(urls[1].get("contents"), "123")
     self.assertEqual(urls[2].get("method"), "PUT")
     self.assertEqual(urls[2].get("contents"), open(get_res_path('http_simple.xml')).read())
Ejemplo n.º 7
0
 def test_requests_custom(self):
     self.obj.execution.merge({
         "concurrency": 50,
         "hold-for": "30s",
         "scenario": {
             "default-address": "http://example.com",
             "requests": [{
                 "url": "/",
                 "think-time": "1s",
                 "method": "GET"
             }, {
                 "url": "/reserve.php",
                 "think-time": "2s",
                 "method": "POST",
                 "body": "123",
             }, {
                 "url": "/reserve.php",
                 "think-time": "3s",
                 "method": "PUT",
                 "body-file": get_res_path("http_simple.xml"),
             }],
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     urls = config.find('//http')
     self.assertEqual(len(urls), 3)
     self.assertEqual(urls[0].get("method"), "GET")
     self.assertEqual(urls[1].get("method"), "POST")
     self.assertEqual(urls[1].get("contents"), "123")
     self.assertEqual(urls[2].get("method"), "PUT")
     self.assertEqual(urls[2].get("contents"), open(get_res_path('http_simple.xml')).read())
Ejemplo n.º 8
0
 def test_modify_dumpstats(self):
     self.obj.execution.merge({
         "scenario": {
             "script": get_res_path("http_simple.xml"),
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     elements = config.find('//tsung')
     self.assertEqual(len(elements), 1)
     root = elements[0]
     self.assertEqual(root.get('dumptraffic'), 'protocol')
     self.assertEqual(root.get('backend'), 'text')
Ejemplo n.º 9
0
 def test_modify_dumpstats(self):
     self.obj.execution.merge({
         "scenario": {
             "script": get_res_path("http_simple.xml"),
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     elements = config.find('//tsung')
     self.assertEqual(len(elements), 1)
     root = elements[0]
     self.assertEqual(root.get('dumptraffic'), 'protocol')
     self.assertEqual(root.get('backend'), 'text')
Ejemplo n.º 10
0
 def test_sessions_requests(self):
     self.obj.execution.merge({
         "concurrency": 2,
         "hold-for": "10s",
         "scenario": {
             "default-address": "http://example.com",
             "requests": ["/", "/reserve.php"],
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     requests = config.find('//request')
     self.assertEquals(2, len(requests))
Ejemplo n.º 11
0
 def test_sessions_requests(self):
     self.obj.execution.merge({
         "concurrency": 2,
         "hold-for": "10s",
         "scenario": {
             "default-address": "http://example.com",
             "requests": ["/", "/reserve.php"],
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     requests = config.find('//request')
     self.assertEquals(2, len(requests))
Ejemplo n.º 12
0
 def test_scenario_max_retries(self):
     self.obj.execution.merge({
         "hold-for": "10s",
         "scenario": {
             "max-retries": "5",
             "requests": ["http://blazedemo.com/"]
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     elements = config.find('//options/option[@name="max_retries"]')
     self.assertEqual(len(elements), 1)
     thinktime = elements[0]
     self.assertEqual(thinktime.get('value'), '5')
Ejemplo n.º 13
0
 def test_scenario_max_retries(self):
     self.obj.execution.merge({
         "hold-for": "10s",
         "scenario": {
             "max-retries": "5",
             "requests": ["http://blazedemo.com/"]
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     elements = config.find('//options/option[@name="max_retries"]')
     self.assertEqual(len(elements), 1)
     thinktime = elements[0]
     self.assertEqual(thinktime.get('value'), '5')
Ejemplo n.º 14
0
 def test_servers(self):
     self.obj.execution.merge({
         "hold-for": "10s",
         "scenario": {
             "default-address": "http://example.com:8080",
             "requests": ["/"],
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     servers = config.find('//servers/server')
     self.assertEquals(1, len(servers))
     server = servers[0]
     self.assertEqual(server.get('host'), 'example.com')
     self.assertEqual(server.get('port'), '8080')
Ejemplo n.º 15
0
 def test_servers(self):
     self.obj.execution.merge({
         "hold-for": "10s",
         "scenario": {
             "default-address": "http://example.com:8080",
             "requests": ["/"],
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     config = TsungConfig(None)
     config.load(self.obj.tsung_config)
     servers = config.find('//servers/server')
     self.assertEquals(1, len(servers))
     server = servers[0]
     self.assertEqual(server.get('host'), 'example.com')
     self.assertEqual(server.get('port'), '8080')
Ejemplo n.º 16
0
 def test_no_load_no_modication(self):
     # if load profile is not specified - original tsung config's <load> shouldn't be modified
     self.obj.execution.merge({
         "scenario": {
             "script": get_res_path("http_simple.xml"),
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     original_config = TsungConfig(None)
     original_config.load(get_res_path("http_simple.xml"))
     original_load = original_config.find('//tsung/load')[0]
     modified_config = TsungConfig(None)
     modified_config.load(self.obj.tsung_config)
     loads = modified_config.find('//tsung/load')
     self.assertEqual(len(loads), 1)
     modified_load = loads[0]
     self.assertEqual(etree.tostring(original_load), etree.tostring(modified_load))
Ejemplo n.º 17
0
 def test_scenario_timeout(self):
     obj = TsungExecutor()
     obj.engine = EngineEmul()
     obj.execution.merge({
         "hold-for": "10s",
         "scenario": {
             "timeout": "1s",
             "requests": ["http://blazedemo.com/"]
         }
     })
     obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     obj.prepare()
     config = TsungConfig(None)
     config.load(obj.tsung_config)
     elements = config.find('//options/option[@name="connect_timeout"]')
     self.assertEqual(len(elements), 1)
     thinktime = elements[0]
     self.assertEqual(thinktime.get('value'), '1000')
Ejemplo n.º 18
0
 def test_no_load_no_modication(self):
     # if load profile is not specified - original tsung config's <load> shouldn't be modified
     self.obj.execution.merge({
         "scenario": {
             "script": get_res_path("http_simple.xml"),
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     original_config = TsungConfig(None)
     original_config.load(get_res_path("http_simple.xml"))
     original_load = original_config.find('//tsung/load')[0]
     modified_config = TsungConfig(None)
     modified_config.load(self.obj.tsung_config)
     loads = modified_config.find('//tsung/load')
     self.assertEqual(len(loads), 1)
     modified_load = loads[0]
     self.assertEqual(etree.tostring(original_load), etree.tostring(modified_load))
Ejemplo n.º 19
0
 def test_load_modification(self):
     self.obj.execution.merge({
         "concurrency": 50,
         "hold-for": "30s",
         "scenario": {
             "script": get_res_path("http_simple.xml"),
         }
     })
     self.obj.settings.merge({"path": get_res_path(TOOL_NAME),})
     self.obj.prepare()
     original_config = TsungConfig(None)
     original_config.load(get_res_path("http_simple.xml"))
     original_load = original_config.find('//tsung/load')[0]
     modified_config = TsungConfig(None)
     modified_config.load(self.obj.tsung_config)
     loads = modified_config.find('//tsung/load')
     self.assertEqual(len(loads), 1)
     modified_load = loads[0]
     self.assertNotEqual(etree.tostring(original_load), etree.tostring(modified_load))
     self.assertEqual(modified_load.get('duration'), '30')