Updating string buffers to byte buffers
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
index 0a71cfc..458e29d 100644
--- a/tests/test_discovery.py
+++ b/tests/test_discovery.py
@@ -596,7 +596,7 @@
     zoo = build('zoo', 'v1', http=self.http)
     request = zoo.animals().crossbreed(media_body=datafile('small.png'))
     self.assertEquals('image/png', request.headers['content-type'])
-    self.assertEquals('PNG', request.body[1:4])
+    self.assertEquals(b'PNG', request.body[1:4])
 
   def test_simple_media_raise_correct_exceptions(self):
     self.http = HttpMock(datafile('zoo.json'), {'status': '200'})
@@ -620,7 +620,7 @@
 
     request = zoo.animals().insert(media_body=datafile('small.png'))
     self.assertEquals('image/png', request.headers['content-type'])
-    self.assertEquals('PNG', request.body[1:4])
+    self.assertEquals(b'PNG', request.body[1:4])
     assertUrisEqual(self,
         'https://www.googleapis.com/upload/zoo/v1/animals?uploadType=media&alt=json',
         request.uri)
@@ -852,7 +852,7 @@
     zoo = build('zoo', 'v1', http=self.http)
 
     # Set up a seekable stream and try to upload in single chunk.
-    fd = BytesIO('01234"56789"')
+    fd = BytesIO(b'01234"56789"')
     media_upload = MediaIoBaseUpload(
         fd=fd, mimetype='text/plain', chunksize=-1, resumable=True)
 
@@ -876,7 +876,7 @@
     zoo = build('zoo', 'v1', http=self.http)
 
     # Set up a seekable stream and try to upload in chunks.
-    fd = BytesIO('0123456789')
+    fd = BytesIO(b'0123456789')
     media_upload = MediaIoBaseUpload(
         fd=fd, mimetype='text/plain', chunksize=5, resumable=True)
 
@@ -892,7 +892,7 @@
     try:
       body = request.execute(http=http)
     except HttpError as e:
