@@ -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; |
@@ -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; | |||
} |
@@ -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 |