Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
 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)
Beispiel #4
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
 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'])
Beispiel #7
0
 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'])
Beispiel #8
0
 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'])
Beispiel #9
0
 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'])
Beispiel #10
0
 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)
Beispiel #11
0
 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)
Beispiel #12
0
 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)
Beispiel #13
0
 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)
Beispiel #14
0
 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'])
Beispiel #15
0
 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'])
Beispiel #16
0
    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)
Beispiel #17
0
    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)
Beispiel #18
0
 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)
Beispiel #19
0
    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)
Beispiel #20
0
    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)
Beispiel #21
0
    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)
Beispiel #22
0
 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)
Beispiel #23
0
 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)
Beispiel #24
0
    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)
Beispiel #25
0
 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)