/** * Creates new farm for testing purposes * * @param string $name Farm name * @param string[] $rolesNames Roles names * * @return Farm */ public function createTestFarm($name, array $rolesNames) { $user = $this->getUser(); /* @var $farm Farm */ $farm = static::createEntity(new Farm(), ['changedById' => $user->getId(), 'name' => "{$this->uuid}-{$name}-farm", 'comments' => "{$this->uuid}-description", 'envId' => $this->getEnvironment()->id, 'accountId' => $user->getAccountId(), 'ownerId' => $user->getId()]); foreach ($rolesNames as $roleName) { /* @var $role Role */ $role = Role::findOneByName($roleName); if (empty($role)) { $this->markTestSkipped("Not found suitable role, required role - 'base-ubuntu1404'"); } /* @var $farmRole FarmRole */ $farmRole = static::createEntity(new FarmRole(), ['farmId' => $farm->id, 'roleId' => $role->id, 'alias' => 'test-launch-farm-role', 'platform' => SERVER_PLATFORMS::EC2, 'cloudLocation' => static::TEST_REGION]); /* @var $settings SettingsCollection */ $settings = $farmRole->settings; $settings->saveSettings([FarmRoleSetting::INSTANCE_TYPE => 't1.micro', FarmRoleSetting::AWS_AVAIL_ZONE => '', FarmRoleSetting::SCALING_ENABLED => true, FarmRoleSetting::SCALING_MIN_INSTANCES => 1, FarmRoleSetting::SCALING_MAX_INSTANCES => 2]); } return $farm; }