.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);
}
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) {
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();
}
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();
}
.setOrganizationUuid("org1")
.setUuid("TASK_1").setType(CeTaskTypes.REPORT)
.setComponentUuid("PROJECT_1")
- .setSubmitterLogin(submitterLogin)
+ .setSubmitterUuid(submitterLogin)
.build();
}
"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,
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();
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.
*/
}
@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;
}
", taskType='" + taskType + '\'' +
", componentUuid='" + componentUuid + '\'' +
", status=" + status +
- ", submitterLogin='" + submitterLogin + '\'' +
+ ", submitterLogin='" + submitterUuid + '\'' +
", workerUuid='" + workerUuid + '\'' +
", startedAt=" + startedAt +
", createdAt=" + createdAt +
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},
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();
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);
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";
.setTaskType(CeTaskTypes.REPORT)
.setComponentUuid(COMPONENT_UUID_1)
.setStatus(PENDING)
- .setSubmitterLogin(SUBMITTER_LOGIN)
+ .setSubmitterUuid(SUBMITTER_LOGIN)
.setWorkerUuid(WORKER_UUID_1);
mockSystem2ForSingleCall(now);
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);
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);
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);
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;
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);
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;
@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
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
.setComponentUuid(randomAlphanumeric(40))
.setStatus(CeQueueDto.Status.PENDING)
.setTaskType(CeTaskTypes.REPORT)
- .setSubmitterLogin(randomAlphanumeric(255))
+ .setSubmitterUuid(randomAlphanumeric(255))
.setCreatedAt(nextLong())
.setUpdatedAt(nextLong())
.setStartedAt(nextLong());
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;
.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)
;
}
}
--- /dev/null
+/*
+ * 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());
+ }
+}
@Test
public void verify_migration_count() {
- verifyMigrationCount(underTest, 22);
+ verifyMigrationCount(underTest, 23);
}
}
--- /dev/null
+/*
+ * 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();
+ }
+
+}
--- /dev/null
+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
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;
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);
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");
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() {
}
@CheckForNull
- public String getSubmitterLogin() {
- return submitterLogin;
+ public String getSubmitterUuid() {
+ return submitterUuid;
}
@Override
.add("componentUuid", componentUuid)
.add("componentKey", componentKey)
.add("componentName", componentName)
- .add("submitterLogin", submitterLogin)
+ .add("submitterUuid", submitterUuid)
.toString();
}
private String componentUuid;
private String componentKey;
private String componentName;
- private String submitterLogin;
+ private String submitterUuid;
public Builder setOrganizationUuid(String organizationUuid) {
this.organizationUuid = organizationUuid;
return this;
}
- public Builder setSubmitterLogin(@Nullable String s) {
- this.submitterLogin = s;
+ public Builder setSubmitterUuid(@Nullable String s) {
+ this.submitterUuid = s;
return this;
}
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() {
}
@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;
return this;
}
- public Builder setSubmitterLogin(@Nullable String s) {
- this.submitterLogin = s;
+ public Builder setSubmitterUuid(@Nullable String s) {
+ this.submitterUuid = s;
return this;
}
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;
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
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);
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);
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));
.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) {
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));
.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) {
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
submit.setType(CeTaskTypes.REPORT);
submit.setComponentUuid(project.uuid());
- submit.setSubmitterLogin(userSession.getLogin());
+ submit.setSubmitterUuid(userSession.getUuid());
return queue.submit(submit.build());
}
@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);
@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));
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) {
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);
}
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();
}
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");
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");
@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
package org.sonar.server.ce.ws;
import javax.annotation.Nullable;
-
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
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();
}
.setOrganizationUuid("org1")
.setUuid("TASK_1")
.setType(CeTaskTypes.REPORT)
- .setComponentUuid("PROJECT_1").setSubmitterLogin("robert")
+ .setComponentUuid("PROJECT_1")
+ .setSubmitterUuid("robert")
.build();
@Captor
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;
@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()
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());
@Test
public void task_is_archived() {
- logInAsRoot();
+ UserDto user = db.users().insertUser();
+ userSession.logIn(user).setRoot();
CeActivityDto activityDto = createActivityDto(SOME_TASK_UUID);
persist(activityDto);
@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());
@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);
@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);
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());
}
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;
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");
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);
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();
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;
@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();
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