test(api): wait for web-office readiness by checking discovery endpoint (#2217)

* test: add date-time in the request-response log

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

* ci: check discovery urls

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>

---------

Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>
This commit is contained in:
Sawjan Gurung
2026-01-27 15:06:06 +05:45
committed by GitHub
2 changed files with 32 additions and 3 deletions

View File

@@ -1263,7 +1263,7 @@ def localApiTestPipeline(ctx):
"name": pipeline_name,
"steps": evaluateWorkflowStep() + restoreBuildArtifactCache(ctx, dirs["opencloudBinArtifact"], dirs["opencloudBinPath"]) +
(tikaService() if params["tikaNeeded"] else []) +
(waitForServices("online-offices", ["collabora:9980", "onlyoffice:443", "fakeoffice:8080"]) if params["collaborationServiceNeeded"] else []) +
(waitForWebOffices(["https://collabora:9980", "https://onlyoffice", "http://fakeoffice:8080"]) if params["collaborationServiceNeeded"] else []) +
(waitForClamavService() if params["antivirusNeeded"] else []) +
(waitForEmailService() if params["emailNeeded"] else []) +
(ldapService() if params["ldapNeeded"] else []) +
@@ -3471,3 +3471,23 @@ def onlyofficeService():
],
},
]
def waitForWebOffices(services = []):
commands = []
if not services:
return []
for service in services:
commands.append(
"timeout 300 bash -c " +
"'while [ `curl %s/hosting/discovery" % service +
" -w \"%{http_code}\" -o /dev/null -sk` != \"200\" ]; do " +
"echo \"Waiting...\" && sleep 2; done'",
)
return [
{
"name": "wait-for-weboffices",
"image": OC_CI_ALPINE,
"commands": commands,
},
]

View File

@@ -77,7 +77,7 @@ class HttpLogger {
}
$logMessage = "\t\t_______________________________________________________________________\n\n";
$logMessage .= "\t\t==> REQUEST\n";
$logMessage .= "\t\t==> REQUEST [" . self::getCurrentDateTime() . "]\n";
$logMessage .= "\t\t$method $path\n";
$logMessage .= $query ? "\t\tQUERY: $query\n" : "";
$logMessage .= "\t\t$headers";
@@ -105,7 +105,7 @@ class HttpLogger {
$headers = $key . ": " . $value[0] . "\n";
}
$logMessage = "\t\t<== RESPONSE\n";
$logMessage = "\t\t<== RESPONSE [" . self::getCurrentDateTime() . "]\n";
$logMessage .= "\t\t$statusCode $statusMessage\n";
$logMessage .= "\t\t$headers";
@@ -121,4 +121,13 @@ class HttpLogger {
$logMessage = \rtrim($logMessage) . "\n\n";
self::writeLog(self::getScenarioLogPath(), $logMessage);
}
/**
* Returns current date and time in format: 1999-01-31T23:01:59
*
* @return string
*/
public static function getCurrentDateTime(): string {
return date('Y-m-d\TG:i:s');
}
}