Change exitCode to statusCode and move build to tag create
Change exitCode to statusCode and move build to tag create instead of tag deploy
This commit is contained in:
parent
37da3c5651
commit
3c26a08202
7 changed files with 59 additions and 42 deletions
|
@ -2255,7 +2255,7 @@ $collections = [
|
||||||
'filters' => [],
|
'filters' => [],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'$id' => 'exitCode',
|
'$id' => 'statusCode',
|
||||||
'type' => Database::VAR_INTEGER,
|
'type' => Database::VAR_INTEGER,
|
||||||
'format' => '',
|
'format' => '',
|
||||||
'size' => 0,
|
'size' => 0,
|
||||||
|
|
|
@ -858,7 +858,7 @@ App::post('/v1/functions/:functionId/executions')
|
||||||
'tagId' => $tag->getId(),
|
'tagId' => $tag->getId(),
|
||||||
'trigger' => 'http', // http / schedule / event
|
'trigger' => 'http', // http / schedule / event
|
||||||
'status' => 'waiting', // waiting / processing / completed / failed
|
'status' => 'waiting', // waiting / processing / completed / failed
|
||||||
'exitCode' => 0,
|
'statusCode' => 0,
|
||||||
'stdout' => '',
|
'stdout' => '',
|
||||||
'stderr' => '',
|
'stderr' => '',
|
||||||
'time' => 0.0,
|
'time' => 0.0,
|
||||||
|
|
|
@ -665,6 +665,10 @@ function createRuntimeServer(string $functionId, string $projectId, string $tagI
|
||||||
return $database->getDocument('tags', $tagId);
|
return $database->getDocument('tags', $tagId);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if ($tag->getAttribute('buildId') === null) {
|
||||||
|
throw new Exception('Tag has no buildId');
|
||||||
|
}
|
||||||
|
|
||||||
// Grab Build Document
|
// Grab Build Document
|
||||||
$build = Authorization::skip(function () use ($database, $tag) {
|
$build = Authorization::skip(function () use ($database, $tag) {
|
||||||
return $database->getDocument('builds', $tag->getAttribute('buildId'));
|
return $database->getDocument('builds', $tag->getAttribute('buildId'));
|
||||||
|
@ -856,7 +860,7 @@ function execute(string $trigger, string $projectId, string $executionId, string
|
||||||
'tagId' => $tag->getId(),
|
'tagId' => $tag->getId(),
|
||||||
'trigger' => $trigger, // http / schedule / event
|
'trigger' => $trigger, // http / schedule / event
|
||||||
'status' => 'processing', // waiting / processing / completed / failed
|
'status' => 'processing', // waiting / processing / completed / failed
|
||||||
'exitCode' => 0,
|
'statusCode' => 0,
|
||||||
'stdout' => '',
|
'stdout' => '',
|
||||||
'stderr' => '',
|
'stderr' => '',
|
||||||
'time' => 0.0,
|
'time' => 0.0,
|
||||||
|
@ -873,7 +877,7 @@ function execute(string $trigger, string $projectId, string $executionId, string
|
||||||
Console::error('Execution Failed. Reason: Code was still being built.');
|
Console::error('Execution Failed. Reason: Code was still being built.');
|
||||||
|
|
||||||
$execution->setAttribute('status', 'failed')
|
$execution->setAttribute('status', 'failed')
|
||||||
->setAttribute('exitCode', 1)
|
->setAttribute('statusCode', 500)
|
||||||
->setAttribute('stderr', 'Tag is still being built.')
|
->setAttribute('stderr', 'Tag is still being built.')
|
||||||
->setAttribute('time', 0);
|
->setAttribute('time', 0);
|
||||||
|
|
||||||
|
@ -951,7 +955,7 @@ function execute(string $trigger, string $projectId, string $executionId, string
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Console::error('Something went wrong building the code. ' . $e->getMessage());
|
Console::error('Something went wrong building the code. ' . $e->getMessage());
|
||||||
$execution->setAttribute('status', 'failed')
|
$execution->setAttribute('status', 'failed')
|
||||||
->setAttribute('exitCode', 1)
|
->setAttribute('statusCode', 500)
|
||||||
->setAttribute('stderr', \utf8_encode(\mb_substr($e->getMessage(), -4000))) // log last 4000 chars output
|
->setAttribute('stderr', \utf8_encode(\mb_substr($e->getMessage(), -4000))) // log last 4000 chars output
|
||||||
->setAttribute('time', 0);
|
->setAttribute('time', 0);
|
||||||
|
|
||||||
|
@ -972,7 +976,7 @@ function execute(string $trigger, string $projectId, string $executionId, string
|
||||||
Console::error('Something went wrong building the runtime server. ' . $e->getMessage());
|
Console::error('Something went wrong building the runtime server. ' . $e->getMessage());
|
||||||
|
|
||||||
$execution->setAttribute('status', 'failed')
|
$execution->setAttribute('status', 'failed')
|
||||||
->setAttribute('exitCode', 1)
|
->setAttribute('statusCode', 500)
|
||||||
->setAttribute('stderr', \utf8_encode(\mb_substr($e->getMessage(), -4000))) // log last 4000 chars output
|
->setAttribute('stderr', \utf8_encode(\mb_substr($e->getMessage(), -4000))) // log last 4000 chars output
|
||||||
->setAttribute('time', 0);
|
->setAttribute('time', 0);
|
||||||
|
|
||||||
|
@ -1012,8 +1016,7 @@ function execute(string $trigger, string $projectId, string $executionId, string
|
||||||
|
|
||||||
$executionStart = \microtime(true);
|
$executionStart = \microtime(true);
|
||||||
|
|
||||||
$exitCode = 0;
|
$statusCode = 0;
|
||||||
$statusCode = 200;
|
|
||||||
|
|
||||||
$errNo = -1;
|
$errNo = -1;
|
||||||
$attempts = 0;
|
$attempts = 0;
|
||||||
|
@ -1067,12 +1070,12 @@ function execute(string $trigger, string $projectId, string $executionId, string
|
||||||
|
|
||||||
if ($attempts >= 5) {
|
if ($attempts >= 5) {
|
||||||
$stderr = 'Failed to connect to executor runtime after 5 attempts.';
|
$stderr = 'Failed to connect to executor runtime after 5 attempts.';
|
||||||
$exitCode = 124;
|
$statusCode = 124;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If timeout error
|
// If timeout error
|
||||||
if ($errNo == CURLE_OPERATION_TIMEDOUT || $errNo == 110) {
|
if ($errNo == CURLE_OPERATION_TIMEDOUT || $errNo == 110) {
|
||||||
$exitCode = 124;
|
$statusCode = 124;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 110 is the Swoole error code for timeout, see: https://www.swoole.co.uk/docs/swoole-error-code
|
// 110 is the Swoole error code for timeout, see: https://www.swoole.co.uk/docs/swoole-error-code
|
||||||
|
@ -1081,29 +1084,43 @@ function execute(string $trigger, string $projectId, string $executionId, string
|
||||||
throw new Exception('Curl error: ' . $error, 500);
|
throw new Exception('Curl error: ' . $error, 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$executionData = [];
|
||||||
|
|
||||||
if (!empty($executorResponse)) {
|
if (!empty($executorResponse)) {
|
||||||
$executionData = json_decode($executorResponse, true);
|
$executionData = json_decode($executorResponse, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($executionData['code'])) {
|
if (isset($executionData['code'])) {
|
||||||
$exitCode = $executionData['code'];
|
$statusCode = $executionData['code'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($exitCode === 500) {
|
if ($statusCode === 500) {
|
||||||
$stderr = $executionData['message'];
|
if (isset($executionData['message'])) {
|
||||||
} else if ($exitCode === 0) {
|
$stderr = $executionData['message'];
|
||||||
|
} else {
|
||||||
|
$stderr = 'Internal Runtime error';
|
||||||
|
}
|
||||||
|
} else if ($statusCode === 124) {
|
||||||
|
$stderr = 'Execution timed out.';
|
||||||
|
} else if ($statusCode === 0) {
|
||||||
|
$stderr = 'Execution failed.';
|
||||||
|
} else if ($statusCode >= 200 && $statusCode < 300) {
|
||||||
$stdout = $executorResponse;
|
$stdout = $executorResponse;
|
||||||
|
} else {
|
||||||
|
$stderr = 'Execution failed.';
|
||||||
}
|
}
|
||||||
|
|
||||||
$executionEnd = \microtime(true);
|
$executionEnd = \microtime(true);
|
||||||
$executionTime = ($executionEnd - $executionStart);
|
$executionTime = ($executionEnd - $executionStart);
|
||||||
$functionStatus = ($exitCode === 0) ? 'completed' : 'failed';
|
$functionStatus = ($statusCode >= 200 && $statusCode < 300) ? 'completed' : 'failed';
|
||||||
|
|
||||||
|
var_dump($statusCode);
|
||||||
|
|
||||||
Console::info('Function executed in ' . ($executionEnd - $executionStart) . ' seconds, status: ' . $functionStatus);
|
Console::info('Function executed in ' . ($executionEnd - $executionStart) . ' seconds, status: ' . $functionStatus);
|
||||||
|
|
||||||
$execution->setAttribute('tagId', $tag->getId())
|
$execution->setAttribute('tagId', $tag->getId())
|
||||||
->setAttribute('status', $functionStatus)
|
->setAttribute('status', $functionStatus)
|
||||||
->setAttribute('exitCode', $exitCode)
|
->setAttribute('statusCode', $statusCode)
|
||||||
->setAttribute('stdout', \utf8_encode(\mb_substr($stdout, -8000)))
|
->setAttribute('stdout', \utf8_encode(\mb_substr($stdout, -8000)))
|
||||||
->setAttribute('stderr', \utf8_encode(\mb_substr($stderr, -8000)))
|
->setAttribute('stderr', \utf8_encode(\mb_substr($stderr, -8000)))
|
||||||
->setAttribute('time', $executionTime);
|
->setAttribute('time', $executionTime);
|
||||||
|
@ -1341,7 +1358,7 @@ function handleShutdown()
|
||||||
// Mark all processing executions as failed
|
// Mark all processing executions as failed
|
||||||
foreach ($executions as $execution) {
|
foreach ($executions as $execution) {
|
||||||
$execution->setAttribute('status', 'failed')
|
$execution->setAttribute('status', 'failed')
|
||||||
->setAttribute('exitCode', 1)
|
->setAttribute('statusCode', 1)
|
||||||
->setAttribute('stderr', 'Appwrite was shutdown during execution');
|
->setAttribute('stderr', 'Appwrite was shutdown during execution');
|
||||||
|
|
||||||
Authorization::skip(function () use ($database, $execution) {
|
Authorization::skip(function () use ($database, $execution) {
|
||||||
|
|
|
@ -371,7 +371,7 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true);
|
||||||
</td>
|
</td>
|
||||||
<td data-title="Status: ">
|
<td data-title="Status: ">
|
||||||
<span data-ls-bind="{{execution.status}}"></span>
|
<span data-ls-bind="{{execution.status}}"></span>
|
||||||
<span class="text-fade text-size-small" data-ls-if="{{execution.exitCode}} !== 0" data-ls-bind=" exit code: {{execution.exitCode}}"></span>
|
<span class="text-fade text-size-small" data-ls-if="{{execution.statusCode}} < 200 && {{execution.statusCode}} >= 300" data-ls-bind=" exit code: {{execution.statusCode}}"></span>
|
||||||
</td>
|
</td>
|
||||||
<td data-title="Trigger: ">
|
<td data-title="Trigger: ">
|
||||||
<span data-ls-bind="{{execution.trigger}}"></span>
|
<span data-ls-bind="{{execution.trigger}}"></span>
|
||||||
|
|
|
@ -47,9 +47,9 @@ class Execution extends Model
|
||||||
'default' => '',
|
'default' => '',
|
||||||
'example' => 'processing',
|
'example' => 'processing',
|
||||||
])
|
])
|
||||||
->addRule('exitCode', [
|
->addRule('statusCode', [
|
||||||
'type' => self::TYPE_INTEGER,
|
'type' => self::TYPE_INTEGER,
|
||||||
'description' => 'The script exit code.',
|
'description' => 'The script status code.',
|
||||||
'default' => 0,
|
'default' => 0,
|
||||||
'example' => 0,
|
'example' => 0,
|
||||||
])
|
])
|
||||||
|
|
|
@ -86,6 +86,9 @@ class FunctionsCustomClientTest extends Scope
|
||||||
|
|
||||||
$this->assertEquals(201, $tag['headers']['status-code']);
|
$this->assertEquals(201, $tag['headers']['status-code']);
|
||||||
|
|
||||||
|
// Wait for tag to be built.
|
||||||
|
sleep(5);
|
||||||
|
|
||||||
$function = $this->client->call(Client::METHOD_PATCH, '/functions/'.$function['body']['$id'].'/tag', [
|
$function = $this->client->call(Client::METHOD_PATCH, '/functions/'.$function['body']['$id'].'/tag', [
|
||||||
'content-type' => 'application/json',
|
'content-type' => 'application/json',
|
||||||
'x-appwrite-project' => $this->getProject()['$id'],
|
'x-appwrite-project' => $this->getProject()['$id'],
|
||||||
|
@ -96,9 +99,6 @@ class FunctionsCustomClientTest extends Scope
|
||||||
|
|
||||||
$this->assertEquals(200, $function['headers']['status-code']);
|
$this->assertEquals(200, $function['headers']['status-code']);
|
||||||
|
|
||||||
// Wait for tag to be built.
|
|
||||||
sleep(5);
|
|
||||||
|
|
||||||
$execution = $this->client->call(Client::METHOD_POST, '/functions/'.$function['body']['$id'].'/executions', [
|
$execution = $this->client->call(Client::METHOD_POST, '/functions/'.$function['body']['$id'].'/executions', [
|
||||||
'content-type' => 'application/json',
|
'content-type' => 'application/json',
|
||||||
'x-appwrite-project' => $this->getProject()['$id'],
|
'x-appwrite-project' => $this->getProject()['$id'],
|
||||||
|
@ -169,6 +169,9 @@ class FunctionsCustomClientTest extends Scope
|
||||||
|
|
||||||
$tagId = $tag['body']['$id'] ?? '';
|
$tagId = $tag['body']['$id'] ?? '';
|
||||||
|
|
||||||
|
// Wait for tag to be built.
|
||||||
|
sleep(5);
|
||||||
|
|
||||||
$this->assertEquals(201, $tag['headers']['status-code']);
|
$this->assertEquals(201, $tag['headers']['status-code']);
|
||||||
|
|
||||||
$function = $this->client->call(Client::METHOD_PATCH, '/functions/'.$functionId.'/tag', [
|
$function = $this->client->call(Client::METHOD_PATCH, '/functions/'.$functionId.'/tag', [
|
||||||
|
@ -181,9 +184,6 @@ class FunctionsCustomClientTest extends Scope
|
||||||
|
|
||||||
$this->assertEquals(200, $function['headers']['status-code']);
|
$this->assertEquals(200, $function['headers']['status-code']);
|
||||||
|
|
||||||
// Wait for tag to be built.
|
|
||||||
sleep(5);
|
|
||||||
|
|
||||||
$execution = $this->client->call(Client::METHOD_POST, '/functions/'.$functionId.'/executions', array_merge([
|
$execution = $this->client->call(Client::METHOD_POST, '/functions/'.$functionId.'/executions', array_merge([
|
||||||
'content-type' => 'application/json',
|
'content-type' => 'application/json',
|
||||||
'x-appwrite-project' => $projectId,
|
'x-appwrite-project' => $projectId,
|
||||||
|
@ -319,6 +319,9 @@ class FunctionsCustomClientTest extends Scope
|
||||||
|
|
||||||
$this->assertEquals(201, $tag['headers']['status-code']);
|
$this->assertEquals(201, $tag['headers']['status-code']);
|
||||||
|
|
||||||
|
// Wait for tag to be built.
|
||||||
|
sleep(5);
|
||||||
|
|
||||||
$function = $this->client->call(Client::METHOD_PATCH, '/functions/'.$functionId.'/tag', [
|
$function = $this->client->call(Client::METHOD_PATCH, '/functions/'.$functionId.'/tag', [
|
||||||
'content-type' => 'application/json',
|
'content-type' => 'application/json',
|
||||||
'x-appwrite-project' => $projectId,
|
'x-appwrite-project' => $projectId,
|
||||||
|
@ -329,9 +332,6 @@ class FunctionsCustomClientTest extends Scope
|
||||||
|
|
||||||
$this->assertEquals(200, $function['headers']['status-code']);
|
$this->assertEquals(200, $function['headers']['status-code']);
|
||||||
|
|
||||||
// Wait for tag to be built.
|
|
||||||
sleep(5);
|
|
||||||
|
|
||||||
$execution = $this->client->call(Client::METHOD_POST, '/functions/'.$functionId.'/executions', array_merge([
|
$execution = $this->client->call(Client::METHOD_POST, '/functions/'.$functionId.'/executions', array_merge([
|
||||||
'content-type' => 'application/json',
|
'content-type' => 'application/json',
|
||||||
'x-appwrite-project' => $projectId,
|
'x-appwrite-project' => $projectId,
|
||||||
|
|
|
@ -292,6 +292,9 @@ class FunctionsCustomServerTest extends Scope
|
||||||
$this->assertIsInt($tag['body']['dateCreated']);
|
$this->assertIsInt($tag['body']['dateCreated']);
|
||||||
$this->assertEquals('index.php', $tag['body']['entrypoint']);
|
$this->assertEquals('index.php', $tag['body']['entrypoint']);
|
||||||
// $this->assertGreaterThan(10000, $tag['body']['size']);
|
// $this->assertGreaterThan(10000, $tag['body']['size']);
|
||||||
|
|
||||||
|
// Wait for tag to build.
|
||||||
|
sleep(5);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for FAILURE
|
* Test for FAILURE
|
||||||
|
@ -320,9 +323,6 @@ class FunctionsCustomServerTest extends Scope
|
||||||
$this->assertIsInt($response['body']['dateCreated']);
|
$this->assertIsInt($response['body']['dateCreated']);
|
||||||
$this->assertIsInt($response['body']['dateUpdated']);
|
$this->assertIsInt($response['body']['dateUpdated']);
|
||||||
$this->assertEquals($data['tagId'], $response['body']['tag']);
|
$this->assertEquals($data['tagId'], $response['body']['tag']);
|
||||||
|
|
||||||
// Wait for tag to be built.
|
|
||||||
sleep(5);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for FAILURE
|
* Test for FAILURE
|
||||||
|
@ -445,7 +445,7 @@ class FunctionsCustomServerTest extends Scope
|
||||||
$this->assertIsInt($execution['body']['dateCreated']);
|
$this->assertIsInt($execution['body']['dateCreated']);
|
||||||
$this->assertEquals($data['functionId'], $execution['body']['functionId']);
|
$this->assertEquals($data['functionId'], $execution['body']['functionId']);
|
||||||
$this->assertEquals('waiting', $execution['body']['status']);
|
$this->assertEquals('waiting', $execution['body']['status']);
|
||||||
$this->assertEquals(0, $execution['body']['exitCode']);
|
$this->assertEquals(0, $execution['body']['statusCode']);
|
||||||
$this->assertEquals('', $execution['body']['stdout']);
|
$this->assertEquals('', $execution['body']['stdout']);
|
||||||
$this->assertEquals('', $execution['body']['stderr']);
|
$this->assertEquals('', $execution['body']['stderr']);
|
||||||
$this->assertEquals(0, $execution['body']['time']);
|
$this->assertEquals(0, $execution['body']['time']);
|
||||||
|
@ -462,7 +462,7 @@ class FunctionsCustomServerTest extends Scope
|
||||||
$this->assertIsInt($execution['body']['dateCreated']);
|
$this->assertIsInt($execution['body']['dateCreated']);
|
||||||
$this->assertEquals($data['functionId'], $execution['body']['functionId']);
|
$this->assertEquals($data['functionId'], $execution['body']['functionId']);
|
||||||
$this->assertEquals('completed', $execution['body']['status']);
|
$this->assertEquals('completed', $execution['body']['status']);
|
||||||
$this->assertEquals(0, $execution['body']['exitCode']);
|
$this->assertEquals(200, $execution['body']['statusCode']);
|
||||||
$this->assertStringContainsString($execution['body']['functionId'], $execution['body']['stdout']);
|
$this->assertStringContainsString($execution['body']['functionId'], $execution['body']['stdout']);
|
||||||
$this->assertStringContainsString($data['tagId'], $execution['body']['stdout']);
|
$this->assertStringContainsString($data['tagId'], $execution['body']['stdout']);
|
||||||
$this->assertStringContainsString('Test1', $execution['body']['stdout']);
|
$this->assertStringContainsString('Test1', $execution['body']['stdout']);
|
||||||
|
@ -685,6 +685,9 @@ class FunctionsCustomServerTest extends Scope
|
||||||
$tagId = $tag['body']['$id'] ?? '';
|
$tagId = $tag['body']['$id'] ?? '';
|
||||||
$this->assertEquals(201, $tag['headers']['status-code']);
|
$this->assertEquals(201, $tag['headers']['status-code']);
|
||||||
|
|
||||||
|
// Allow build step to run
|
||||||
|
sleep(5);
|
||||||
|
|
||||||
$tag = $this->client->call(Client::METHOD_PATCH, '/functions/'.$functionId.'/tag', array_merge([
|
$tag = $this->client->call(Client::METHOD_PATCH, '/functions/'.$functionId.'/tag', array_merge([
|
||||||
'content-type' => 'application/json',
|
'content-type' => 'application/json',
|
||||||
'x-appwrite-project' => $this->getProject()['$id'],
|
'x-appwrite-project' => $this->getProject()['$id'],
|
||||||
|
@ -694,9 +697,6 @@ class FunctionsCustomServerTest extends Scope
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->assertEquals(200, $tag['headers']['status-code']);
|
$this->assertEquals(200, $tag['headers']['status-code']);
|
||||||
|
|
||||||
// Allow build step to run
|
|
||||||
sleep(5);
|
|
||||||
|
|
||||||
$execution = $this->client->call(Client::METHOD_POST, '/functions/'.$functionId.'/executions', array_merge([
|
$execution = $this->client->call(Client::METHOD_POST, '/functions/'.$functionId.'/executions', array_merge([
|
||||||
'content-type' => 'application/json',
|
'content-type' => 'application/json',
|
||||||
|
@ -723,11 +723,11 @@ class FunctionsCustomServerTest extends Scope
|
||||||
$this->assertEquals($executions['body']['executions'][0]['$id'], $executionId);
|
$this->assertEquals($executions['body']['executions'][0]['$id'], $executionId);
|
||||||
$this->assertEquals($executions['body']['executions'][0]['trigger'], 'http');
|
$this->assertEquals($executions['body']['executions'][0]['trigger'], 'http');
|
||||||
$this->assertEquals($executions['body']['executions'][0]['status'], 'failed');
|
$this->assertEquals($executions['body']['executions'][0]['status'], 'failed');
|
||||||
$this->assertEquals($executions['body']['executions'][0]['exitCode'], 124);
|
$this->assertEquals($executions['body']['executions'][0]['statusCode'], 124);
|
||||||
$this->assertGreaterThan(2, $executions['body']['executions'][0]['time']);
|
$this->assertGreaterThan(2, $executions['body']['executions'][0]['time']);
|
||||||
$this->assertLessThan(3, $executions['body']['executions'][0]['time']);
|
$this->assertLessThan(3, $executions['body']['executions'][0]['time']);
|
||||||
$this->assertEquals($executions['body']['executions'][0]['stdout'], '');
|
$this->assertEquals($executions['body']['executions'][0]['stdout'], '');
|
||||||
$this->assertEquals($executions['body']['executions'][0]['stderr'], '');
|
$this->assertEquals($executions['body']['executions'][0]['stderr'], 'Execution timed out.');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -768,6 +768,9 @@ class FunctionsCustomServerTest extends Scope
|
||||||
$tagId = $tag['body']['$id'] ?? '';
|
$tagId = $tag['body']['$id'] ?? '';
|
||||||
$this->assertEquals(201, $tag['headers']['status-code']);
|
$this->assertEquals(201, $tag['headers']['status-code']);
|
||||||
|
|
||||||
|
// Allow build step to run
|
||||||
|
sleep(5);
|
||||||
|
|
||||||
$tag = $this->client->call(Client::METHOD_PATCH, '/functions/'.$functionId.'/tag', array_merge([
|
$tag = $this->client->call(Client::METHOD_PATCH, '/functions/'.$functionId.'/tag', array_merge([
|
||||||
'content-type' => 'application/json',
|
'content-type' => 'application/json',
|
||||||
'x-appwrite-project' => $this->getProject()['$id'],
|
'x-appwrite-project' => $this->getProject()['$id'],
|
||||||
|
@ -776,9 +779,6 @@ class FunctionsCustomServerTest extends Scope
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->assertEquals(200, $tag['headers']['status-code']);
|
$this->assertEquals(200, $tag['headers']['status-code']);
|
||||||
|
|
||||||
// Allow build step to run
|
|
||||||
sleep(5);
|
|
||||||
|
|
||||||
$execution = $this->client->call(Client::METHOD_POST, '/functions/'.$functionId.'/executions', array_merge([
|
$execution = $this->client->call(Client::METHOD_POST, '/functions/'.$functionId.'/executions', array_merge([
|
||||||
'content-type' => 'application/json',
|
'content-type' => 'application/json',
|
||||||
|
|
Loading…
Reference in a new issue