public function testBuildsDifferentUploaderBasedOnConcurrency() { $generator = $this->getMockBuilder('Aws\\Glacier\\Model\\MultipartUpload\\UploadPartGenerator')->setMethods(array('getPartSize'))->disableOriginalConstructor()->getMock(); $generator->expects($this->any())->method('getPartSize')->will($this->returnValue(1024 * 1024)); $state = new TransferState(UploadId::fromParams(array('accountId' => 'foo', 'vaultName' => 'baz', 'uploadId' => 'bar'))); $state->setPartGenerator($generator); $b = UploadBuilder::newInstance()->setVaultName('foo')->setPartGenerator($generator)->setClient($this->getServiceBuilder()->get('glacier'))->resumeFrom($state)->setSource(EntityBody::factory(fopen(__FILE__, 'r'))); $this->assertInstanceOf('Aws\\Glacier\\Model\\MultipartUpload\\SerialTransfer', $b->build()); $b->setConcurrency(2); $this->assertInstanceOf('Aws\\Glacier\\Model\\MultipartUpload\\ParallelTransfer', $b->build()); }
/** * {@inheritdoc} */ protected function initiateMultipartUpload() { $params = array('accountId' => $this->accountId, 'vaultName' => $this->vaultName); $partGenerator = $this->partGenerator ?: UploadPartGenerator::factory($this->source, $this->partSize); $command = $this->client->getCommand('InitiateMultipartUpload', array_replace($params, array('command.headers' => $this->headers, 'partSize' => $partGenerator->getPartSize(), 'archiveDescription' => $this->archiveDescription, Ua::OPTION => Ua::MULTIPART_UPLOAD))); $params['uploadId'] = $command->getResult()->get('uploadId'); // Create a new state based on the initiated upload $state = new TransferState(UploadId::fromParams($params)); $state->setPartGenerator($partGenerator); return $state; }