diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2015-10-19 16:07:00 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2015-10-21 14:07:34 +0200 |
commit | 64857ae7f42ea247de66a5302ee5e40fd4d233bd (patch) | |
tree | c91796207d1afb47daa4048533a0c9ddfddb46e0 /server | |
parent | 194a6bc383963486033e6f563bcd3fd962a1771f (diff) | |
download | sonarqube-64857ae7f42ea247de66a5302ee5e40fd4d233bd.tar.gz sonarqube-64857ae7f42ea247de66a5302ee5e40fd4d233bd.zip |
SONAR-6416 apply naming conventions to response of api/tests/list
Diffstat (limited to 'server')
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" } ] } |