Fix default bucket name is illegal in gcloud setup process.

- Bucket names only contain lowercase letters, numbers, dashes, and dots.
- Bucket names must end with a number or letter.
- Bucket names length limit rule.

Bug: 117292344
Test: m acloud && atest acloud_test && acloud setup --gcp_init --force -vv

Change-Id: Ife95ae6fb654773bdec28941cde3202e2c3c6fbf
diff --git a/setup/gcp_setup_runner_test.py b/setup/gcp_setup_runner_test.py
index f76f8b7..343a3c0 100644
--- a/setup/gcp_setup_runner_test.py
+++ b/setup/gcp_setup_runner_test.py
@@ -128,6 +128,29 @@
         self.assertEqual(self.gcp_env_runner.client_id, "new_id")
         self.assertEqual(self.gcp_env_runner.client_secret, "new_secret")
 
+    def testGenerateBucketName(self):
+        """Test generate default bucket name."""
+        # Filter out organization name for project name.
+        bucket_name = self.gcp_env_runner._GenerateBucketName(
+            "AOSP.com:fake_project")
+        self.assertEqual(bucket_name, "acloud-fake_project")
+
+        # A bucket name can contain lowercase alphanumeric characters,
+        # hyphens and underscores.
+        bucket_name = self.gcp_env_runner._GenerateBucketName(
+            "@.fake_*Project.#")
+        self.assertEqual(bucket_name, "acloud-fake_project")
+
+        # Bucket names must limit to 63 characters.
+        bucket_name = self.gcp_env_runner._GenerateBucketName(
+            "fake_project-fake_project-fake_project-fake_project-fake_project")
+        self.assertEqual(bucket_name,
+                         "acloud-fake_project-fake_project-fake_project-fake_project-fake")
+
+        # Rule 3: Bucket names must end with a number or letter.
+        bucket_name = self.gcp_env_runner._GenerateBucketName("fake_project__--")
+        self.assertEqual(bucket_name, "acloud-fake_project")
+
     @mock.patch.object(gcp_setup_runner.GoogleSDKBins, "RunGsutil")
     def testBucketExists(self, mock_bucket_name):
         """Test bucket name exist or not."""