1

I am trying to run the full set of standard integration tests, which I want to run before deployments on an continuous integration server. (Whilst developing I will run just for my own module using the methodology from here.)

However I can't get the test database to install. It is throwing:

[Progress: 423 / 813]
Module 'Magento_Catalog':
Installing data...


  [Exception]
  Asymmetric transaction rollback.

What are my steps for debugging? Namely:

  1. How does Magento produce the SQL that it is trying to install?
  2. Is it cached anywhere as a physical file I can read?
  3. How can I find more useful information tracking the problem down?

Here is the full stack trace though I don't think its very useful.

        Exception trace:
 () at /app/vendor/magento/framework/DB/Adapter/Pdo/Mysql.php:272
 Magento\Framework\DB\Adapter\Pdo\Mysql->rollBack() at /app/vendor/magento/framework/Model/ResourceModel/AbstractResource.php:99
 Magento\Framework\Model\ResourceModel\AbstractResource->rollBack() at /app/var/generation/Magento/Catalog/Model/ResourceModel/Category/Interceptor.php:908
 Magento\Catalog\Model\ResourceModel\Category\Interceptor->rollBack() at /app/vendor/magento/module-catalog-search/Model/Indexer/Fulltext/Plugin/Category.php:52
 Magento\CatalogSearch\Model\Indexer\Fulltext\Plugin\Category->addCommitCallback() at /app/vendor/magento/module-catalog-search/Model/Indexer/Fulltext/Plugin/Category.php:29
 Magento\CatalogSearch\Model\Indexer\Fulltext\Plugin\Category->aroundSave() at /app/vendor/magento/framework/Interception/Chain/Chain.php:67
 Magento\Framework\Interception\Chain\Chain->invokeNext() at /app/vendor/magento/framework/Interception/Chain/Chain.php:63
 Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}() at /app/vendor/algolia/algoliasearch-magento-2/Model/Indexer/CategoryObserver.php:32
 Algolia\AlgoliaSearch\Model\Indexer\CategoryObserver->aroundSave() at /app/vendor/magento/framework/Interception/Chain/Chain.php:67
 Magento\Framework\Interception\Chain\Chain->invokeNext() at /app/vendor/magento/framework/Interception/Interceptor.php:138
 Magento\Catalog\Model\ResourceModel\Category\Interceptor->Magento\Framework\Interception\{closure}() at /app/vendor/magento/framework/App/Cache/FlushCacheByTags.php:60
 Magento\Framework\App\Cache\FlushCacheByTags->aroundSave() at /app/vendor/magento/framework/Interception/Interceptor.php:142
 Magento\Catalog\Model\ResourceModel\Category\Interceptor->___callPlugins() at /app/var/generation/Magento/Catalog/Model/ResourceModel/Category/Interceptor.php:364
 Magento\Catalog\Model\ResourceModel\Category\Interceptor->save() at /app/vendor/magento/framework/Model/AbstractModel.php:631
 Magento\Framework\Model\AbstractModel->save() at /app/vendor/magento/framework/Interception/Interceptor.php:146
 Magento\Catalog\Model\Category\Interceptor->___callPlugins() at /app/var/generation/Magento/Catalog/Model/Category/Interceptor.php:1534
 Magento\Catalog\Model\Category\Interceptor->save() at /app/vendor/magento/module-catalog/Setup/InstallData.php:79
 Magento\Catalog\Setup\InstallData->install() at /app/setup/src/Magento/Setup/Model/Installer.php:844
 Magento\Setup\Model\Installer->handleDBSchemaData() at /app/setup/src/Magento/Setup/Model/Installer.php:796
 Magento\Setup\Model\Installer->installDataFixtures() at n/a:n/a
 call_user_func_array() at /app/setup/src/Magento/Setup/Model/Installer.php:344
 Magento\Setup\Model\Installer->install() at /app/setup/src/Magento/Setup/Console/Command/InstallCommand.php:125
 Magento\Setup\Console\Command\InstallCommand->execute() at /app/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:257
 Symfony\Component\Console\Command\Command->run() at /app/vendor/symfony/console/Symfony/Component/Console/Application.php:874
 Symfony\Component\Console\Application->doRunCommand() at /app/vendor/symfony/console/Symfony/Component/Console/Application.php:195
 Symfony\Component\Console\Application->doRun() at /app/vendor/magento/framework/Console/Cli.php:96
 Magento\Framework\Console\Cli->doRun() at /app/vendor/symfony/console/Symfony/Component/Console/Application.php:126
 Symfony\Component\Console\Application->run() at /app/bin/magento:23


