Specifications test, fix failures

This commit is contained in:
Matej Bačo
2025-03-07 23:17:15 +01:00
parent 1d983a949e
commit c6a862a0a3
14 changed files with 107 additions and 14 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
use Appwrite\Sites\Specification;
use Appwrite\Platform\Modules\Compute\Specification;
return [
Specification::S_05VCPU_512MB => [
+1 -1
View File
@@ -36,13 +36,13 @@ use Appwrite\Event\Realtime;
use Appwrite\Event\StatsUsage;
use Appwrite\Event\Webhook;
use Appwrite\Extend\Exception;
use Appwrite\Functions\Specification;
use Appwrite\GraphQL\Promises\Adapter\Swoole;
use Appwrite\GraphQL\Schema;
use Appwrite\Hooks\Hooks;
use Appwrite\Network\Validator\Email;
use Appwrite\Network\Validator\Origin;
use Appwrite\OpenSSL\OpenSSL;
use Appwrite\Platform\Modules\Compute\Specification;
use Appwrite\PubSub\Adapter\Redis as PubSub;
use Appwrite\URL\URL as AppwriteURL;
use Appwrite\Utopia\Request;
@@ -1,6 +1,6 @@
<?php
namespace Appwrite\Compute;
namespace Appwrite\Platform\Modules\Compute;
class Specification
{
@@ -1,6 +1,6 @@
<?php
namespace Appwrite\Compute\Validator;
namespace Appwrite\Platform\Modules\Compute\Validator;
use Utopia\Validator;
@@ -2,11 +2,11 @@
namespace Appwrite\Platform\Modules\Functions\Http\Functions;
use Appwrite\Compute\Validator\Specification;
use Appwrite\Event\Event;
use Appwrite\Event\Validator\FunctionEvent;
use Appwrite\Extend\Exception;
use Appwrite\Platform\Modules\Compute\Base;
use Appwrite\Platform\Modules\Compute\Validator\Specification;
use Appwrite\SDK\AuthType;
use Appwrite\SDK\Method;
use Appwrite\SDK\Response as SDKResponse;
@@ -2,12 +2,12 @@
namespace Appwrite\Platform\Modules\Functions\Http\Functions;
use Appwrite\Compute\Validator\Specification;
use Appwrite\Event\Build;
use Appwrite\Event\Event;
use Appwrite\Event\Validator\FunctionEvent;
use Appwrite\Extend\Exception;
use Appwrite\Platform\Modules\Compute\Base;
use Appwrite\Platform\Modules\Compute\Validator\Specification;
use Appwrite\SDK\AuthType;
use Appwrite\SDK\Method;
use Appwrite\SDK\Response as SDKResponse;
@@ -2,10 +2,10 @@
namespace Appwrite\Platform\Modules\Sites\Http\Sites;
use Appwrite\Compute\Validator\Specification;
use Appwrite\Event\Event;
use Appwrite\Extend\Exception;
use Appwrite\Platform\Modules\Compute\Base;
use Appwrite\Platform\Modules\Compute\Validator\Specification;
use Appwrite\SDK\AuthType;
use Appwrite\SDK\Method;
use Appwrite\SDK\Response as SDKResponse;
@@ -2,11 +2,11 @@
namespace Appwrite\Platform\Modules\Sites\Http\Sites;
use Appwrite\Compute\Validator\Specification;
use Appwrite\Event\Build;
use Appwrite\Event\Event;
use Appwrite\Extend\Exception;
use Appwrite\Platform\Modules\Compute\Base;
use Appwrite\Platform\Modules\Compute\Validator\Specification;
use Appwrite\SDK\AuthType;
use Appwrite\SDK\Method;
use Appwrite\SDK\Response as SDKResponse;
@@ -21,6 +21,7 @@ use Appwrite\Platform\Modules\Sites\Http\Sites\Deployment\Update as UpdateSiteDe
use Appwrite\Platform\Modules\Sites\Http\Sites\Get as GetSite;
use Appwrite\Platform\Modules\Sites\Http\Sites\Update as UpdateSite;
use Appwrite\Platform\Modules\Sites\Http\Sites\XList as ListSites;
use Appwrite\Platform\Modules\Sites\Http\Specifications\XList as ListSpecifications;
use Appwrite\Platform\Modules\Sites\Http\Templates\Get as GetTemplate;
use Appwrite\Platform\Modules\Sites\Http\Templates\XList as ListTemplates;
use Appwrite\Platform\Modules\Sites\Http\Usage\Get as GetUsage;
@@ -79,5 +80,7 @@ class Http extends Service
// Usage
$this->addAction(ListUsage::getName(), new ListUsage());
$this->addAction(GetUsage::getName(), new GetUsage());
$this->addAction(ListSpecifications::getName(), new ListSpecifications());
}
}
+1 -1
View File
@@ -2,7 +2,7 @@
namespace Tests\E2E\General;
use Appwrite\Functions\Specification;
use Appwrite\Platform\Modules\Compute\Specification;
use Appwrite\Tests\Retry;
use CURLFile;
use DateTime;
@@ -389,4 +389,13 @@ trait FunctionsBase
return $deployment;
}
protected function listSpecifications(): mixed
{
$specifications = $this->client->call(Client::METHOD_GET, '/functions/specifications', array_merge([
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()));
return $specifications;
}
}
@@ -2,7 +2,7 @@
namespace Tests\E2E\Services\Functions;
use Appwrite\Functions\Specification;
use Appwrite\Platform\Modules\Compute\Specification;
use Appwrite\Tests\Retry;
use Tests\E2E\Client;
use Tests\E2E\Scopes\ProjectCustom;
@@ -22,6 +22,41 @@ class FunctionsCustomServerTest extends Scope
use ProjectCustom;
use SideServer;
public function testListSpecs(): void
{
$specifications = $this->listSpecifications();
$this->assertEquals(200, $specifications['headers']['status-code']);
$this->assertGreaterThan(0, $specifications['body']['total']);
$this->assertArrayHasKey(0, $specifications['body']['specifications']);
$this->assertArrayHasKey('memory', $specifications['body']['specifications'][0]);
$this->assertArrayHasKey('cpus', $specifications['body']['specifications'][0]);
$this->assertArrayHasKey('enabled', $specifications['body']['specifications'][0]);
$this->assertArrayHasKey('slug', $specifications['body']['specifications'][0]);
$function = $this->createFunction([
'functionId' => ID::unique(),
'name' => 'Specs function',
'runtime' => 'php-8.0',
'specification' => $specifications['body']['specifications'][0]['slug']
]);
$this->assertEquals(201, $function['headers']['status-code']);
$this->assertEquals($specifications['body']['specifications'][0]['slug'], $function['body']['specification']);
$function = $this->getFunction($function['body']['$id']);
$this->assertEquals(200, $function['headers']['status-code']);
$this->assertEquals($specifications['body']['specifications'][0]['slug'], $function['body']['specification']);
$this->cleanupFunction($function['body']['$id']);
$function = $this->createFunction([
'functionId' => ID::unique(),
'name' => 'Specs function',
'runtime' => 'php-8.0',
'specification' => 'cheap-please'
]);
$this->assertEquals(400, $function['headers']['status-code']);
}
public function testCreateFunction(): array
{
/**
@@ -2006,14 +2041,14 @@ class FunctionsCustomServerTest extends Scope
$this->assertEquals(201, $execution['headers']['status-code']);
$this->assertStringContainsString('APPWRITE_FUNCTION_ID', $execution['body']['responseBody']);
$site = $this->updateFunction($functionId, [
$function = $this->updateFunction($functionId, [
'runtime' => 'node-18.0',
'name' => 'Duplicate Deployment Test',
'entrypoint' => 'index.js',
'commands' => 'rm index.js && mv maintenance.js index.js'
]);
$this->assertEquals(200, $site['headers']['status-code']);
$this->assertStringContainsString('maintenance.js', $site['body']['commands']);
$this->assertEquals(200, $function['headers']['status-code']);
$this->assertStringContainsString('maintenance.js', $function['body']['commands']);
$deploymentId2 = $this->setupDuplicateDeployment($functionId, $deploymentId1);
$this->assertNotEmpty($deploymentId2);
+9
View File
@@ -414,4 +414,13 @@ trait SitesBase
return $deployment;
}
protected function listSpecifications(): mixed
{
$specifications = $this->client->call(Client::METHOD_GET, '/sites/specifications', array_merge([
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()));
return $specifications;
}
}
@@ -2,7 +2,7 @@
namespace Tests\E2E\Services\Sites;
use Appwrite\Sites\Specification;
use Appwrite\Platform\Modules\Compute\Specification;
use Appwrite\Tests\Retry;
use Tests\E2E\Client;
use Tests\E2E\Scopes\ProjectCustom;
@@ -20,6 +20,43 @@ class SitesCustomServerTest extends Scope
use ProjectCustom;
use SideServer;
public function testListSpecs(): void
{
$specifications = $this->listSpecifications();
$this->assertEquals(200, $specifications['headers']['status-code']);
$this->assertGreaterThan(0, $specifications['body']['total']);
$this->assertArrayHasKey(0, $specifications['body']['specifications']);
$this->assertArrayHasKey('memory', $specifications['body']['specifications'][0]);
$this->assertArrayHasKey('cpus', $specifications['body']['specifications'][0]);
$this->assertArrayHasKey('enabled', $specifications['body']['specifications'][0]);
$this->assertArrayHasKey('slug', $specifications['body']['specifications'][0]);
$site = $this->createSite([
'buildRuntime' => 'node-22',
'framework' => 'other',
'name' => 'Specs site',
'siteId' => ID::unique(),
'specification' => $specifications['body']['specifications'][0]['slug']
]);
$this->assertEquals(201, $site['headers']['status-code']);
$this->assertEquals($specifications['body']['specifications'][0]['slug'], $site['body']['specification']);
$site = $this->getSite($site['body']['$id']);
$this->assertEquals(200, $site['headers']['status-code']);
$this->assertEquals($specifications['body']['specifications'][0]['slug'], $site['body']['specification']);
$this->cleanupSite($site['body']['$id']);
$site = $this->createSite([
'buildRuntime' => 'node-22',
'framework' => 'other',
'name' => 'Specs site',
'siteId' => ID::unique(),
'specification' => 'cheap-please'
]);
$this->assertEquals(400, $site['headers']['status-code']);
}
public function testCreateSite(): void
{
/**