[Pkg-owncloud-commits] [owncloud] 02/34: test files external amazon s3 storage id migration

David Prévot taffit at moszumanska.debian.org
Fri Nov 7 11:44:10 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit 496b62f2eb74a7fb739171af10adb54484b5f583
Author: Jörn Friedrich Dreyer <jfd at butonic.de>
Date:   Mon Oct 27 13:00:31 2014 +0100

    test files external amazon s3 storage id migration
---
 apps/files_external/tests/amazons3migration.php | 117 ++++++++++++++++++++++++
 1 file changed, 117 insertions(+)

diff --git a/apps/files_external/tests/amazons3migration.php b/apps/files_external/tests/amazons3migration.php
new file mode 100644
index 0000000..629cf5c
--- /dev/null
+++ b/apps/files_external/tests/amazons3migration.php
@@ -0,0 +1,117 @@
+<?php
+
+/**
+ * ownCloud
+ *
+ * @author Jörn Friedrich Dreyer
+ * @copyright 2012 Jörn Friedrich Dreyer jfd at owncloud.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+namespace Test\Files\Storage;
+
+class AmazonS3Migration extends \PHPUnit_Framework_TestCase {
+
+	/**
+	 * @var \OC\Files\Storage\Storage instance
+	 */
+	protected $instance;
+
+	public function setUp () {
+		$uuid = uniqid();
+
+		$this->params['key'] = 'key'.$uuid;
+		$this->params['secret'] = 'secret'.$uuid;
+		$this->params['bucket'] = 'bucket'.$uuid;
+
+		$this->oldId = 'amazon::' . $this->params['key'] . md5($this->params['secret']);
+		$this->newId = 'amazon::' . $this->params['bucket'];
+	}
+
+	public function tearDown () {
+		$this->deleteStorage($this->oldId);
+		$this->deleteStorage($this->newId);
+	}
+
+	public function testUpdateLegacyOnlyId () {
+		// add storage ids
+		$oldCache = new \OC\Files\Cache\Cache($this->oldId);
+
+		// add file to old cache
+		$fileId = $oldCache->put('/', array('size' => 0, 'mtime' => time(), 'mimetype' => 'httpd/directory'));
+
+		try {
+			$this->instance = new \OC\Files\Storage\AmazonS3($this->params);
+		} catch (\Exception $e) {
+			//ignore
+		}
+		$storages = $this->getStorages();
+
+		$this->assertTrue(isset($storages[$this->newId]));
+		$this->assertFalse(isset($storages[$this->oldId]));
+		$this->assertSame((int)$oldCache->getNumericStorageId(), (int)$storages[$this->newId]);
+
+		list($storageId, $path) = \OC\Files\Cache\Cache::getById($fileId);
+
+		$this->assertSame($this->newId, $storageId);
+		$this->assertSame('/', $path);
+	}
+
+	public function testUpdateLegacyAndNewId () {
+		// add storage ids
+
+		$oldCache = new \OC\Files\Cache\Cache($this->oldId);
+		new \OC\Files\Cache\Cache($this->newId);
+
+		// add file to old cache
+		$fileId = $oldCache->put('/', array('size' => 0, 'mtime' => time(), 'mimetype' => 'httpd/directory'));
+
+		try {
+			$this->instance = new \OC\Files\Storage\AmazonS3($this->params);
+		} catch (\Exception $e) {
+			//ignore
+		}
+		$storages = $this->getStorages();
+
+		$this->assertTrue(isset($storages[$this->newId]));
+		$this->assertFalse(isset($storages[$this->oldId]));
+
+		$this->assertNull(\OC\Files\Cache\Cache::getById($fileId), 'old filecache has not been cleared');
+	}
+
+	/**
+	 * @param $storages
+	 * @return array
+	 */
+	public function getStorages() {
+		$storages = array();
+		$stmt = \OC::$server->getDatabaseConnection()->prepare(
+			'SELECT `numeric_id`, `id` FROM `*PREFIX*storages` WHERE `id` IN (?, ?)'
+		);
+		$stmt->execute(array($this->oldId, $this->newId));
+		while ($row = $stmt->fetch()) {
+			$storages[$row['id']] = $row['numeric_id'];
+		}
+		return $storages;
+	}
+
+	public function deleteStorage($id) {
+		$stmt = \OC::$server->getDatabaseConnection()->prepare(
+			'DELETE FROM `*PREFIX*storages` WHERE `id` = ?'
+		);
+		$stmt->execute(array($id));
+	}
+}
\ No newline at end of file

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list