Alternative less expensive stats service. (#549)

* Alternative less expensive stats service.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Fix NEP. Address is optional.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* revert null check,

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Specified return object.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Add tenant count overall.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>
This commit is contained in:
Kai Zimmermann
2017-06-21 21:54:22 +02:00
committed by GitHub
parent b6d73c578f
commit ce31fbaa85
6 changed files with 88 additions and 46 deletions

View File

@@ -30,6 +30,7 @@ import org.eclipse.hawkbit.repository.model.DistributionSetType;
import org.eclipse.hawkbit.repository.model.SoftwareModuleType;
import org.eclipse.hawkbit.repository.model.TenantMetaData;
import org.eclipse.hawkbit.repository.report.model.SystemUsageReport;
import org.eclipse.hawkbit.repository.report.model.SystemUsageReportWithTenants;
import org.eclipse.hawkbit.security.SystemSecurityContext;
import org.eclipse.hawkbit.tenancy.TenantAware;
import org.eclipse.persistence.config.PersistenceUnitProperties;
@@ -145,15 +146,20 @@ public class JpaSystemManagement implements CurrentTenantCacheKeyGenerator, Syst
final Long actions = (Long) entityManager.createNativeQuery("SELECT COUNT(id) FROM sp_action")
.getSingleResult();
final SystemUsageReport result = new SystemUsageReport(targets, artifacts, actions,
sumOfArtifacts.setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
return new SystemUsageReportWithTenants(targets, artifacts, actions,
sumOfArtifacts.setScale(0, BigDecimal.ROUND_HALF_UP).longValue(), tenantMetaDataRepository.count());
}
@Override
public SystemUsageReportWithTenants getSystemUsageStatisticsWithTenants() {
final SystemUsageReportWithTenants result = (SystemUsageReportWithTenants) getSystemUsageStatistics();
usageStatsPerTenant(result);
return result;
}
private void usageStatsPerTenant(final SystemUsageReport report) {
private void usageStatsPerTenant(final SystemUsageReportWithTenants report) {
final List<String> tenants = findTenants(new PageRequest(0, MAX_TENANTS_QUERY)).getContent();
tenants.forEach(tenant -> tenantAware.runAsTenant(tenant, () -> {

View File

@@ -51,7 +51,7 @@ public class SystemManagementTest extends AbstractJpaIntegrationTest {
assertThat(systemManagement.getSystemUsageStatistics().getOverallArtifactVolumeInBytes()).isEqualTo(1234 * 2);
// per tenant data
final List<TenantUsage> tenants = systemManagement.getSystemUsageStatistics().getTenants();
final List<TenantUsage> tenants = systemManagement.getSystemUsageStatisticsWithTenants().getTenants();
assertThat(tenants).hasSize(3);
assertThat(tenants).containsOnly(new TenantUsage("default"),
new TenantUsage("tenant0").setArtifacts(1).setOverallArtifactVolumeInBytes(1234),
@@ -69,10 +69,11 @@ public class SystemManagementTest extends AbstractJpaIntegrationTest {
assertThat(systemManagement.getSystemUsageStatistics().getOverallActions()).isEqualTo(0);
// per tenant data
final List<TenantUsage> tenants = systemManagement.getSystemUsageStatistics().getTenants();
final List<TenantUsage> tenants = systemManagement.getSystemUsageStatisticsWithTenants().getTenants();
assertThat(tenants).hasSize(3);
assertThat(tenants).containsOnly(new TenantUsage("default"), new TenantUsage("tenant0").setTargets(100),
new TenantUsage("tenant1").setTargets(100));
}
@Test
@@ -85,7 +86,7 @@ public class SystemManagementTest extends AbstractJpaIntegrationTest {
assertThat(systemManagement.getSystemUsageStatistics().getOverallActions()).isEqualTo(400);
// per tenant data
final List<TenantUsage> tenants = systemManagement.getSystemUsageStatistics().getTenants();
final List<TenantUsage> tenants = systemManagement.getSystemUsageStatisticsWithTenants().getTenants();
assertThat(tenants).hasSize(3);
assertThat(tenants).containsOnly(new TenantUsage("default"),
new TenantUsage("tenant0").setTargets(100).setActions(200),