]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-10597 Update CE_QUEUE#SUBMITTER_LOGIN to SUBMITTER_UUID
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Wed, 9 May 2018 14:15:13 +0000 (16:15 +0200)
committerSonarTech <sonartech@sonarsource.com>
Wed, 23 May 2018 18:20:48 +0000 (20:20 +0200)
29 files changed:
server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeWorkerImpl.java
server/sonar-ce/src/test/java/org/sonar/ce/queue/InternalCeQueueImplTest.java
server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeWorkerImplTest.java
server/sonar-db-core/src/main/resources/org/sonar/db/version/schema-h2.ddl
server/sonar-db-dao/src/main/java/org/sonar/db/ce/CeActivityDto.java
server/sonar-db-dao/src/main/java/org/sonar/db/ce/CeQueueDto.java
server/sonar-db-dao/src/main/resources/org/sonar/db/ce/CeQueueMapper.xml
server/sonar-db-dao/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/ce/CeQueueDaoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/ce/CeQueueDtoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/ce/CeQueueTesting.java
server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoTest.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/DbVersion72.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/RenameSubmitterLoginToSubmitterUuidOnTableCeQueue.java [new file with mode: 0644]
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v72/DbVersion72Test.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v72/RenameSubmitterLoginToSubmitterUuidOnTableCeQueueTest.java [new file with mode: 0644]
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/RenameSubmitterLoginToSubmitterUuidOnTableCeQueueTest/ce_queue.sql [new file with mode: 0644]
server/sonar-server/src/main/java/org/sonar/ce/queue/CeQueueImpl.java
server/sonar-server/src/main/java/org/sonar/ce/queue/CeTask.java
server/sonar-server/src/main/java/org/sonar/ce/queue/CeTaskSubmit.java
server/sonar-server/src/main/java/org/sonar/server/ce/ws/TaskFormatter.java
server/sonar-server/src/main/java/org/sonar/server/computation/queue/ReportSubmitter.java
server/sonar-server/src/test/java/org/sonar/ce/queue/CeQueueImplTest.java
server/sonar-server/src/test/java/org/sonar/ce/queue/CeTaskTest.java
server/sonar-server/src/test/java/org/sonar/server/ce/ws/CancelActionTest.java
server/sonar-server/src/test/java/org/sonar/server/ce/ws/SubmitActionTest.java
server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskActionTest.java
server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskFormatterTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/queue/ReportSubmitterTest.java

