From: Vincent Petry Date: Wed, 11 Jun 2014 15:02:34 +0000 (+0200) Subject: - Added test to trigger index id error X-Git-Tag: v8.0.0alpha1~1093^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=10a29556b0eca1303fd48caccbc464e1b6231d05;p=nextcloud-server.git - Added test to trigger index id error - re-enable encryption migration tests - sqlite requires reconnect after schema changes --- diff --git a/apps/files_encryption/tests/migration.php b/apps/files_encryption/tests/migration.php index d6cd0357ae0..e58ceb0bc6f 100644 --- a/apps/files_encryption/tests/migration.php +++ b/apps/files_encryption/tests/migration.php @@ -50,10 +50,44 @@ class Test_Migration extends PHPUnit_Framework_TestCase { } - public function testDataMigration() { + public function checkLastIndexId() { + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (' + .' `item_type`, `item_source`, `item_target`, `share_type`,' + .' `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`,' + .' `file_target`, `token`, `parent`, `expiration`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)'); + $query->bindValue(1, 'file'); + $query->bindValue(2, 949); + $query->bindValue(3, '/949'); + $query->bindValue(4, 0); + $query->bindValue(5, 'migrate-test-user'); + $query->bindValue(6, 'migrate-test-owner'); + $query->bindValue(7, 23); + $query->bindValue(8, 1402493312); + $query->bindValue(9, 0); + $query->bindValue(10, '/migration.txt'); + $query->bindValue(11, null); + $query->bindValue(12, null); + $query->bindValue(13, null); + $this->assertEquals(1, $query->execute()); + + $this->assertNotEquals('0', \OC_DB::insertid('*PREFIX*share')); + + // cleanup + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `file_target` = ?'); + $query->bindValue(1, '/migration.txt'); + $this->assertEquals(1, $query->execute()); + + } + + public function testBrokenLastIndexId() { + + // create test table + $this->checkLastIndexId(); + OC_DB::createDbFromStructure(__DIR__ . '/encryption_table.xml'); + $this->checkLastIndexId(); + } - //FIXME fix this test so that we can enable it again - $this->markTestIncomplete('Disabled, because of this tests a lot of other tests fail at the moment'); + public function testDataMigration() { $this->assertTableNotExist('encryption_test'); @@ -80,9 +114,6 @@ class Test_Migration extends PHPUnit_Framework_TestCase { public function testDuplicateDataMigration() { - //FIXME fix this test so that we can enable it again - $this->markTestIncomplete('Disabled, because of this tests a lot of other tests fail at the moment'); - // create test table OC_DB::createDbFromStructure(__DIR__ . '/encryption_table.xml'); diff --git a/lib/private/db.php b/lib/private/db.php index 6aaf31a30cd..221a369cad2 100644 --- a/lib/private/db.php +++ b/lib/private/db.php @@ -105,6 +105,16 @@ class OC_DB { return true; } + /** + * The existing database connection is closed and connected again + */ + public static function reconnect() { + if(self::$connection) { + self::$connection->close(); + self::$connection->connect(); + } + } + /** * @return \OC\DB\Connection */ diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php index a6d9e30cf80..d3e379c9417 100644 --- a/lib/private/db/mdb2schemamanager.php +++ b/lib/private/db/mdb2schemamanager.php @@ -24,8 +24,6 @@ class MDB2SchemaManager { */ public function __construct($conn) { $this->conn = $conn; - $this->conn->close(); - $this->conn->connect(); } /** @@ -150,6 +148,10 @@ class MDB2SchemaManager { $this->conn->query($sql); } $this->conn->commit(); + + if ($this->conn->getDatabasePlatform() instanceof SqlitePlatform) { + \OC_DB::reconnect(); + } return true; } }