|
|
@@ -93,6 +93,15 @@ class Route_AsyncJobs extends RouteBase {
|
|
|
'_postTask' => "testReinstallPm2ByWWW",
|
|
|
]
|
|
|
]),
|
|
|
+ " ",
|
|
|
+ UI::hButtonPost("Test", [
|
|
|
+ 'class' => "btn btn-warning",
|
|
|
+ 'title' => "Test server permissions",
|
|
|
+ 'data' => [
|
|
|
+ '_route' => 'AsyncJobs',
|
|
|
+ '_postTask' => "makeTests",
|
|
|
+ ]
|
|
|
+ ]),
|
|
|
]);
|
|
|
|
|
|
$postTask = V::get('_postTask', '', $_POST);
|
|
|
@@ -105,6 +114,7 @@ class Route_AsyncJobs extends RouteBase {
|
|
|
case "mp2Start3": UI::tryCatchView([ $this, 'mp2Start3PostTask' ]); break;
|
|
|
case "mp2DeleteStopped": UI::tryCatchView([ $this, 'mp2DeleteStoppedPostTask' ]); break;
|
|
|
case "testReinstallPm2ByWWW": UI::tryCatchView([ $this, 'testReinstallPm2ByWWWPostTask' ]); break;
|
|
|
+ case "makeTests": UI::tryCatchView([ $this, 'makeTestsPostTask' ]); break;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -282,13 +292,49 @@ class Route_AsyncJobs extends RouteBase {
|
|
|
UI::alert("DONE");
|
|
|
}
|
|
|
|
|
|
+ function makeTestsPostTask() {
|
|
|
+ $seBinPath = $this->getSbinPath();
|
|
|
+
|
|
|
+ $listTest = []; // [ [ ret_code, cmd ], ... ]
|
|
|
+ $listTest[] = [ 0, "cd '{$seBinPath}' && bash ./se.sh test-exit-0" ];
|
|
|
+ $listTest[] = [ 1, "cd '{$seBinPath}' && bash ./se.sh test-exit-1" ];
|
|
|
+ $listTest[] = [ 1, "cd '{$seBinPath}' && bash ./se.sh test-sudo" ];
|
|
|
+ $listTest[] = [ 0, "cd '{$seBinPath}' && bash ./se.sh --sudo test-sudo" ];
|
|
|
+
|
|
|
+ // $cmd = "cd '{$seBinPath}' && bash se.sh install-pm2-www"; // DBG: require root, add prefix 'sudo--'
|
|
|
+ // $cmd = "cd '{$seBinPath}' && bash ./se.sh --sudo install-pm2-www";
|
|
|
+ // $cmd = "cd '{$seBinPath}' && bash se.sh install-pm2-www"; // expected Permission denied - missing sudo
|
|
|
+ // $cmd = "cd '{$seBinPath}' && bash se.sh sudo "; // expected Missing script name + usage
|
|
|
+ // $cmd = "cd '{$seBinPath}' && bash se.sh non-existing-script"; // expecte Module not exists + usage
|
|
|
+ // $cmd = "cd '{$seBinPath}' && bash se.sh "; // expected usage
|
|
|
+
|
|
|
+ foreach ($listTest as $idx => $test) {
|
|
|
+ list($expected, $cmd) = $test;
|
|
|
+ $out = [];
|
|
|
+ V::exec($cmd = "{$cmd} 2>&1", $out, $ret);
|
|
|
+ echo UI::h('details', [], [
|
|
|
+ UI::h('summary', [], "test {$idx} " . (($expected === $ret) ? "SUCCESS" : "FAILED")),
|
|
|
+ UI::h('div', [], [
|
|
|
+ UI::h('pre', [], "RET({$ret}). OUTPUT:" . "\n" . implode("\n", $out)),
|
|
|
+ UI::h('div', [ 'class' => "alert alert-info" ], "test ({$ret})" . "\n<br>" . implode("\n<br>", $out) ),
|
|
|
+ ($expected === $ret)
|
|
|
+ ? UI::h('div', [ 'class' => 'alert alert-success' ], "OK: script return as expected!")
|
|
|
+ : UI::h('div', [ 'class' => 'alert alert-danger' ], "FAIL: script return '{$ret}' but expected '{$expected}'!")
|
|
|
+ ,
|
|
|
+ ]),
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
function testReinstallPm2ByWWWPostTask() {
|
|
|
$seBinPath = $this->getSbinPath();
|
|
|
+
|
|
|
$out = [];
|
|
|
- $cmd = "cd '{$seBinPath}' && bash se.sh sudo--install-pm2-www";
|
|
|
+ $cmd = "cd '{$seBinPath}' && bash ./se.sh --sudo install-pm2-www";
|
|
|
V::exec($cmd = "{$cmd} 2>&1", $out, $ret);
|
|
|
echo UI::h('pre', [], "RET({$ret}). OUTPUT:" . "\n" . implode("\n", $out));
|
|
|
- if (0 !== $ret) throw new Exception( (empty($out)) ? "Error: backup failed!" : implode("\n", $out) );
|
|
|
+ if (0 !== $ret) throw new Exception( (empty($out)) ? "Error: install pm2-www failed! ({$ret})" : implode("\n<br>", $out) );
|
|
|
|
|
|
if (!file_exists('/usr/local/bin/pm2-www')) {
|
|
|
throw new Exception("Nie udało się zainstalować pm2-www");
|