]> source.dussan.org Git - sonarqube.git/commitdiff
CODEFIX-184 send ai suggestion enabled/disabled project count telemetry (#12228)
authorSerhat Yenican <104850907+serhat-yenican-sonarsource@users.noreply.github.com>
Tue, 12 Nov 2024 14:56:31 +0000 (15:56 +0100)
committersonartech <sonartech@sonarsource.com>
Tue, 19 Nov 2024 20:02:53 +0000 (20:02 +0000)
server/sonar-db-dao/src/it/java/org/sonar/db/project/ProjectDaoIT.java
server/sonar-db-dao/src/main/java/org/sonar/db/project/ProjectDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/project/ProjectMapper.java
server/sonar-db-dao/src/main/resources/org/sonar/db/project/ProjectMapper.xml

index 6de21b9cf7dc6ab73e5099bc602822a4a81f9ba8..228bb206b349d6a2d2f8e5ea6ecbd931b7d8a56e 100644 (file)
@@ -38,6 +38,7 @@ import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 import org.sonar.api.impl.utils.AlwaysIncreasingSystem2;
 import org.sonar.api.utils.System2;
+import org.sonar.db.DbSession;
 import org.sonar.db.DbTester;
 import org.sonar.db.Pagination;
 import org.sonar.db.audit.AuditPersister;
@@ -314,7 +315,7 @@ class ProjectDaoIT {
   }
 
   @ParameterizedTest
-  @ValueSource(booleans = { true, false })
+  @ValueSource(booleans = {true, false})
   void update_aiCodeFixEnabledForAllProjects(boolean aiCodeFixEnablement) {
     ProjectDto dto1 = createProject("o1", "p1").setAiCodeFixEnabled(true);
     ProjectDto dto2 = createProject("o1", "p2");
@@ -484,6 +485,23 @@ class ProjectDaoIT {
     assertThat(projectDao.countProjects(db.getSession())).isEqualTo(10);
   }
 
+  @Test
+  void countProjects_by_ai_codefix_enablement() {
+    var dto1 = createProject("o1", "p1").setAiCodeFixEnabled(true);
+    var dto2 = createProject("o1", "p2");
+    var dto3 = createProject("o1", "p3");
+
+    DbSession dbSession = db.getSession();
+
+    projectDao.insert(dbSession, dto1);
+    projectDao.insert(dbSession, dto2);
+    projectDao.insert(dbSession, dto3);
+
+    assertThat(projectDao.countProjects(db.getSession())).isEqualTo(3);
+    assertThat(projectDao.countAiCodeFixEnabledProjects(db.getSession())).isEqualTo(1);
+    assertThat(projectDao.countAiCodeFixDisabledProjects(db.getSession())).isEqualTo(2);
+  }
+
   private void assertProject(ProjectDto dto, String name, String kee, String uuid, String desc, @Nullable String tags, boolean isPrivate) {
     assertProject(dto, name, kee, uuid, desc, tags, isPrivate, false);
   }
index 876c8a0ff28335ac3e0627beb9c07c92f2bec487..7b8583787c6c1a4a81af70b8b9d5d1e9a92c8651 100644 (file)
@@ -159,4 +159,12 @@ public class ProjectDao implements Dao {
   public int countProjects(DbSession session) {
     return mapper(session).countProjects();
   }
+
+  public int countAiCodeFixEnabledProjects(DbSession session) {
+    return mapper(session).countProjectsByAiCodeFixEnablement(true);
+  }
+
+  public int countAiCodeFixDisabledProjects(DbSession session) {
+    return mapper(session).countProjectsByAiCodeFixEnablement(false);
+  }
 }
index 4b899aab9027a5433ffa0507d58e42e5398fa944..e994de456f650e6b317054ffb1cbd0ad8dbe3263 100644 (file)
@@ -77,4 +77,6 @@ public interface ProjectMapper {
   int countIndexedProjects();
 
   int countProjects();
+
+  int countProjectsByAiCodeFixEnablement(@Param("aiCodeFixEnabled") boolean aiCodeFixEnabled);
 }
index aa87a5f8900a27aabc50acbcbe64732c7d1fad38..3ca1ab6709a5dc99661e43b9f4c041572a361409 100644 (file)
     where p.qualifier = 'TRK'
   </select>
 
+  <select id="countProjectsByAiCodeFixEnablement" resultType="int">
+    select count(p.uuid)
+    from projects p
+    where
+    p.qualifier = 'TRK'
+    and ai_code_fix_enabled = #{aiCodeFixEnabled,jdbcType=BOOLEAN}
+  </select>
+
 </mapper>