2014-08-21 12:58:57 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author Andreas Fischer <bantu@phpbb.com>
|
|
|
|
* @copyright 2014 Andreas Fischer
|
|
|
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
|
|
|
*/
|
|
|
|
|
2014-12-12 18:20:33 +00:00
|
|
|
use phpseclib\Net\SFTP;
|
|
|
|
|
2014-08-21 12:58:57 +00:00
|
|
|
class Functional_Net_SFTPLargeFileTest extends PhpseclibFunctionalTestCase
|
|
|
|
{
|
|
|
|
protected $sftp;
|
|
|
|
protected $scratchDir;
|
|
|
|
|
|
|
|
static public function setUpBeforeClass()
|
|
|
|
{
|
|
|
|
if (!extension_loaded('mcrypt')) {
|
|
|
|
self::markTestSkipped('This test depends on mcrypt for performance.');
|
|
|
|
}
|
|
|
|
parent::setUpBeforeClass();
|
2014-12-12 16:46:43 +00:00
|
|
|
self::ensureConstant('CRYPT_AES_MODE', Crypt_Base::ENGINE_MCRYPT);
|
|
|
|
self::ensureConstant('CRYPT_BLOWFISH_MODE', Crypt_Base::ENGINE_MCRYPT);
|
|
|
|
self::ensureConstant('CRYPT_DES_MODE', Crypt_Base::ENGINE_MCRYPT);
|
|
|
|
self::ensureConstant('CRYPT_RC2_MODE', Crypt_Base::ENGINE_MCRYPT);
|
|
|
|
self::ensureConstant('CRYPT_RC4_MODE', Crypt_Base::ENGINE_MCRYPT);
|
|
|
|
self::ensureConstant('CRYPT_RIJNDAEL_MODE', Crypt_Base::ENGINE_MCRYPT);
|
|
|
|
self::ensureConstant('CRYPT_TWOFISH_MODE', Crypt_Base::ENGINE_MCRYPT);
|
2014-08-21 12:58:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public function setUp()
|
|
|
|
{
|
|
|
|
$this->scratchDir = uniqid('phpseclib-sftp-large-scratch-');
|
|
|
|
|
2014-12-12 18:20:33 +00:00
|
|
|
$this->sftp = new SFTP($this->getEnv('SSH_HOSTNAME'));
|
2014-08-21 12:58:57 +00:00
|
|
|
$this->assertTrue($this->sftp->login(
|
|
|
|
$this->getEnv('SSH_USERNAME'),
|
|
|
|
$this->getEnv('SSH_PASSWORD')
|
|
|
|
));
|
|
|
|
$this->assertTrue($this->sftp->mkdir($this->scratchDir));
|
|
|
|
$this->assertTrue($this->sftp->chdir($this->scratchDir));
|
|
|
|
}
|
|
|
|
|
|
|
|
public function tearDown()
|
|
|
|
{
|
2014-12-12 18:38:04 +00:00
|
|
|
if ($this->sftp) {
|
|
|
|
$this->sftp->chdir($this->getEnv('SSH_HOME'));
|
|
|
|
$this->sftp->delete($this->scratchDir);
|
|
|
|
}
|
2014-08-21 12:58:57 +00:00
|
|
|
parent::tearDown();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @group github298
|
|
|
|
* @group github455
|
|
|
|
* @group github457
|
|
|
|
*/
|
|
|
|
public function testPutSizeLocalFile()
|
|
|
|
{
|
|
|
|
$tmp_filename = $this->createTempFile(128, 1024 * 1024);
|
|
|
|
$filename = 'file-large-from-local.txt';
|
|
|
|
|
|
|
|
$this->assertTrue(
|
2014-12-12 18:20:33 +00:00
|
|
|
$this->sftp->put($filename, $tmp_filename, SFTP::SOURCE_LOCAL_FILE),
|
2014-08-21 12:58:57 +00:00
|
|
|
'Failed asserting that local file could be successfully put().'
|
|
|
|
);
|
|
|
|
|
|
|
|
$this->assertSame(
|
|
|
|
128 * 1024 * 1024,
|
|
|
|
$this->sftp->size($filename),
|
|
|
|
'Failed asserting that uploaded local file has the expected length.'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|