Browse Source

SONAR-11077 ignore unsupported characteristics in WS api/ce/submit

tags/7.5
Simon Brandhof 5 years ago
parent
commit
40fcc3b5a4

+ 7
- 0
server/sonar-db-dao/src/main/java/org/sonar/db/ce/CeTaskCharacteristicDto.java View File

@@ -19,11 +19,18 @@
*/
package org.sonar.db.ce;

import java.util.HashSet;
import java.util.Set;

import static java.util.Arrays.asList;
import static java.util.Collections.unmodifiableSet;

public class CeTaskCharacteristicDto {

public static final String BRANCH_KEY = "branch";
public static final String BRANCH_TYPE_KEY = "branchType";
public static final String PULL_REQUEST = "pullRequest";
public static final Set<String> SUPPORTED_KEYS = unmodifiableSet(new HashSet<>(asList(BRANCH_KEY, BRANCH_TYPE_KEY, PULL_REQUEST)));

private String uuid;
private String taskUuid;

+ 4
- 1
server/sonar-server/src/main/java/org/sonar/server/ce/ws/SubmitAction.java View File

@@ -28,6 +28,7 @@ import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
import org.sonar.ce.task.CeTask;
import org.sonar.db.ce.CeTaskCharacteristicDto;
import org.sonar.server.ce.queue.ReportSubmitter;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.ws.WsUtils;
@@ -133,7 +134,9 @@ public class SubmitAction implements CeWsAction {
String[] pair = StringUtils.split(param, "=", 2);
checkRequest(pair.length == 2, "Parameter '%s' must be a key-value pair with the format 'key=value'.", PARAM_ANALYSIS_CHARACTERISTIC);
checkRequest(!characteristics.containsKey(pair[0]), "Key '%s' was provided twice with parameters '%s'", pair[0], PARAM_ANALYSIS_CHARACTERISTIC);
characteristics.put(pair[0], pair[1]);
if (CeTaskCharacteristicDto.SUPPORTED_KEYS.contains(pair[0])) {
characteristics.put(pair[0], pair[1]);
}
}
return characteristics;
}

+ 5
- 5
server/sonar-server/src/test/java/org/sonar/server/ce/ws/SubmitActionTest.java View File

@@ -21,7 +21,6 @@ package org.sonar.server.ce.ws;

import com.google.common.base.Strings;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
@@ -94,11 +93,11 @@ public class SubmitActionTest {
}

@Test
public void submit_task_with_multiple_characteristics() {
public void submit_task_with_characteristics() {
when(reportSubmitter.submit(eq(organizationKey), eq("my_project"), isNull(), eq("My Project"),
anyMap(), any())).thenReturn(A_CE_TASK);

String[] characteristics = {"branch=branch1", "key=value1=value2"};
String[] characteristics = {"branch=foo", "pullRequest=123", "unsupported=bar"};
Ce.SubmitResponse submitResponse = tester.newRequest()
.setParam("projectKey", "my_project")
.setParam("projectName", "My Project")
@@ -109,9 +108,10 @@ public class SubmitActionTest {

assertThat(submitResponse.getTaskId()).isEqualTo("TASK_1");
verify(reportSubmitter).submit(eq(organizationKey), eq("my_project"), isNull(), eq("My Project"),
map.capture(), any(InputStream.class));
map.capture(), any());

assertThat(map.getValue()).containsOnly(entry("branch", "branch1"), entry("key", "value1=value2"));
// unsupported characteristics are ignored
assertThat(map.getValue()).containsExactly(entry("branch", "foo"), entry("pullRequest", "123"));
}

@Test

Loading…
Cancel
Save