-      self.assertEqual('01234', e.content)
+      self.assertEqual(b'01234', e.content)
 
   def test_resumable_media_handle_uploads_of_unknown_size(self):
     http = HttpMockSequence([
@@ -1001,7 +1001,7 @@
     self.http = HttpMock(datafile('zoo.json'), {'status': '200'})
     zoo = build('zoo', 'v1', http=self.http)
 
-    fd = BytesIO('data goes here')
+    fd = BytesIO(b'data goes here')
 
     # Create an upload that doesn't know the full size of the media.
     upload = MediaIoBaseUpload(
@@ -1025,7 +1025,7 @@
     zoo = build('zoo', 'v1', http=self.http)
 
     # Create an upload that doesn't know the full size of the media.
-    fd = BytesIO('data goes here')
+    fd = BytesIO(b'data goes here')
 
     upload = MediaIoBaseUpload(
         fd=fd, mimetype='image/png', chunksize=500, resumable=True)
diff --git a/tests/test_http.py b/tests/test_http.py
index bb21335..9da222b 100644
--- a/tests/test_http.py
+++ b/tests/test_http.py
@@ -137,7 +137,7 @@
     self.assertEqual(190, upload.size())
     self.assertEqual(True, upload.resumable())
     self.assertEqual(500, upload.chunksize())
-    self.assertEqual('PNG', upload.getbytes(1, 3))
+    self.assertEqual(b'PNG', upload.getbytes(1, 3))
 
     json = upload.to_json()
     new_upload = MediaUpload.new_from_json(json)
@@ -146,7 +146,7 @@
     self.assertEqual(190, new_upload.size())
     self.assertEqual(True, new_upload.resumable())
     self.assertEqual(500, new_upload.chunksize())
-    self.assertEqual('PNG', new_upload.getbytes(1, 3))
+    self.assertEqual(b'PNG', new_upload.getbytes(1, 3))
 
   def test_media_file_upload_raises_on_invalid_chunksize(self):
     self.assertRaises(InvalidChunkSizeError, MediaFileUpload,
@@ -154,12 +154,12 @@
         resumable=True)
 
   def test_media_inmemory_upload(self):
-    media = MediaInMemoryUpload('abcdef', mimetype='text/plain', chunksize=10,
+    media = MediaInMemoryUpload(b'abcdef', mimetype='text/plain', chunksize=10,
                                 resumable=True)
     self.assertEqual('text/plain', media.mimetype())
     self.assertEqual(10, media.chunksize())
     self.assertTrue(media.resumable())
-    self.assertEqual('bc', media.getbytes(1, 2))
+    self.assertEqual(b'bc', media.getbytes(1, 2))
     self.assertEqual(6, media.size())
 
   def test_http_request_to_from_json(self):
@@ -205,21 +205,21 @@
     self.assertEqual(190, upload.size())
     self.assertEqual(True, upload.resumable())
     self.assertEqual(500, upload.chunksize())
-    self.assertEqual('PNG', upload.getbytes(1, 3))
+    self.assertEqual(b'PNG', upload.getbytes(1, 3))
 
   def test_media_io_base_upload_from_file_object(self):
-    f = open(datafile('small.png'), 'r')
+    f = open(datafile('small.png'), 'rb')
     upload = MediaIoBaseUpload(
         fd=f, mimetype='image/png', chunksize=500, resumable=True)
     self.assertEqual('image/png', upload.mimetype())
     self.assertEqual(190, upload.size())
     self.assertEqual(True, upload.resumable())
     self.assertEqual(500, upload.chunksize())
-    self.assertEqual('PNG', upload.getbytes(1, 3))
+    self.assertEqual(b'PNG', upload.getbytes(1, 3))
     f.close()
 
   def test_media_io_base_upload_serializable(self):
-    f = open(datafile('small.png'), 'r')
+    f = open(datafile('small.png'), 'rb')
     upload = MediaIoBaseUpload(fd=f, mimetype='image/png')
 
     try:
@@ -229,7 +229,7 @@
       pass
 
   def test_media_io_base_upload_from_string_io(self):
-    f = open(datafile('small.png'), 'r')
+    f = open(datafile('small.png'), 'rb')
     fd = StringIO(f.read())
     f.close()
 
@@ -239,11 +239,11 @@
     self.assertEqual(190, upload.size())
     self.assertEqual(True, upload.resumable())
     self.assertEqual(500, upload.chunksize())
-    self.assertEqual('PNG', upload.getbytes(1, 3))
+    self.assertEqual(b'PNG', upload.getbytes(1, 3))
     f.close()
 
   def test_media_io_base_upload_from_bytes(self):
-    f = open(datafile('small.png'), 'r')
+    f = open(datafile('small.png'), 'rb')
     fd = BytesIO(f.read())
     upload = MediaIoBaseUpload(
         fd=fd, mimetype='image/png', chunksize=500, resumable=True)
@@ -251,23 +251,23 @@
     self.assertEqual(190, upload.size())
     self.assertEqual(True, upload.resumable())
     self.assertEqual(500, upload.chunksize())
-    self.assertEqual('PNG', upload.getbytes(1, 3))
+    self.assertEqual(b'PNG', upload.getbytes(1, 3))
 
   def test_media_io_base_upload_raises_on_invalid_chunksize(self):
-    f = open(datafile('small.png'), 'r')
+    f = open(datafile('small.png'), 'rb')
     fd = BytesIO(f.read())
     self.assertRaises(InvalidChunkSizeError, MediaIoBaseUpload,
         fd, 'image/png', chunksize=-2, resumable=True)
 
   def test_media_io_base_upload_streamable(self):
-    fd = BytesIO('stuff')
+    fd = BytesIO(b'stuff')
     upload = MediaIoBaseUpload(
         fd=fd, mimetype='image/png', chunksize=500, resumable=True)
     self.assertEqual(True, upload.has_stream())
     self.assertEqual(fd, upload.stream())
 
   def test_media_io_base_next_chunk_retries(self):
-    f = open(datafile('small.png'), 'r')
+    f = open(datafile('small.png'), 'rb')
     fd = BytesIO(f.read())
     upload = MediaIoBaseUpload(
         fd=fd, mimetype='image/png', chunksize=500, resumable=True)
@@ -315,9 +315,9 @@
   def test_media_io_base_download(self):
     self.request.http = HttpMockSequence([
       ({'status': '200',
-        'content-range': '0-2/5'}, '123'),
+        'content-range': '0-2/5'}, b'123'),
       ({'status': '200',
-        'content-range': '3-4/5'}, '45'),
+        'content-range': '3-4/5'}, b'45'),
     ])
     self.assertEqual(True, self.request.http.follow_redirects)
 
@@ -333,7 +333,7 @@
 
     status, done = download.next_chunk()
 
-    self.assertEqual(self.fd.getvalue(), '123')
+    self.assertEqual(self.fd.getvalue(), b'123')
     self.assertEqual(False, done)
     self.assertEqual(3, download._progress)
     self.assertEqual(5, download._total_size)
@@ -341,7 +341,7 @@
 
     status, done = download.next_chunk()
 
