def test_errors(self): async def get(check): app, srv, url = await self.create_server( middlewares=[jrpc_errorhandler_middleware]) resp = await self.client.get(url) self.assertEqual(200, resp.status) self.assertEqual(check, (await resp.json())) self.assertEqual(None, (await resp.release())) async def post(check, data=None): app, srv, url = await self.create_server( middlewares=[jrpc_errorhandler_middleware]) resp = await self.client.post(url, data=json.dumps(data)) self.assertEqual(200, resp.status) self.assertEqual(check, (await resp.json())) self.assertEqual(None, (await resp.release())) self.loop.run_until_complete(get(PARSE_ERROR)) self.loop.run_until_complete(post(INVALID_REQUEST)) self.loop.run_until_complete(post(INVALID_REQUEST, {"example": None})) self.loop.run_until_complete( post(NOT_FOUND, create_request("not_found"))) self.loop.run_until_complete( post(INVALID_PARAMS, create_request("v_hello"))) self.loop.run_until_complete( post(INTERNAL_ERROR, create_request("err_exc")))
def test_errors(self): @asyncio.coroutine def get(check): app, srv, url = yield from self.create_server(middlewares=[ jrpc_errorhandler_middleware]) resp = yield from self.client.get(url) self.assertEqual(200, resp.status) self.assertEqual(check, (yield from resp.json())) self.assertEqual(None, (yield from resp.release())) @asyncio.coroutine def post(check, data=None): app, srv, url = yield from self.create_server(middlewares=[ jrpc_errorhandler_middleware]) resp = yield from self.client.post(url, data=json.dumps(data)) self.assertEqual(200, resp.status) self.assertEqual(check, (yield from resp.json())) self.assertEqual(None, (yield from resp.release())) self.loop.run_until_complete(get(PARSE_ERROR)) self.loop.run_until_complete(post(INVALID_REQUEST)) self.loop.run_until_complete(post(INVALID_REQUEST, {"example": None})) self.loop.run_until_complete(post(NOT_FOUND, create_request("not_found"))) self.loop.run_until_complete(post(INVALID_PARAMS, create_request("v_hello"))) self.loop.run_until_complete(post(INTERNAL_ERROR, create_request("err_exc")))
def _send_request(self, data, url): request = utils.create_request(data, self.secret, url, method=self.method) response = requests.post(url=url, data=request) return self.parse_response(unicode(response.text), url=url)
def test_without_validate(self): async def post(check, data=None): app, srv, url = await self.create_server() resp = await self.client.post(url, data=json.dumps(data)) self.assertEqual(200, resp.status) self.assertEqual(check, (await resp.json())) self.assertEqual(None, (await resp.release())) self.loop.run_until_complete( post(create_response(None, {"a": "b"}), create_request("hello"))) self.loop.run_until_complete( post(create_response(123, {"a": "b"}), create_request("hello", 123))) self.loop.run_until_complete( post(create_response("123", {"a": "b"}), create_request("hello", "123")))
def test_custom_error(self): async def post(check, data=None): app, srv, url = await self.create_server( middlewares=[custom_errorhandler_middleware]) resp = await self.client.post(url, data=json.dumps(data)) self.assertEqual(200, resp.status) self.assertEqual(check, (await resp.json())) self.assertEqual(None, (await resp.release())) self.loop.run_until_complete( post(INTERNAL_ERROR, create_request("err_exc"))) self.loop.run_until_complete( post(INTERNAL_ERROR, create_request("err_exc2"))) self.loop.run_until_complete( post(CUSTOM_ERROR_GT, create_request("err_gt"))) self.loop.run_until_complete( post(CUSTOM_ERROR_LT, create_request("err_lt")))
def test_validate(self): @asyncio.coroutine def post(check, data=None): app, srv, url = yield from self.create_server() resp = yield from self.client.post(url, data=json.dumps(data)) self.assertEqual(200, resp.status) self.assertEqual(check, (yield from resp.json())) self.assertEqual(None, (yield from resp.release())) self.loop.run_until_complete(post(INVALID_PARAMS, create_request("v_hello"))) self.loop.run_until_complete( post(create_response(result={"status": "ok"}), create_request("v_hello", params={"data": "ok"}))) self.loop.run_until_complete( post(create_response(1234, {"status": "ok"}), create_request("v_hello", 1234, {"data": "ok"}))) self.loop.run_until_complete( post(create_response(None, {"status": "ok"}), create_request("v_hello", None, {"data": "ok"}))) self.loop.run_until_complete( post(create_response("1", {"status": "OK"}), create_request("v_hello", "1", {"data": "TEST"}))) self.loop.run_until_complete( post(create_response(True, {"status": "ok"}), create_request("v_hello", True, {"data": "ok"}))) self.loop.run_until_complete( post(create_response(False, {"status": "ok"}), create_request("v_hello", False, {"data": "ok"})))
def test_validate(self): async def post(check, data=None): app, srv, url = await self.create_server() resp = await self.client.post(url, data=json.dumps(data)) self.assertEqual(200, resp.status) self.assertEqual(check, (await resp.json())) self.assertEqual(None, (await resp.release())) self.loop.run_until_complete( post(INVALID_PARAMS, create_request("v_hello"))) self.loop.run_until_complete( post(create_response(result={"status": "ok"}), create_request("v_hello", params={"data": "ok"}))) self.loop.run_until_complete( post(create_response(1234, {"status": "ok"}), create_request("v_hello", 1234, {"data": "ok"}))) self.loop.run_until_complete( post(create_response(None, {"status": "ok"}), create_request("v_hello", None, {"data": "ok"}))) self.loop.run_until_complete( post(create_response("1", {"status": "OK"}), create_request("v_hello", "1", {"data": "TEST"}))) self.loop.run_until_complete( post(create_response(True, {"status": "ok"}), create_request("v_hello", True, {"data": "ok"}))) self.loop.run_until_complete( post(create_response(False, {"status": "ok"}), create_request("v_hello", False, {"data": "ok"})))
def test_without_validate(self): @asyncio.coroutine def post(check, data=None): app, srv, url = yield from self.create_server() resp = yield from self.client.post(url, data=json.dumps(data)) self.assertEqual(200, resp.status) self.assertEqual(check, (yield from resp.json())) self.assertEqual(None, (yield from resp.release())) self.loop.run_until_complete( post(create_response(None, {"a": "b"}), create_request("hello"))) self.loop.run_until_complete( post(create_response(123, {"a": "b"}), create_request("hello", 123))) self.loop.run_until_complete( post(create_response("123", {"a": "b"}), create_request("hello", "123")))
def test_custom_error(self): @asyncio.coroutine def post(check, data=None): app, srv, url = yield from self.create_server(middlewares=[ custom_errorhandler_middleware]) resp = yield from self.client.post(url, data=json.dumps(data)) self.assertEqual(200, resp.status) self.assertEqual(check, (yield from resp.json())) self.assertEqual(None, (yield from resp.release())) self.loop.run_until_complete(post(INTERNAL_ERROR, create_request("err_exc"))) self.loop.run_until_complete(post(INTERNAL_ERROR, create_request("err_exc2"))) self.loop.run_until_complete(post(CUSTOM_ERROR_GT, create_request("err_gt"))) self.loop.run_until_complete(post(CUSTOM_ERROR_LT, create_request("err_lt")))
def request(source, destination, size=4, delay=30, deadline=90, utility=1.0): # number of chunks chunk_n = size # message msg_type = 'request' ts_delay = datetime.timedelta(seconds=delay) ts_deadline = datetime.timedelta(seconds=deadline) ts_now = datetime.datetime.now() ts_start = ts_now + ts_delay ts_end = ts_now + ts_deadline ts_start_out = ts_start.strftime("%Y-%m-%d %H:%M:%S") ts_end_out = ts_end.strftime("%Y-%m-%d %H:%M:%S") cmd_json = utils.create_request(ts_start_out, ts_end_out, str(size), str(source), str(destination), msg_type, utility) print cmd_json cmd_json = cmd_json + '\n' # create socket s = socket.socket() s.settimeout(5) s.connect(('147.8.178.128', 8088)) s.sendall(cmd_json) s.sendall('\n') # waiting for confirmation recv_job_id = s.recv(BUFFER_LEN) s.close() print 'Received job_id: %s. Size: %s' % (recv_job_id, len(recv_job_id)) recv_job_id = recv_job_id.strip() return True # no need to create file from here if recv_job_id != '-1': job_id = str(recv_job_id).zfill(8) # creating dummy chunks srcfile = '/data/block' assert os.path.isabs(srcfile) for x in range(0,chunk_n): dstfile = '/data/%s_%s' % (job_id, str(x).zfill(4)) shutil.copy(srcfile, dstfile) return True return False