for the time being, the organization uuid of a task is either the one of the component the task is associated to, or the default organizationtags/6.3-RC1
@@ -37,11 +37,13 @@ import org.sonar.db.DbSession; | |||
import org.sonar.db.ce.CeActivityDto; | |||
import org.sonar.db.ce.CeQueueDto; | |||
import org.sonar.db.component.ComponentDto; | |||
import org.sonar.server.organization.DefaultOrganizationProvider; | |||
import static com.google.common.base.Preconditions.checkState; | |||
import static com.google.common.base.Predicates.notNull; | |||
import static com.google.common.collect.FluentIterable.from; | |||
import static java.util.Collections.singleton; | |||
import static java.util.Objects.requireNonNull; | |||
import static org.sonar.db.component.ComponentDtoFunctions.toUuid; | |||
@ComputeEngineSide | |||
@@ -49,13 +51,15 @@ public class CeQueueImpl implements CeQueue { | |||
private final DbClient dbClient; | |||
private final UuidFactory uuidFactory; | |||
private final DefaultOrganizationProvider defaultOrganizationProvider; | |||
// state | |||
private AtomicBoolean submitPaused = new AtomicBoolean(false); | |||
public CeQueueImpl(DbClient dbClient, UuidFactory uuidFactory) { | |||
public CeQueueImpl(DbClient dbClient, UuidFactory uuidFactory, DefaultOrganizationProvider defaultOrganizationProvider) { | |||
this.dbClient = dbClient; | |||
this.uuidFactory = uuidFactory; | |||
this.defaultOrganizationProvider = defaultOrganizationProvider; | |||
} | |||
@Override | |||
@@ -102,13 +106,13 @@ public class CeQueueImpl implements CeQueue { | |||
protected CeTask loadTask(DbSession dbSession, CeQueueDto dto) { | |||
if (dto.getComponentUuid() == null) { | |||
return new CeQueueDtoToCeTask().apply(dto); | |||
return new CeQueueDtoToCeTask(defaultOrganizationProvider.get().getUuid()).apply(dto); | |||
} | |||
Optional<ComponentDto> componentDto = dbClient.componentDao().selectByUuid(dbSession, dto.getComponentUuid()); | |||
if (componentDto.isPresent()) { | |||
return new CeQueueDtoToCeTask(ImmutableMap.of(dto.getComponentUuid(), componentDto.get())).apply(dto); | |||
return new CeQueueDtoToCeTask(defaultOrganizationProvider.get().getUuid(), ImmutableMap.of(dto.getComponentUuid(), componentDto.get())).apply(dto); | |||
} | |||
return new CeQueueDtoToCeTask().apply(dto); | |||
return new CeQueueDtoToCeTask(defaultOrganizationProvider.get().getUuid()).apply(dto); | |||
} | |||
private List<CeTask> loadTasks(DbSession dbSession, List<CeQueueDto> dtos) { | |||
@@ -121,7 +125,7 @@ public class CeQueueImpl implements CeQueue { | |||
.uniqueIndex(toUuid()); | |||
return from(dtos) | |||
.transform(new CeQueueDtoToCeTask(componentDtoByUuid)) | |||
.transform(new CeQueueDtoToCeTask(defaultOrganizationProvider.get().getUuid(), componentDtoByUuid)) | |||
.toList(); | |||
} | |||
@@ -191,13 +195,15 @@ public class CeQueueImpl implements CeQueue { | |||
} | |||
private static class CeQueueDtoToCeTask implements Function<CeQueueDto, CeTask> { | |||
private final String defaultOrganizationUuid; | |||
private final Map<String, ComponentDto> componentDtoByUuid; | |||
public CeQueueDtoToCeTask() { | |||
this.componentDtoByUuid = Collections.emptyMap(); | |||
public CeQueueDtoToCeTask(String defaultOrganizationUuid) { | |||
this(defaultOrganizationUuid, Collections.emptyMap()); | |||
} | |||
public CeQueueDtoToCeTask(Map<String, ComponentDto> componentDtoByUuid) { | |||
public CeQueueDtoToCeTask(String defaultOrganizationUuid, Map<String, ComponentDto> componentDtoByUuid) { | |||
this.defaultOrganizationUuid = requireNonNull(defaultOrganizationUuid, "defaultOrganizationUuid can't be null"); | |||
this.componentDtoByUuid = componentDtoByUuid; | |||
} | |||
@@ -213,10 +219,15 @@ public class CeQueueImpl implements CeQueue { | |||
builder.setComponentUuid(componentUuid); | |||
ComponentDto component = componentDtoByUuid.get(componentUuid); | |||
if (component != null) { | |||
builder.setOrganizationUuid(component.getOrganizationUuid()); | |||
builder.setComponentKey(component.getKey()); | |||
builder.setComponentName(component.name()); | |||
} | |||
} | |||
// fixme this should be set from the CeQueueDto | |||
if (!builder.hasOrganizationUuid()) { | |||
builder.setOrganizationUuid(defaultOrganizationUuid); | |||
} | |||
return builder.build(); | |||
} | |||
} |
@@ -30,6 +30,7 @@ import static java.util.Objects.requireNonNull; | |||
@Immutable | |||
public class CeTask { | |||
private final String organizationUuid; | |||
private final String type; | |||
private final String uuid; | |||
private final String componentUuid; | |||
@@ -38,14 +39,19 @@ public class CeTask { | |||
private final String submitterLogin; | |||
private CeTask(Builder builder) { | |||
this.uuid = requireNonNull(emptyToNull(builder.uuid)); | |||
this.type = requireNonNull(emptyToNull(builder.type)); | |||
this.organizationUuid = requireNonNull(emptyToNull(builder.organizationUuid), "organizationUuid can't be null nor empty"); | |||
this.uuid = requireNonNull(emptyToNull(builder.uuid), "uuid can't be null nor empty"); | |||
this.type = requireNonNull(emptyToNull(builder.type), "type 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); | |||
} | |||
public String getOrganizationUuid() { | |||
return organizationUuid; | |||
} | |||
public String getUuid() { | |||
return uuid; | |||
} | |||
@@ -77,9 +83,12 @@ public class CeTask { | |||
@Override | |||
public String toString() { | |||
return MoreObjects.toStringHelper(this) | |||
.add("componentUuid", componentUuid) | |||
.add("uuid", uuid) | |||
.add("organizationUuid", organizationUuid) | |||
.add("type", type) | |||
.add("uuid", uuid) | |||
.add("componentUuid", componentUuid) | |||
.add("componentKey", componentKey) | |||
.add("componentName", componentName) | |||
.add("submitterLogin", submitterLogin) | |||
.toString(); | |||
} | |||
@@ -102,6 +111,7 @@ public class CeTask { | |||
} | |||
public static final class Builder { | |||
private String organizationUuid; | |||
private String uuid; | |||
private String type; | |||
private String componentUuid; | |||
@@ -109,6 +119,16 @@ public class CeTask { | |||
private String componentName; | |||
private String submitterLogin; | |||
public Builder setOrganizationUuid(String organizationUuid) { | |||
this.organizationUuid = organizationUuid; | |||
return this; | |||
} | |||
// FIXME remove this method when organization support is added to the Compute Engine queue | |||
public boolean hasOrganizationUuid() { | |||
return organizationUuid != null; | |||
} | |||
public Builder setUuid(String uuid) { | |||
this.uuid = uuid; | |||
return this; |
@@ -39,6 +39,7 @@ import org.sonar.db.DbClient; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.db.ce.CeActivityDto; | |||
import org.sonar.db.ce.CeQueueDto; | |||
import org.sonar.server.organization.DefaultOrganizationProvider; | |||
import static com.google.common.base.Preconditions.checkArgument; | |||
import static com.google.common.base.Preconditions.checkState; | |||
@@ -53,8 +54,9 @@ public class InternalCeQueueImpl extends CeQueueImpl implements InternalCeQueue | |||
// state | |||
private AtomicBoolean peekPaused = new AtomicBoolean(false); | |||
public InternalCeQueueImpl(System2 system2, DbClient dbClient, UuidFactory uuidFactory, CEQueueStatus queueStatus) { | |||
super(dbClient, uuidFactory); | |||
public InternalCeQueueImpl(System2 system2, DbClient dbClient, UuidFactory uuidFactory, CEQueueStatus queueStatus, | |||
DefaultOrganizationProvider defaultOrganizationProvider) { | |||
super(dbClient, uuidFactory, defaultOrganizationProvider); | |||
this.system2 = system2; | |||
this.dbClient = dbClient; | |||
this.queueStatus = queueStatus; | |||
@@ -127,7 +129,7 @@ public class InternalCeQueueImpl extends CeQueueImpl implements InternalCeQueue | |||
@CheckForNull | |||
private static String getStackTraceForPersistence(Throwable error) { | |||
try (ByteArrayOutputStream out = new ByteArrayOutputStream(); | |||
LineReturnEnforcedPrintStream printStream = new LineReturnEnforcedPrintStream(out)) { | |||
LineReturnEnforcedPrintStream printStream = new LineReturnEnforcedPrintStream(out)) { | |||
error.printStackTrace(printStream); | |||
printStream.flush(); | |||
return out.toString(); |
@@ -25,6 +25,12 @@ import org.sonar.server.qualityprofile.QualityProfile; | |||
public interface AnalysisMetadataHolder { | |||
/** | |||
* Returns the UUID of the organization the analysis belongs to. | |||
* @throws IllegalStateException if organization uuid has not been set | |||
*/ | |||
String getOrganizationUuid(); | |||
/** | |||
* Returns the UUID generated for this analysis. | |||
* @throws IllegalStateException if uuid has not been set |
@@ -27,34 +27,38 @@ import org.sonar.server.computation.util.InitializedProperty; | |||
import org.sonar.server.qualityprofile.QualityProfile; | |||
import static com.google.common.base.Preconditions.checkState; | |||
import static java.util.Objects.requireNonNull; | |||
public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder { | |||
private final InitializedProperty<String> organizationUuid = new InitializedProperty<>(); | |||
private final InitializedProperty<String> uuid = new InitializedProperty<>(); | |||
private final InitializedProperty<Long> analysisDate = new InitializedProperty<>(); | |||
private final InitializedProperty<Analysis> baseProjectSnapshot = new InitializedProperty<>(); | |||
private final InitializedProperty<Boolean> crossProjectDuplicationEnabled = new InitializedProperty<>(); | |||
private final InitializedProperty<String> branch = new InitializedProperty<>(); | |||
private final InitializedProperty<Integer> rootComponentRef = new InitializedProperty<>(); | |||
private final InitializedProperty<Map<String, QualityProfile>> qProfilesPerLanguage = new InitializedProperty<>(); | |||
@Override | |||
public MutableAnalysisMetadataHolder setUuid(String s) { | |||
checkState(!uuid.isInitialized(), "Analysis uuid has already been set"); | |||
this.uuid.setProperty(s); | |||
public MutableAnalysisMetadataHolder setOrganizationUuid(String organizationUuid) { | |||
checkState(!this.organizationUuid.isInitialized(), "Organization uuid has already been set"); | |||
requireNonNull(organizationUuid, "Organization uuid can't be null"); | |||
this.organizationUuid.setProperty(organizationUuid); | |||
return this; | |||
} | |||
@Override | |||
public MutableAnalysisMetadataHolder setAnalysisDate(long date) { | |||
checkState(!analysisDate.isInitialized(), "Analysis date has already been set"); | |||
this.analysisDate.setProperty(date); | |||
public String getOrganizationUuid() { | |||
checkState(organizationUuid.isInitialized(), "Organization uuid has not been set"); | |||
return organizationUuid.getProperty(); | |||
} | |||
@Override | |||
public MutableAnalysisMetadataHolder setUuid(String s) { | |||
checkState(!uuid.isInitialized(), "Analysis uuid has already been set"); | |||
requireNonNull(s, "Analysis uuid can't be null"); | |||
this.uuid.setProperty(s); | |||
return this; | |||
} | |||
@@ -64,6 +68,13 @@ public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder | |||
return this.uuid.getProperty(); | |||
} | |||
@Override | |||
public MutableAnalysisMetadataHolder setAnalysisDate(long date) { | |||
checkState(!analysisDate.isInitialized(), "Analysis date has already been set"); | |||
this.analysisDate.setProperty(date); | |||
return this; | |||
} | |||
@Override | |||
public long getAnalysisDate() { | |||
checkState(analysisDate.isInitialized(), "Analysis date has not been set"); |
@@ -25,6 +25,11 @@ import org.sonar.server.qualityprofile.QualityProfile; | |||
public interface MutableAnalysisMetadataHolder extends AnalysisMetadataHolder { | |||
/** | |||
* @throws IllegalStateException if the organization uuid has already been set | |||
*/ | |||
MutableAnalysisMetadataHolder setOrganizationUuid(String organizationUuid); | |||
/** | |||
* @throws IllegalStateException if the analysis uuid has already been set | |||
*/ |
@@ -69,6 +69,7 @@ public class LoadReportAnalysisMetadataHolderStep implements ComputationStep { | |||
mutableAnalysisMetadataHolder.setBranch(isNotEmpty(reportMetadata.getBranch()) ? reportMetadata.getBranch() : null); | |||
mutableAnalysisMetadataHolder.setCrossProjectDuplicationEnabled(reportMetadata.getCrossProjectDuplicationActivated()); | |||
mutableAnalysisMetadataHolder.setQProfilesByLanguage(transformValues(reportMetadata.getQprofilesPerLanguage(), TO_COMPUTE_QPROFILE)); | |||
mutableAnalysisMetadataHolder.setOrganizationUuid(ceTask.getOrganizationUuid()); | |||
} | |||
private void checkProjectKeyConsistency(ScannerReport.Metadata reportMetadata) { |
@@ -37,6 +37,7 @@ import org.sonar.db.DbClient; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.db.component.ComponentDto; | |||
import org.sonar.db.component.ComponentUpdateDto; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder; | |||
import org.sonar.server.computation.task.projectanalysis.component.Component; | |||
import org.sonar.server.computation.task.projectanalysis.component.CrawlerDepthLimit; | |||
import org.sonar.server.computation.task.projectanalysis.component.DbIdsRepositoryImpl; | |||
@@ -47,7 +48,6 @@ import org.sonar.server.computation.task.projectanalysis.component.PathAwareVisi | |||
import org.sonar.server.computation.task.projectanalysis.component.PathAwareVisitorAdapter; | |||
import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolder; | |||
import org.sonar.server.computation.task.step.ComputationStep; | |||
import org.sonar.server.organization.DefaultOrganizationProvider; | |||
import static com.google.common.collect.FluentIterable.from; | |||
import static org.sonar.db.component.ComponentDto.UUID_PATH_OF_ROOT; | |||
@@ -65,18 +65,17 @@ public class PersistComponentsStep implements ComputationStep { | |||
private final MutableDbIdsRepository dbIdsRepository; | |||
private final System2 system2; | |||
private final MutableDisabledComponentsHolder disabledComponentsHolder; | |||
private final DefaultOrganizationProvider defaultOrganizationProvider; | |||
private final AnalysisMetadataHolder analysisMetadataHolder; | |||
public PersistComponentsStep(DbClient dbClient, TreeRootHolder treeRootHolder, | |||
MutableDbIdsRepository dbIdsRepository, System2 system2, | |||
MutableDisabledComponentsHolder disabledComponentsHolder, | |||
DefaultOrganizationProvider defaultOrganizationProvider) { | |||
MutableDisabledComponentsHolder disabledComponentsHolder, AnalysisMetadataHolder analysisMetadataHolder) { | |||
this.dbClient = dbClient; | |||
this.treeRootHolder = treeRootHolder; | |||
this.dbIdsRepository = dbIdsRepository; | |||
this.system2 = system2; | |||
this.disabledComponentsHolder = disabledComponentsHolder; | |||
this.defaultOrganizationProvider = defaultOrganizationProvider; | |||
this.analysisMetadataHolder = analysisMetadataHolder; | |||
} | |||
@Override | |||
@@ -349,7 +348,7 @@ public class PersistComponentsStep implements ComputationStep { | |||
String componentUuid = component.getUuid(); | |||
ComponentDto componentDto = new ComponentDto(); | |||
componentDto.setOrganizationUuid(defaultOrganizationProvider.get().getUuid()); | |||
componentDto.setOrganizationUuid(analysisMetadataHolder.getOrganizationUuid()); | |||
componentDto.setUuid(componentUuid); | |||
componentDto.setKey(componentKey); | |||
componentDto.setDeprecatedKey(componentKey); |
@@ -36,6 +36,8 @@ import org.sonar.db.ce.CeQueueDto; | |||
import org.sonar.db.ce.CeTaskTypes; | |||
import org.sonar.db.component.ComponentDto; | |||
import org.sonar.db.component.ComponentTesting; | |||
import org.sonar.server.organization.DefaultOrganizationProvider; | |||
import org.sonar.server.organization.TestDefaultOrganizationProvider; | |||
import static java.util.Arrays.asList; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
@@ -43,17 +45,19 @@ import static org.hamcrest.Matchers.startsWith; | |||
public class CeQueueImplTest { | |||
private System2 system2 = new TestSystem2().setNow(1_450_000_000_000L); | |||
@Rule | |||
public ExpectedException expectedException = ExpectedException.none(); | |||
System2 system2 = new TestSystem2().setNow(1_450_000_000_000L); | |||
@Rule | |||
public DbTester dbTester = DbTester.create(system2); | |||
DbSession session = dbTester.getSession(); | |||
UuidFactory uuidFactory = UuidFactoryImpl.INSTANCE; | |||
CeQueue underTest = new CeQueueImpl(dbTester.getDbClient(), uuidFactory); | |||
private DbSession session = dbTester.getSession(); | |||
private UuidFactory uuidFactory = UuidFactoryImpl.INSTANCE; | |||
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(dbTester); | |||
private CeQueue underTest = new CeQueueImpl(dbTester.getDbClient(), uuidFactory, defaultOrganizationProvider); | |||
@Test | |||
public void submit_returns_task_populated_from_CeTaskSubmit_and_creates_CeQueue_row() { | |||
@@ -176,6 +180,11 @@ public class CeQueueImplTest { | |||
} | |||
private void verifyCeTask(CeTaskSubmit taskSubmit, CeTask task, @Nullable ComponentDto componentDto) { | |||
if (componentDto == null) { | |||
assertThat(task.getOrganizationUuid()).isEqualTo(defaultOrganizationProvider.get().getUuid()); | |||
} else { | |||
assertThat(task.getOrganizationUuid()).isEqualTo(componentDto.getOrganizationUuid()); | |||
} | |||
assertThat(task.getUuid()).isEqualTo(taskSubmit.getUuid()); | |||
assertThat(task.getComponentUuid()).isEqualTo(task.getComponentUuid()); | |||
assertThat(task.getType()).isEqualTo(taskSubmit.getType()); |
@@ -19,37 +19,125 @@ | |||
*/ | |||
package org.sonar.ce.queue; | |||
import org.junit.Rule; | |||
import org.junit.Test; | |||
import org.junit.rules.ExpectedException; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
public class CeTaskTest { | |||
@Rule | |||
public ExpectedException expectedException = ExpectedException.none(); | |||
private CeTask.Builder underTest = new CeTask.Builder(); | |||
@Test | |||
public void build() { | |||
CeTask.Builder builder = new CeTask.Builder(); | |||
builder.setType("TYPE_1"); | |||
builder.setUuid("UUID_1"); | |||
builder.setSubmitterLogin("LOGIN_1"); | |||
builder.setComponentKey("COMPONENT_KEY_1"); | |||
builder.setComponentUuid("COMPONENT_UUID_1"); | |||
builder.setComponentName("The component"); | |||
CeTask task = builder.build(); | |||
public void build_fails_with_NPE_if_organizationUuid_is_null() { | |||
expectedException.expect(NullPointerException.class); | |||
expectedException.expectMessage("organizationUuid can't be null nor empty"); | |||
assertThat(task.getType()).isEqualTo("TYPE_1"); | |||
underTest.build(); | |||
} | |||
@Test | |||
public void build_fails_with_NPE_if_organizationUuid_is_empty() { | |||
underTest.setOrganizationUuid(""); | |||
expectedException.expect(NullPointerException.class); | |||
expectedException.expectMessage("organizationUuid can't be null nor empty"); | |||
underTest.build(); | |||
} | |||
@Test | |||
public void build_fails_with_NPE_if_uid_is_null() { | |||
underTest.setOrganizationUuid("org1"); | |||
expectedException.expect(NullPointerException.class); | |||
expectedException.expectMessage("uuid can't be null nor empty"); | |||
underTest.build(); | |||
} | |||
@Test | |||
public void build_fails_with_NPE_if_uuid_is_empty() { | |||
underTest.setOrganizationUuid("org1").setUuid(""); | |||
expectedException.expect(NullPointerException.class); | |||
expectedException.expectMessage("uuid can't be null nor empty"); | |||
underTest.build(); | |||
} | |||
@Test | |||
public void build_fails_with_NPE_if_type_is_null() { | |||
underTest.setOrganizationUuid("org1").setUuid("uuid"); | |||
expectedException.expect(NullPointerException.class); | |||
expectedException.expectMessage("type can't be null nor empty"); | |||
underTest.build(); | |||
} | |||
@Test | |||
public void build_fails_with_NPE_if_type_is_empty() { | |||
underTest.setOrganizationUuid("org1").setUuid("uuid").setType(""); | |||
expectedException.expect(NullPointerException.class); | |||
expectedException.expectMessage("type can't be null nor empty"); | |||
underTest.build(); | |||
} | |||
@Test | |||
public void verify_getters() { | |||
underTest.setOrganizationUuid("org1"); | |||
underTest.setType("TYPE_1"); | |||
underTest.setUuid("UUID_1"); | |||
underTest.setSubmitterLogin("LOGIN_1"); | |||
underTest.setComponentKey("COMPONENT_KEY_1"); | |||
underTest.setComponentUuid("COMPONENT_UUID_1"); | |||
underTest.setComponentName("The component"); | |||
CeTask task = underTest.build(); | |||
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.getComponentKey()).isEqualTo("COMPONENT_KEY_1"); | |||
assertThat(task.getComponentUuid()).isEqualTo("COMPONENT_UUID_1"); | |||
assertThat(task.getComponentName()).isEqualTo("The component"); | |||
} | |||
@Test | |||
public void empty_in_component_properties_is_considered_as_null() { | |||
CeTask ceTask = underTest.setOrganizationUuid("org1").setUuid("uuid").setType("type") | |||
.setComponentKey("") | |||
.setComponentName("") | |||
.setComponentUuid("") | |||
.build(); | |||
assertThat(ceTask.getComponentKey()).isNull(); | |||
assertThat(ceTask.getComponentName()).isNull(); | |||
assertThat(ceTask.getComponentUuid()).isNull(); | |||
} | |||
@Test | |||
public void empty_in_submitterLogin_is_considered_as_null() { | |||
CeTask ceTask = underTest.setOrganizationUuid("org1").setUuid("uuid").setType("type") | |||
.setSubmitterLogin("") | |||
.build(); | |||
assertThat(ceTask.getSubmitterLogin()).isNull(); | |||
} | |||
@Test | |||
public void equals_and_hashCode_on_uuid() { | |||
CeTask.Builder builder1 = new CeTask.Builder().setType("TYPE_1").setUuid("UUID_1"); | |||
CeTask task1 = builder1.build(); | |||
CeTask task1bis = builder1.build(); | |||
CeTask task2 = new CeTask.Builder().setType("TYPE_1").setUuid("UUID_2").build(); | |||
underTest.setOrganizationUuid("org1").setType("TYPE_1").setUuid("UUID_1"); | |||
CeTask task1 = underTest.build(); | |||
CeTask task1bis = underTest.build(); | |||
CeTask task2 = new CeTask.Builder().setOrganizationUuid("org1").setType("TYPE_1").setUuid("UUID_2").build(); | |||
assertThat(task1.equals(task1)).isTrue(); | |||
assertThat(task1.equals(task1bis)).isTrue(); |
@@ -22,14 +22,14 @@ package org.sonar.server.ce.ws; | |||
import java.io.InputStream; | |||
import org.junit.Test; | |||
import org.mockito.Matchers; | |||
import org.sonar.ce.queue.CeTask; | |||
import org.sonar.core.util.Protobuf; | |||
import org.sonar.db.ce.CeTaskTypes; | |||
import org.sonar.ce.queue.CeTask; | |||
import org.sonar.server.computation.queue.ReportSubmitter; | |||
import org.sonarqube.ws.MediaTypes; | |||
import org.sonar.server.ws.TestResponse; | |||
import org.sonar.server.ws.WsActionTester; | |||
import org.sonar.test.JsonAssert; | |||
import org.sonarqube.ws.MediaTypes; | |||
import org.sonarqube.ws.WsCe; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
@@ -41,14 +41,21 @@ import static org.mockito.Mockito.when; | |||
public class SubmitActionTest { | |||
ReportSubmitter reportSubmitter = mock(ReportSubmitter.class); | |||
SubmitAction underTest = new SubmitAction(reportSubmitter); | |||
WsActionTester tester = new WsActionTester(underTest); | |||
private static final CeTask A_CE_TASK = new CeTask.Builder() | |||
.setOrganizationUuid("org1") | |||
.setUuid("TASK_1") | |||
.setType(CeTaskTypes.REPORT) | |||
.setComponentUuid("PROJECT_1").setSubmitterLogin("robert") | |||
.build(); | |||
private ReportSubmitter reportSubmitter = mock(ReportSubmitter.class); | |||
private SubmitAction underTest = new SubmitAction(reportSubmitter); | |||
private WsActionTester tester = new WsActionTester(underTest); | |||
@Test | |||
public void submit_task_to_the_queue_and_ask_for_immediate_processing() { | |||
CeTask task = new CeTask.Builder().setUuid("TASK_1").setType(CeTaskTypes.REPORT).setComponentUuid("PROJECT_1").setSubmitterLogin("robert").build(); | |||
when(reportSubmitter.submit(eq("my_project"), Matchers.isNull(String.class), eq("My Project"), any(InputStream.class))).thenReturn(task); | |||
when(reportSubmitter.submit(eq("my_project"), Matchers.isNull(String.class), eq("My Project"), any(InputStream.class))) | |||
.thenReturn(A_CE_TASK); | |||
TestResponse wsResponse = tester.newRequest() | |||
.setParam("projectKey", "my_project") | |||
@@ -67,8 +74,8 @@ public class SubmitActionTest { | |||
@Test | |||
public void test_example_json_response() { | |||
CeTask task = new CeTask.Builder().setUuid("TASK_1").setType(CeTaskTypes.REPORT).setComponentUuid("PROJECT_1").setSubmitterLogin("robert").build(); | |||
when(reportSubmitter.submit(eq("my_project"), Matchers.isNull(String.class), eq("My Project"), any(InputStream.class))).thenReturn(task); | |||
when(reportSubmitter.submit(eq("my_project"), Matchers.isNull(String.class), eq("My Project"), any(InputStream.class))) | |||
.thenReturn(A_CE_TASK); | |||
TestResponse wsResponse = tester.newRequest() | |||
.setParam("projectKey", "my_project") | |||
@@ -86,8 +93,8 @@ public class SubmitActionTest { | |||
*/ | |||
@Test | |||
public void project_name_is_optional() { | |||
CeTask task = new CeTask.Builder().setUuid("TASK_1").setType(CeTaskTypes.REPORT).setComponentUuid("PROJECT_1").setSubmitterLogin("robert").build(); | |||
when(reportSubmitter.submit(eq("my_project"), Matchers.isNull(String.class), eq("my_project"), any(InputStream.class))).thenReturn(task); | |||
when(reportSubmitter.submit(eq("my_project"), Matchers.isNull(String.class), eq("my_project"), any(InputStream.class))) | |||
.thenReturn(A_CE_TASK); | |||
tester.newRequest() | |||
.setParam("projectKey", "my_project") |
@@ -43,6 +43,8 @@ import org.sonar.db.ce.CeTaskTypes; | |||
import org.sonar.db.component.ComponentDto; | |||
import org.sonar.db.component.ComponentTesting; | |||
import org.sonar.server.computation.monitoring.CEQueueStatusImpl; | |||
import org.sonar.server.organization.DefaultOrganizationProvider; | |||
import org.sonar.server.organization.TestDefaultOrganizationProvider; | |||
import static java.util.Arrays.asList; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
@@ -55,18 +57,19 @@ public class InternalCeQueueImplTest { | |||
private static final String AN_ANALYSIS_UUID = "U1"; | |||
private System2 system2 = new TestSystem2().setNow(1_450_000_000_000L); | |||
@Rule | |||
public ExpectedException expectedException = ExpectedException.none(); | |||
System2 system2 = new TestSystem2().setNow(1_450_000_000_000L); | |||
@Rule | |||
public DbTester dbTester = DbTester.create(system2); | |||
DbSession session = dbTester.getSession(); | |||
UuidFactory uuidFactory = UuidFactoryImpl.INSTANCE; | |||
CEQueueStatus queueStatus = new CEQueueStatusImpl(dbTester.getDbClient()); | |||
InternalCeQueue underTest = new InternalCeQueueImpl(system2, dbTester.getDbClient(), uuidFactory, queueStatus); | |||
private DbSession session = dbTester.getSession(); | |||
private UuidFactory uuidFactory = UuidFactoryImpl.INSTANCE; | |||
private CEQueueStatus queueStatus = new CEQueueStatusImpl(dbTester.getDbClient()); | |||
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(dbTester); | |||
private InternalCeQueue underTest = new InternalCeQueueImpl(system2, dbTester.getDbClient(), uuidFactory, queueStatus, defaultOrganizationProvider); | |||
@Test | |||
public void submit_returns_task_populated_from_CeTaskSubmit_and_creates_CeQueue_row() { | |||
@@ -310,6 +313,11 @@ public class InternalCeQueueImplTest { | |||
} | |||
private void verifyCeTask(CeTaskSubmit taskSubmit, CeTask task, @Nullable ComponentDto componentDto) { | |||
if (componentDto == null) { | |||
assertThat(task.getOrganizationUuid()).isEqualTo(defaultOrganizationProvider.get().getUuid()); | |||
} else { | |||
assertThat(task.getOrganizationUuid()).isEqualTo(componentDto.getOrganizationUuid()); | |||
} | |||
assertThat(task.getUuid()).isEqualTo(taskSubmit.getUuid()); | |||
assertThat(task.getComponentUuid()).isEqualTo(task.getComponentUuid()); | |||
assertThat(task.getType()).isEqualTo(taskSubmit.getType()); |
@@ -27,20 +27,72 @@ import static org.assertj.core.api.Assertions.assertThat; | |||
public class AnalysisMetadataHolderImplTest { | |||
@Rule | |||
public ExpectedException expectedException = ExpectedException.none(); | |||
static Analysis baseProjectAnalysis = new Analysis.Builder() | |||
private static Analysis baseProjectAnalysis = new Analysis.Builder() | |||
.setId(1) | |||
.setUuid("uuid_1") | |||
.setCreatedAt(123456789L) | |||
.build(); | |||
private static long SOME_DATE = 10000000L; | |||
@Rule | |||
public ExpectedException expectedException = ExpectedException.none(); | |||
static long SOME_DATE = 10000000L; | |||
private AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl(); | |||
@Test | |||
public void getOrganizationUuid_throws_ISE_if_organization_uuid_is_not_set() { | |||
expectedException.expect(IllegalStateException.class); | |||
expectedException.expectMessage("Organization uuid has not been set"); | |||
underTest.getOrganizationUuid(); | |||
} | |||
@Test | |||
public void setOrganizationUuid_throws_NPE_is_parameter_is_null() { | |||
expectedException.expect(NullPointerException.class); | |||
expectedException.expectMessage("Organization uuid can't be null"); | |||
underTest.setOrganizationUuid(null); | |||
} | |||
@Test | |||
public void setOrganizationUuid_throws_ISE_if_called_twice() { | |||
underTest.setOrganizationUuid("org1"); | |||
expectedException.expect(IllegalStateException.class); | |||
expectedException.expectMessage("Organization uuid has already been set"); | |||
underTest.setOrganizationUuid("org1"); | |||
} | |||
@Test | |||
public void getUuid_throws_ISE_if_organization_uuid_is_not_set() { | |||
expectedException.expect(IllegalStateException.class); | |||
expectedException.expectMessage("Analysis uuid has not been set"); | |||
underTest.getUuid(); | |||
} | |||
@Test | |||
public void setUuid_throws_NPE_is_parameter_is_null() { | |||
expectedException.expect(NullPointerException.class); | |||
expectedException.expectMessage("Analysis uuid can't be null"); | |||
underTest.setUuid(null); | |||
} | |||
@Test | |||
public void setUuid_throws_ISE_if_called_twice() { | |||
underTest.setUuid("org1"); | |||
expectedException.expect(IllegalStateException.class); | |||
expectedException.expectMessage("Analysis uuid has already been set"); | |||
underTest.setUuid("org1"); | |||
} | |||
@Test | |||
public void getAnalysisDate_returns_date_with_same_time_as_the_one_set_with_setAnalysisDate() throws InterruptedException { | |||
AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl(); | |||
underTest.setAnalysisDate(SOME_DATE); | |||
@@ -175,7 +227,7 @@ public class AnalysisMetadataHolderImplTest { | |||
} | |||
@Test | |||
public void branch_throws_ISE_when_holder_is_not_initialized() { | |||
public void getBranch_throws_ISE_when_holder_is_not_initialized() { | |||
expectedException.expect(IllegalStateException.class); | |||
expectedException.expectMessage("Branch has not been set"); | |||
@@ -21,6 +21,7 @@ package org.sonar.server.computation.task.projectanalysis.analysis; | |||
import java.util.Date; | |||
import java.util.Map; | |||
import java.util.Objects; | |||
import javax.annotation.CheckForNull; | |||
import javax.annotation.Nullable; | |||
import org.junit.rules.ExternalResource; | |||
@@ -32,6 +33,8 @@ import static com.google.common.base.Preconditions.checkState; | |||
public class AnalysisMetadataHolderRule extends ExternalResource implements MutableAnalysisMetadataHolder { | |||
private final InitializedProperty<String> organizationUuid = new InitializedProperty<>(); | |||
private final InitializedProperty<String> uuid = new InitializedProperty<>(); | |||
private final InitializedProperty<Long> analysisDate = new InitializedProperty<>(); | |||
@@ -47,9 +50,16 @@ public class AnalysisMetadataHolderRule extends ExternalResource implements Muta | |||
private final InitializedProperty<Map<String, QualityProfile>> qProfilesPerLanguage = new InitializedProperty<>(); | |||
@Override | |||
public String getUuid() { | |||
checkState(uuid.isInitialized(), "Analysis UUID has not been set"); | |||
return this.uuid.getProperty(); | |||
public AnalysisMetadataHolderRule setOrganizationUuid(String organizationUuid) { | |||
Objects.requireNonNull(organizationUuid, "organizationUuid can't be null"); | |||
this.organizationUuid.setProperty(organizationUuid); | |||
return this; | |||
} | |||
@Override | |||
public String getOrganizationUuid() { | |||
checkState(organizationUuid.isInitialized(), "Organization UUID has not been set"); | |||
return this.organizationUuid.getProperty(); | |||
} | |||
@Override | |||
@@ -59,6 +69,12 @@ public class AnalysisMetadataHolderRule extends ExternalResource implements Muta | |||
return this; | |||
} | |||
@Override | |||
public String getUuid() { | |||
checkState(uuid.isInitialized(), "Analysis UUID has not been set"); | |||
return this.uuid.getProperty(); | |||
} | |||
public AnalysisMetadataHolderRule setAnalysisDate(Date date) { | |||
checkNotNull(date, "Date must not be null"); | |||
this.analysisDate.setProperty(date.getTime()); |
@@ -35,8 +35,13 @@ public class MutableAnalysisMetadataHolderRule extends ExternalResource implemen | |||
} | |||
@Override | |||
public String getUuid() { | |||
return delegate.getUuid(); | |||
public MutableAnalysisMetadataHolder setOrganizationUuid(String organizationUuid) { | |||
return delegate.setOrganizationUuid(organizationUuid); | |||
} | |||
@Override | |||
public String getOrganizationUuid() { | |||
return delegate.getOrganizationUuid(); | |||
} | |||
public MutableAnalysisMetadataHolderRule setUuid(String s) { | |||
@@ -44,6 +49,16 @@ public class MutableAnalysisMetadataHolderRule extends ExternalResource implemen | |||
return this; | |||
} | |||
@Override | |||
public String getUuid() { | |||
return delegate.getUuid(); | |||
} | |||
public MutableAnalysisMetadataHolderRule setAnalysisDate(long date) { | |||
delegate.setAnalysisDate(date); | |||
return this; | |||
} | |||
@Override | |||
public long getAnalysisDate() { | |||
return delegate.getAnalysisDate(); | |||
@@ -54,11 +69,6 @@ public class MutableAnalysisMetadataHolderRule extends ExternalResource implemen | |||
return delegate.hasAnalysisDateBeenSet(); | |||
} | |||
public MutableAnalysisMetadataHolderRule setAnalysisDate(long date) { | |||
delegate.setAnalysisDate(date); | |||
return this; | |||
} | |||
@Override | |||
public boolean isFirstAnalysis() { | |||
return delegate.isFirstAnalysis(); |
@@ -76,6 +76,7 @@ public class PostProjectAnalysisTasksExecutorTest { | |||
private System2 system2 = mock(System2.class); | |||
private ArgumentCaptor<PostProjectAnalysisTask.ProjectAnalysis> projectAnalysisArgumentCaptor = ArgumentCaptor.forClass(PostProjectAnalysisTask.ProjectAnalysis.class); | |||
private CeTask ceTask = new CeTask.Builder() | |||
.setOrganizationUuid("org1") | |||
.setType("type") | |||
.setUuid("uuid") | |||
.setComponentKey("component key") | |||
@@ -245,12 +246,12 @@ public class PostProjectAnalysisTasksExecutorTest { | |||
InOrder inOrder = inOrder(postProjectAnalysisTask1, postProjectAnalysisTask2, postProjectAnalysisTask3); | |||
doThrow(new RuntimeException("Faking a listener throws an exception")) | |||
.when(postProjectAnalysisTask2) | |||
.finished(any(PostProjectAnalysisTask.ProjectAnalysis.class)); | |||
.when(postProjectAnalysisTask2) | |||
.finished(any(PostProjectAnalysisTask.ProjectAnalysis.class)); | |||
new PostProjectAnalysisTasksExecutor( | |||
ceTask, analysisMetadataHolder, qualityGateHolder, qualityGateStatusHolder, reportReader, | |||
system2, new PostProjectAnalysisTask[] {postProjectAnalysisTask1, postProjectAnalysisTask2, postProjectAnalysisTask3}) | |||
ceTask, analysisMetadataHolder, qualityGateHolder, qualityGateStatusHolder, reportReader, | |||
system2, new PostProjectAnalysisTask[] {postProjectAnalysisTask1, postProjectAnalysisTask2, postProjectAnalysisTask3}) | |||
.finished(allStepsExecuted); | |||
inOrder.verify(postProjectAnalysisTask1).finished(projectAnalysisArgumentCaptor.capture()); |
@@ -57,7 +57,7 @@ public class ExtractReportStepTest { | |||
public DbTester dbTester = DbTester.create(System2.INSTANCE); | |||
private MutableBatchReportDirectoryHolder reportDirectoryHolder = new BatchReportDirectoryHolderImpl(); | |||
private CeTask ceTask = new CeTask.Builder().setType(CeTaskTypes.REPORT).setUuid(TASK_UUID).build(); | |||
private CeTask ceTask = new CeTask.Builder().setOrganizationUuid("org1").setType(CeTaskTypes.REPORT).setUuid(TASK_UUID).build(); | |||
private ExtractReportStep underTest = new ExtractReportStep(dbTester.getDbClient(), ceTask, tempFolder, reportDirectoryHolder); | |||
@@ -35,10 +35,9 @@ import static org.mockito.Mockito.when; | |||
public class LoadReportAnalysisMetadataHolderStepTest { | |||
public static final String PROJECT_KEY = "project_key"; | |||
static long ANALYSIS_DATE = 123456789L; | |||
static String BRANCH = "origin/master"; | |||
private static final String PROJECT_KEY = "project_key"; | |||
private static final String BRANCH = "origin/master"; | |||
private static final long ANALYSIS_DATE = 123456789L; | |||
@Rule | |||
public BatchReportReaderRule reportReader = new BatchReportReaderRule(); | |||
@@ -177,6 +176,17 @@ public class LoadReportAnalysisMetadataHolderStepTest { | |||
} | |||
} | |||
@Test | |||
public void execute_set_organization_uuid_from_ce_task() { | |||
reportReader.setMetadata( | |||
newBatchReportBuilder() | |||
.build()); | |||
underTest.execute(); | |||
assertThat(analysisMetadataHolder.getOrganizationUuid()).isEqualTo(ceTask.getOrganizationUuid()); | |||
} | |||
private static ScannerReport.Metadata.Builder newBatchReportBuilder() { | |||
return ScannerReport.Metadata.newBuilder() | |||
.setProjectKey(PROJECT_KEY); | |||
@@ -184,6 +194,7 @@ public class LoadReportAnalysisMetadataHolderStepTest { | |||
private CeTask createCeTask(String projectKey) { | |||
CeTask res = mock(CeTask.class); | |||
when(res.getOrganizationUuid()).thenReturn("org1"); | |||
when(res.getComponentKey()).thenReturn(projectKey); | |||
return res; | |||
} |
@@ -31,14 +31,13 @@ import org.sonar.db.DbClient; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.db.component.ComponentDto; | |||
import org.sonar.db.component.ComponentTesting; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule; | |||
import org.sonar.server.computation.task.projectanalysis.component.Component; | |||
import org.sonar.server.computation.task.projectanalysis.component.FileAttributes; | |||
import org.sonar.server.computation.task.projectanalysis.component.MutableDbIdsRepositoryRule; | |||
import org.sonar.server.computation.task.projectanalysis.component.MutableDisabledComponentsHolder; | |||
import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolderRule; | |||
import org.sonar.server.computation.task.step.ComputationStep; | |||
import org.sonar.server.organization.DefaultOrganizationProvider; | |||
import org.sonar.server.organization.TestDefaultOrganizationProvider; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.assertj.guava.api.Assertions.assertThat; | |||
@@ -64,12 +63,14 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
public TreeRootHolderRule treeRootHolder = new TreeRootHolderRule(); | |||
@Rule | |||
public MutableDbIdsRepositoryRule dbIdsRepository = MutableDbIdsRepositoryRule.create(treeRootHolder); | |||
@Rule | |||
public AnalysisMetadataHolderRule analysisMetadataHolder = new AnalysisMetadataHolderRule() | |||
.setOrganizationUuid("org1"); | |||
private System2 system2 = mock(System2.class); | |||
private DbClient dbClient = dbTester.getDbClient(); | |||
private Date now; | |||
private MutableDisabledComponentsHolder disabledComponentsHolder = mock(MutableDisabledComponentsHolder.class, RETURNS_DEEP_STUBS); | |||
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(dbTester); | |||
private PersistComponentsStep underTest; | |||
@Before | |||
@@ -77,7 +78,7 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
now = DATE_FORMAT.parse("2015-06-02"); | |||
when(system2.now()).thenReturn(now.getTime()); | |||
underTest = new PersistComponentsStep(dbClient, treeRootHolder, dbIdsRepository, system2, disabledComponentsHolder, defaultOrganizationProvider); | |||
underTest = new PersistComponentsStep(dbClient, treeRootHolder, dbIdsRepository, system2, disabledComponentsHolder, analysisMetadataHolder); | |||
} | |||
@Override | |||
@@ -113,7 +114,7 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(4); | |||
ComponentDto projectDto = dbClient.componentDao().selectByKey(dbTester.getSession(), PROJECT_KEY).get(); | |||
assertThat(projectDto.getOrganizationUuid()).isEqualTo(defaultOrganizationProvider.get().getUuid()); | |||
assertThat(projectDto.getOrganizationUuid()).isEqualTo(analysisMetadataHolder.getOrganizationUuid()); | |||
assertThat(projectDto.name()).isEqualTo("Project"); | |||
assertThat(projectDto.description()).isEqualTo("Project description"); | |||
assertThat(projectDto.path()).isNull(); | |||
@@ -128,7 +129,7 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
assertThat(projectDto.getCreatedAt()).isEqualTo(now); | |||
ComponentDto moduleDto = dbClient.componentDao().selectByKey(dbTester.getSession(), MODULE_KEY).get(); | |||
assertThat(moduleDto.getOrganizationUuid()).isEqualTo(defaultOrganizationProvider.get().getUuid()); | |||
assertThat(moduleDto.getOrganizationUuid()).isEqualTo(analysisMetadataHolder.getOrganizationUuid()); | |||
assertThat(moduleDto.name()).isEqualTo("Module"); | |||
assertThat(moduleDto.description()).isEqualTo("Module description"); | |||
assertThat(moduleDto.path()).isEqualTo("module"); | |||
@@ -143,7 +144,7 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
assertThat(moduleDto.getCreatedAt()).isEqualTo(now); | |||
ComponentDto directoryDto = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_KEY:src/main/java/dir").get(); | |||
assertThat(directoryDto.getOrganizationUuid()).isEqualTo(defaultOrganizationProvider.get().getUuid()); | |||
assertThat(directoryDto.getOrganizationUuid()).isEqualTo(analysisMetadataHolder.getOrganizationUuid()); | |||
assertThat(directoryDto.name()).isEqualTo("src/main/java/dir"); | |||
assertThat(directoryDto.description()).isNull(); | |||
assertThat(directoryDto.path()).isEqualTo("src/main/java/dir"); | |||
@@ -158,7 +159,7 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
assertThat(directoryDto.getCreatedAt()).isEqualTo(now); | |||
ComponentDto fileDto = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_KEY:src/main/java/dir/Foo.java").get(); | |||
assertThat(fileDto.getOrganizationUuid()).isEqualTo(defaultOrganizationProvider.get().getUuid()); | |||
assertThat(fileDto.getOrganizationUuid()).isEqualTo(analysisMetadataHolder.getOrganizationUuid()); | |||
assertThat(fileDto.name()).isEqualTo("Foo.java"); | |||
assertThat(fileDto.description()).isNull(); | |||
assertThat(fileDto.path()).isEqualTo("src/main/java/dir/Foo.java"); | |||
@@ -246,9 +247,9 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
builder(DIRECTORY, 3).setUuid("CDEF").setKey("MODULE_KEY:src/main/java/dir") | |||
.setPath("src/main/java/dir") | |||
.addChildren( | |||
builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java") | |||
.setPath("src/main/java/dir/Foo.java") | |||
.build()) | |||
builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java") | |||
.setPath("src/main/java/dir/Foo.java") | |||
.build()) | |||
.build()) | |||
.build()) | |||
.build()); | |||
@@ -298,13 +299,13 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
builder(Component.Type.MODULE, 3).setUuid("CDEF").setKey("SUB_MODULE_1_KEY") | |||
.setName("Sub Module 1") | |||
.addChildren( | |||
builder(Component.Type.MODULE, 4).setUuid("DEFG").setKey("SUB_MODULE_2_KEY") | |||
.setName("Sub Module 2") | |||
.addChildren( | |||
builder(DIRECTORY, 5).setUuid("EFGH").setKey("SUB_MODULE_2_KEY:src/main/java/dir") | |||
.setPath("src/main/java/dir") | |||
.build()) | |||
builder(Component.Type.MODULE, 4).setUuid("DEFG").setKey("SUB_MODULE_2_KEY") | |||
.setName("Sub Module 2") | |||
.addChildren( | |||
builder(DIRECTORY, 5).setUuid("EFGH").setKey("SUB_MODULE_2_KEY:src/main/java/dir") | |||
.setPath("src/main/java/dir") | |||
.build()) | |||
.build()) | |||
.build()) | |||
.build()) | |||
.build()); | |||
@@ -389,7 +390,8 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
ComponentDto module = ComponentTesting.newModuleDto("BCDE", project).setKey(MODULE_KEY).setName("Module"); | |||
dbClient.componentDao().insert(dbTester.getSession(), module); | |||
ComponentDto directory = ComponentTesting.newDirectory(module, "src/main/java/dir").setUuid("CDEF").setKey("MODULE_KEY:src/main/java/dir"); | |||
ComponentDto file = ComponentTesting.newFileDto(module, directory, "DEFG").setPath("src/main/java/dir/Foo.java").setName("Foo.java").setKey("MODULE_KEY:src/main/java/dir/Foo.java"); | |||
ComponentDto file = ComponentTesting.newFileDto(module, directory, "DEFG").setPath("src/main/java/dir/Foo.java").setName("Foo.java") | |||
.setKey("MODULE_KEY:src/main/java/dir/Foo.java"); | |||
dbClient.componentDao().insert(dbTester.getSession(), directory, file); | |||
dbTester.getSession().commit(); | |||
@@ -403,9 +405,9 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
builder(DIRECTORY, 3).setUuid("CDEF").setKey("MODULE_KEY:src/main/java/dir") | |||
.setPath("src/main/java/dir") | |||
.addChildren( | |||
builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java") | |||
.setPath("src/main/java/dir/Foo.java") | |||
.build()) | |||
builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java") | |||
.setPath("src/main/java/dir/Foo.java") | |||
.build()) | |||
.build()) | |||
.build()) | |||
.build()); | |||
@@ -534,7 +536,8 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
.setName("Module B"); | |||
dbClient.componentDao().insert(dbTester.getSession(), moduleA, moduleB); | |||
ComponentDto directory = ComponentTesting.newDirectory(moduleB, "src/main/java/dir").setUuid("CDEF").setKey("MODULE_B:src/main/java/dir"); | |||
ComponentDto file = ComponentTesting.newFileDto(moduleB, directory, "DEFG").setPath("src/main/java/dir/Foo.java").setName("Foo.java").setKey("MODULE_B:src/main/java/dir/Foo.java"); | |||
ComponentDto file = ComponentTesting.newFileDto(moduleB, directory, "DEFG").setPath("src/main/java/dir/Foo.java").setName("Foo.java") | |||
.setKey("MODULE_B:src/main/java/dir/Foo.java"); | |||
dbClient.componentDao().insert(dbTester.getSession(), directory, file); | |||
dbTester.getSession().commit(); | |||
@@ -647,9 +650,9 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { | |||
builder(DIRECTORY, 3).setUuid("CDEF").setKey("MODULE_KEY:src/main/java/dir") | |||
.setPath("src/main/java/dir") | |||
.addChildren( | |||
builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java") | |||
.setPath("src/main/java/dir/Foo.java") | |||
.build()) | |||
builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java") | |||
.setPath("src/main/java/dir/Foo.java") | |||
.build()) | |||
.build()) | |||
.build()) | |||
.build()); |
@@ -32,14 +32,13 @@ import org.sonar.db.DbTester; | |||
import org.sonar.db.component.ComponentDbTester; | |||
import org.sonar.db.component.ComponentDto; | |||
import org.sonar.db.component.ComponentTesting; | |||
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule; | |||
import org.sonar.server.computation.task.projectanalysis.component.MutableDbIdsRepositoryRule; | |||
import org.sonar.server.computation.task.projectanalysis.component.MutableDisabledComponentsHolder; | |||
import org.sonar.server.computation.task.projectanalysis.component.ProjectViewAttributes; | |||
import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolderRule; | |||
import org.sonar.server.computation.task.projectanalysis.component.ViewsComponent; | |||
import org.sonar.server.computation.task.step.ComputationStep; | |||
import org.sonar.server.organization.DefaultOrganizationProvider; | |||
import org.sonar.server.organization.TestDefaultOrganizationProvider; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.mockito.Mockito.RETURNS_DEEP_STUBS; | |||
@@ -73,13 +72,15 @@ public class ViewsPersistComponentsStepTest extends BaseStepTest { | |||
public TreeRootHolderRule treeRootHolder = new TreeRootHolderRule(); | |||
@Rule | |||
public MutableDbIdsRepositoryRule dbIdsRepository = MutableDbIdsRepositoryRule.create(treeRootHolder); | |||
@Rule | |||
public AnalysisMetadataHolderRule analysisMetadataHolder = new AnalysisMetadataHolderRule() | |||
.setOrganizationUuid("org1"); | |||
private System2 system2 = mock(System2.class); | |||
private DbClient dbClient = dbTester.getDbClient(); | |||
private Date now; | |||
private ComponentDbTester componentDbTester = new ComponentDbTester(dbTester); | |||
private MutableDisabledComponentsHolder disabledComponentsHolder = mock(MutableDisabledComponentsHolder.class, RETURNS_DEEP_STUBS); | |||
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(dbTester); | |||
private PersistComponentsStep underTest; | |||
@Before | |||
@@ -87,7 +88,7 @@ public class ViewsPersistComponentsStepTest extends BaseStepTest { | |||
now = DATE_FORMAT.parse("2015-06-02"); | |||
when(system2.now()).thenReturn(now.getTime()); | |||
underTest = new PersistComponentsStep(dbClient, treeRootHolder, dbIdsRepository, system2, disabledComponentsHolder, defaultOrganizationProvider); | |||
underTest = new PersistComponentsStep(dbClient, treeRootHolder, dbIdsRepository, system2, disabledComponentsHolder, analysisMetadataHolder); | |||
} | |||
@Override | |||
@@ -249,7 +250,7 @@ public class ViewsPersistComponentsStepTest extends BaseStepTest { | |||
ComponentDto project = newProjectDto(); | |||
persistComponents(view, project); | |||
ComponentDto projectView = ComponentTesting.newProjectCopy(PROJECT_VIEW_1_UUID, project, view) | |||
.setOrganizationUuid(defaultOrganizationProvider.get().getUuid()) | |||
.setOrganizationUuid(analysisMetadataHolder.getOrganizationUuid()) | |||
.setKey(PROJECT_VIEW_1_KEY) | |||
.setName("Old name") | |||
.setCreatedAt(now); | |||
@@ -335,7 +336,7 @@ public class ViewsPersistComponentsStepTest extends BaseStepTest { | |||
private ComponentDto newViewDto() { | |||
return ComponentTesting.newView(VIEW_UUID) | |||
.setOrganizationUuid(defaultOrganizationProvider.get().getUuid()) | |||
.setOrganizationUuid(analysisMetadataHolder.getOrganizationUuid()) | |||
.setKey(VIEW_KEY) | |||
.setName(VIEW_NAME); | |||
} | |||
@@ -344,7 +345,7 @@ public class ViewsPersistComponentsStepTest extends BaseStepTest { | |||
* Assertions to verify the DTO created from {@link #createViewBuilder()} | |||
*/ | |||
private void assertDtoIsView(ComponentDto projectDto) { | |||
assertThat(projectDto.getOrganizationUuid()).isEqualTo(defaultOrganizationProvider.get().getUuid()); | |||
assertThat(projectDto.getOrganizationUuid()).isEqualTo(analysisMetadataHolder.getOrganizationUuid()); | |||
assertThat(projectDto.name()).isEqualTo(VIEW_NAME); | |||
assertThat(projectDto.longName()).isEqualTo(VIEW_NAME); | |||
assertThat(projectDto.description()).isEqualTo(VIEW_DESCRIPTION); | |||
@@ -364,7 +365,7 @@ public class ViewsPersistComponentsStepTest extends BaseStepTest { | |||
* Assertions to verify the DTO created from {@link #createProjectView1Builder(ComponentDto, Long)} | |||
*/ | |||
private void assertDtoIsSubView1(ComponentDto viewDto, ComponentDto sv1Dto) { | |||
assertThat(sv1Dto.getOrganizationUuid()).isEqualTo(defaultOrganizationProvider.get().getUuid()); | |||
assertThat(sv1Dto.getOrganizationUuid()).isEqualTo(analysisMetadataHolder.getOrganizationUuid()); | |||
assertThat(sv1Dto.name()).isEqualTo(SUBVIEW_1_NAME); | |||
assertThat(sv1Dto.longName()).isEqualTo(SUBVIEW_1_NAME); | |||
assertThat(sv1Dto.description()).isEqualTo(SUBVIEW_1_DESCRIPTION); | |||
@@ -381,7 +382,7 @@ public class ViewsPersistComponentsStepTest extends BaseStepTest { | |||
} | |||
private void assertDtoIsProjectView1(ComponentDto pv1Dto, ComponentDto viewDto, ComponentDto parentViewDto, ComponentDto project) { | |||
assertThat(pv1Dto.getOrganizationUuid()).isEqualTo(defaultOrganizationProvider.get().getUuid()); | |||
assertThat(pv1Dto.getOrganizationUuid()).isEqualTo(analysisMetadataHolder.getOrganizationUuid()); | |||
assertThat(pv1Dto.name()).isEqualTo(PROJECT_VIEW_1_NAME); | |||
assertThat(pv1Dto.longName()).isEqualTo(PROJECT_VIEW_1_NAME); | |||
assertThat(pv1Dto.description()).isNull(); |
@@ -109,6 +109,7 @@ public class CeTaskProcessorRepositoryImplTest { | |||
private static CeTask createCeTask(String ceTaskType, String key) { | |||
return new CeTask.Builder() | |||
.setOrganizationUuid("org1") | |||
.setType(ceTaskType) | |||
.setUuid("task_uuid_" + key) | |||
.setComponentKey(key).setComponentUuid("uuid_" + key).setComponentName("name_" + key) |
@@ -49,11 +49,11 @@ public class CeWorkerCallableImplTest { | |||
@Rule | |||
public LogTester logTester = new LogTester(); | |||
InternalCeQueue queue = mock(InternalCeQueue.class); | |||
ReportTaskProcessor taskProcessor = mock(ReportTaskProcessor.class); | |||
CeLogging ceLogging = spy(CeLogging.class); | |||
CeWorkerCallable underTest = new CeWorkerCallableImpl(queue, ceLogging, taskProcessorRepository); | |||
InOrder inOrder = Mockito.inOrder(ceLogging, taskProcessor, queue); | |||
private InternalCeQueue queue = mock(InternalCeQueue.class); | |||
private ReportTaskProcessor taskProcessor = mock(ReportTaskProcessor.class); | |||
private CeLogging ceLogging = spy(CeLogging.class); | |||
private CeWorkerCallable underTest = new CeWorkerCallableImpl(queue, ceLogging, taskProcessorRepository); | |||
private InOrder inOrder = Mockito.inOrder(ceLogging, taskProcessor, queue); | |||
@Test | |||
public void no_pending_tasks_in_queue() throws Exception { | |||
@@ -212,7 +212,12 @@ public class CeWorkerCallableImplTest { | |||
} | |||
private static CeTask createCeTask(@Nullable String submitterLogin) { | |||
return new CeTask.Builder().setUuid("TASK_1").setType(CeTaskTypes.REPORT).setComponentUuid("PROJECT_1").setSubmitterLogin(submitterLogin).build(); | |||
return new CeTask.Builder() | |||
.setOrganizationUuid("org1") | |||
.setUuid("TASK_1").setType(CeTaskTypes.REPORT) | |||
.setComponentUuid("PROJECT_1") | |||
.setSubmitterLogin(submitterLogin) | |||
.build(); | |||
} | |||
private IllegalStateException makeTaskProcessorFail(CeTask task) { |