Scalr\Tests\Service\Aws\RdsTest::testClustersFunctional PHP Метод

testClustersFunctional() публичный Метод

    public function testClustersFunctional()
    {
        $this->skipIfEc2PlatformDisabled();
        $this->deleteClusterObjects();
        $aws = $this->getEnvironment()->aws(AwsTestCase::REGION);
        $masterUserPassword = substr(uniqid(), 0, 10);
        $dbClusterId = self::getTestName(self::NAME_INSTANCE);
        $subnets = $aws->ec2->subnet->describe();
        $subnetIds = [];
        $zones = [];
        $vpcId = null;
        foreach ($subnets as $subnet) {
            /* @var $subnet SubnetData */
            if (empty($vpcId)) {
                $vpcId = $subnet->vpcId;
            }
            if (!in_array($subnet->availabilityZone, $zones) && $subnet->vpcId == $vpcId) {
                $zones[] = $subnet->availabilityZone;
                $subnetIds[] = $subnet->subnetId;
            }
            if (count($subnetIds) > 1) {
                break;
            }
        }
        $groupName = self::getTestName('subnetname');
        $requestSubnet = new CreateDBSubnetGroupRequestData('test', $groupName);
        $requestSubnet->setSubnetIds($subnetIds);
        $subnetGroup = $aws->rds->dbSubnetGroup->create($requestSubnet);
        $this->assertEquals($subnetGroup->dBSubnetGroupName, $groupName);
        $request = new CreateDBClusterRequestData($dbClusterId, 'aurora', 'phpunituser', (string) $masterUserPassword ?: null);
        $request->dBSubnetGroupName = $subnetGroup->dBSubnetGroupName;
        $dbClusterData = $aws->rds->dbCluster->create($request);
        $this->assertInstanceOf($this->getRdsClassName('DataType\\DBClusterData'), $dbClusterData);
        $this->assertEquals($dbClusterData->dBClusterIdentifier, $dbClusterId);
        $timeout = 0;
        while ($dbClusterData->status != DBClusterData::STATUS_AVAILABLE && ($timeout += static::SLEEP_TIMEOUT) < static::SLEEP_TIME) {
            sleep(static::SLEEP_TIMEOUT);
            $dbClusterData = $dbClusterData->refresh();
        }
        $this->assertEquals(DBClusterData::STATUS_AVAILABLE, $dbClusterData->status);
        $snapId = self::getTestName(self::NAME_DB_SNAPSHOT);
        $clusterSnapshot = $aws->rds->dbClusterSnapshot->create($dbClusterId, $snapId);
        $this->assertInstanceOf($this->getRdsClassName('DataType\\DBClusterSnapshotData'), $clusterSnapshot);
        $this->assertEquals($clusterSnapshot->dBClusterIdentifier, $dbClusterId);
        $this->assertEquals($clusterSnapshot->dBClusterSnapshotIdentifier, $snapId);
        $timeout = 0;
        while ($clusterSnapshot->status !== DBClusterSnapshotData::STATUS_AVAILABLE && ($timeout += static::SLEEP_TIMEOUT) < static::SLEEP_TIME) {
            sleep(static::SLEEP_TIMEOUT);
            $clusterSnapshot = $aws->rds->dbClusterSnapshot->describe($dbClusterId, $snapId)->get();
        }
        $this->assertEquals(DBClusterSnapshotData::STATUS_AVAILABLE, $clusterSnapshot->status);
        $this->deleteClusterObjects();
    }