def test_successful_rush(self): resp = { "/api/1/parse": '{"ok":true,\ "command":{"steps":[{"url":"http://example.com"}],\ "pattern":{"iterations":1,"intervals":\ [{"iterations":1,"start":5,"end":10,"duration":10}]}}}', "/login/api": '{"ok":true, "api_key":"private-key"}', "/api/1/curl/execute": '{"ok":true, "status":"queued", "region":"california", "job_id":"c123"}', "/api/1/jobs/c123/status": '{"_id":"c123","ok":true,\ "status":"completed","result":{"region":"california","timeline":[\ {"duration":1,"total":10,"executed":8,"errors":1,\ "timeouts":1,"volume":10}, {"duration":2,"total":100,\ "executed":80,"errors":10,"timeouts":10,"volume":100}]}}'} def callback(result): self.assertIsNotNone(result) self.assertIs(result.__class__, blitz.rush.Result) self.assertEqual('california', result.region) self.assertIsNotNone(result.timeline) self.assertEqual(2, len(result.timeline)) self.assertEqual(1, result.timeline[0].duration) options = {"-p 5-10:10 command": "http://example.com"} self.test.client.connection = mock.connection(resp) self.test.parse(options, callback)
def test_successful_complex(self): resp = { "/login/api": '{"ok":true, "api_key":"private-key"}', "/api/1/curl/execute": '{"ok":true, "status":"queued", "region":"california", "job_id":"c123"}', "/api/1/jobs/c123/status": '{"_id":"c123","ok":true,\ "status":"completed","result":{"region":"california","timeline":[\ {"duration":1,"total":10,"executed":8,"errors":1,\ "timeouts":1,"volume":10}, {"duration":2,"total":100,\ "executed":80,"errors":10,"timeouts":10,"volume":100}]}}'} def callback(result): self.assertIsNotNone(result) self.assertEqual('california', result.region) self.assertIsNotNone(result.timeline) self.assertEqual(2, len(result.timeline)) self.assertEqual(1, result.timeline[0].duration) options = { 'steps': [ { 'url': 'http://example.com', 'status': 200, 'cookies': ['cookie1=foo', 'cookie2=bar'] } ], 'pattern': {'intervals': [{'start': 1, 'end': 2}]}} self.rush.client.connection = mock.connection(resp) self.rush.execute(options, callback)
def test_successful(self): resp = {"/login/api":'{"ok":true, "api_key":"private-key"}', "/api/1/curl/execute":'{"ok":true, "status":"queued", \ "region":"california", "job_id":"a123"}', "/api/1/jobs/a123/status": '{"_id":"a123","ok":true,\ "status":"completed","result":{"region":"california","duration":10,\ "steps":[{"connect":1,"request":{"line":"GET / HTTP/1.1",\ "method":"GET","url":"http://localhost:9295","headers":{},\ "content":"MTIzNA=="},"duration":10,\ "response":{"line":"GET / HTTP/1.1","message":"message",\ "status":200,"headers":{},"content":"MTIzNA=="}}]}}'} def callback(result): self.assertIsNotNone(result) self.assertEqual('california', result.region) self.assertEqual(10, result.duration) self.assertEqual(10, result.steps[0].duration) self.assertIsNotNone(result.steps[0].request) self.assertIsNotNone(result.steps[0].response) self.assertEqual('GET', result.steps[0].request.method) self.assertEqual(200, result.steps[0].response.status) self.assertEqual('1234', result.steps[0].request.content) options = {'steps':[{'url': 'http://example.com'}]} self.sprint.client.connection = mock.connection(resp) self.sprint.execute(options, callback)
def test_successful_sprint(self): resp = { "/api/1/parse": '{"ok":true, "command":{"steps":[{"url":"http://example.com"}]}}', "/login/api": '{"ok":true, "api_key":"private-key"}', "/api/1/curl/execute": '{"ok":true, "status":"queued", "region":"california", "job_id":"a123"}', "/api/1/jobs/a123/status": '{"_id":"a123","ok":true,\ "status":"completed","result":{"region":"california","duration":10,\ "steps":[{"connect":1,"request":{"line":"GET / HTTP/1.1",\ "method":"GET","url":"http://localhost:9295","headers":{},\ "content":"MTIzNA=="},"duration":10,\ "response":{"line":"GET / HTTP/1.1","message":"message",\ "status":200,"headers":{},"content":"MTIzNA=="}}]}}'} def callback(result): self.assertIsNotNone(result) self.assertIs(result.__class__, blitz.sprint.Result) self.assertEqual('california', result.region) self.assertEqual(10, result.duration) self.assertEqual(10, result.steps[0].duration) self.assertIsNotNone(result.steps[0].request) self.assertIsNotNone(result.steps[0].response) self.assertEqual('GET', result.steps[0].request.method) self.assertEqual(200, result.steps[0].response.status) self.assertEqual('1234', result.steps[0].request.content) options = {"command": "http://example.com"} self.test.client.connection = mock.connection(resp) self.test.parse(options, callback)
def test_successful_rush(self): resp = { "/api/1/parse": '{"ok":true,\ "command":{"steps":[{"url":"http://example.com"}],\ "pattern":{"iterations":1,"intervals":\ [{"iterations":1,"start":5,"end":10,"duration":10}]}}}', "/login/api": '{"ok":true, "api_key":"private-key"}', "/api/1/curl/execute": '{"ok":true, "status":"queued", \ "region":"california", "job_id":"c123"}', "/api/1/jobs/c123/status": '{"_id":"c123","ok":true,\ "status":"completed","result":{"region":"california","timeline":[\ {"duration":1,"total":10,"executed":8,"errors":1,\ "timeouts":1,"volume":10}, {"duration":2,"total":100,\ "executed":80,"errors":10,"timeouts":10,"volume":100}]}}' } def callback(result): self.assertIsNotNone(result) self.assertIs(result.__class__, blitz.rush.Result) self.assertEqual('california', result.region) self.assertIsNotNone(result.timeline) self.assertEqual(2, len(result.timeline)) self.assertEqual(1, result.timeline[0].duration) options = {"-p 5-10:10 command": "http://example.com"} self.test.client.connection = mock.connection(resp) self.test.parse(options, callback)
def test_failed_login(self): resp = {"/login/api":'{"error":"login", "reason":"test"}'} self.client.connection = mock.connection(resp) response = self.client.login() self.assertIsNotNone(response) self.assertIsNotNone(response['error']) self.assertEqual('login', response['error']) self.assertEqual('test', response['reason'])
def test_successful_login(self): resp = {"/login/api":'{"ok":true, "api_key":"private-key"}'} self.client.connection = mock.connection(resp) response = self.client.login() self.assertIsNotNone(response) self.assertIsNotNone(response['ok']) self.assertTrue(response['ok']) self.assertEqual('private-key', response['api_key'])
def test_failed_login(self): resp = {"/login/api": '{"error":"login", "reason":"test"}'} self.client.connection = mock.connection(resp) response = self.client.login() self.assertIsNotNone(response) self.assertIsNotNone(response['error']) self.assertEqual('login', response['error']) self.assertEqual('test', response['reason'])
def test_successful_login(self): resp = {"/login/api": '{"ok":true, "api_key":"private-key"}'} self.client.connection = mock.connection(resp) response = self.client.login() self.assertIsNotNone(response) self.assertIsNotNone(response['ok']) self.assertTrue(response['ok']) self.assertEqual('private-key', response['api_key'])
def test_abort_job(self): resp = {"/api/1/jobs/c123/abort": '{"ok":true}'} self.client.connection = mock.connection(resp) response = self.client.abort_job('c123') self.assertIsNotNone(response) self.assertIsNotNone(response['ok']) self.assertTrue(response['ok']) path = self.client.connection.path self.assertEqual('/api/1/jobs/c123/abort', path)
def test_parse(self): resp = {"/api/1/parse": '{"ok":true,"command":{"steps":[{"url":"http://example.com"}]}}'} self.client.connection = mock.connection(resp) response = self.client.parse({"command": "http://example.com"}) self.assertIsNotNone(response) self.assertIsNotNone(response['ok']) self.assertTrue(response['ok']) path = self.client.connection.path self.assertEqual('/api/1/parse', path)
def test_abort_job(self): resp = {"/api/1/jobs/c123/abort":'{"ok":true}'} self.client.connection = mock.connection(resp) response = self.client.abort_job('c123') self.assertIsNotNone(response) self.assertIsNotNone(response['ok']) self.assertTrue(response['ok']) path = self.client.connection.path self.assertEqual('/api/1/jobs/c123/abort', path)
def test_parse(self): resp = {"/api/1/parse":'{"ok":true,\ "command":{"steps":[{"url":"http://example.com"}]}}'} self.client.connection = mock.connection(resp) response = self.client.parse({"command": "http://example.com"}) self.assertIsNotNone(response) self.assertIsNotNone(response['ok']) self.assertTrue(response['ok']) path = self.client.connection.path self.assertEqual('/api/1/parse', path)
def test_job_status(self): resp = {"/api/1/jobs/c123/status": '{"_id":"c123", "ok":true,\ "result":{"region":"california","timeline":[\ {"duration":1,"total":10,"executed":8,"errors":1,\ "timeouts":1,"volume":10}, {"duration":2,"total":100,\ "executed":80,"errors":10,"timeouts":10,"volume":100}]}}'} self.client.connection = mock.connection(resp) response = self.client.job_status('c123') self.assertIsNotNone(response) self.assertIsNotNone(response['ok']) self.assertTrue(response['ok']) self.assertEqual('c123', response['_id'])
def test_job_status(self): resp = {"/api/1/jobs/c123/status":'{"_id":"c123", "ok":true,\ "result":{"region":"california","timeline":[\ {"duration":1,"total":10,"executed":8,"errors":1,\ "timeouts":1,"volume":10}, {"duration":2,"total":100,\ "executed":80,"errors":10,"timeouts":10,"volume":100}]}}'} self.client.connection = mock.connection(resp) response = self.client.job_status('c123') self.assertIsNotNone(response) self.assertIsNotNone(response['ok']) self.assertTrue(response['ok']) self.assertEqual('c123', response['_id'])
def test_fail_login(self): resp = {"/login/api":'{"error":"login", "reason":"test"}'} def callback(result): self.assertFalse(True) options = {'steps':[{'url': 'http://example.com'}]} self.sprint.client.connection = mock.connection(resp) with self.assertRaises(Error) as err: self.sprint.execute(options, callback) self.assertEqual('login', err.exception.error)
def test_fail_queue(self): resp = {"/login/api": '{"ok":true, "api_key":"private-key"}', "/api/1/curl/execute": '{"error":"throttle", "reason":"Slow down please!"}'} def callback(result): self.assertIsNotNone(result) self.assertTrue('error' in result) self.assertEqual('throttle', result['error']) options = {'steps': [{'url': 'http://example.com'}]} self.sprint.client.connection = mock.connection(resp) with self.assertRaises(Error) as err: self.sprint.execute(options, callback)
def test_successful_execute(self): resp = {"/api/1/curl/execute": '{"ok":true, "status":"queued", "region":"california", "job_id":"a123"}'} self.client.connection = mock.connection(resp) data = {'steps': [{'url': 'http://example.com'}]} response = self.client.execute(data) self.assertIsNotNone(response) self.assertIsNotNone(response['ok']) self.assertTrue(response['ok']) self.assertEqual('a123', response['job_id']) self.assertEqual('california', response['region']) self.assertEqual('queued', response['status']) body = self.client.connection.body self.assertEqual('{"steps": [{"url": "http://example.com"}]}', body)
def test_fail_validation_url(self): resp = {} def callback(result): self.assertFalse(True) options = {'steps':[{}]} self.sprint.client.connection = mock.connection(resp) with self.assertRaises(ValidationError) as err: self.sprint.execute(options, callback) self.assertEqual('validation', err.exception.error) self.assertIn('url', err.exception.fields)
def test_fail_validation_pattern(self): resp = {} def callback(result): self.assertFalse(True) options = {'steps':[{'url': 'http://example.com'}]} self.rush.client.connection = mock.connection(resp) with self.assertRaises(ValidationError) as err: self.rush.execute(options, callback) self.assertEqual('validation', err.exception.error) self.assertIn('pattern', err.exception.fields)
def test_fail_parse(self): resp = {"/api/1/parse": '{"error":"test", "reason":"testing error"}', "/login/api": '{"ok":true, "api_key":"private-key"}'} def callback(result): self.assertFalse(True) options = {"abc": "--ppp http://example.com"} self.test.client.connection = mock.connection(resp) with self.assertRaises(Error) as err: self.test.parse(options, callback) self.assertEqual('test', err.exception.error)
def test_successful_execute(self): resp = {"/api/1/curl/execute":'{"ok":true, "status":"queued", \ "region":"california", "job_id":"a123"}'} self.client.connection = mock.connection(resp) data = {'steps': [{'url':'http://example.com'}] } response = self.client.execute(data) self.assertIsNotNone(response) self.assertIsNotNone(response['ok']) self.assertTrue(response['ok']) self.assertEqual('a123', response['job_id']) self.assertEqual('california', response['region']) self.assertEqual('queued', response['status']) body = self.client.connection.body self.assertEqual('{"steps": [{"url": "http://example.com"}]}', body)
def test_fail_queue(self): resp = {"/login/api":'{"ok":true, "api_key":"private-key"}', "/api/1/curl/execute":'{"error":"throttle", \ "reason":"Slow down please!"}'} def callback(result): self.assertIsNotNone(result) self.assertTrue('error' in result) self.assertEqual('throttle', result['error']) options = {'steps':[{'url': 'http://example.com'}]} self.sprint.client.connection = mock.connection(resp) with self.assertRaises(Error) as err: self.sprint.execute(options, callback)
def test_fail_parse(self): resp = { "/api/1/parse": '{"error":"test", "reason":"testing error"}', "/login/api": '{"ok":true, "api_key":"private-key"}' } def callback(result): self.assertFalse(True) options = {"abc": "--ppp http://example.com"} self.test.client.connection = mock.connection(resp) with self.assertRaises(Error) as err: self.test.parse(options, callback) self.assertEqual('test', err.exception.error)
def test_successful(self): resp = {"/login/api":'{"ok":true, "api_key":"private-key"}', "/api/1/curl/execute":'{"ok":true, "status":"queued", \ "region":"california", "job_id":"c123"}', "/api/1/jobs/c123/status": '{"_id":"c123","ok":true,\ "status":"completed","result":{"region":"california","timeline":[\ {"duration":1,"total":10,"executed":8,"errors":1,\ "timeouts":1,"volume":10}, {"duration":2,"total":100,\ "executed":80,"errors":10,"timeouts":10,"volume":100}]}}'} def callback(result): self.assertIsNotNone(result) self.assertEqual('california', result.region) self.assertIsNotNone(result.timeline) self.assertEqual(2, len(result.timeline)) self.assertEqual(1, result.timeline[0].duration) options = {'steps':[{'url': 'http://example.com'}], 'pattern': { 'intervals': [{'start':1, 'end':2}]}} self.rush.client.connection = mock.connection(resp) self.rush.execute(options, callback)