diff --git a/lib/prepare_cpanel.php b/lib/deployers/cpanel_deployer.php similarity index 79% rename from lib/prepare_cpanel.php rename to lib/deployers/cpanel_deployer.php index 2cb69f7f0..100b4731f 100644 --- a/lib/prepare_cpanel.php +++ b/lib/deployers/cpanel_deployer.php @@ -1,13 +1,15 @@ credentials; if (!$creds['hostname'] || !$creds['username'] || @@ -52,28 +54,28 @@ class Prepare_cPanel throw new Exception("Cannot connect to cPanel at \"${hostname}\" with username \"${username}\" and password \"${password}\""); } $userdata = $domains_data->{'data'}; - $homedir = $userdata->{'main_domain'}->{'homedir'}; - $docroot = $userdata->{'main_domain'}->{'documentroot'}; + $this->homedir = $homedir = $userdata->{'main_domain'}->{'homedir'}; + $this->docroot = $docroot = $userdata->{'main_domain'}->{'documentroot'}; $this->domain = $domain = $userdata->{'main_domain'}->{'domain'}; - self::println("Obtained domain name from cPanel: " . $this->domain); + self::println("Obtained home directory from cPanel: " . $this->homedir); + self::println("Obtained document root from cPanel: " . $this->docroot); + self::println("Obtained domain name from cPanel: " . $this->domain); - self::println("Retrieving existing registered tests from cPanel account…"); $acceptance_tests = self::get_active_acceptance_tests($cPanel, $homedir); + self::println("Adding this test (".$this->run_id.") to registered tests list…"); $run_time = microtime(true); array_push($acceptance_tests, ['id' => $run_id, 'time' => $run_time ]); - self::println("Writing this test to registered tests list in cPanel account…"); self::write_acceptance_tests($cPanel, $homedir, $acceptance_tests); $valid_acceptance_test_ids = self::get_acceptance_test_ids($acceptance_tests); self::println("Current unexpired tests: [".implode(", ", $valid_acceptance_test_ids)."]"); - self::println("Pruning expired tests…"); self::prune_inactive_acceptance_test_resources($cPanel, $valid_acceptance_test_ids); $db_id = "${username}_${run_id}"; @@ -95,9 +97,16 @@ class Prepare_cPanel public function stop() { - $acceptance_tests = self::get_active_acceptance_tests($cPanel, $homedir); - $acceptance_tests = self::prune_acceptance_tests($acceptance_tests, $this->run_id); - self::write_acceptance_tests($cPanel, $homedir, $acceptance_tests); + self::println("=== cPanel Deployer – Tear Down ==="); + $cPanel = $this->cPanel; + $acceptance_tests = self::get_active_acceptance_tests($cPanel, $this->homedir); + self::println("Removing this test (".$this->run_id.") from registered tests list…"); + self::prune_acceptance_tests($acceptance_tests, $this->run_id); + self::write_acceptance_tests($cPanel, $this->homedir, $acceptance_tests); + + $valid_acceptance_test_ids = self::get_acceptance_test_ids($acceptance_tests); + self::println("Current unexpired tests: [".implode(", ", $valid_acceptance_test_ids)."]"); + self::prune_inactive_acceptance_test_resources($cPanel, $valid_acceptance_test_ids); } private static function println($text = '') @@ -107,6 +116,7 @@ class Prepare_cPanel private static function prune_inactive_acceptance_test_resources($cPanel, $valid_acceptance_test_ids) { + self::println("Pruning expired tests…"); $listdbs = $cPanel->api2->MysqlFE->listdbs()->{'cpanelresult'}->{'data'}; self::prune_mysql_databases($listdbs, $valid_acceptance_test_ids, $cPanel); @@ -116,12 +126,13 @@ class Prepare_cPanel private static function get_active_acceptance_tests($cPanel, $homedir) { + self::println("Retrieving existing registered tests from cPanel account…"); $acceptance_tests = []; $acceptance_tests_apiresponse = $cPanel->uapi->Fileman->get_file_content(['dir' => $homedir, 'file' => 'acceptance_tests.status.txt']); if (!is_null($acceptance_tests_apiresponse->{'data'})) { $acceptance_tests_raw = $acceptance_tests_apiresponse->{'data'}->{'content'}; - $acceptance_tests = json_decode($acceptance_tests_raw, true); + $acceptance_tests = (array) json_decode($acceptance_tests_raw, true); self::prune_acceptance_tests($acceptance_tests); } return $acceptance_tests; @@ -138,6 +149,7 @@ class Prepare_cPanel } } $list = array_values($list); + return $list; } private static function get_acceptance_test_ids(array $list) @@ -154,6 +166,7 @@ class Prepare_cPanel { $acceptance_tests_json = json_encode($acceptance_tests, JSON_PRETTY_PRINT); + self::println("Saving registered tests list to cPanel account…"); $cPanel->uapi->Fileman->save_file_content(['dir' => $homedir, 'file' => 'acceptance_tests.status.txt', 'content' => $acceptance_tests_json]); } diff --git a/tests/_support/Helper/Acceptance.php b/tests/_support/Helper/Acceptance.php index b0cb61149..ab497bddb 100644 --- a/tests/_support/Helper/Acceptance.php +++ b/tests/_support/Helper/Acceptance.php @@ -1,24 +1,31 @@ start(); + $this->deployer = new \cPanelDeployer($secrets['cpanel']); + $retcode = $this->deployer->start(); if ($retcode === true) { - $domain = $prepare->getDomain(); + $domain = $this->deployer->getDomain(); $this->getModule('PhpBrowser')->_reconfigure(array('url' => "http://${domain}")); } } } + + public function _afterSuite() + { + $this->deployer->stop(); + } }