aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2015-10-19 16:07:00 +0200
committerSimon Brandhof <simon.brandhof@sonarsource.com>2015-10-21 14:07:34 +0200
commit64857ae7f42ea247de66a5302ee5e40fd4d233bd (patch)
treec91796207d1afb47daa4048533a0c9ddfddb46e0 /server
parent194a6bc383963486033e6f563bcd3fd962a1771f (diff)
downloadsonarqube-64857ae7f42ea247de66a5302ee5e40fd4d233bd.tar.gz
sonarqube-64857ae7f42ea247de66a5302ee5e40fd4d233bd.zip
SONAR-6416 apply naming conventions to response of api/tests/list
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/test/ws/ListAction.java73
-rw-r--r--server/sonar-server/src/main/resources/org/sonar/server/test/ws/tests-example-list.json27
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/test/ws/ListActionTest/list-main-file.json26
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/test/ws/ListActionTest/list-test-uuid.json10
4 files changed, 77 insertions, 59 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/test/ws/ListAction.java b/server/sonar-server/src/main/java/org/sonar/server/test/ws/ListAction.java
index 345d988d094..17917e5728a 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/test/ws/ListAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/test/ws/ListAction.java
@@ -28,11 +28,12 @@ import java.util.List;
import java.util.Map;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import org.apache.commons.lang.StringUtils;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
-import org.sonar.api.utils.text.JsonWriter;
import org.sonar.api.web.UserRole;
+import org.sonar.core.util.Uuids;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.MyBatis;
@@ -45,6 +46,9 @@ import org.sonar.server.test.index.CoveredFileDoc;
import org.sonar.server.test.index.TestDoc;
import org.sonar.server.test.index.TestIndex;
import org.sonar.server.user.UserSession;
+import org.sonar.server.ws.WsUtils;
+import org.sonarqube.ws.Common;
+import org.sonarqube.ws.WsTests;
public class ListAction implements TestsWsAction {
public static final String TEST_UUID = "testUuid";
@@ -86,7 +90,7 @@ public class ListAction implements TestsWsAction {
action
.createParam(TEST_FILE_UUID)
.setDescription("Test file UUID")
- .setExampleValue("ce4c03d6-430f-40a9-b777-ad877c00aa4d");
+ .setExampleValue(Uuids.UUID_EXAMPLE_01);
action
.createParam(TEST_FILE_KEY)
@@ -96,12 +100,12 @@ public class ListAction implements TestsWsAction {
action
.createParam(TEST_UUID)
.setDescription("Test UUID")
- .setExampleValue("c526ef20-131b-4486-9357-063fa64b5079");
+ .setExampleValue(Uuids.UUID_EXAMPLE_02);
action
.createParam(SOURCE_FILE_UUID)
.setDescription("Source file UUID. Must be provided with the source file line number.")
- .setExampleValue("584a89f2-8037-4f7b-b82c-8b45d2d63fb2");
+ .setExampleValue(Uuids.UUID_EXAMPLE_03);
action
.createParam(SOURCE_FILE_LINE_NUMBER)
@@ -110,7 +114,7 @@ public class ListAction implements TestsWsAction {
}
@Override
- public void handle(Request request, Response response) {
+ public void handle(Request request, Response response) throws Exception {
String testUuid = request.param(TEST_UUID);
String testFileUuid = request.param(TEST_FILE_UUID);
String testFileKey = request.param(TEST_FILE_KEY);
@@ -119,7 +123,7 @@ public class ListAction implements TestsWsAction {
SearchOptions searchOptions = new SearchOptions().setPage(
request.mandatoryParamAsInt(WebService.Param.PAGE),
request.mandatoryParamAsInt(WebService.Param.PAGE_SIZE)
- );
+ );
DbSession dbSession = dbClient.openSession(false);
SearchResult<TestDoc> tests;
@@ -131,34 +135,39 @@ public class ListAction implements TestsWsAction {
MyBatis.closeQuietly(dbSession);
}
- JsonWriter json = response.newJsonWriter().beginObject();
- writeTests(tests.getDocs(), componentsByTestFileUuid, json);
- searchOptions.writeJson(json, tests.getTotal());
- json.endObject().close();
- }
-
- private static void writeTests(List<TestDoc> tests, Map<String, ComponentDto> componentsByTestFileUuid, JsonWriter json) {
- json.name("tests").beginArray();
- for (TestDoc test : tests) {
- String fileUuid = test.fileUuid();
- json.beginObject();
- json.prop("testUuid", test.testUuid());
- json.prop("fileUuid", fileUuid);
- json.prop("name", test.name());
- json.prop("status", test.status());
- json.prop("durationInMs", test.durationInMs());
- json.prop("message", test.message());
- json.prop("stacktrace", test.stackTrace());
- json.prop("coveredLines", coveredLines(test.coveredFiles()));
- json.prop("fileKey", componentsByTestFileUuid.get(fileUuid).key());
- json.prop("fileLongName", componentsByTestFileUuid.get(fileUuid).longName());
- json.endObject();
+ WsTests.ListResponse.Builder responseBuilder = WsTests.ListResponse.newBuilder();
+ responseBuilder.setPaging(Common.Paging.newBuilder()
+ .setPageIndex(searchOptions.getPage())
+ .setPageSize(searchOptions.getLimit())
+ .setTotal((int) tests.getTotal())
+ .build());
+
+ for (TestDoc testDoc : tests.getDocs()) {
+ WsTests.Test.Builder testBuilder = WsTests.Test.newBuilder();
+ testBuilder.setId(testDoc.testUuid());
+ testBuilder.setName(StringUtils.defaultString(testDoc.name()));
+ testBuilder.setFileId(testDoc.fileUuid());
+ ComponentDto component = componentsByTestFileUuid.get(testDoc.fileUuid());
+ if (component != null) {
+ testBuilder.setFileKey(component.getKey());
+ testBuilder.setFileName(component.longName());
+ }
+ testBuilder.setStatus(WsTests.TestStatus.valueOf(testDoc.status()));
+ testBuilder.setDurationInMs(testDoc.durationInMs());
+ testBuilder.setCoveredLines(coveredLines(testDoc.coveredFiles()));
+ if (testDoc.message() != null) {
+ testBuilder.setMessage(testDoc.message());
+ }
+ if (testDoc.stackTrace() != null) {
+ testBuilder.setStacktrace(testDoc.stackTrace());
+ }
+ responseBuilder.addTests(testBuilder.build());
}
- json.endArray();
+ WsUtils.writeProtobuf(responseBuilder.build(), request, response);
}
- private static long coveredLines(List<CoveredFileDoc> coveredFiles) {
- long numberOfLinesCovered = 0L;
+ private static int coveredLines(List<CoveredFileDoc> coveredFiles) {
+ int numberOfLinesCovered = 0;
for (CoveredFileDoc coveredFile : coveredFiles) {
numberOfLinesCovered += coveredFile.coveredLines().size();
}
@@ -181,7 +190,7 @@ public class ListAction implements TestsWsAction {
}
private SearchResult<TestDoc> searchTests(DbSession dbSession, @Nullable String testUuid, @Nullable String testFileUuid, @Nullable String testFileKey,
- @Nullable String sourceFileUuid, @Nullable Integer sourceFileLineNumber, SearchOptions searchOptions) {
+ @Nullable String sourceFileUuid, @Nullable Integer sourceFileLineNumber, SearchOptions searchOptions) {
if (testUuid != null) {
return searchTestsByTestUuid(dbSession, testUuid, searchOptions);
}
diff --git a/server/sonar-server/src/main/resources/org/sonar/server/test/ws/tests-example-list.json b/server/sonar-server/src/main/resources/org/sonar/server/test/ws/tests-example-list.json
index 2665f1fa409..5eee2e39f96 100644
--- a/server/sonar-server/src/main/resources/org/sonar/server/test/ws/tests-example-list.json
+++ b/server/sonar-server/src/main/resources/org/sonar/server/test/ws/tests-example-list.json
@@ -1,28 +1,31 @@
{
+ "paging": {
+ "pageIndex": 1,
+ "pageSize": 10,
+ "total": 2
+ },
"tests": [
{
- "testUuid": "ce4c03d6-430f-40a9-b777-ad877c00aa4d",
- "fileUuid": "c526ef20-131b-4486-9357-063fa64b5079",
+ "id": "AU-TpxcB-iU5OvuD2FL7",
"name": "find_by_params",
"status": "OK",
- "durationInMs": 10,
- "status": "OK",
- "durationInMs": 10,
- "coveredLines": 89,
+ "fileId": "AU-TpxcB-iU5OvuD2Fd8",
"fileKey": "org.codehaus.sonar:sonar-server:src/test/java/org/sonar/server/rule/RubyRuleServiceTest.java",
- "fileLongName": "src/test/java/org/sonar/server/rule/RubyRuleServiceTest.java"
+ "fileName": "src/test/java/org/sonar/server/rule/RubyRuleServiceTest.java",
+ "durationInMs": 10,
+ "coveredLines": 89
},
{
- "testUuid": "584a89f2-8037-4f7b-b82c-8b45d2d63fb2",
- "fileUuid": "c526ef20-131b-4486-9357-063fa64b5079",
+ "id": "AU-TpxcB-iU5OvuD2FP9",
"name": "find_rules_by_characteristics",
"status": "ERROR",
+ "fileId": "AU-TpxcB-iU5OvuD2FR2",
+ "fileKey": "org.codehaus.sonar:sonar-server:src/test/java/org/sonar/server/rule/RubyRuleServiceTest.java",
+ "fileName": "src/test/java/org/sonar/server/rule/RubyRuleServiceTest.java",
"durationInMs": 97,
"coveredLines": 0,
"message": "expected:<true> but was:<false>",
- "stackTrace": "java.lang.AssertionError: expected:<true> but was:<false>\n\tat org.junit.Assert.fail(Assert.java:91)\n\tat org.junit.Assert.failNotEquals(Assert.java:645)\n\tat org.junit.Assert.assertEquals(Assert.java:126)\n\tat org.junit.Assert.assertEquals(Assert.java:145)\n\tat sonar.samples.testFailures.moduleA.FailTest.testAWithFailure(FailTest.java:12)\n",
- "fileKey": "org.codehaus.sonar:sonar-server:src/test/java/org/sonar/server/rule/RubyRuleServiceTest.java",
- "fileLongName": "src/test/java/org/sonar/server/rule/RubyRuleServiceTest.java"
+ "stackTrace": "java.lang.AssertionError: expected:<true> but was:<false>\n\tat org.junit.Assert.fail(Assert.java:91)\n\tat org.junit.Assert.failNotEquals(Assert.java:645)\n\tat org.junit.Assert.assertEquals(Assert.java:126)\n\tat org.junit.Assert.assertEquals(Assert.java:145)\n\tat sonar.samples.testFailures.moduleA.FailTest.testAWithFailure(FailTest.java:12)\n"
}
]
}
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/test/ws/ListActionTest/list-main-file.json b/server/sonar-server/src/test/resources/org/sonar/server/test/ws/ListActionTest/list-main-file.json
index 5a1e62547be..d3f146cd87e 100644
--- a/server/sonar-server/src/test/resources/org/sonar/server/test/ws/ListActionTest/list-main-file.json
+++ b/server/sonar-server/src/test/resources/org/sonar/server/test/ws/ListActionTest/list-main-file.json
@@ -1,28 +1,34 @@
{
+ "paging": {
+ "pageIndex": 1,
+ "pageSize": 100,
+ "total": 2
+ },
"tests": [
{
- "testUuid": "TEST-UUID-1",
- "fileUuid": "ABCD",
+ "id": "TEST-UUID-1",
"name": "test1",
"status": "OK",
+ "fileId": "ABCD",
+ "fileKey": "org.foo.BarTest.java",
+ "fileName": "src/test/java/org/foo/BarTest.java",
"durationInMs": 10,
"coveredLines": 4,
"message": "MESSAGE-1",
- "stacktrace": "STACKTRACE-1",
- "fileKey": "org.foo.BarTest.java",
- "fileLongName": "src/test/java/org/foo/BarTest.java"
+ "stacktrace": "STACKTRACE-1"
},
{
- "testUuid": "TEST-UUID-2",
- "fileUuid": "BCDE",
+ "id": "TEST-UUID-2",
"name": "test2",
"status": "ERROR",
+ "fileId": "BCDE",
+ "fileKey": "org.foo.FileTest.java",
+ "fileName": "src/test/java/org/foo/FileTest.java",
"durationInMs": 97,
"coveredLines": 4,
"message": "MESSAGE-2",
- "stacktrace": "STACKTRACE-2",
- "fileKey": "org.foo.FileTest.java",
- "fileLongName": "src/test/java/org/foo/FileTest.java"
+ "stacktrace": "STACKTRACE-2"
+
}
]
}
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/test/ws/ListActionTest/list-test-uuid.json b/server/sonar-server/src/test/resources/org/sonar/server/test/ws/ListActionTest/list-test-uuid.json
index de6d8d86fa2..07b6072e3c0 100644
--- a/server/sonar-server/src/test/resources/org/sonar/server/test/ws/ListActionTest/list-test-uuid.json
+++ b/server/sonar-server/src/test/resources/org/sonar/server/test/ws/ListActionTest/list-test-uuid.json
@@ -1,16 +1,16 @@
{
"tests": [
{
- "testUuid": "TEST-UUID-1",
- "fileUuid": "ABCD",
+ "id": "TEST-UUID-1",
"name": "test1",
"status": "OK",
+ "fileId": "ABCD",
+ "fileKey": "org.foo.BarTest.java",
+ "fileName": "src/test/java/org/foo/BarTest.java",
"durationInMs": 10,
"coveredLines": 4,
"message": "MESSAGE-1",
- "stacktrace": "STACKTRACE-1",
- "fileKey": "org.foo.BarTest.java",
- "fileLongName": "src/test/java/org/foo/BarTest.java"
+ "stacktrace": "STACKTRACE-1"
}
]
}