1
0
Fork 0
mirror of synced 2024-06-29 19:50:26 +12:00

Update response filters for usage

This commit is contained in:
Steven Nguyen 2022-09-12 22:15:13 +00:00
parent 79b57cf696
commit 1d7c25354a
2 changed files with 512 additions and 18 deletions

View file

@ -152,8 +152,23 @@ class V15 extends Filter
case Response::MODEL_TOKEN:
$parsedResponse = $this->parseDatetimeAttributes($parsedResponse, ['$createdAt', 'expire']);
break;
case Response::MODEL_USAGE_DATABASES:
$parsedResponse = $this->parseUsageDatabases($parsedResponse);
break;
case Response::MODEL_USAGE_DATABASE:
$parsedResponse = $this->parseUsageDatabase($parsedResponse);
break;
case Response::MODEL_USAGE_COLLECTION:
$parsedResponse = $this->parseUsageCollection($parsedResponse);
break;
case Response::MODEL_USAGE_USERS:
$parsedResponse = $this->parseUsageUsers($parsedResponse);
break;
case Response::MODEL_USAGE_BUCKETS:
$parsedResponse = $this->parseUsageBuckets($parsedResponse);
break;
case Response::MODEL_USAGE_FUNCTIONS:
$parsedResponse = $this->parseModelUsageFunc($parsedResponse);
$parsedResponse = $this->parseUsageFuncs($parsedResponse);
break;
case Response::MODEL_USAGE_PROJECT:
$parsedResponse = $this->parseUsageProject($parsedResponse);
@ -357,7 +372,114 @@ class V15 extends Filter
return $content;
}
private function parseModelUsageFunc($content)
private function parseUsage($content, $keys)
{
foreach ($keys as $key) {
$data = [];
foreach ($content[$key] as $metric) {
$data[] = $this->parseMetric($metric);
}
$content[$key] = $data;
}
return $content;
}
private function parseUsageDatabases($content)
{
$keys = [
'databasesCount',
'documentsCount',
'collectionsCount',
'databasesCreate',
'databasesRead',
'databasesUpdate',
'databasesDelete',
'documentsCreate',
'documentsRead',
'documentsUpdate',
'documentsDelete',
'collectionsCreate',
'collectionsRead',
'collectionsUpdate',
'collectionsDelete',
];
$content = $this->parseUsage($content, $keys);
return $content;
}
private function parseUsageDatabase($content)
{
$keys = [
'documentsCount',
'collectionsCount',
'documentsCreate',
'documentsRead',
'documentsUpdate',
'documentsDelete',
'collectionsCreate',
'collectionsRead',
'collectionsUpdate',
'collectionsDelete',
];
$content = $this->parseUsage($content, $keys);
return $content;
}
private function parseUsageCollection($content)
{
$keys = [
'documentsCount',
'documentsCreate',
'documentsRead',
'documentsUpdate',
'documentsDelete',
];
$content = $this->parseUsage($content, $keys);
return $content;
}
private function parseUsageUsers($content)
{
$keys = [
'usersCount',
'usersCreate',
'usersRead',
'usersUpdate',
'usersDelete',
'sessionsCreate',
'sessionsProviderCreate',
'sessionsDelete',
];
$content = $this->parseUsage($content, $keys);
return $content;
}
private function parseUsageBuckets($content)
{
$keys = [
'filesCount',
'filesStorage',
'filesCreate',
'filesRead',
'filesUpdate',
'filesDelete',
];
$content = $this->parseUsage($content, $keys);
return $content;
}
private function parseUsageFuncs($content)
{
$mapping = [
'executionsTotal' => 'functionsExecutions',
@ -393,7 +515,7 @@ class V15 extends Filter
$content['functions'] = $content['executions'];
unset($content['executions']);
$usage = [
$keys = [
'collections',
'documents',
'functions',
@ -403,13 +525,7 @@ class V15 extends Filter
'users',
];
foreach ($usage as $name) {
$data = [];
foreach ($content[$name] as $metric) {
$data[] = $this->parseMetric($metric);
}
$content[$name] = $data;
}
$content = $this->parseUsage($content, $keys);
return $content;
}
@ -419,7 +535,7 @@ class V15 extends Filter
$content['filesStorage'] = $content['storage'];
unset($content['storage']);
$usage = [
$keys = [
'bucketsCount',
'bucketsCreate',
'bucketsDelete',
@ -433,13 +549,7 @@ class V15 extends Filter
'filesUpdate',
];
foreach ($usage as $name) {
$data = [];
foreach ($content[$name] as $metric) {
$data[] = $this->parseMetric($metric);
}
$content[$name] = $data;
}
$content = $this->parseUsage($content, $keys);
return $content;
}

View file

@ -1103,6 +1103,390 @@ class V15Test extends TestCase
$this->assertEquals($expected, $result);
}
public function usageDatabasesProvider(): array
{
return [
'basic usage databases' => [
[
'databasesCount' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsCount' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'collectionsCount' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'databasesCreate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'databasesRead' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'databasesUpdate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'databasesDelete' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsCreate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsRead' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsUpdate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsDelete' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'collectionsCreate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'collectionsRead' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'collectionsUpdate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'collectionsDelete' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
],
[
'databasesCount' => [
['date' => 1592981250],
],
'documentsCount' => [
['date' => 1592981250],
],
'collectionsCount' => [
['date' => 1592981250],
],
'databasesCreate' => [
['date' => 1592981250],
],
'databasesRead' => [
['date' => 1592981250],
],
'databasesUpdate' => [
['date' => 1592981250],
],
'databasesDelete' => [
['date' => 1592981250],
],
'documentsCreate' => [
['date' => 1592981250],
],
'documentsRead' => [
['date' => 1592981250],
],
'documentsUpdate' => [
['date' => 1592981250],
],
'documentsDelete' => [
['date' => 1592981250],
],
'collectionsCreate' => [
['date' => 1592981250],
],
'collectionsRead' => [
['date' => 1592981250],
],
'collectionsUpdate' => [
['date' => 1592981250],
],
'collectionsDelete' => [
['date' => 1592981250],
],
],
],
];
}
/**
* @dataProvider usageDatabasesProvider
*/
public function testUsageDatabases(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_DATABASES;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageDatabaseProvider(): array
{
return [
'basic usage database' => [
[
'documentsCount' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'collectionsCount' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsCreate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsRead' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsUpdate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsDelete' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'collectionsCreate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'collectionsRead' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'collectionsUpdate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'collectionsDelete' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
],
[
'documentsCount' => [
['date' => 1592981250],
],
'collectionsCount' => [
['date' => 1592981250],
],
'documentsCreate' => [
['date' => 1592981250],
],
'documentsRead' => [
['date' => 1592981250],
],
'documentsUpdate' => [
['date' => 1592981250],
],
'documentsDelete' => [
['date' => 1592981250],
],
'collectionsCreate' => [
['date' => 1592981250],
],
'collectionsRead' => [
['date' => 1592981250],
],
'collectionsUpdate' => [
['date' => 1592981250],
],
'collectionsDelete' => [
['date' => 1592981250],
],
],
],
];
}
/**
* @dataProvider usageDatabaseProvider
*/
public function testUsageDatabase(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_DATABASE;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageCollectionProvider(): array
{
return [
'basic usage collection' => [
[
'documentsCount' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsCreate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsRead' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsUpdate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'documentsDelete' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
],
[
'documentsCount' => [
['date' => 1592981250],
],
'documentsCreate' => [
['date' => 1592981250],
],
'documentsRead' => [
['date' => 1592981250],
],
'documentsUpdate' => [
['date' => 1592981250],
],
'documentsDelete' => [
['date' => 1592981250],
],
],
],
];
}
/**
* @dataProvider usageCollectionProvider
*/
public function testUsageCollection(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_COLLECTION;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageUsersProvider(): array
{
return [
'basic usage users' => [
[
'usersCount' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'usersCreate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'usersRead' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'usersUpdate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'usersDelete' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'sessionsCreate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'sessionsProviderCreate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'sessionsDelete' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
],
[
'usersCount' => [
['date' => 1592981250],
],
'usersCreate' => [
['date' => 1592981250],
],
'usersRead' => [
['date' => 1592981250],
],
'usersUpdate' => [
['date' => 1592981250],
],
'usersDelete' => [
['date' => 1592981250],
],
'sessionsCreate' => [
['date' => 1592981250],
],
'sessionsProviderCreate' => [
['date' => 1592981250],
],
'sessionsDelete' => [
['date' => 1592981250],
],
],
],
];
}
/**
* @dataProvider usageUsersProvider
*/
public function testUsageUsers(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_USERS;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageBucketsProvider(): array
{
return [
'basic usage buckets' => [
[
'filesCount' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'filesStorage' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'filesCreate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'filesRead' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'filesUpdate' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
'filesDelete' => [
['date' => '2020-06-24T06:47:30.000Z'],
],
],
[
'filesCount' => [
['date' => 1592981250],
],
'filesStorage' => [
['date' => 1592981250],
],
'filesCreate' => [
['date' => 1592981250],
],
'filesRead' => [
['date' => 1592981250],
],
'filesUpdate' => [
['date' => 1592981250],
],
'filesDelete' => [
['date' => 1592981250],
],
],
],
];
}
/**
* @dataProvider usageBucketsProvider
*/
public function testUsageBuckets(array $content, array $expected): void
{
$model = Response::MODEL_USAGE_BUCKETS;
$result = $this->filter->parse($content, $model);
$this->assertEquals($expected, $result);
}
public function usageFunctionsProvider(): array
{
return [