summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Hartmann <hartmann.eric@gmail.com>2018-07-18 12:44:28 +0200
committersonartech <sonartech@sonarsource.com>2018-07-24 09:31:49 +0200
commit3826a9205932325b420b0da43e23d52d531d5dc4 (patch)
treeb1550feb508d6a7d3ca29b784ec68000b0c7312d
parent84a883d19f373f06423f638dc7ca9beff589036e (diff)
downloadsonarqube-3826a9205932325b420b0da43e23d52d531d5dc4.tar.gz
sonarqube-3826a9205932325b420b0da43e23d52d531d5dc4.zip
SONARCLOUD-103 Introduce organizationUuid in loc calculation
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java7
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java1
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/measure/SumNclocDbQuery.java15
-rw-r--r--server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml37
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/measure/LiveMeasureDaoTest.java10
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/telemetry/TelemetryDataLoader.java7
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/ui/ws/MarketplaceAction.java7
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/telemetry/TelemetryDaemonTest.java3
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/ui/ws/MarketplaceActionTest.java3
9 files changed, 60 insertions, 30 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java
index dc07aa60d50..4f76a3cf800 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java
@@ -87,12 +87,13 @@ public class LiveMeasureDao implements Dao {
* If Main Branch = 100 LOCs and the "largest long-lived branch" is 120 LOCs, I'm expecting to consider the value 120.
* If Main Branch = 100 LOCs and the "largest long-lived branch" is 80 LOCs, I'm expecting to consider the value 100.
*/
- public long sumNclocOfBiggestLongLivingBranch(DbSession dbSession) {
- return sumNclocOfBiggestLongLivingBranch(dbSession, SumNclocDbQuery.builder().build());
+ public long sumNclocOfBiggestLongLivingBranch(DbSession dbSession, String organizationUuid) {
+ return sumNclocOfBiggestLongLivingBranch(dbSession, SumNclocDbQuery.builder().setOrganizationUuid(organizationUuid).build());
}
public long sumNclocOfBiggestLongLivingBranch(DbSession dbSession, SumNclocDbQuery dbQuery) {
- Long ncloc = mapper(dbSession).sumNclocOfBiggestLongLivingBranch(NCLOC_KEY, KeyType.BRANCH, BranchType.LONG, dbQuery.getProjectUuidToExclude());
+ Long ncloc = mapper(dbSession).sumNclocOfBiggestLongLivingBranch(
+ NCLOC_KEY, KeyType.BRANCH, BranchType.LONG, dbQuery.getOrganizationUuid(), dbQuery.getProjectUuidToExclude());
return ncloc == null ? 0L : ncloc;
}
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java
index ed3977d684b..a8901407637 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java
@@ -47,6 +47,7 @@ public interface LiveMeasureMapper {
@Param("ncloc") String nclocKey,
@Param("branch") KeyType branchOrPullRequest,
@Param("branchType") BranchType branchType,
+ @Param("organizationUuid") String organizationUuid,
@Nullable @Param("projectUuidToExclude") String projectUuidToExclude);
void insert(
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/SumNclocDbQuery.java b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/SumNclocDbQuery.java
index b9e3a502632..437ce88cee4 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/SumNclocDbQuery.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/SumNclocDbQuery.java
@@ -22,12 +22,16 @@ package org.sonar.db.measure;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
+import static com.google.common.base.Preconditions.checkNotNull;
+
public class SumNclocDbQuery {
private final String projectUuidToExclude;
+ private final String organizationUuid;
public SumNclocDbQuery(Builder builder) {
projectUuidToExclude = builder.projectUuidToExclude;
+ organizationUuid = builder.organizationUuid;
}
@CheckForNull
@@ -35,12 +39,17 @@ public class SumNclocDbQuery {
return projectUuidToExclude;
}
+ public String getOrganizationUuid() {
+ return organizationUuid;
+ }
+
public static Builder builder() {
return new Builder();
}
public static class Builder {
private String projectUuidToExclude;
+ private String organizationUuid;
private Builder() {
// to enforce use of builder()
@@ -51,7 +60,13 @@ public class SumNclocDbQuery {
return this;
}
+ public Builder setOrganizationUuid(String organizationUuid) {
+ this.organizationUuid = organizationUuid;
+ return this;
+ }
+
public SumNclocDbQuery build() {
+ checkNotNull(organizationUuid);
return new SumNclocDbQuery(this);
}
}
diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml
index 999aa79aec9..fc89e3ac806 100644
--- a/server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml
+++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/measure/LiveMeasureMapper.xml
@@ -36,24 +36,25 @@
<select id="sumNclocOfBiggestLongLivingBranch" parameterType="map" resultType="long">
select sum(sumncloc.maxncloc) from (
- select b.project_uuid as projectUuid, max(lm.value) as maxncloc
- from live_measures lm
- inner join metrics m on m.id = lm.metric_id
- inner join projects p on p.uuid = lm.component_uuid
- inner join project_branches b on b.uuid = p.uuid
- <where>
- m.name = #{ncloc, jdbcType=VARCHAR}
- and p.enabled = ${_true}
- and p.scope = 'PRJ'
- and p.qualifier = 'TRK'
- and p.copy_component_uuid is null
- and b.branch_type = #{branchType, jdbcType=VARCHAR}
- and b.key_type = #{branch, jdbcType=VARCHAR}
- <if test="projectUuidToExclude != null">
- and b.project_uuid &lt;&gt; #{projectUuidToExclude,jdbcType=VARCHAR}
- </if>
- </where>
- group by b.project_uuid
+ select b.project_uuid as projectUuid, max(lm.value) as maxncloc
+ from live_measures lm
+ inner join metrics m on m.id = lm.metric_id
+ inner join projects p on p.uuid = lm.component_uuid
+ inner join project_branches b on b.uuid = p.uuid
+ <where>
+ m.name = #{ncloc, jdbcType=VARCHAR}
+ and p.enabled = ${_true}
+ and p.scope = 'PRJ'
+ and p.qualifier = 'TRK'
+ and p.copy_component_uuid is null
+ and p.organization_uuid = #{organizationUuid, jdbcType=VARCHAR}
+ and b.branch_type = #{branchType, jdbcType=VARCHAR}
+ and b.key_type = #{branch, jdbcType=VARCHAR}
+ <if test="projectUuidToExclude != null">
+ and b.project_uuid &lt;&gt; #{projectUuidToExclude,jdbcType=VARCHAR}
+ </if>
+ </where>
+ group by b.project_uuid
) sumncloc
</select>
diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/measure/LiveMeasureDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/measure/LiveMeasureDaoTest.java
index 51d83d6d795..5100e6791be 100644
--- a/server/sonar-db-dao/src/test/java/org/sonar/db/measure/LiveMeasureDaoTest.java
+++ b/server/sonar-db-dao/src/test/java/org/sonar/db/measure/LiveMeasureDaoTest.java
@@ -219,7 +219,7 @@ public class LiveMeasureDaoTest {
db.measures().insertLiveMeasure(projectWithLinesButNoLoc, lines, m -> m.setValue(365d));
db.measures().insertLiveMeasure(projectWithLinesButNoLoc, ncloc, m -> m.setValue(0d));
- long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession());
+ long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession(), organization.getUuid());
assertThat(result).isEqualTo(10L + 200L);
}
@@ -229,7 +229,7 @@ public class LiveMeasureDaoTest {
db.measures().insertMetric(m -> m.setKey("ncloc").setValueType(INT.toString()));
db.measures().insertMetric(m -> m.setKey("lines").setValueType(INT.toString()));
- long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession());
+ long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession(), db.getDefaultOrganization().getUuid());
assertThat(result).isEqualTo(0L);
}
@@ -252,7 +252,11 @@ public class LiveMeasureDaoTest {
db.measures().insertLiveMeasure(projectToExclude, ncloc, m -> m.setValue(300d));
db.measures().insertLiveMeasure(projectToExcludeBranch, ncloc, m -> m.setValue(400d));
- long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession(), SumNclocDbQuery.builder().setProjectUuidToExclude(projectToExclude.uuid()).build());
+ SumNclocDbQuery query = SumNclocDbQuery.builder()
+ .setOrganizationUuid(organization.getUuid())
+ .setProjectUuidToExclude(projectToExclude.uuid())
+ .build();
+ long result = underTest.sumNclocOfBiggestLongLivingBranch(db.getSession(), query);
assertThat(result).isEqualTo(10L + 200L);
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/telemetry/TelemetryDataLoader.java b/server/sonar-server/src/main/java/org/sonar/server/telemetry/TelemetryDataLoader.java
index 3fb5eec7733..b0b9d3a4e56 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/telemetry/TelemetryDataLoader.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/telemetry/TelemetryDataLoader.java
@@ -34,6 +34,7 @@ import org.sonar.db.DbSession;
import org.sonar.server.es.SearchOptions;
import org.sonar.server.measure.index.ProjectMeasuresIndex;
import org.sonar.server.measure.index.ProjectMeasuresStatistics;
+import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.telemetry.TelemetryData.Database;
import org.sonar.server.user.index.UserIndex;
import org.sonar.server.user.index.UserQuery;
@@ -46,15 +47,17 @@ public class TelemetryDataLoader {
private final UserIndex userIndex;
private final ProjectMeasuresIndex projectMeasuresIndex;
private final PlatformEditionProvider editionProvider;
+ private final DefaultOrganizationProvider defaultOrganizationProvider;
public TelemetryDataLoader(Server server, DbClient dbClient, PluginRepository pluginRepository, UserIndex userIndex, ProjectMeasuresIndex projectMeasuresIndex,
- PlatformEditionProvider editionProvider) {
+ PlatformEditionProvider editionProvider, DefaultOrganizationProvider defaultOrganizationProvider) {
this.server = server;
this.dbClient = dbClient;
this.pluginRepository = pluginRepository;
this.userIndex = userIndex;
this.projectMeasuresIndex = projectMeasuresIndex;
this.editionProvider = editionProvider;
+ this.defaultOrganizationProvider = defaultOrganizationProvider;
}
public TelemetryData load() {
@@ -73,7 +76,7 @@ public class TelemetryDataLoader {
try (DbSession dbSession = dbClient.openSession(false)) {
data.setDatabase(loadDatabaseMetadata(dbSession));
data.setUsingBranches(dbClient.branchDao().hasNonMainBranches(dbSession));
- data.setNcloc(dbClient.liveMeasureDao().sumNclocOfBiggestLongLivingBranch(dbSession));
+ data.setNcloc(dbClient.liveMeasureDao().sumNclocOfBiggestLongLivingBranch(dbSession, defaultOrganizationProvider.get().getUuid()));
}
return data.build();
diff --git a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/MarketplaceAction.java b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/MarketplaceAction.java
index 9d20353d4f8..da0b55884aa 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/MarketplaceAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/MarketplaceAction.java
@@ -25,6 +25,7 @@ import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
+import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.user.UserSession;
import org.sonarqube.ws.Navigation;
@@ -34,11 +35,13 @@ public class MarketplaceAction implements NavigationWsAction {
private final UserSession userSession;
private final Server server;
private final DbClient dbClient;
+ private final DefaultOrganizationProvider defaultOrganizationProvider;
- public MarketplaceAction(UserSession userSession, Server server, DbClient dbClient) {
+ public MarketplaceAction(UserSession userSession, Server server, DbClient dbClient, DefaultOrganizationProvider defaultOrganizationProvider) {
this.userSession = userSession;
this.server = server;
this.dbClient = dbClient;
+ this.defaultOrganizationProvider = defaultOrganizationProvider;
}
@Override
@@ -67,7 +70,7 @@ public class MarketplaceAction implements NavigationWsAction {
private long computeNcloc() {
try (DbSession dbSession = dbClient.openSession(false)) {
- return dbClient.liveMeasureDao().sumNclocOfBiggestLongLivingBranch(dbSession);
+ return dbClient.liveMeasureDao().sumNclocOfBiggestLongLivingBranch(dbSession, defaultOrganizationProvider.get().getUuid());
}
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/telemetry/TelemetryDaemonTest.java b/server/sonar-server/src/test/java/org/sonar/server/telemetry/TelemetryDaemonTest.java
index f13ed128e6d..e64eb8cc792 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/telemetry/TelemetryDaemonTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/telemetry/TelemetryDaemonTest.java
@@ -45,6 +45,7 @@ import org.sonar.db.metric.MetricDto;
import org.sonar.server.es.EsTester;
import org.sonar.server.measure.index.ProjectMeasuresIndex;
import org.sonar.server.measure.index.ProjectMeasuresIndexer;
+import org.sonar.server.organization.DefaultOrganizationProviderImpl;
import org.sonar.server.property.InternalProperties;
import org.sonar.server.property.MapInternalProperties;
import org.sonar.server.tester.UserSessionRule;
@@ -102,7 +103,7 @@ public class TelemetryDaemonTest {
private PlatformEditionProvider editionProvider = mock(PlatformEditionProvider.class);
private final TelemetryDataLoader dataLoader = new TelemetryDataLoader(server, db.getDbClient(), pluginRepository, new UserIndex(es.client(), system2),
- new ProjectMeasuresIndex(es.client(), null, system2), editionProvider);
+ new ProjectMeasuresIndex(es.client(), null, system2), editionProvider, new DefaultOrganizationProviderImpl(db.getDbClient()));
private TelemetryDaemon underTest = new TelemetryDaemon(dataLoader, client, settings.asConfig(), internalProperties, system2);
@After
diff --git a/server/sonar-server/src/test/java/org/sonar/server/ui/ws/MarketplaceActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ui/ws/MarketplaceActionTest.java
index ece68f09742..873e0fc9878 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/ui/ws/MarketplaceActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/ui/ws/MarketplaceActionTest.java
@@ -32,6 +32,7 @@ import org.sonar.db.component.ComponentDto;
import org.sonar.db.metric.MetricDto;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.UnauthorizedException;
+import org.sonar.server.organization.DefaultOrganizationProviderImpl;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.WsActionTester;
@@ -57,7 +58,7 @@ public class MarketplaceActionTest {
private Server server = mock(Server.class);
private DbClient dbClient = db.getDbClient();
- private MarketplaceAction underTest = new MarketplaceAction(userSessionRule, server, dbClient);
+ private MarketplaceAction underTest = new MarketplaceAction(userSessionRule, server, dbClient, new DefaultOrganizationProviderImpl(dbClient));
private WsActionTester ws = new WsActionTester(underTest);