[TASK] Shorten database names in functional tests 56/23356/4
authorSascha Egerer <sascha.egerer@dkd.de>
Tue, 27 Aug 2013 11:11:35 +0000 (13:11 +0200)
committerChristian Kuhn <lolli@schwarzbu.ch>
Tue, 27 Aug 2013 13:09:12 +0000 (15:09 +0200)
The functional tests frameworks create a new database per test.
The database name is generated by the original database
name plus a string and a hash.

If the database name length exceeds the maximum length of 64
characters an exception is now thrown.

The generated database name is also been shortened a bit.

Resolves: #51383
Releases: 6.2
Change-Id: I5817e440a3dcba7e53e2a27dca4f7bfc679334f5
Reviewed-on: https://review.typo3.org/23356
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
typo3/sysext/core/Tests/FunctionalTestCaseBootstrapUtility.php

index b9de8d5..da71a8a 100644 (file)
@@ -216,7 +216,19 @@ class FunctionalTestCaseBootstrapUtility {
                $finalConfigurationArray['DB'] = $originalConfigurationArray['DB'];
                // Calculate and set new database name
                $this->originalDatabaseName = $originalConfigurationArray['DB']['database'];
-               $this->databaseName = $this->originalDatabaseName . '_test_' . $this->identifier;
+               $this->databaseName = $this->originalDatabaseName . '_ft' . $this->identifier;
+
+               // Maximum database name length for mysql is 64 characters
+               if (strlen($this->databaseName) > 64) {
+                       $maximumOriginalDatabaseName = 64 - strlen('_ft' . $this->identifier);
+                       throw new Exception(
+                               'The name of the database that is used for the functional test (' . $this->databaseName . ')' .
+                               ' exceeds the maximum length of 64 character allowed by MySQL. You have to shorten your' .
+                               ' original database name to ' . $maximumOriginalDatabaseName . ' characters',
+                               1377600104
+                       );
+               }
+
                $finalConfigurationArray['DB']['database'] = $this->databaseName;
 
                // Determine list of additional extensions to load
@@ -285,7 +297,7 @@ class FunctionalTestCaseBootstrapUtility {
                        throw new Exception(
                                'Unable to create database with name ' . $this->databaseName . '. This is probably a permission problem.'
                                . ' For this instance this could be fixed executing'
-                               . ' "GRANT ALL ON `' . $this->originalDatabaseName . '_test_%`.* TO `' . $user . '`@`' . $host . '`;"',
+                               . ' "GRANT ALL ON `' . $this->originalDatabaseName . '_ft%`.* TO `' . $user . '`@`' . $host . '`;"',
                                1376579070
                        );
                }