Skip to content
This repository was archived by the owner on Mar 31, 2026. It is now read-only.
This repository was archived by the owner on Mar 31, 2026. It is now read-only.

test_system.TestKMSIntegration.test_bucket_w_default_kms_key_name failed #190

Closed

Description

@IlyaFaer

Got a flaky error on kokoro checks. Failed only once, on Python 2.7 session. Trying to reproduce locally - no results so far.

____________ TestKMSIntegration.test_bucket_w_default_kms_key_name _____________

self = <test_system.TestKMSIntegration testMethod=test_bucket_w_default_kms_key_name>

    def test_bucket_w_default_kms_key_name(self):
        BLOB_NAME = "default-kms-key-name"
        OVERRIDE_BLOB_NAME = "override-default-kms-key-name"
        ALT_BLOB_NAME = "alt-default-kms-key-name"
        CLEARTEXT_BLOB_NAME = "cleartext"

        file_data = self.FILES["simple"]

        with open(file_data["path"], "rb") as _file_data:
            contents = _file_data.read()

        kms_key_name = self._kms_key_name()
        self.bucket.default_kms_key_name = kms_key_name
        self.bucket.patch()
        self.assertEqual(self.bucket.default_kms_key_name, kms_key_name)

        defaulted_blob = self.bucket.blob(BLOB_NAME)
        defaulted_blob.upload_from_filename(file_data["path"])
        self.case_blobs_to_delete.append(defaulted_blob)

        self.assertEqual(defaulted_blob.download_as_string(), contents)
        # We don't know the current version of the key.
        self.assertTrue(defaulted_blob.kms_key_name.startswith(kms_key_name))

        alt_kms_key_name = self._kms_key_name(self.ALT_KEY_NAME)

        override_blob = self.bucket.blob(
            OVERRIDE_BLOB_NAME, kms_key_name=alt_kms_key_name
        )
        override_blob.upload_from_filename(file_data["path"])
        self.case_blobs_to_delete.append(override_blob)

        self.assertEqual(override_blob.download_as_string(), contents)
        # We don't know the current version of the key.
        self.assertTrue(override_blob.kms_key_name.startswith(alt_kms_key_name))

        self.bucket.default_kms_key_name = alt_kms_key_name
        self.bucket.patch()

        alt_blob = self.bucket.blob(ALT_BLOB_NAME)
        alt_blob.upload_from_filename(file_data["path"])
        self.case_blobs_to_delete.append(alt_blob)

        self.assertEqual(alt_blob.download_as_string(), contents)
        # We don't know the current version of the key.
>       self.assertTrue(alt_blob.kms_key_name.startswith(alt_kms_key_name))
E       AssertionError: False is not true

Activity

  1. added
    api: storageIssues related to the googleapis/python-storage API.
    triage meI really want to be triaged.
    on Jun 23, 2020
  2. changed the title [-]test_system.TestKMSIntegration testMethod=test_bucket_w_default_kms_key_name failed[/-] [+]test_system.TestKMSIntegration.test_bucket_w_default_kms_key_name failed[/+] on Jun 23, 2020
  3. added
    type: cleanupAn internal cleanup or hygiene concern.
    and removed
    🚨This issue needs some love.
    triage meI really want to be triaged.
    on Jun 29, 2020
  4. frankyn commented on Jun 29, 2020

    @frankyn
    Contributor
    def test_bucket_w_default_kms_key_name(self):
            BLOB_NAME = "default-kms-key-name"
            OVERRIDE_BLOB_NAME = "override-default-kms-key-name"
            ALT_BLOB_NAME = "alt-default-kms-key-name"
            CLEARTEXT_BLOB_NAME = "cleartext"
    
            file_data = self.FILES["simple"]
    
            with open(file_data["path"], "rb") as _file_data:
                contents = _file_data.read()
    
            kms_key_name = self._kms_key_name()
            self.bucket.default_kms_key_name = kms_key_name
            self.bucket.patch()
            self.assertEqual(self.bucket.default_kms_key_name, kms_key_name)
    
            defaulted_blob = self.bucket.blob(BLOB_NAME)
            defaulted_blob.upload_from_filename(file_data["path"])
            self.case_blobs_to_delete.append(defaulted_blob)
    
            self.assertEqual(defaulted_blob.download_as_string(), contents)
            # We don't know the current version of the key.
            self.assertTrue(defaulted_blob.kms_key_name.startswith(kms_key_name))
    
            alt_kms_key_name = self._kms_key_name(self.ALT_KEY_NAME)
    
            override_blob = self.bucket.blob(
                OVERRIDE_BLOB_NAME, kms_key_name=alt_kms_key_name
            )
            override_blob.upload_from_filename(file_data["path"])
            self.case_blobs_to_delete.append(override_blob)
    
            self.assertEqual(override_blob.download_as_string(), contents)
            # We don't know the current version of the key. 
            self.assertTrue(override_blob.kms_key_name.startswith(alt_kms_key_name))
    
            self.bucket.default_kms_key_name = alt_kms_key_name
            self.bucket.patch()
    
            # this may be eventually consistent for bucket default_kms_key_name to take effect. 
            # Per: https://cloud.google.com/storage/docs/consistency
            # "For buckets, while metadata updates are strongly consistent for read-after-metadata-update operations, the resulting configuration changes may take time to propagate."
            # {
            alt_blob = self.bucket.blob(ALT_BLOB_NAME)
            alt_blob.upload_from_filename(file_data["path"])
            self.case_blobs_to_delete.append(alt_blob)
    
            self.assertEqual(alt_blob.download_as_string(), contents)
            # We don't know the current version of the key.
           self.assertTrue(alt_blob.kms_key_name.startswith(alt_kms_key_name))
            # } 
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

api: storageIssues related to the googleapis/python-storage API.type: cleanupAn internal cleanup or hygiene concern.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions