示例#1
0
    def test_write(self):
        def request_callback(request):
            resp_body = ""
            headers = {'location': 'http://127.0.0.1:8440/file'}
            return (307, headers, resp_body)

        responses.add_callback(responses.PUT,
                               "http://127.0.0.1:8440/webhdfs/v1/path/file",
                               callback=request_callback)
        responses.add(responses.PUT, "http://127.0.0.1:8440/file", status=201)
        smart_open_object = smart_open.WebHdfsOpenWrite(
            smart_open.ParseUri("webhdfs://127.0.0.1:8440/path/file"))

        def write_callback(request):
            assert request.body == u"žluťoučký koníček".encode('utf8')
            headers = {}
            return (200, headers, "")

        test_string = u"žluťoučký koníček".encode('utf8')
        responses.add_callback(responses.POST,
                               "http://127.0.0.1:8440/webhdfs/v1/path/file",
                               callback=request_callback)
        responses.add_callback(responses.POST,
                               "http://127.0.0.1:8440/file",
                               callback=write_callback)
        smart_open_object.write(test_string)
        smart_open_object.close()
        assert len(responses.calls) == 4
        assert responses.calls[
            2].request.url == "http://127.0.0.1:8440/webhdfs/v1/path/file?op=APPEND"
        assert responses.calls[3].request.url == "http://127.0.0.1:8440/file"
示例#2
0
 def test_initialize_write(self):
     def request_callback(request):
         resp_body = ""
         headers = {'location': 'http://127.0.0.1:8440/file'}
         return (307, headers, resp_body)
     responses.add_callback(responses.PUT, "http://127.0.0.1:8440/webhdfs/v1/path/file", callback=request_callback)
     responses.add(responses.PUT, "http://127.0.0.1:8440/file", status=201)
     smart_open_object = smart_open.WebHdfsOpenWrite(smart_open.ParseUri("webhdfs://127.0.0.1:8440/path/file"))
     assert len(responses.calls) == 2
     path, params = responses.calls[0].request.url.split("?")
     assert path == "http://127.0.0.1:8440/webhdfs/v1/path/file"
     assert params == "overwrite=True&op=CREATE" or params == "op=CREATE&overwrite=True"
     assert responses.calls[1].request.url == "http://127.0.0.1:8440/file"