-    self.assertEqual(self.fd.getvalue(), '12345')
+    self.assertEqual(self.fd.getvalue(), b'12345')
     self.assertEqual(True, done)
     self.assertEqual(5, download._progress)
     self.assertEqual(5, download._total_size)
@@ -349,9 +349,9 @@
   def test_media_io_base_download_handle_redirects(self):
     self.request.http = HttpMockSequence([
       ({'status': '200',
-        'content-location': 'https://secure.example.net/lion'}, ''),
+        'content-location': 'https://secure.example.net/lion'}, b''),
       ({'status': '200',
-        'content-range': '0-2/5'}, 'abc'),
+        'content-range': '0-2/5'}, b'abc'),
     ])
 
     download = MediaIoBaseDownload(
@@ -378,12 +378,12 @@
     # Even after raising an exception we can pick up where we left off.
     self.request.http = HttpMockSequence([
       ({'status': '200',
-        'content-range': '0-2/5'}, '123'),
+        'content-range': '0-2/5'}, b'123'),
     ])
 
     status, done = download.next_chunk()
 
-    self.assertEqual(self.fd.getvalue(), '123')
+    self.assertEqual(self.fd.getvalue(), b'123')
 
   def test_media_io_base_download_retries_5xx(self):
     self.request.http = HttpMockSequence([
@@ -391,12 +391,12 @@
       ({'status': '500'}, ''),
       ({'status': '500'}, ''),
       ({'status': '200',
-        'content-range': '0-2/5'}, '123'),
+        'content-range': '0-2/5'}, b'123'),
       ({'status': '503'}, ''),
       ({'status': '503'}, ''),
       ({'status': '503'}, ''),
       ({'status': '200',
-        'content-range': '3-4/5'}, '45'),
+        'content-range': '3-4/5'}, b'45'),
     ])
 
     download = MediaIoBaseDownload(
@@ -419,7 +419,7 @@
     # Check for exponential backoff using the rand function above.
     self.assertEqual([20, 40, 80], sleeptimes)
 
-    self.assertEqual(self.fd.getvalue(), '123')
+    self.assertEqual(self.fd.getvalue(), b'123')
     self.assertEqual(False, done)
     self.assertEqual(3, download._progress)
     self.assertEqual(5, download._total_size)
@@ -433,7 +433,7 @@
     # Check for exponential backoff using the rand function above.
     self.assertEqual([20, 40, 80], sleeptimes)
 
-    self.assertEqual(self.fd.getvalue(), '12345')
+    self.assertEqual(self.fd.getvalue(), b'12345')
     self.assertEqual(True, done)
     self.assertEqual(5, download._progress)
     self.assertEqual(5, download._total_size)
@@ -670,7 +670,7 @@
         None,
         'https://www.googleapis.com/someapi/v1/collection/?foo=bar',
         method='POST',
-        body='{}',
+        body=u'{}',
         headers={'content-type': 'application/json'},
         methodId=None,
         resumable=None)
@@ -679,7 +679,7 @@
 
   def test_serialize_request_media_body(self):
     batch = BatchHttpRequest()
-    f = open(datafile('small.png'))
+    f = open(datafile('small.png'), 'rb')
     body = f.read()
     f.close()
 
@@ -702,7 +702,7 @@
         None,
         'https://www.googleapis.com/someapi/v1/collection/?foo=bar',
         method='POST',
-        body='',
+        body=b'',
         headers={'content-type': 'application/json'},
         methodId=None,
         resumable=None)
@@ -940,21 +940,21 @@
   """Test _StreamSlice."""
 
   def setUp(self):
-    self.stream = BytesIO('0123456789')
+    self.stream = BytesIO(b'0123456789')
 
   def test_read(self):
     s =  _StreamSlice(self.stream, 0, 4)
-    self.assertEqual('', s.read(0))
-    self.assertEqual('0', s.read(1))
-    self.assertEqual('123', s.read())
+    self.assertEqual(b'', s.read(0))
+    self.assertEqual(b'0', s.read(1))
+    self.assertEqual(b'123', s.read())
 
   def test_read_too_much(self):
     s =  _StreamSlice(self.stream, 1, 4)
-    self.assertEqual('1234', s.read(6))
+    self.assertEqual(b'1234', s.read(6))
 
   def test_read_all(self):
     s =  _StreamSlice(self.stream, 2, 1)
-    self.assertEqual('2', s.read(-1))
+    self.assertEqual(b'2', s.read(-1))
 
 
 class TestResponseCallback(unittest.TestCase):