More stats in usage endpoints

This commit is contained in:
Damodar Lohani
2025-04-08 08:42:55 +00:00
parent a6d15d032f
commit ed332a776f
7 changed files with 171 additions and 14 deletions
@@ -84,6 +84,10 @@ class Get extends Base
str_replace(['{resourceType}', '{resourceInternalId}'], [RESOURCE_TYPE_SITES, $site->getInternalId()], METRIC_RESOURCE_TYPE_ID_EXECUTIONS_MB_SECONDS),
str_replace(['{resourceType}', '{resourceInternalId}'], [RESOURCE_TYPE_SITES, $site->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS_SUCCESS),
str_replace(['{resourceType}', '{resourceInternalId}'], [RESOURCE_TYPE_SITES, $site->getInternalId()], METRIC_RESOURCE_TYPE_ID_BUILDS_FAILED),
str_replace(['{siteInternalId}'], [$site->getInternalId()], METRIC_SITES_ID_REQUESTS),
str_replace(['{siteInternalId}'], [$site->getInternalId()], METRIC_SITES_ID_INBOUND),
str_replace(['{siteInternalId}'], [$site->getInternalId()], METRIC_SITES_ID_OUTBOUND),
];
Authorization::skip(function () use ($dbForProject, $days, $metrics, &$stats) {
@@ -137,13 +141,18 @@ class Get extends Base
'deploymentsTotal' => $usage[$metrics[0]]['total'],
'deploymentsStorageTotal' => $usage[$metrics[1]]['total'],
'buildsTotal' => $buildsTotal,
'buildsSuccess' => $usage[$metrics[9]]['total'],
'buildsFailed' => $usage[$metrics[10]]['total'],
'buildsStorageTotal' => $usage[$metrics[3]]['total'],
'buildsTimeTotal' => $buildsTimeTotal,
'buildsTimeAverage' => $buildsTotal === 0 ? 0 : (int) ($buildsTimeTotal / $buildsTotal),
'executionsTotal' => $usage[$metrics[5]]['total'],
'executionsTimeTotal' => $usage[$metrics[6]]['total'],
'buildsMbSecondsTotal' => $usage[$metrics[7]]['total'],
'executionsMbSecondsTotal' => $usage[$metrics[8]]['total'],
'buildsSuccessTotal' => $usage[$metrics[9]]['total'],
'buildsFailedTotal' => $usage[$metrics[10]]['total'],
'requestsTotal' => $usage[$metrics[11]]['total'],
'inboundTotal' => $usage[$metrics[12]]['total'],
'outboundTotal' => $usage[$metrics[13]]['total'],
'deployments' => $usage[$metrics[0]]['data'],
'deploymentsStorage' => $usage[$metrics[1]]['data'],
'builds' => $usage[$metrics[2]]['data'],
@@ -151,10 +160,13 @@ class Get extends Base
'buildsTime' => $usage[$metrics[4]]['data'],
'executions' => $usage[$metrics[5]]['data'],
'executionsTime' => $usage[$metrics[6]]['data'],
'buildsMbSecondsTotal' => $usage[$metrics[7]]['total'],
'buildsMbSeconds' => $usage[$metrics[7]]['data'],
'executionsMbSeconds' => $usage[$metrics[8]]['data'],
'executionsMbSecondsTotal' => $usage[$metrics[8]]['total']
'buildsSuccess' => $usage[$metrics[9]]['data'],
'buildsFailed' => $usage[$metrics[10]]['data'],
'requests' => $usage[$metrics[11]]['data'],
'inbound' => $usage[$metrics[12]]['data'],
'outbound' => $usage[$metrics[13]]['data'],
]), Response::MODEL_USAGE_SITE);
}
}
@@ -70,6 +70,11 @@ class XList extends Base
str_replace("{resourceType}", RESOURCE_TYPE_SITES, METRIC_RESOURCE_TYPE_EXECUTIONS_COMPUTE),
str_replace("{resourceType}", RESOURCE_TYPE_SITES, METRIC_RESOURCE_TYPE_BUILDS_MB_SECONDS),
str_replace("{resourceType}", RESOURCE_TYPE_SITES, METRIC_RESOURCE_TYPE_EXECUTIONS_MB_SECONDS),
str_replace("{resourceType}", RESOURCE_TYPE_SITES, METRIC_RESOURCE_TYPE_BUILDS_SUCCESS),
str_replace("{resourceType}", RESOURCE_TYPE_SITES, METRIC_RESOURCE_TYPE_BUILDS_FAILED),
METRIC_SITES_REQUESTS,
METRIC_SITES_INBOUND,
METRIC_SITES_OUTBOUND,
];
Authorization::skip(function () use ($dbForProject, $days, $metrics, &$stats) {
@@ -125,6 +130,13 @@ class XList extends Base
'buildsTimeTotal' => $usage[$metrics[5]]['total'],
'executionsTotal' => $usage[$metrics[6]]['total'],
'executionsTimeTotal' => $usage[$metrics[7]]['total'],
'buildsMbSecondsTotal' => $usage[$metrics[8]]['total'],
'executionsMbSecondsTotal' => $usage[$metrics[9]]['total'],
'buildsSuccessTotal' => $usage[$metrics[10]]['total'],
'buildsFailedTotal' => $usage[$metrics[11]]['total'],
'requestsTotal' => $usage[$metrics[12]]['total'],
'inboundTotal' => $usage[$metrics[13]]['total'],
'outboundTotal' => $usage[$metrics[14]]['total'],
'sites' => $usage[$metrics[0]]['data'],
'deployments' => $usage[$metrics[1]]['data'],
'deploymentsStorage' => $usage[$metrics[2]]['data'],
@@ -133,10 +145,13 @@ class XList extends Base
'buildsTime' => $usage[$metrics[5]]['data'],
'executions' => $usage[$metrics[6]]['data'],
'executionsTime' => $usage[$metrics[7]]['data'],
'buildsMbSecondsTotal' => $usage[$metrics[8]]['total'],
'buildsMbSeconds' => $usage[$metrics[8]]['data'],
'executionsMbSeconds' => $usage[$metrics[9]]['data'],
'executionsMbSecondsTotal' => $usage[$metrics[9]]['total'],
'buildsSuccess' => $usage[$metrics[10]]['data'],
'buildsFailed' => $usage[$metrics[11]]['data'],
'requests' => $usage[$metrics[12]]['data'],
'inbound' => $usage[$metrics[13]]['data'],
'outbound' => $usage[$metrics[14]]['data'],
]), Response::MODEL_USAGE_SITES);
}
}
@@ -34,13 +34,13 @@ class UsageFunction extends Model
'default' => 0,
'example' => 0,
])
->addRule('buildsSuccess', [
->addRule('buildsSuccessTotal', [
'type' => self::TYPE_INTEGER,
'description' => 'Total aggregated number of successful function builds.',
'default' => 0,
'example' => 0,
])
->addRule('buildsFailed', [
->addRule('buildsFailedTotal', [
'type' => self::TYPE_INTEGER,
'description' => 'Total aggregated number of failed function builds.',
'default' => 0,
@@ -151,6 +151,20 @@ class UsageFunction extends Model
'example' => [],
'array' => true
])
->addRule('buildsSuccess', [
'type' => Response::MODEL_METRIC,
'description' => 'Aggregated number of function mbSeconds per period.',
'default' => [],
'example' => [],
'array' => true
])
->addRule('buildsFailed', [
'type' => Response::MODEL_METRIC,
'description' => 'Aggregated number of function mbSeconds per period.',
'default' => [],
'example' => [],
'array' => true
])
;
}
@@ -97,6 +97,18 @@ class UsageFunctions extends Model
'example' => [],
'array' => true
])
->addRule('buildsSuccessTotal', [
'type' => self::TYPE_INTEGER,
'description' => 'Total aggregated number of successful function builds.',
'default' => 0,
'example' => 0,
])
->addRule('buildsFailedTotal', [
'type' => self::TYPE_INTEGER,
'description' => 'Total aggregated number of failed function builds.',
'default' => 0,
'example' => 0,
])
->addRule('builds', [
'type' => Response::MODEL_METRIC,
'description' => 'Aggregated number of functions build per period.',
@@ -146,6 +158,20 @@ class UsageFunctions extends Model
'example' => [],
'array' => true
])
->addRule('buildsSuccess', [
'type' => Response::MODEL_METRIC,
'description' => 'Aggregated number of function mbSeconds per period.',
'default' => [],
'example' => [],
'array' => true
])
->addRule('buildsFailed', [
'type' => Response::MODEL_METRIC,
'description' => 'Aggregated number of function mbSeconds per period.',
'default' => [],
'example' => [],
'array' => true
])
;
}
@@ -9,6 +9,47 @@ class UsageSite extends UsageFunction
public function __construct()
{
parent::__construct();
$this
->addRule('requestsTotal', [
'type' => self::TYPE_INTEGER,
'description' => 'Total aggregated number of sites.',
'default' => 0,
'example' => 0,
])
->addRule('requests', [
'type' => Response::MODEL_METRIC,
'description' => 'Aggregated number of sites per period.',
'default' => 0,
'example' => 0,
'array' => true
])
->addRule('inboundTotal', [
'type' => self::TYPE_INTEGER,
'description' => 'Total aggregated number of sites.',
'default' => 0,
'example' => 0,
])
->addRule('inbound', [
'type' => Response::MODEL_METRIC,
'description' => 'Aggregated number of sites per period.',
'default' => 0,
'example' => 0,
'array' => true
])
->addRule('outboundTotal', [
'type' => self::TYPE_INTEGER,
'description' => 'Total aggregated number of sites.',
'default' => 0,
'example' => 0,
])
->addRule('outbound', [
'type' => Response::MODEL_METRIC,
'description' => 'Aggregated number of sites per period.',
'default' => 0,
'example' => 0,
'array' => true
])
;
}
/**
@@ -25,6 +25,45 @@ class UsageSites extends UsageFunctions
'example' => 0,
'array' => true
])
->addRule('requestsTotal', [
'type' => self::TYPE_INTEGER,
'description' => 'Total aggregated number of sites.',
'default' => 0,
'example' => 0,
])
->addRule('requests', [
'type' => Response::MODEL_METRIC,
'description' => 'Aggregated number of sites per period.',
'default' => 0,
'example' => 0,
'array' => true
])
->addRule('inboundTotal', [
'type' => self::TYPE_INTEGER,
'description' => 'Total aggregated number of sites.',
'default' => 0,
'example' => 0,
])
->addRule('inbound', [
'type' => Response::MODEL_METRIC,
'description' => 'Aggregated number of sites per period.',
'default' => 0,
'example' => 0,
'array' => true
])
->addRule('outboundTotal', [
'type' => self::TYPE_INTEGER,
'description' => 'Total aggregated number of sites.',
'default' => 0,
'example' => 0,
])
->addRule('outbound', [
'type' => Response::MODEL_METRIC,
'description' => 'Aggregated number of sites per period.',
'default' => 0,
'example' => 0,
'array' => true
])
;
}
+16 -6
View File
@@ -1064,7 +1064,7 @@ class UsageTest extends Scope
);
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals(19, count($response['body']));
$this->assertEquals(22, count($response['body']));
$this->assertEquals('30d', $response['body']['range']);
$this->assertIsArray($response['body']['deployments']);
$this->assertIsArray($response['body']['deploymentsStorage']);
@@ -1089,7 +1089,7 @@ class UsageTest extends Scope
);
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals(21, count($response['body']));
$this->assertEquals(31, count($response['body']));
$this->assertEquals($response['body']['range'], '30d');
$this->assertIsArray($response['body']['functions']);
$this->assertIsArray($response['body']['deployments']);
@@ -1193,11 +1193,11 @@ class UsageTest extends Scope
);
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals(22, count($response['body']));
$this->assertEquals(30, count($response['body']));
$this->assertEquals('30d', $response['body']['range']);
$this->assertIsArray($response['body']['deployments']);
$this->assertEquals($deploymentsSuccess, $response['body']['buildsSuccess']);
$this->assertEquals($deploymentsFailed, $response['body']['buildsFailed']);
$this->assertEquals($deploymentsSuccess, $response['body']['buildsSuccessTotal']);
$this->assertEquals($deploymentsFailed, $response['body']['buildsFailedTotal']);
$this->assertIsArray($response['body']['deploymentsStorage']);
$this->assertIsNumeric($response['body']['deploymentsStorageTotal']);
$this->assertIsNumeric($response['body']['buildsMbSecondsTotal']);
@@ -1208,6 +1208,11 @@ class UsageTest extends Scope
$this->assertIsArray($response['body']['executions']);
$this->assertIsArray($response['body']['executionsTime']);
$this->assertIsArray($response['body']['executionsMbSeconds']);
$this->assertIsArray($response['body']['buildsSuccess']);
$this->assertIsArray($response['body']['buildsFailed']);
$this->assertIsArray($response['body']['requests']);
$this->assertIsArray($response['body']['inbound']);
$this->assertIsArray($response['body']['outbound']);
$this->assertEquals($executions, $response['body']['executions'][array_key_last($response['body']['executions'])]['value']);
$this->validateDates($response['body']['executions']);
$this->assertEquals($executionTime, $response['body']['executionsTime'][array_key_last($response['body']['executionsTime'])]['value']);
@@ -1220,7 +1225,7 @@ class UsageTest extends Scope
);
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals(21, count($response['body']));
$this->assertEquals(31, count($response['body']));
$this->assertEquals($response['body']['range'], '30d');
$this->assertIsArray($response['body']['sites']);
$this->assertIsArray($response['body']['deployments']);
@@ -1231,6 +1236,11 @@ class UsageTest extends Scope
$this->assertIsArray($response['body']['executions']);
$this->assertIsArray($response['body']['executionsTime']);
$this->assertIsArray($response['body']['executionsMbSeconds']);
$this->assertIsArray($response['body']['buildsSuccess']);
$this->assertIsArray($response['body']['buildsFailed']);
$this->assertIsArray($response['body']['requests']);
$this->assertIsArray($response['body']['inbound']);
$this->assertIsArray($response['body']['outbound']);
$this->assertEquals($executions, $response['body']['executions'][array_key_last($response['body']['executions'])]['value']);
$this->validateDates($response['body']['executions']);
$this->assertEquals($executionTime, $response['body']['executionsTime'][array_key_last($response['body']['executionsTime'])]['value']);