setup:install [--backend-frontname="..."] [--amqp-host="..."] [--amqp-port="..."] [--amqp-user="..."] [--amqp-password="..."] [--amqp-virtualhost="..."] [--amqp-ssl="..."] [--key="..."] [--session-save="..."] [--definition-format="..."] [--db-host="..."] [--db-name="..."] [--db-user="..."] [--db-engine="..."] [--db-password="..."] [--db-prefix="..."] [--db-model="..."] [--db-init-statements="..."] [-s|--skip-db-validation] [--http-cache-hosts="..."] [--base-url="..."] [--language="..."] [--timezone="..."] [--currency="..."] [--use-rewrites="..."] [--use-secure="..."] [--base-url-secure="..."] [--use-secure-admin="..."] [--admin-use-security-key="..."] [--admin-user="..."] [--admin-password="..."] [--admin-email="..."] [--admin-firstname="..."] [--admin-lastname="..."] [--cleanup-database] [--sales-order-increment-prefix="..."] [--use-sample-data] [--magento-init-params="..."]

 in /app/vendor/magento/framework/Shell.php:61
Stack trace:
#0 /app/dev/tests/integration/framework/Magento/TestFramework/Application.php(464): Magento\Framework\Shell->execute('/usr/local/bin/...', Array)
#1 /app/dev/tests/integration/framework/bootstrap.php(68): Magento\TestFramework\Application->install()
#2 /app/vendor/phpunit/phpunit/src/Util/Fileloader.php(93): include_once('/app/dev/tests/...')
#3 /app/vendor/phpunit/phpunit/src/Util/Fileloader.php(77): PHPUnit_Util_Fileloader::load('/app/dev/tests/...')
#4 /app/vendor/phpunit/phpunit/src/TextUI/Command.php(806): PHPUnit_Util_Fileloader::checkAndLoad('/app/dev/tests/...')
#5 /app/vendor/phpunit/phpunit/src/TextUI/Command.php(636): PHPUnit_TextUI_Command->handleBootstrap('/app/dev/tests/...')
#6 /app/vendor/phpunit/phpunit/src/TextUI/Command.php(141): PHPUnit_TextUI_Command->handleArguments(Array)
#7 /app/vendor/phpunit/phpunit/src/TextUI/Command.php(132): PHPUnit_TextUI_Command->run(Array, true)
#8 /app/vendor/phpunit/phpunit/phpunit(55): PHPUnit_TextUI_Command::main()
#9 {main}

Next Magento\Framework\Exception\LocalizedException: Command returned non-zero exit code:
`/usr/local/bin/php -f '/app/bin/magento' setup:install -vvv --db-host='database.internal' --db-user='magento2_test_user' --db-password='9PdD*ixRJnQS' --db-name='magento_integration_tests' --backend-frontname='backend' --admin-user='user' --admin-password='password1' --admin-email='admin@example.com' --admin-firstname='firstname' --admin-lastname='lastname' --magento-init-params='MAGE_DIRS[etc][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/etc&MAGE_DIRS[var][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var&MAGE_DIRS[media][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/pub/media&MAGE_DIRS[static][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/pub/static&MAGE_DIRS[generation][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/generation&MAGE_DIRS[cache][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/cache&MAGE_DIRS[log][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/log&MAGE_DIRS[session][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/session&MAGE_DIRS[tmp][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/tmp&MAGE_DIRS[upload][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/upload&MAGE_DIRS[pub][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/pub&MAGE_MODE=developer' 2>&1` in /app/vendor/magento/framework/Shell.php:62
Stack trace:
#0 /app/dev/tests/integration/framework/Magento/TestFramework/Application.php(464): Magento\Framework\Shell->execute('/usr/local/bin/...', Array)
#1 /app/dev/tests/integration/framework/bootstrap.php(68): Magento\TestFramework\Application->install()
#2 /app/vendor/phpunit/phpunit/src/Util/Fileloader.php(93): include_once('/app/dev/tests/...')
#3 /app/vendor/phpunit/phpunit/src/Util/Fileloader.php(77): PHPUnit_Util_Fileloader::load('/app/dev/tests/...')
#4 /app/vendor/phpunit/phpunit/src/TextUI/Command.php(806): PHPUnit_Util_Fileloader::checkAndLoad('/app/dev/tests/...')
#5 /app/vendor/phpunit/phpunit/src/TextUI/Command.php(636): PHPUnit_TextUI_Command->handleBootstrap('/app/dev/tests/...')
#6 /app/vendor/phpunit/phpunit/src/TextUI/Command.php(141): PHPUnit_TextUI_Command->handleArguments(Array)
#7 /app/vendor/phpunit/phpunit/src/TextUI/Command.php(132): PHPUnit_TextUI_Command->run(Array, true)
#8 /app/vendor/phpunit/phpunit/phpunit(55): PHPUnit_TextUI_Command::main()
#9 {main}

