← Back to team overview

mahara-contributors team mailing list archive

[Bug 2004512] [NEW] phpunit is not uninstalling the previous db successfully

 

Public bug reported:

When running `make phpunit` multiple times it fails on the "Installing
Mahara" step.  This looks to be because "Uninstalling site database" is
not actually doing the complete job.

Robert has noted:
I suspect its the same error/issue with behat as well - I believe it is due to the fact that the uninstall uses the info in the install.xml files but not all db logic is in those files via uninstall_from_xmldb_file()
 - see htdocs/testing/classes/util.php drop_database()
there is some special case stuff in drop_database() so might need more of that for certain tables.

The current workaround is to have a good db snapshot from before running
phpunit and restore it between runs.

This is what I get on subsequent runs:

gold@shipnet:~/Mahara/codereview ((b686cb1588...)) $ make phpunit
php htdocs/admin/cli/install.php --adminpassword=Kupuh1pa! --adminemail=user@xxxxxxxxxxx
Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(
Mahara is already installed.
Running phpunit tests...
Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(
[INF] 09 (lib/phpunit.php:83) Stale test tables found, and drop option is set.  Dropping them before running tests


Uninstalling site database...
Done
[INF] 09 (lib/phpunit.php:85) Done
[INF] 09 (lib/phpunit.php:95) Installing Mahara
[INF] 09 (lib/phpunit.php:112) Installing core
[INF] 09 (lib/upgrade.php:1342) Enabled 3 HTML filters.
[INF] 09 (lib/phpunit.php:112) Installing firstcoredata
[INF] 09 (lib/phpunit.php:112) Installing artefact.comment
[INF] 09 (lib/phpunit.php:112) Installing artefact.file
.
.
.
[snip]
.
.
.
[INF] 09 (lib/phpunit.php:112) Installing blocktype.myfriends
[INF] 09 (lib/phpunit.php:112) Installing blocktype.annotation/annotation
PHP Fatal error:  Uncaught SQLException: Failed to get a recordset: postgres9 error: [-5: ERROR:  duplicate key value violates unique constraint "tst_blocinst_nam_pk"
DETAIL:  Key (name)=(annotation) already exists.] in EXECUTE("INSERT INTO "tst_blocktype_installed" ("name", "version", "release", "artefactplugin") VALUES (?, ?, ?, ?)")Command was: INSERT INTO "tst_blocktype_installed" ("name", "version", "release", "artefactplugin") VALUES (?, ?, ?, ?) and values was (name:annotation,version:2014122100,release:1.0.0,artefactplugin:annotation) in /home/gold/Mahara/codereview/htdocs/lib/dml.php:1236
Stack trace:
#0 /home/gold/Mahara/codereview/htdocs/lib/upgrade.php(482): insert_record()
#1 /home/gold/Mahara/codereview/htdocs/lib/phpunit.php(126): upgrade_plugin()
#2 /home/gold/Mahara/codereview/htdocs/lib/tests/phpunit/bootstrap.php(34): UnitTestBootstrap->install_mahara()
#3 /home/gold/Mahara/codereview/external/vendor/phpunit/phpunit/src/Util/FileLoader.php(66): include_once('/home/gold/Maha...')
#4 /home/gold/Mahara/coderevi in /home/gold/Mahara/codereview/htdocs/lib/dml.php on line 1236

Fatal error: Uncaught SQLException: Failed to get a recordset: postgres9 error: [-5: ERROR:  duplicate key value violates unique constraint "tst_blocinst_nam_pk"
DETAIL:  Key (name)=(annotation) already exists.] in EXECUTE("INSERT INTO "tst_blocktype_installed" ("name", "version", "release", "artefactplugin") VALUES (?, ?, ?, ?)")Command was: INSERT INTO "tst_blocktype_installed" ("name", "version", "release", "artefactplugin") VALUES (?, ?, ?, ?) and values was (name:annotation,version:2014122100,release:1.0.0,artefactplugin:annotation) in /home/gold/Mahara/codereview/htdocs/lib/dml.php:1236
Stack trace:
#0 /home/gold/Mahara/codereview/htdocs/lib/upgrade.php(482): insert_record()
#1 /home/gold/Mahara/codereview/htdocs/lib/phpunit.php(126): upgrade_plugin()
#2 /home/gold/Mahara/codereview/htdocs/lib/tests/phpunit/bootstrap.php(34): UnitTestBootstrap->install_mahara()
#3 /home/gold/Mahara/codereview/external/vendor/phpunit/phpunit/src/Util/FileLoader.php(66): include_once('/home/gold/Maha...')
#4 /home/gold/Mahara/coderevi in /home/gold/Mahara/codereview/htdocs/lib/dml.php on line 1236
make: *** [Makefile:200: phpunit] Error 255

** Affects: mahara
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Mahara
Contributors, which is subscribed to Mahara.
Matching subscriptions: mahara-contributors
https://bugs.launchpad.net/bugs/2004512

Title:
  phpunit is not uninstalling the previous db successfully

Status in Mahara:
  New

Bug description:
  When running `make phpunit` multiple times it fails on the "Installing
  Mahara" step.  This looks to be because "Uninstalling site database"
  is not actually doing the complete job.

  Robert has noted:
  I suspect its the same error/issue with behat as well - I believe it is due to the fact that the uninstall uses the info in the install.xml files but not all db logic is in those files via uninstall_from_xmldb_file()
   - see htdocs/testing/classes/util.php drop_database()
  there is some special case stuff in drop_database() so might need more of that for certain tables.

  The current workaround is to have a good db snapshot from before
  running phpunit and restore it between runs.

  This is what I get on subsequent runs:

  gold@shipnet:~/Mahara/codereview ((b686cb1588...)) $ make phpunit
  php htdocs/admin/cli/install.php --adminpassword=Kupuh1pa! --adminemail=user@xxxxxxxxxxx
  Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(
  Mahara is already installed.
  Running phpunit tests...
  Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(
  [INF] 09 (lib/phpunit.php:83) Stale test tables found, and drop option is set.  Dropping them before running tests

  
  Uninstalling site database...
  Done
  [INF] 09 (lib/phpunit.php:85) Done
  [INF] 09 (lib/phpunit.php:95) Installing Mahara
  [INF] 09 (lib/phpunit.php:112) Installing core
  [INF] 09 (lib/upgrade.php:1342) Enabled 3 HTML filters.
  [INF] 09 (lib/phpunit.php:112) Installing firstcoredata
  [INF] 09 (lib/phpunit.php:112) Installing artefact.comment
  [INF] 09 (lib/phpunit.php:112) Installing artefact.file
  .
  .
  .
  [snip]
  .
  .
  .
  [INF] 09 (lib/phpunit.php:112) Installing blocktype.myfriends
  [INF] 09 (lib/phpunit.php:112) Installing blocktype.annotation/annotation
  PHP Fatal error:  Uncaught SQLException: Failed to get a recordset: postgres9 error: [-5: ERROR:  duplicate key value violates unique constraint "tst_blocinst_nam_pk"
  DETAIL:  Key (name)=(annotation) already exists.] in EXECUTE("INSERT INTO "tst_blocktype_installed" ("name", "version", "release", "artefactplugin") VALUES (?, ?, ?, ?)")Command was: INSERT INTO "tst_blocktype_installed" ("name", "version", "release", "artefactplugin") VALUES (?, ?, ?, ?) and values was (name:annotation,version:2014122100,release:1.0.0,artefactplugin:annotation) in /home/gold/Mahara/codereview/htdocs/lib/dml.php:1236
  Stack trace:
  #0 /home/gold/Mahara/codereview/htdocs/lib/upgrade.php(482): insert_record()
  #1 /home/gold/Mahara/codereview/htdocs/lib/phpunit.php(126): upgrade_plugin()
  #2 /home/gold/Mahara/codereview/htdocs/lib/tests/phpunit/bootstrap.php(34): UnitTestBootstrap->install_mahara()
  #3 /home/gold/Mahara/codereview/external/vendor/phpunit/phpunit/src/Util/FileLoader.php(66): include_once('/home/gold/Maha...')
  #4 /home/gold/Mahara/coderevi in /home/gold/Mahara/codereview/htdocs/lib/dml.php on line 1236

  Fatal error: Uncaught SQLException: Failed to get a recordset: postgres9 error: [-5: ERROR:  duplicate key value violates unique constraint "tst_blocinst_nam_pk"
  DETAIL:  Key (name)=(annotation) already exists.] in EXECUTE("INSERT INTO "tst_blocktype_installed" ("name", "version", "release", "artefactplugin") VALUES (?, ?, ?, ?)")Command was: INSERT INTO "tst_blocktype_installed" ("name", "version", "release", "artefactplugin") VALUES (?, ?, ?, ?) and values was (name:annotation,version:2014122100,release:1.0.0,artefactplugin:annotation) in /home/gold/Mahara/codereview/htdocs/lib/dml.php:1236
  Stack trace:
  #0 /home/gold/Mahara/codereview/htdocs/lib/upgrade.php(482): insert_record()
  #1 /home/gold/Mahara/codereview/htdocs/lib/phpunit.php(126): upgrade_plugin()
  #2 /home/gold/Mahara/codereview/htdocs/lib/tests/phpunit/bootstrap.php(34): UnitTestBootstrap->install_mahara()
  #3 /home/gold/Mahara/codereview/external/vendor/phpunit/phpunit/src/Util/FileLoader.php(66): include_once('/home/gold/Maha...')
  #4 /home/gold/Mahara/coderevi in /home/gold/Mahara/codereview/htdocs/lib/dml.php on line 1236
  make: *** [Makefile:200: phpunit] Error 255

To manage notifications about this bug go to:
https://bugs.launchpad.net/mahara/+bug/2004512/+subscriptions



Follow ups