From: Michael R. Crusoe <michael.crusoe@gmail.com>
Subject: cherry pick py3 testing fixes from upstream
--- toil.orig/src/toil/test/jobStores/jobStoreTest.py
+++ toil/src/toil/test/jobStores/jobStoreTest.py
@@ -54,7 +54,6 @@
 from toil.job import Job, JobNode
 from toil.jobStores.abstractJobStore import (NoSuchJobException,
                                              NoSuchFileException)
-from toil.jobStores.googleJobStore import googleRetry
 from toil.jobStores.fileJobStore import FileJobStore
 from toil.statsAndLogging import StatsAndLogging
 from toil.test import (ToilTest,
@@ -656,7 +655,7 @@
         @classmethod
         def makeImportExportTests(cls):
 
-            testClasses = [FileJobStoreTest, AWSJobStoreTest, AzureJobStoreTest, GoogleJobStoreTest]
+            testClasses = [FileJobStoreTest, AWSJobStoreTest, AzureJobStoreTest]
 
             activeTestClassesByName = {testCls.__name__: testCls
                                        for testCls in testClasses
@@ -1151,54 +1150,6 @@
             os.unlink(path)
 
 
-@needs_google
-class GoogleJobStoreTest(AbstractJobStoreTest.Test):
-    projectID = os.getenv('TOIL_GOOGLE_PROJECTID')
-    headers = {"x-goog-project-id": projectID}
-
-    def _createJobStore(self):
-        from toil.jobStores.googleJobStore import GoogleJobStore
-        return GoogleJobStore(GoogleJobStoreTest.projectID + ":" + self.namePrefix)
-
-    def _corruptJobStore(self):
-        # The Google job store has only one resource, the bucket, so we can't corrupt it without
-        # fully deleting it.
-        pass
-
-    def _prepareTestFile(self, bucket, size=None):
-        from toil.jobStores.googleJobStore import GoogleJobStore
-        fileName = 'testfile_%s' % uuid.uuid4()
-        url = 'gs://%s/%s' % (bucket.name, fileName)
-        if size is None:
-            return url
-        with open('/dev/urandom', 'r') as readable:
-            contents = readable.read(size)
-        GoogleJobStore._writeToUrl(StringIO(contents), urlparse.urlparse(url))
-        return url, hashlib.md5(contents).hexdigest()
-
-    def _hashTestFile(self, url):
-        from toil.jobStores.googleJobStore import GoogleJobStore
-        contents = GoogleJobStore._getBlobFromURL(urlparse.urlparse(url)).download_as_string()
-        return hashlib.md5(contents).hexdigest()
-
-    @googleRetry
-    def _createExternalStore(self):
-        from google.cloud import storage
-        bucketName = ("import-export-test-" + str(uuid.uuid4()))
-        storageClient = storage.Client()
-        return storageClient.create_bucket(bucketName)
-
-    @googleRetry
-    def _cleanUpExternalStore(self, bucket):
-        # this is copied from googleJobStore.destroy
-        try:
-            bucket.delete(force=True)
-            # throws ValueError if bucket has more than 256 objects. Then we must delete manually
-        except ValueError:
-            bucket.delete_blobs(bucket.list_blobs)
-            bucket.delete()
-
-
 @needs_aws
 class AWSJobStoreTest(AbstractJobStoreTest.Test):
 
