| Index: client/tests/isolate_storage_test.py | 
| diff --git a/client/tests/isolate_storage_test.py b/client/tests/isolate_storage_test.py | 
| index 2490e78fccd6a32f1a56d53c05c318d4aa89ea89..33ef8db3b45100a911855742ca47d4d2dfbfd18f 100755 | 
| --- a/client/tests/isolate_storage_test.py | 
| +++ b/client/tests/isolate_storage_test.py | 
| @@ -117,12 +117,8 @@ class IsolateStorageTest(auto_stub.TestCase): | 
|  | 
| s = self.get_server() | 
| replies = s.fetch('abc123') | 
| -    got_exception = False | 
| -    try: | 
| +    with self.assertRaises(IOError): | 
| _response = replies.next() | 
| -    except IOError: | 
| -      got_exception = True | 
| -    self.assertTrue(got_exception) | 
|  | 
| def testFetchThrowsOnFailure(self): | 
| """Fetch: if something goes wrong in Isolate, we throw an exception""" | 
| @@ -136,12 +132,41 @@ class IsolateStorageTest(auto_stub.TestCase): | 
|  | 
| s = self.get_server() | 
| replies = s.fetch('abc123') | 
| -    got_exception = False | 
| -    try: | 
| +    with self.assertRaises(IOError): | 
| _response = replies.next() | 
| -    except IOError: | 
| -      got_exception = True | 
| -    self.assertTrue(got_exception) | 
| + | 
| +  def testFetchThrowsCorrectExceptionOnGrpcFailure(self): | 
| +    """Fetch: if something goes wrong in gRPC, we throw an IOError""" | 
| +    def FetchBlobs(_self, _request, timeout=None): | 
| +      del timeout | 
| +      raise isolate_storage.grpc.RpcError('proxy died during initial fetch :(') | 
| +    self.mock(FileServiceStubMock, 'FetchBlobs', FetchBlobs) | 
| + | 
| +    s = self.get_server() | 
| +    replies = s.fetch('abc123') | 
| +    with self.assertRaises(IOError): | 
| +      _response = replies.next() | 
| + | 
| +  def testFetchThrowsCorrectExceptionOnStreamingGrpcFailure(self): | 
| +    """Fetch: if something goes wrong in gRPC, we throw an IOError""" | 
| +    def FetchBlobs(self, request, timeout=None): | 
| +      del timeout | 
| +      self.request = request | 
| +      response = isolate_storage.isolate_bot_pb2.FetchBlobsReply() | 
| +      response.status.succeeded = True | 
| +      for i in range(0, 3): | 
| +        if i is 2: | 
| +          raise isolate_storage.grpc.RpcError( | 
| +              'proxy died during fetch stream :(') | 
| +        response.data.data = str(i) | 
| +        response.data.offset = i | 
| +        yield response | 
| +    self.mock(FileServiceStubMock, 'FetchBlobs', FetchBlobs) | 
| + | 
| +    s = self.get_server() | 
| +    with self.assertRaises(IOError): | 
| +      for _response in s.fetch('abc123'): | 
| +        pass | 
|  | 
| def testPushHappySingleSmall(self): | 
| """Push: send one chunk of small data""" | 
| @@ -224,12 +249,20 @@ class IsolateStorageTest(auto_stub.TestCase): | 
|  | 
| s = self.get_server() | 
| i = isolate_storage.Item(digest='abc123', size=0) | 
| -    got_exception = False | 
| -    try: | 
| +    with self.assertRaises(IOError): | 
| +      s.push(i, isolate_storage._IsolateServerGrpcPushState(), '1234') | 
| + | 
| +  def testPushThrowsCorrectExceptionOnGrpcFailure(self): | 
| +    """Push: if something goes wrong in Isolate, we throw an exception""" | 
| +    def PushBlobs(_self, _request, timeout=None): | 
| +      del timeout | 
| +      raise isolate_storage.grpc.RpcError('proxy died during push :(') | 
| +    self.mock(FileServiceStubMock, 'PushBlobs', PushBlobs) | 
| + | 
| +    s = self.get_server() | 
| +    i = isolate_storage.Item(digest='abc123', size=0) | 
| +    with self.assertRaises(IOError): | 
| s.push(i, isolate_storage._IsolateServerGrpcPushState(), '1234') | 
| -    except IOError: | 
| -      got_exception = True | 
| -    self.assertTrue(got_exception) | 
|  | 
| def testContainsHappySimple(self): | 
| """Contains: basic sanity check""" | 
| @@ -273,6 +306,21 @@ class IsolateStorageTest(auto_stub.TestCase): | 
| self.assertTrue(items[1] in response) | 
| self.assertTrue(items[2] in response) | 
|  | 
| +  def testContainsThrowsCorrectExceptionOnGrpcFailure(self): | 
| +    """Contains: the digests are missing""" | 
| +    def Contains(_self, _request, timeout=None): | 
| +      del timeout | 
| +      raise isolate_storage.grpc.RpcError('proxy died during contains :(') | 
| +    self.mock(FileServiceStubMock, 'Contains', Contains) | 
| + | 
| +    items = [] | 
| +    for i in range(0, 3): | 
| +      digest = ''.join(['a', str(i)]) | 
| +      i = isolate_storage.Item(digest=digest, size=1) | 
| +      items.append(i) | 
| +    s = self.get_server() | 
| +    with self.assertRaises(IOError): | 
| +      _response = s.contains(items) | 
|  | 
|  | 
| if __name__ == '__main__': | 
|  |