def run_quarantine_zero_byte_post(self): container = 'container-zbyte-%s' % uuid4() obj = 'object-zbyte-%s' % uuid4() onode, opart, data_file = self._setup_data_file(container, obj, 'DATA') metadata = read_metadata(data_file) unlink(data_file) with open(data_file, 'w') as fpointer: write_metadata(fpointer, metadata) try: headers = { 'X-Object-Meta-1': 'One', 'X-Object-Meta-Two': 'Two', 'X-Backend-Storage-Policy-Index': self.policy.idx } direct_client.direct_post_object(onode, opart, self.account, container, obj, headers=headers, conn_timeout=1, response_timeout=1) raise Exception("Did not quarantine object") except ClientException as err: self.assertEqual(err.http_status, 404)
def test_direct_post_object(self): headers = {'Key': 'value'} resp_headers = [] with mocked_http_conn(200, resp_headers) as conn: direct_client.direct_post_object( self.node, self.part, self.account, self.container, self.obj, headers) self.assertEqual(conn.method, 'POST') self.assertEqual(conn.path, self.obj_path) for header in headers: self.assertEqual(conn.req_headers[header], headers[header])
def run_quarantine_zero_byte_post(self): container = 'container-zbyte-%s' % uuid4() obj = 'object-zbyte-%s' % uuid4() onode, opart, data_file = self._setup_data_file(container, obj, 'DATA') with open(data_file) as fp: metadata = read_metadata(fp) os.unlink(data_file) with open(data_file, 'w') as fp: write_metadata(fp, metadata) try: resp = direct_client.direct_post_object( onode, opart, self.account, container, obj, { 'X-Object-Meta-1': 'One', 'X-Object-Meta-Two': 'Two' }, conn_timeout=1, response_timeout=1) raise "Did not quarantine object" except client.ClientException, e: self.assertEquals(e.http_status, 404)
def test_direct_post_object(self): node = {'ip': '1.2.3.4', 'port': '6000', 'device': 'sda'} part = '0' account = 'a' container = 'c' name = 'o' headers = {'Key': 'value'} fake_headers = [] was_http_connector = direct_client.http_connect direct_client.http_connect = mock_http_connect(200, fake_headers) direct_client.direct_post_object(node, part, account, container, name, headers) self.assertEqual(headers['Key'], fake_headers[0].get('Key')) direct_client.http_connect = was_http_connector
def test_direct_post_object_error(self): headers = {'Key': 'value'} with mocked_http_conn(500) as conn: with self.assertRaises(ClientException) as raised: direct_client.direct_post_object(self.node, self.part, self.account, self.container, self.obj, headers) self.assertEqual(conn.host, self.node['ip']) self.assertEqual(conn.port, self.node['port']) self.assertEqual(conn.method, 'POST') self.assertEqual(conn.path, self.obj_path) for header in headers: self.assertEqual(conn.req_headers[header], headers[header]) self.assertEqual(conn.req_headers['user-agent'], self.user_agent) self.assertTrue('x-timestamp' in conn.req_headers) self.assertEqual(raised.exception.http_status, 500) self.assertTrue('POST' in str(raised.exception))
def run_quarantine_zero_byte_post(self): container = 'container-zbyte-%s' % uuid4() obj = 'object-zbyte-%s' % uuid4() onode, opart, data_file = self._setup_data_file(container, obj, 'DATA') metadata = read_metadata(data_file) unlink(data_file) with open(data_file, 'w') as fpointer: write_metadata(fpointer, metadata) try: direct_client.direct_post_object( onode, opart, self.account, container, obj, {'X-Object-Meta-1': 'One', 'X-Object-Meta-Two': 'Two'}, conn_timeout=1, response_timeout=1) raise Exception("Did not quarantine object") except client.ClientException as err: self.assertEquals(err.http_status, 404)
def test_direct_post_object_error(self): headers = {'Key': 'value'} with mocked_http_conn(500) as conn: with self.assertRaises(ClientException) as raised: direct_client.direct_post_object( self.node, self.part, self.account, self.container, self.obj, headers) self.assertEqual(conn.host, self.node['ip']) self.assertEqual(conn.port, self.node['port']) self.assertEqual(conn.method, 'POST') self.assertEqual(conn.path, self.obj_path) for header in headers: self.assertEqual(conn.req_headers[header], headers[header]) self.assertEqual(conn.req_headers['user-agent'], self.user_agent) self.assertTrue('x-timestamp' in conn.req_headers) self.assertEqual(raised.exception.http_status, 500) self.assertTrue('POST' in str(raised.exception))
def run_quarantine_zero_byte_post(self): container = "container-zbyte-%s" % uuid4() obj = "object-zbyte-%s" % uuid4() onode, opart, data_file = self._setup_data_file(container, obj, "DATA") metadata = read_metadata(data_file) unlink(data_file) with open(data_file, "w") as fpointer: write_metadata(fpointer, metadata) try: headers = { "X-Object-Meta-1": "One", "X-Object-Meta-Two": "Two", "X-Backend-Storage-Policy-Index": self.policy.idx, } direct_client.direct_post_object( onode, opart, self.account, container, obj, headers=headers, conn_timeout=1, response_timeout=1 ) raise Exception("Did not quarantine object") except ClientException as err: self.assertEquals(err.http_status, 404)
def test_direct_post_object_error(self): headers = {'Key': 'value'} with mocked_http_conn(500) as conn: try: direct_client.direct_post_object( self.node, self.part, self.account, self.container, self.obj, headers) except ClientException as err: pass else: self.fail('ClientException not raised') self.assertEqual(conn.method, 'POST') self.assertEqual(conn.path, self.obj_path) for header in headers: self.assertEqual(conn.req_headers[header], headers[header]) self.assertEqual(conn.req_headers['user-agent'], self.user_agent) self.assertTrue('x-timestamp' in conn.req_headers) self.assertEqual(err.http_status, 500) self.assertTrue('POST' in str(err))
def run_quarantine_zero_byte_post(self): container = "container-zbyte-%s" % uuid4() obj = "object-zbyte-%s" % uuid4() onode, opart, data_file = self._setup_data_file(container, obj, "DATA") with open(data_file) as fpointer: metadata = read_metadata(fpointer) unlink(data_file) with open(data_file, "w") as fpointer: write_metadata(fpointer, metadata) try: direct_client.direct_post_object( onode, opart, self.account, container, obj, {"X-Object-Meta-1": "One", "X-Object-Meta-Two": "Two"}, conn_timeout=1, response_timeout=1, ) raise Exception("Did not quarantine object") except client.ClientException as err: self.assertEquals(err.http_status, 404)