=== Memory Usage System Stats ===
Memory usage (OS):  22.57M (564.26% of 4.00M reported by PHP)
Estimated memory leak:  18.57M (82.28% of used memory)

P.S. I have read @Fabian-Schmengler question but whilst the thrown error obscuring the root cause is similar, I'm not sure how to apply that knowledge to tracking down the problem with data installation.

I noticed that it is running a comand line installation of:

/usr/local/bin/php -f '/app/bin/magento' setup:install -vvv 
--db-host='database.internal' 
--db-user='magento2_test_user' 
--db-password='password' 
--db-name='magento_integration_tests' 
--backend-frontname='backend' 
--admin-user='user' 
--admin-password='password1' 
--admin-email='admin@example.com' 
--admin-firstname='firstname' 
--admin-lastname='lastname' 
--magento-init-params=
'MAGE_DIRS[etc][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/etc
&MAGE_DIRS[var][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var
&MAGE_DIRS[media][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/pub/media
&MAGE_DIRS[static][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/pub/static
&MAGE_DIRS[generation][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/generation
&MAGE_DIRS[cache][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/cache
&MAGE_DIRS[log][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/log
&MAGE_DIRS[session][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/session
&MAGE_DIRS[tmp][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/tmp
&MAGE_DIRS[upload][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/var/upload
&MAGE_DIRS[pub][path]=/app/dev/tests/integration/tmp/sandbox-0-746d38770b4b2d082c0117910a9c0041/pub
&MAGE_MODE=developer' 2>&1

so I ran this actually at the command line... weirdly even though the verbosity level -vvv is set to debug, the above produces no output and just quits out...

Edit: Doh... just noticed it's redirecting standard output - trying again without the 2>&1

1

Got it... right to answer the specific questions I asked...

  1. How does Magento produce the SQL that it is trying to install?

It runs a specially configured commandline query against bin/magento setup:install

  1. Is it cached anywhere as a physical file I can read?

No...

  1. How can I find more useful information tracking the problem down?

You can take the command line query that is echoed to the console as part of the stake trace and run it yourself remembering to remove the 2>&1 from the command..

You will then get the real staketrace... which actually was also echoed as part of the original staketrace but was obscured by being surround by a lot of information that wasn't helpful... the more concise stake trace led me to the misbehaving module...

Magento\Framework\Model\ResourceModel\AbstractResource->rollBack() at /app/var/generation/Magento/Catalog/Model/ResourceModel/Category/Interceptor.php:908
 Magento\Catalog\Model\ResourceModel\Category\Interceptor->rollBack() at /app/vendor/magento/module-catalog-search/Model/Indexer/Fulltext/Plugin/Category.php:52
 Magento\CatalogSearch\Model\Indexer\Fulltext\Plugin\Category->addCommitCallback() at /app/vendor/magento/module-catalog-search/Model/Indexer/Fulltext/Plugin/Category.php:29
 Magento\CatalogSearch\Model\Indexer\Fulltext\Plugin\Category->aroundSave() at /app/vendor/magento/framework/Interception/Chain/Chain.php:67
 Magento\Framework\Interception\Chain\Chain->invokeNext() at /app/vendor/magento/framework/Interception/Chain/Chain.php:63
 Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}() at /app/vendor/algolia/algoliasearch-magento-2/Model/Indexer/CategoryObserver.php:32
 Algolia\AlgoliaSearch\Model\Indexer\CategoryObserver->aroundSave() at /app/vendor/magento/framework/Interception/Chain/Chain.php:67
|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.