index 3f609e1ca3b2a20651f35d2417da32c03dfba125..bf308183aeeeb5f1c0b6e0fd7f66bec2ec81b52c 100644 (file)
@@ -194,7 +194,7 @@ public class CeWorkerImpl implements CeWorker {
       .addContext("project", task.getComponentKey())
       .addContext("type", task.getType())
       .addContext("id", task.getUuid());
-    String submitterLogin = task.getSubmitterLogin();
+    String submitterLogin = task.getSubmitterUuid();
     if (submitterLogin != null) {
       profiler.addContext("submitter", submitterLogin);
     }
index 6c20fa9084013af40bc0650c97cb231e8e8ab5d9..1aab3f25bfc45f4db57ed083d6a757fcf09840f9 100644 (file)
@@ -605,7 +605,7 @@ public class InternalCeQueueImplTest {
       assertThat(task.getComponentKey()).isEqualTo(componentDto.getDbKey());
       assertThat(task.getComponentName()).isEqualTo(componentDto.name());
     }
-    assertThat(task.getSubmitterLogin()).isEqualTo(taskSubmit.getSubmitterLogin());
+    assertThat(task.getSubmitterUuid()).isEqualTo(taskSubmit.getSubmitterUuid());
   }
 
   private void verifyCeQueueDtoForTaskSubmit(CeTaskSubmit taskSubmit) {
@@ -614,7 +614,7 @@ public class InternalCeQueueImplTest {
     CeQueueDto dto = queueDto.get();
     assertThat(dto.getTaskType()).isEqualTo(taskSubmit.getType());
     assertThat(dto.getComponentUuid()).isEqualTo(taskSubmit.getComponentUuid());
-    assertThat(dto.getSubmitterLogin()).isEqualTo(taskSubmit.getSubmitterLogin());
+    assertThat(dto.getSubmitterUuid()).isEqualTo(taskSubmit.getSubmitterUuid());
     assertThat(dto.getCreatedAt()).isEqualTo(dto.getUpdatedAt()).isNotNull();
   }
 
@@ -630,11 +630,11 @@ public class InternalCeQueueImplTest {
     return createTaskSubmit(type, null, null);
   }
 
-  private CeTaskSubmit createTaskSubmit(String type, @Nullable String componentUuid, @Nullable String submitterLogin) {
+  private CeTaskSubmit createTaskSubmit(String type, @Nullable String componentUuid, @Nullable String submitterUuid) {
     CeTaskSubmit.Builder submission = underTest.prepareSubmit();
     submission.setType(type);
     submission.setComponentUuid(componentUuid);
-    submission.setSubmitterLogin(submitterLogin);
+    submission.setSubmitterUuid(submitterUuid);
     return submission.build();
   }
 
index eb9e23c3894e913197e24af0b9b71827322b581d..5701b2f54d79a8826571e12d04e500e044fa5555 100644 (file)
@@ -507,7 +507,7 @@ public class CeWorkerImplTest {
       .setOrganizationUuid("org1")
       .setUuid("TASK_1").setType(CeTaskTypes.REPORT)
       .setComponentUuid("PROJECT_1")
-      .setSubmitterLogin(submitterLogin)
+      .setSubmitterUuid(submitterLogin)
       .build();
   }
 
index 62d8774d7fe6d554f31c29210f5cf28f72ae3b7a..99ad46f3a05c478bc91bc9660aafe2b7f4efcd7d 100644 (file)
@@ -634,7 +634,7 @@ CREATE TABLE "CE_QUEUE" (
   "TASK_TYPE" VARCHAR(15) NOT NULL,
   "COMPONENT_UUID" VARCHAR(40) NULL,
   "STATUS" VARCHAR(15) NOT NULL,
-  "SUBMITTER_LOGIN" VARCHAR(255) NULL,
+  "SUBMITTER_UUID" VARCHAR(255) NULL,
   "WORKER_UUID" VARCHAR(40) NULL,
   "EXECUTION_COUNT" INTEGER NOT NULL,
   "STARTED_AT" BIGINT NULL,
index af663e1aee864e8ce0218ca8f2bfa9255b18b503..1be750ac32355a7a79743d90cec4db90da7fed23 100644 (file)
@@ -92,7 +92,8 @@ public class CeActivityDto {
     this.taskType = queueDto.getTaskType();
     this.componentUuid = queueDto.getComponentUuid();
     this.isLastKey = format("%s%s", taskType, Strings.nullToEmpty(componentUuid));
-    this.submitterLogin = queueDto.getSubmitterLogin();
+    // FIXME
+    this.submitterLogin = queueDto.getSubmitterUuid();
     this.workerUuid = queueDto.getWorkerUuid();
     this.submittedAt = queueDto.getCreatedAt();
     this.startedAt = queueDto.getStartedAt();
index 1cdebad0090546212762f9a205ec4d20f7166de1..640b9c217e47490633ba715bd051826d5d6fa218 100644 (file)
@@ -34,7 +34,7 @@ public class CeQueueDto {
   private String taskType;
   private String componentUuid;
   private Status status;
-  private String submitterLogin;
+  private String submitterUuid;
   /**
    * UUID of the worker that is executing, or of the last worker that executed, the current task.
    */
@@ -84,13 +84,13 @@ public class CeQueueDto {
   }
 
   @CheckForNull
-  public String getSubmitterLogin() {
-    return submitterLogin;
+  public String getSubmitterUuid() {
+    return submitterUuid;
   }
 
-  public CeQueueDto setSubmitterLogin(@Nullable String s) {
-    checkArgument(s == null || s.length() <= 255, "Value of submitter login is too long: %s", s);
-    this.submitterLogin = s;
+  public CeQueueDto setSubmitterUuid(@Nullable String s) {
+    checkArgument(s == null || s.length() <= 255, "Value of submitter uuid is too long: %s", s);
+    this.submitterUuid = s;
     return this;
   }
 
@@ -139,7 +139,7 @@ public class CeQueueDto {
       ", taskType='" + taskType + '\'' +
       ", componentUuid='" + componentUuid + '\'' +
       ", status=" + status +
-      ", submitterLogin='" + submitterLogin + '\'' +
+      ", submitterLogin='" + submitterUuid + '\'' +
       ", workerUuid='" + workerUuid + '\'' +
       ", startedAt=" + startedAt +
       ", createdAt=" + createdAt +
index 495fc15f8b207ba79bc2becd586a78ae8a543acb..b2b8fb3e40379ed9de9182593db31c8193bd80c4 100644 (file)
@@ -8,7 +8,7 @@
     cq.task_type as taskType,
     cq.component_uuid as componentUuid,
     cq.status as status,
-    cq.submitter_login as submitterLogin,
+    cq.submitter_uuid as submitterUuid,
     cq.worker_uuid as workerUuid,
     cq.started_at as startedAt,
     cq.created_at as createdAt,
       task_type,
       component_uuid,
       status,
-      submitter_login,
+      submitter_uuid,
       worker_uuid,
       execution_count,
       started_at,
       #{taskType,jdbcType=VARCHAR},
       #{componentUuid,jdbcType=VARCHAR},
       #{status,jdbcType=VARCHAR},
-      #{submitterLogin,jdbcType=VARCHAR},
+      #{submitterUuid,jdbcType=VARCHAR},
       #{workerUuid,jdbcType=VARCHAR},
       0,
       #{startedAt,jdbcType=BIGINT},
index f3132b2ac031f83636a93ec023fd914dd8466faa..b8ed217c8ed11597fae713108602464b49dc7396 100644 (file)
@@ -63,7 +63,7 @@ public class CeActivityDaoTest {
     assertThat(dto.getUuid()).isEqualTo("TASK_1");
     assertThat(dto.getComponentUuid()).isEqualTo("PROJECT_1");
     assertThat(dto.getStatus()).isEqualTo(CeActivityDto.Status.SUCCESS);
-    assertThat(dto.getSubmitterLogin()).isEqualTo("henri");
+    assertThat(dto.getSubmitterLogin()).isEqualTo("submitter uuid");
     assertThat(dto.getSubmittedAt()).isEqualTo(1_300_000_000_000L);
     assertThat(dto.getWorkerUuid()).isEqualTo("worker uuid");
     assertThat(dto.getIsLast()).isTrue();
@@ -348,7 +348,7 @@ public class CeActivityDaoTest {
     queueDto.setUuid(uuid);
     queueDto.setTaskType(type);
     queueDto.setComponentUuid(componentUuid);
-    queueDto.setSubmitterLogin("henri");
+    queueDto.setSubmitterUuid("submitter uuid");
     queueDto.setWorkerUuid("worker uuid");
     queueDto.setCreatedAt(1_300_000_000_000L);
 
index b2e4faad0ce8a3e729101c35f4f60f9079d9bdc4..a065ed4855bbda474b807196cb040f90160c8257 100644 (file)
@@ -56,7 +56,7 @@ public class CeQueueDaoTest {
   private static final String COMPONENT_UUID_2 = "PROJECT_2";
   private static final String TASK_UUID_3 = "TASK_3";
   private static final String SELECT_QUEUE_UUID_AND_STATUS_QUERY = "select uuid,status from ce_queue";
-  private static final String SUBMITTER_LOGIN = "henri";
+  private static final String SUBMITTER_LOGIN = "submitter uuid";
   private static final String WORKER_UUID_1 = "worker uuid 1";
   private static final String WORKER_UUID_2 = "worker uuid 2";
 
@@ -78,7 +78,7 @@ public class CeQueueDaoTest {
       .setTaskType(CeTaskTypes.REPORT)
       .setComponentUuid(COMPONENT_UUID_1)
       .setStatus(PENDING)
-      .setSubmitterLogin(SUBMITTER_LOGIN)
+      .setSubmitterUuid(SUBMITTER_LOGIN)
       .setWorkerUuid(WORKER_UUID_1);
 
     mockSystem2ForSingleCall(now);
@@ -99,7 +99,7 @@ public class CeQueueDaoTest {
         assertThat(saved.getTaskType()).isEqualTo(CeTaskTypes.REPORT);
         assertThat(saved.getComponentUuid()).isEqualTo(COMPONENT_UUID_1);
         assertThat(saved.getStatus()).isEqualTo(PENDING);
-        assertThat(saved.getSubmitterLogin()).isEqualTo(SUBMITTER_LOGIN);
+        assertThat(saved.getSubmitterUuid()).isEqualTo(SUBMITTER_LOGIN);
         assertThat(saved.getWorkerUuid()).isEqualTo(WORKER_UUID_1);
         assertThat(saved.getCreatedAt()).isEqualTo(now);
         assertThat(saved.getUpdatedAt()).isEqualTo(now);
@@ -110,7 +110,7 @@ public class CeQueueDaoTest {
     assertThat(saved.getTaskType()).isEqualTo(CeTaskTypes.REPORT);
     assertThat(saved.getComponentUuid()).isEqualTo(COMPONENT_UUID_1);
     assertThat(saved.getStatus()).isEqualTo(PENDING);
-    assertThat(saved.getSubmitterLogin()).isEqualTo(SUBMITTER_LOGIN);
+    assertThat(saved.getSubmitterUuid()).isEqualTo(SUBMITTER_LOGIN);
     assertThat(saved.getWorkerUuid()).isEqualTo(WORKER_UUID_1);
     assertThat(saved.getCreatedAt()).isEqualTo(6_888_777L);
     assertThat(saved.getUpdatedAt()).isEqualTo(8_000_999L);
@@ -127,7 +127,7 @@ public class CeQueueDaoTest {
     assertThat(saved.getTaskType()).isEqualTo(CeTaskTypes.REPORT);
     assertThat(saved.getComponentUuid()).isEqualTo(COMPONENT_UUID_1);
     assertThat(saved.getStatus()).isEqualTo(PENDING);
-    assertThat(saved.getSubmitterLogin()).isEqualTo("henri");
+    assertThat(saved.getSubmitterUuid()).isEqualTo("henri");
     assertThat(saved.getWorkerUuid()).isNull();
     assertThat(saved.getCreatedAt()).isEqualTo(INIT_TIME);
     assertThat(saved.getUpdatedAt()).isEqualTo(INIT_TIME);
@@ -507,7 +507,7 @@ public class CeQueueDaoTest {
     dto.setUuid(uuid);
     dto.setTaskType(CeTaskTypes.REPORT);
     dto.setStatus(status);
-    dto.setSubmitterLogin("henri");
+    dto.setSubmitterUuid("henri");
     underTestAlwaysIncreasingSystem2.insert(db.getSession(), dto);
     db.getSession().commit();
     return dto;
@@ -518,7 +518,7 @@ public class CeQueueDaoTest {
     dto.setUuid(uuid);
     dto.setTaskType(CeTaskTypes.REPORT);
     dto.setStatus(status);
-    dto.setSubmitterLogin("henri");
+    dto.setSubmitterUuid("henri");
     dto.setWorkerUuid(workerUuid);
     dto.setStartedAt(startedAt);
     underTestAlwaysIncreasingSystem2.insert(db.getSession(), dto);
@@ -532,7 +532,7 @@ public class CeQueueDaoTest {
     dto.setTaskType(CeTaskTypes.REPORT);
     dto.setComponentUuid(componentUuid);
     dto.setStatus(status);
-    dto.setSubmitterLogin("henri");
+    dto.setSubmitterUuid("henri");
     underTest.insert(db.getSession(), dto);
     db.getSession().commit();
     return dto;
index 0a249fdde7e5dde0dc3637002641db68f4fe439e..85724236dace18fe91942fe7c873388d3366f4fc 100644 (file)
@@ -78,10 +78,10 @@ public class CeQueueDtoTest {
 
   @Test
   public void setSubmitterLogin_accepts_null_empty_and_string_255_chars_or_less() {
-    underTest.setSubmitterLogin(null);
-    underTest.setSubmitterLogin("");
-    underTest.setSubmitterLogin("bar");
-    underTest.setSubmitterLogin(STR_255_CHARS);
+    underTest.setSubmitterUuid(null);
+    underTest.setSubmitterUuid("");
+    underTest.setSubmitterUuid("bar");
+    underTest.setSubmitterUuid(STR_255_CHARS);
   }
 
   @Test
@@ -89,9 +89,9 @@ public class CeQueueDtoTest {
     String str_256_chars = STR_255_CHARS + "a";
 
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Value of submitter login is too long: " + str_256_chars);
+    expectedException.expectMessage("Value of submitter uuid is too long: " + str_256_chars);
 
-    underTest.setSubmitterLogin(str_256_chars);
+    underTest.setSubmitterUuid(str_256_chars);
   }
 
   @Test
index b7bda8ee1ff1154bc486614a8b99a12643997c7c..14e2ab30db087c060c03ae46ac93c651511ee73b 100644 (file)
@@ -33,7 +33,7 @@ public class CeQueueTesting {
       .setComponentUuid(randomAlphanumeric(40))
       .setStatus(CeQueueDto.Status.PENDING)
       .setTaskType(CeTaskTypes.REPORT)
-      .setSubmitterLogin(randomAlphanumeric(255))
+      .setSubmitterUuid(randomAlphanumeric(255))
       .setCreatedAt(nextLong())
       .setUpdatedAt(nextLong())
       .setStartedAt(nextLong());
index c2ba89ca811eed59521900eaccfa9432842d1adb..e40a4b59d284a9c2410d5095cfffbe4be9b9a218 100644 (file)
@@ -789,7 +789,7 @@ public class PurgeDaoTest {
     queueDto.setUuid(Uuids.create());
     queueDto.setTaskType(REPORT);
     queueDto.setComponentUuid(component.uuid());
-    queueDto.setSubmitterLogin("henri");
+    queueDto.setSubmitterUuid("submitter uuid");
     queueDto.setCreatedAt(1_300_000_000_000L);
     queueDto.setStatus(status);
     return queueDto;
index 65d99312ce4b388d5eb3faac273d9d505af33667..598349bb8211c1aafdeb3f35288a089b4b0cc9c7 100644 (file)
@@ -49,6 +49,7 @@ public class DbVersion72 implements DbVersion {
       .add(2119, "Rename LOGIN TO USER_UUID on table USER_TOKENS", RenameLoginToUserUuidOnTableUserTokens.class)
       .add(2120, "Rename USER_LOGIN TO USER_UUID on table MANUAL_MEASURES", RenameUserLoginToUserUuidOnTableManualMeasures.class)
       .add(2121, "Rename NOTE_USER_LOGIN TO NOTE_USER_UUID on table RULES_METADATA", RenameNoteUserLoginToNoteUserUuidOnTableRulesMetadata.class)
+      .add(2122, "Rename SUBMITTER_LOGIN TO SUBMITTER_UUID on table CE_QUEUE", RenameSubmitterLoginToSubmitterUuidOnTableCeQueue.class)
     ;
   }
 }
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/RenameSubmitterLoginToSubmitterUuidOnTableCeQueue.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/RenameSubmitterLoginToSubmitterUuidOnTableCeQueue.java
new file mode 100644 (file)
index 0000000..ced36ac
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2018 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+package org.sonar.server.platform.db.migration.version.v72;
+
+import java.sql.SQLException;
+import org.sonar.db.Database;
+import org.sonar.server.platform.db.migration.sql.RenameColumnsBuilder;
+import org.sonar.server.platform.db.migration.step.DdlChange;
+
+import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.newVarcharColumnDefBuilder;
+
+public class RenameSubmitterLoginToSubmitterUuidOnTableCeQueue extends DdlChange {
+
+  public RenameSubmitterLoginToSubmitterUuidOnTableCeQueue(Database db) {
+    super(db);
+  }
+
+  @Override
+  public void execute(Context context) throws SQLException {
+    context.execute(new RenameColumnsBuilder(getDialect(), "ce_queue")
+      .renameColumn("submitter_login",
+        newVarcharColumnDefBuilder()
+          .setColumnName("submitter_uuid")
+          .setLimit(255)
+          .setIsNullable(true)
+          .build())
+      .build());
+  }
+}
index f83902a41d26c1493ed0efbc5ec228c0388bc523..899207322d4d7e5f14d93a7b87401d77c8983602 100644 (file)
@@ -34,7 +34,7 @@ public class DbVersion72Test {
 
   @Test
   public void verify_migration_count() {
-    verifyMigrationCount(underTest, 22);
+    verifyMigrationCount(underTest, 23);
   }
 
 }
diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v72/RenameSubmitterLoginToSubmitterUuidOnTableCeQueueTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v72/RenameSubmitterLoginToSubmitterUuidOnTableCeQueueTest.java
new file mode 100644 (file)
index 0000000..fadffa6
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2018 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+package org.sonar.server.platform.db.migration.version.v72;
+
+import java.sql.SQLException;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.sonar.db.CoreDbTester;
+
+import static java.sql.Types.VARCHAR;
+
+public class RenameSubmitterLoginToSubmitterUuidOnTableCeQueueTest {
+
+  @Rule
+  public final CoreDbTester db = CoreDbTester.createForSchema(RenameSubmitterLoginToSubmitterUuidOnTableCeQueueTest.class, "ce_queue.sql");
+
+  @Rule
+  public ExpectedException expectedException = ExpectedException.none();
+
+  private RenameSubmitterLoginToSubmitterUuidOnTableCeQueue underTest = new RenameSubmitterLoginToSubmitterUuidOnTableCeQueue(db.database());
+
+  @Test
+  public void rename_column() throws SQLException {
+    underTest.execute();
+
+    db.assertColumnDefinition("ce_queue", "submitter_uuid", VARCHAR, 255, true);
+    db.assertColumnDoesNotExist("ce_queue", "submitter_login");
+  }
+
+  public void migration_is_not_reentrant() throws SQLException {
+    underTest.execute();
+
+    expectedException.expect(IllegalStateException.class);
+
+    underTest.execute();
+  }
+
+}
diff --git a/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/RenameSubmitterLoginToSubmitterUuidOnTableCeQueueTest/ce_queue.sql b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/RenameSubmitterLoginToSubmitterUuidOnTableCeQueueTest/ce_queue.sql
new file mode 100644 (file)
index 0000000..0927e64
--- /dev/null
@@ -0,0 +1,16 @@
+CREATE TABLE "CE_QUEUE" (
+  "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+  "UUID" VARCHAR(40) NOT NULL,
+  "TASK_TYPE" VARCHAR(15) NOT NULL,
+  "COMPONENT_UUID" VARCHAR(40) NULL,
+  "STATUS" VARCHAR(15) NOT NULL,
+  "SUBMITTER_LOGIN" VARCHAR(255) NULL,
+  "WORKER_UUID" VARCHAR(40) NULL,
+  "EXECUTION_COUNT" INTEGER NOT NULL,
+  "STARTED_AT" BIGINT NULL,
+  "CREATED_AT" BIGINT NOT NULL,
+  "UPDATED_AT" BIGINT NOT NULL
+);
+CREATE UNIQUE INDEX "CE_QUEUE_UUID" ON "CE_QUEUE" ("UUID");
+CREATE INDEX "CE_QUEUE_COMPONENT_UUID" ON "CE_QUEUE" ("COMPONENT_UUID");
+CREATE INDEX "CE_QUEUE_STATUS" ON "CE_QUEUE" ("STATUS");
\ No newline at end of file
index 6f1762cf99454b0c7db6e2369a46d16c855342f0..c79663177172a4092c5e92c563507464c7348e5a 100644 (file)
@@ -152,7 +152,7 @@ public class CeQueueImpl implements CeQueue {
     dto.setTaskType(submission.getType());
     dto.setComponentUuid(submission.getComponentUuid());
     dto.setStatus(PENDING);
-    dto.setSubmitterLogin(submission.getSubmitterLogin());
+    dto.setSubmitterUuid(submission.getSubmitterUuid());
     dto.setStartedAt(null);
     dbClient.ceQueueDao().insert(dbSession, dto);
     return dto;
@@ -271,7 +271,7 @@ public class CeQueueImpl implements CeQueue {
       CeTask.Builder builder = new CeTask.Builder();
       builder.setUuid(dto.getUuid());
       builder.setType(dto.getTaskType());
-      builder.setSubmitterLogin(dto.getSubmitterLogin());
+      builder.setSubmitterUuid(dto.getSubmitterUuid());
       String componentUuid = dto.getComponentUuid();
       if (componentUuid != null) {
         builder.setComponentUuid(componentUuid);
index 69127d475de8f981e19a9b2cea153d7cd1c679e5..008972bbbc98b831a2c8baa528d7814f911a4963 100644 (file)
@@ -36,7 +36,7 @@ public class CeTask {
   private final String componentUuid;
   private final String componentKey;
   private final String componentName;
-  private final String submitterLogin;
+  private final String submitterUuid;
 
   private CeTask(Builder builder) {
     this.organizationUuid = requireNonNull(emptyToNull(builder.organizationUuid), "organizationUuid can't be null nor empty");
@@ -45,7 +45,7 @@ public class CeTask {
     this.componentUuid = emptyToNull(builder.componentUuid);
     this.componentKey = emptyToNull(builder.componentKey);
     this.componentName = emptyToNull(builder.componentName);
-    this.submitterLogin = emptyToNull(builder.submitterLogin);
+    this.submitterUuid = emptyToNull(builder.submitterUuid);
   }
 
   public String getOrganizationUuid() {
@@ -76,8 +76,8 @@ public class CeTask {
   }
 
   @CheckForNull
-  public String getSubmitterLogin() {
-    return submitterLogin;
+  public String getSubmitterUuid() {
+    return submitterUuid;
   }
 
   @Override
@@ -89,7 +89,7 @@ public class CeTask {
       .add("componentUuid", componentUuid)
       .add("componentKey", componentKey)
       .add("componentName", componentName)
-      .add("submitterLogin", submitterLogin)
+      .add("submitterUuid", submitterUuid)
       .toString();
   }
 
@@ -117,7 +117,7 @@ public class CeTask {
     private String componentUuid;
     private String componentKey;
     private String componentName;
-    private String submitterLogin;
+    private String submitterUuid;
 
     public Builder setOrganizationUuid(String organizationUuid) {
       this.organizationUuid = organizationUuid;
@@ -154,8 +154,8 @@ public class CeTask {
       return this;
     }
 
-    public Builder setSubmitterLogin(@Nullable String s) {
-      this.submitterLogin = s;
+    public Builder setSubmitterUuid(@Nullable String s) {
+      this.submitterUuid = s;
       return this;
     }
 
index 3db0b91aa7da4040d5f3fa9a6607729bb41b3a0a..c3eb9083d2d69f14f1680aa88b333be1e218e241 100644 (file)
@@ -32,13 +32,13 @@ public final class CeTaskSubmit {
   private final String uuid;
   private final String type;
   private final String componentUuid;
-  private final String submitterLogin;
+  private final String submitterUuid;
 
   private CeTaskSubmit(Builder builder) {
     this.uuid = Objects.requireNonNull(emptyToNull(builder.uuid));
     this.type = Objects.requireNonNull(emptyToNull(builder.type));
     this.componentUuid = emptyToNull(builder.componentUuid);
-    this.submitterLogin = emptyToNull(builder.submitterLogin);
+    this.submitterUuid = emptyToNull(builder.submitterUuid);
   }
 
   public String getType() {
@@ -55,15 +55,15 @@ public final class CeTaskSubmit {
   }
 
   @CheckForNull
-  public String getSubmitterLogin() {
-    return submitterLogin;
+  public String getSubmitterUuid() {
+    return submitterUuid;
   }
 
   public static final class Builder {
     private final String uuid;
     private String type;
     private String componentUuid;
-    private String submitterLogin;
+    private String submitterUuid;
 
     public Builder(String uuid) {
       this.uuid = uuid;
@@ -83,8 +83,8 @@ public final class CeTaskSubmit {
       return this;
     }
 
-    public Builder setSubmitterLogin(@Nullable String s) {
-      this.submitterLogin = s;
+    public Builder setSubmitterUuid(@Nullable String s) {
+      this.submitterUuid = s;
       return this;
     }
 
index 2fe083766ddc0bda8ea48dfef0467b479063e818..9b20e1f340081da1ac79c9091e67911ce9375944 100644 (file)
@@ -40,6 +40,7 @@ import org.sonar.db.ce.CeQueueDto;
 import org.sonar.db.ce.CeTaskCharacteristicDto;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.organization.OrganizationDto;
+import org.sonar.db.user.UserDto;
 import org.sonarqube.ws.Ce;
 import org.sonarqube.ws.Common;
 
@@ -48,6 +49,8 @@ import static java.lang.String.format;
 import static java.util.Collections.singletonList;
 import static org.sonar.api.utils.DateUtils.formatDateTime;
 import static org.sonar.core.util.Protobuf.setNullable;
+import static org.sonar.core.util.stream.MoreCollectors.toSet;
+import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex;
 
 /**
  * Converts {@link CeActivityDto} and {@link CeQueueDto} to the protobuf objects
@@ -65,14 +68,20 @@ public class TaskFormatter {
 
   public List<Ce.Task> formatQueue(DbSession dbSession, List<CeQueueDto> dtos) {
     DtoCache cache = DtoCache.forQueueDtos(dbClient, dbSession, dtos);
-    return dtos.stream().map(input -> formatQueue(input, cache)).collect(MoreCollectors.toList(dtos.size()));
+    Map<String, UserDto> usersByUuid = getUsersByUuid(dbSession, dtos);
+    return dtos.stream().map(input -> formatQueue(input, cache, usersByUuid)).collect(MoreCollectors.toList(dtos.size()));
   }
 
   public Ce.Task formatQueue(DbSession dbSession, CeQueueDto queue) {
-    return formatQueue(queue, DtoCache.forQueueDtos(dbClient, dbSession, singletonList(queue)));
+    return formatQueue(queue, DtoCache.forQueueDtos(dbClient, dbSession, singletonList(queue)), getUsersByUuid(dbSession, singletonList(queue)));
   }
 
-  private Ce.Task formatQueue(CeQueueDto dto, DtoCache componentDtoCache) {
+  private Map<String, UserDto> getUsersByUuid(DbSession dbSession, Collection<CeQueueDto> dtos) {
+    Set<String> submitterUuids = dtos.stream().map(CeQueueDto::getSubmitterUuid).filter(Objects::nonNull).collect(toSet());
+    return dbClient.userDao().selectByUuids(dbSession, submitterUuids).stream().collect(uniqueIndex(UserDto::getUuid));
+  }
+
+  private Ce.Task formatQueue(CeQueueDto dto, DtoCache componentDtoCache, Map<String, UserDto> usersByUuid) {
     Ce.Task.Builder builder = Ce.Task.newBuilder();
     String organizationKey = componentDtoCache.getOrganizationKey(dto.getComponentUuid());
     setNullable(organizationKey, builder::setOrganization);
@@ -84,7 +93,7 @@ public class TaskFormatter {
     builder.setStatus(Ce.TaskStatus.valueOf(dto.getStatus().name()));
     builder.setType(dto.getTaskType());
     builder.setLogs(false);
-    setNullable(dto.getSubmitterLogin(), builder::setSubmitterLogin);
+    setNullable(dto.getSubmitterUuid(), s -> builder.setSubmitterLogin(usersByUuid.get(s).getLogin()));
     builder.setSubmittedAt(formatDateTime(new Date(dto.getCreatedAt())));
     setNullable(dto.getStartedAt(), builder::setStartedAt, DateUtils::formatDateTime);
     setNullable(computeExecutionTimeMs(dto), builder::setExecutionTimeMs);
@@ -174,7 +183,7 @@ public class TaskFormatter {
     static DtoCache forQueueDtos(DbClient dbClient, DbSession dbSession, Collection<CeQueueDto> ceQueueDtos) {
       Map<String, ComponentDto> componentsByUuid = dbClient.componentDao().selectByUuids(dbSession, componentUuidsOfCeQueues(ceQueueDtos))
         .stream()
-        .collect(MoreCollectors.uniqueIndex(ComponentDto::uuid));
+        .collect(uniqueIndex(ComponentDto::uuid));
       Multimap<String, CeTaskCharacteristicDto> characteristicsByTaskUuid = dbClient.ceTaskCharacteristicsDao()
         .selectByTaskUuids(dbSession, ceQueueDtos.stream().map(CeQueueDto::getUuid).collect(Collectors.toList()))
         .stream().collect(MoreCollectors.index(CeTaskCharacteristicDto::getTaskUuid));
@@ -186,7 +195,7 @@ public class TaskFormatter {
         .filter(Objects::nonNull)
         .map(CeQueueDto::getComponentUuid)
         .filter(Objects::nonNull)
-        .collect(MoreCollectors.toSet(ceQueueDtos.size()));
+        .collect(toSet(ceQueueDtos.size()));
     }
 
     static DtoCache forActivityDtos(DbClient dbClient, DbSession dbSession, Collection<CeActivityDto> ceActivityDtos) {
@@ -194,7 +203,7 @@ public class TaskFormatter {
         dbSession,
         getComponentUuidsOfCeActivities(ceActivityDtos))
         .stream()
-        .collect(MoreCollectors.uniqueIndex(ComponentDto::uuid));
+        .collect(uniqueIndex(ComponentDto::uuid));
       Multimap<String, CeTaskCharacteristicDto> characteristicsByTaskUuid = dbClient.ceTaskCharacteristicsDao()
         .selectByTaskUuids(dbSession, ceActivityDtos.stream().map(CeActivityDto::getUuid).collect(Collectors.toList()))
         .stream().collect(MoreCollectors.index(CeTaskCharacteristicDto::getTaskUuid));
@@ -206,7 +215,7 @@ public class TaskFormatter {
         .filter(Objects::nonNull)
         .map(CeActivityDto::getComponentUuid)
         .filter(Objects::nonNull)
-        .collect(MoreCollectors.toSet(ceActivityDtos.size()));
+        .collect(toSet(ceActivityDtos.size()));
     }
 
     private static Map<String, OrganizationDto> buildOrganizationsByUuid(DbClient dbClient, DbSession dbSession, Map<String, ComponentDto> componentsByUuid) {
@@ -214,9 +223,9 @@ public class TaskFormatter {
         dbSession,
         componentsByUuid.values().stream()
           .map(ComponentDto::getOrganizationUuid)
-          .collect(MoreCollectors.toSet(componentsByUuid.size())))
+          .collect(toSet(componentsByUuid.size())))
         .stream()
-        .collect(MoreCollectors.uniqueIndex(OrganizationDto::getUuid));
+        .collect(uniqueIndex(OrganizationDto::getUuid));
     }
 
     @CheckForNull
index f3be61d393c9c107f9004fca20cc0f45ea61e5e5..728124dfab6c51eeef3dbaca19c613dfa68b117e 100644 (file)
@@ -183,7 +183,7 @@ public class ReportSubmitter {
 
     submit.setType(CeTaskTypes.REPORT);
     submit.setComponentUuid(project.uuid());
-    submit.setSubmitterLogin(userSession.getLogin());
+    submit.setSubmitterUuid(userSession.getUuid());
     return queue.submit(submit.build());
   }
 
index 9234fad90224ce9e8f9329729fb310743d97ab15..bd8352216f4fa30592f2014ddbafb5c0c6b37f43 100644 (file)
@@ -70,7 +70,7 @@ public class CeQueueImplTest {
 
   @Test
   public void submit_returns_task_populated_from_CeTaskSubmit_and_creates_CeQueue_row() {
-    CeTaskSubmit taskSubmit = createTaskSubmit(CeTaskTypes.REPORT, "PROJECT_1", "rob");
+    CeTaskSubmit taskSubmit = createTaskSubmit(CeTaskTypes.REPORT, "PROJECT_1", "submitter uuid");
 
     CeTask task = underTest.submit(taskSubmit);
 
@@ -189,7 +189,7 @@ public class CeQueueImplTest {
 
   @Test
   public void massSubmit_returns_tasks_for_each_CeTaskSubmit_populated_from_CeTaskSubmit_and_creates_CeQueue_row_for_each() {
-    CeTaskSubmit taskSubmit1 = createTaskSubmit(CeTaskTypes.REPORT, "PROJECT_1", "rob");
+    CeTaskSubmit taskSubmit1 = createTaskSubmit(CeTaskTypes.REPORT, "PROJECT_1", "submitter uuid");
     CeTaskSubmit taskSubmit2 = createTaskSubmit("some type");
 
     List<CeTask> tasks = underTest.massSubmit(asList(taskSubmit1, taskSubmit2));
@@ -452,7 +452,7 @@ public class CeQueueImplTest {
       assertThat(task.getComponentKey()).isEqualTo(componentDto.getDbKey());
       assertThat(task.getComponentName()).isEqualTo(componentDto.name());
     }
-    assertThat(task.getSubmitterLogin()).isEqualTo(taskSubmit.getSubmitterLogin());
+    assertThat(task.getSubmitterUuid()).isEqualTo(taskSubmit.getSubmitterUuid());
   }
 
   private void verifyCeQueueDtoForTaskSubmit(CeTaskSubmit taskSubmit) {
@@ -460,7 +460,7 @@ public class CeQueueImplTest {
     assertThat(queueDto.isPresent()).isTrue();
     assertThat(queueDto.get().getTaskType()).isEqualTo(taskSubmit.getType());
     assertThat(queueDto.get().getComponentUuid()).isEqualTo(taskSubmit.getComponentUuid());
-    assertThat(queueDto.get().getSubmitterLogin()).isEqualTo(taskSubmit.getSubmitterLogin());
+    assertThat(queueDto.get().getSubmitterUuid()).isEqualTo(taskSubmit.getSubmitterUuid());
     assertThat(queueDto.get().getCreatedAt()).isEqualTo(1_450_000_000_000L);
   }
 
@@ -472,11 +472,11 @@ public class CeQueueImplTest {
     return createTaskSubmit(type, null, null);
   }
 
-  private CeTaskSubmit createTaskSubmit(String type, @Nullable String componentUuid, @Nullable String submitterLogin) {
+  private CeTaskSubmit createTaskSubmit(String type, @Nullable String componentUuid, @Nullable String submitterUuid) {
     CeTaskSubmit.Builder submission = underTest.prepareSubmit();
     submission.setType(type);
     submission.setComponentUuid(componentUuid);
-    submission.setSubmitterLogin(submitterLogin);
+    submission.setSubmitterUuid(submitterUuid);
     return submission.build();
   }
 
index 0d3ea813e53e74b2ccb855d5bef911f4e9375448..97d20e21601aec7eb5d0d9e3d47027b30f23179d 100644 (file)
@@ -94,7 +94,7 @@ public class CeTaskTest {
     underTest.setOrganizationUuid("org1");
     underTest.setType("TYPE_1");
     underTest.setUuid("UUID_1");
-    underTest.setSubmitterLogin("LOGIN_1");
+    underTest.setSubmitterUuid("LOGIN_1");
     underTest.setComponentKey("COMPONENT_KEY_1");
     underTest.setComponentUuid("COMPONENT_UUID_1");
     underTest.setComponentName("The component");
@@ -104,7 +104,7 @@ public class CeTaskTest {
     assertThat(task.getOrganizationUuid()).isEqualTo("org1");
     assertThat(task.getUuid()).isEqualTo("UUID_1");
     assertThat(task.getType()).isEqualTo("TYPE_1");
-    assertThat(task.getSubmitterLogin()).isEqualTo("LOGIN_1");
+    assertThat(task.getSubmitterUuid()).isEqualTo("LOGIN_1");
     assertThat(task.getComponentKey()).isEqualTo("COMPONENT_KEY_1");
     assertThat(task.getComponentUuid()).isEqualTo("COMPONENT_UUID_1");
     assertThat(task.getComponentName()).isEqualTo("The component");
@@ -126,10 +126,10 @@ public class CeTaskTest {
   @Test
   public void empty_in_submitterLogin_is_considered_as_null() {
     CeTask ceTask = underTest.setOrganizationUuid("org1").setUuid("uuid").setType("type")
-      .setSubmitterLogin("")
+      .setSubmitterUuid("")
       .build();
 
-    assertThat(ceTask.getSubmitterLogin()).isNull();
+    assertThat(ceTask.getSubmitterUuid()).isNull();
   }
 
   @Test
index 04518e1f6ac8241d84f43d96cc2f914a1b82914d..541edc1d049d4d1bdb1126c720b3ee223497ebd1 100644 (file)
@@ -20,7 +20,6 @@
 package org.sonar.server.ce.ws;
 
 import javax.annotation.Nullable;
-
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -176,7 +175,7 @@ public class CancelActionTest {
     CeTaskSubmit.Builder submission = queue.prepareSubmit();
     submission.setType(CeTaskTypes.REPORT);
     submission.setComponentUuid(componentUuid);
-    submission.setSubmitterLogin(null);
+    submission.setSubmitterUuid(null);
     CeTask task = queue.submit(submission.build());
     return db.getDbClient().ceQueueDao().selectByUuid(db.getSession(), task.getUuid()).get();
   }
index c35385b08eacc6ffc196edd854f808163d55efae..32540048c7d19628b2b1110d93b55492dcf65278 100644 (file)
@@ -56,7 +56,8 @@ public class SubmitActionTest {
     .setOrganizationUuid("org1")
     .setUuid("TASK_1")
     .setType(CeTaskTypes.REPORT)
-    .setComponentUuid("PROJECT_1").setSubmitterLogin("robert")
+    .setComponentUuid("PROJECT_1")
+    .setSubmitterUuid("robert")
     .build();
 
   @Captor
index 98438254d3c1e15ce492bc79ee1d4540be39c9d5..44333e126740c80b0f79c96f888df2dbca3b93c0 100644 (file)
@@ -37,13 +37,13 @@ import org.sonar.db.ce.CeTaskCharacteristicDto;
 import org.sonar.db.ce.CeTaskTypes;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.organization.OrganizationDto;
+import org.sonar.db.user.UserDto;
 import org.sonar.server.exceptions.ForbiddenException;
 import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.tester.UserSessionRule;
 import org.sonar.server.ws.WsActionTester;
 import org.sonarqube.ws.Ce;
 import org.sonarqube.ws.Common;
-import org.sonarqube.ws.Ce;
 
 import static java.util.Collections.singleton;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -79,14 +79,15 @@ public class TaskActionTest {
 
   @Test
   public void task_is_in_queue() {
-    logInAsRoot();
+    UserDto user = db.users().insertUser();
+    userSession.logIn(user).setRoot();
 
     CeQueueDto queueDto = new CeQueueDto();
     queueDto.setTaskType(CeTaskTypes.REPORT);
     queueDto.setUuid(SOME_TASK_UUID);
     queueDto.setComponentUuid(project.uuid());
     queueDto.setStatus(CeQueueDto.Status.PENDING);
-    queueDto.setSubmitterLogin("john");
+    queueDto.setSubmitterUuid(user.getUuid());
     persist(queueDto);
 
     Ce.TaskResponse taskResponse = ws.newRequest()
@@ -95,7 +96,7 @@ public class TaskActionTest {
     assertThat(taskResponse.getTask().getOrganization()).isEqualTo(organizationDto.getKey());
     assertThat(taskResponse.getTask().getId()).isEqualTo(SOME_TASK_UUID);
     assertThat(taskResponse.getTask().getStatus()).isEqualTo(Ce.TaskStatus.PENDING);
-    assertThat(taskResponse.getTask().getSubmitterLogin()).isEqualTo("john");
+    assertThat(taskResponse.getTask().getSubmitterLogin()).isEqualTo(user.getLogin());
     assertThat(taskResponse.getTask().getComponentId()).isEqualTo(project.uuid());
     assertThat(taskResponse.getTask().getComponentKey()).isEqualTo(project.getDbKey());
     assertThat(taskResponse.getTask().getComponentName()).isEqualTo(project.name());
@@ -105,7 +106,8 @@ public class TaskActionTest {
 
   @Test
   public void task_is_archived() {
-    logInAsRoot();
+    UserDto user = db.users().insertUser();
+    userSession.logIn(user).setRoot();
 
     CeActivityDto activityDto = createActivityDto(SOME_TASK_UUID);
     persist(activityDto);
@@ -147,9 +149,10 @@ public class TaskActionTest {
 
   @Test
   public void long_living_branch_in_queue_analysis() {
-    logInAsRoot();
+    UserDto user = db.users().insertUser();
+    userSession.logIn(user).setRoot();
     String branch = "my_branch";
-    CeQueueDto queueDto = createAndPersistQueueTask(null);
+    CeQueueDto queueDto = createAndPersistQueueTask(null, user);
     insertCharacteristic(queueDto, BRANCH_KEY, branch);
     insertCharacteristic(queueDto, BRANCH_TYPE_KEY, LONG.name());
 
@@ -264,24 +267,27 @@ public class TaskActionTest {
 
   @Test
   public void get_project_queue_task_with_scan_permission_on_project() {
-    userSession.logIn().addProjectPermission(GlobalPermissions.SCAN_EXECUTION, project);
-    CeQueueDto task = createAndPersistQueueTask(project);
+    UserDto user = db.users().insertUser();
+    userSession.logIn(user).addProjectPermission(GlobalPermissions.SCAN_EXECUTION, project);
+    CeQueueDto task = createAndPersistQueueTask(project, user);
 
     call(task.getUuid());
   }
 
   @Test
   public void get_project_queue_task_with_scan_permission_on_organization_but_not_on_project() {
-    userSession.logIn().addPermission(SCAN, project.getOrganizationUuid());
-    CeQueueDto task = createAndPersistQueueTask(project);
+    UserDto user = db.users().insertUser();
+    userSession.logIn(user).addPermission(SCAN, project.getOrganizationUuid());
+    CeQueueDto task = createAndPersistQueueTask(project, user);
 
     call(task.getUuid());
   }
 
   @Test
   public void getting_project_queue_task_throws_ForbiddenException_if_no_admin_nor_scan_permissions() {
-    userSession.logIn();
-    CeQueueDto task = createAndPersistQueueTask(project);
+    UserDto user = db.users().insertUser();
+    userSession.logIn(user);
+    CeQueueDto task = createAndPersistQueueTask(project, user);
 
     expectedException.expect(ForbiddenException.class);
 
@@ -290,16 +296,18 @@ public class TaskActionTest {
 
   @Test
   public void getting_global_queue_task_requires_to_be_system_administrator() {
-    logInAsSystemAdministrator();
-    CeQueueDto task = createAndPersistQueueTask(null);
+    UserDto user = db.users().insertUser();
+    userSession.logIn(user).setSystemAdministrator();
+    CeQueueDto task = createAndPersistQueueTask(null, user);
 
     call(task.getUuid());
   }
 
   @Test
   public void getting_global_queue_throws_ForbiddenException_if_not_system_administrator() {
-    userSession.logIn().setNonSystemAdministrator();
-    CeQueueDto task = createAndPersistQueueTask(null);
+    UserDto user = db.users().insertUser();
+    userSession.logIn(user).setNonSystemAdministrator();
+    CeQueueDto task = createAndPersistQueueTask(null, user);
 
     expectedException.expect(ForbiddenException.class);
 
@@ -377,12 +385,12 @@ public class TaskActionTest {
     return activityDto;
   }
 
-  private CeQueueDto createAndPersistQueueTask(@Nullable ComponentDto component) {
+  private CeQueueDto createAndPersistQueueTask(@Nullable ComponentDto component, UserDto user) {
     CeQueueDto dto = new CeQueueDto();
     dto.setTaskType(CeTaskTypes.REPORT);
     dto.setUuid(SOME_TASK_UUID);
     dto.setStatus(CeQueueDto.Status.PENDING);
-    dto.setSubmitterLogin("john");
+    dto.setSubmitterUuid(user.getUuid());
     if (component != null) {
       dto.setComponentUuid(component.uuid());
     }
index e3b9201dfc9711a92603f14071d444784f53625f..6e51cee0dd4cab36e3a6c161ddb5677672a04875 100644 (file)
@@ -30,6 +30,7 @@ import org.sonar.db.ce.CeActivityDto;
 import org.sonar.db.ce.CeQueueDto;
 import org.sonar.db.ce.CeTaskTypes;
 import org.sonar.db.organization.OrganizationDto;
+import org.sonar.db.user.UserDto;
 import org.sonarqube.ws.Ce;
 
 import static java.util.Arrays.asList;
@@ -77,6 +78,7 @@ public class TaskFormatterTest {
     String uuid = "COMPONENT_UUID";
     OrganizationDto organizationDto = db.organizations().insert();
     db.components().insertPrivateProject(organizationDto, (t) -> t.setUuid(uuid).setDbKey("COMPONENT_KEY").setName("Component Name"));
+    UserDto user = db.users().insertUser();
 
     CeQueueDto dto = new CeQueueDto();
     dto.setUuid("UUID");
@@ -85,7 +87,7 @@ public class TaskFormatterTest {
     dto.setCreatedAt(1_450_000_000_000L);
     dto.setStartedAt(1_451_000_000_000L);
     dto.setComponentUuid(uuid);
-    dto.setSubmitterLogin("rob");
+    dto.setSubmitterUuid(user.getUuid());
 
     Ce.Task wsTask = underTest.formatQueue(db.getSession(), dto);
 
@@ -97,7 +99,7 @@ public class TaskFormatterTest {
     assertThat(wsTask.getComponentQualifier()).isEqualTo("TRK");
     assertThat(wsTask.getStatus()).isEqualTo(Ce.TaskStatus.IN_PROGRESS);
     assertThat(wsTask.getLogs()).isFalse();
-    assertThat(wsTask.getSubmitterLogin()).isEqualTo("rob");
+    assertThat(wsTask.getSubmitterLogin()).isEqualTo(user.getLogin());
     assertThat(wsTask.hasExecutionTimeMs()).isTrue();
     assertThat(wsTask.hasExecutedAt()).isFalse();
     assertThat(wsTask.hasScannerContext()).isFalse();
index 0a92579795bdd411a5a2c3e4af09ab6e246fa217..94693054919bacd1e945560dc4881d9f09f73cd6 100644 (file)
@@ -44,6 +44,7 @@ import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.ComponentTesting;
 import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.permission.OrganizationPermission;
+import org.sonar.db.user.UserDto;
 import org.sonar.server.component.ComponentUpdater;
 import org.sonar.server.component.NewComponent;
 import org.sonar.server.exceptions.BadRequestException;
@@ -134,7 +135,8 @@ public class ReportSubmitterTest {
   @Test
   public void submit_a_report_on_existing_project() {
     ComponentDto project = db.components().insertPrivateProject(db.getDefaultOrganization());
-    userSession.logIn().addProjectPermission(SCAN_EXECUTION, project);
+    UserDto user = db.users().insertUser();
+    userSession.logIn(user).addProjectPermission(SCAN_EXECUTION, project);
 
     mockSuccessfulPrepareSubmitCall();
 
@@ -144,7 +146,10 @@ public class ReportSubmitterTest {
     verifyZeroInteractions(permissionTemplateService);
     verifyZeroInteractions(favoriteUpdater);
     verify(queue).submit(argThat(submit ->
-      submit.getType().equals(CeTaskTypes.REPORT) && submit.getComponentUuid().equals(project.uuid()) && submit.getUuid().equals(TASK_UUID)));
+      submit.getType().equals(CeTaskTypes.REPORT)
+        && submit.getComponentUuid().equals(project.uuid())
+        && submit.getSubmitterUuid().equals(user.getUuid())
+        && submit.getUuid().equals(TASK_UUID)));
   }
 
   @Test