From e2177907ea74372d30c8971670b23ba0f7a0f6ae Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Mon, 19 May 2014 09:36:50 +0200 Subject: [PATCH] SONAR-5007 fix non-deterministic test --- .../sonar/server/rule2/index/RuleIndex.java | 2 ++ .../server/rule2/ws/RulesWebServiceTest.java | 9 ++++- .../RulesWebServiceTest/search_2_rules.json | 36 +++++++++---------- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java b/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java index f6f9cfa4537..3cb41566c71 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java +++ b/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java @@ -210,6 +210,8 @@ public class RuleIndex extends BaseIndex { esSearch.addSort(SortBuilders.scoreSort()); } else { esSearch.addSort(RuleNormalizer.RuleField.UPDATED_AT.key(), SortOrder.DESC); + // deterministic sort when exactly the same updated_at (same millisecond) + esSearch.addSort(RuleNormalizer.RuleField.KEY.key(), SortOrder.ASC); } /* integrate Option's Pagination */ diff --git a/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java b/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java index 66d9733aae9..dda30b9df46 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java @@ -19,11 +19,15 @@ */ package org.sonar.server.rule2.ws; +import com.google.common.base.Charsets; import com.google.common.collect.ImmutableSet; +import com.google.common.io.Resources; +import org.apache.commons.io.IOUtils; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; +import org.skyscreamer.jsonassert.JSONAssert; import org.sonar.api.rule.RuleKey; import org.sonar.api.rule.RuleStatus; import org.sonar.api.rule.Severity; @@ -114,7 +118,10 @@ public class RulesWebServiceTest { WsTester.TestRequest request = wsTester.newGetRequest("api/rules2", "search"); WsTester.Result result = request.execute(); - result.assertJson(this.getClass(),"search_2_rules.json"); + String json = result.outputAsString(); + String expectedJson = Resources.toString(getClass().getResource("RulesWebServiceTest/search_2_rules.json"), Charsets.UTF_8); + + JSONAssert.assertEquals(expectedJson, json, false); } diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_2_rules.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_2_rules.json index bae661386c0..873652cb513 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_2_rules.json +++ b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_2_rules.json @@ -1,4 +1,22 @@ {"total": 2, "p": 1, "ps": 25, "rules": [ + { + "key": "javascript:S001", + "repo": "javascript", + "lang": "js", + "name": "Rule S001", + "htmlDesc": "Description S001", + "status": "READY", + "template": false, + "internalKey": "InternalKeyS001", + "severity": "INFO", + "tags": [], + "sysTags": [], + "debtRemediationFunctionType": "LINEAR", + "debtRemediationFunctionCoefficient": "1h", + "debtRemediationFunctionOffset": "5min", + "params": [], + "actives": [] + }, { "key": "javascript:S002", "repo": "javascript", @@ -16,23 +34,5 @@ "debtRemediationFunctionOffset": "5min", "params": [], "actives": [] - }, - { - "key": "javascript:S001", - "repo": "javascript", - "lang": "js", - "name": "Rule S001", - "htmlDesc": "Description S001", - "status": "READY", - "template": false, - "internalKey": "InternalKeyS001", - "severity": "INFO", - "tags": [], - "sysTags": [], - "debtRemediationFunctionType": "LINEAR", - "debtRemediationFunctionCoefficient": "1h", - "debtRemediationFunctionOffset": "5min", - "params": [], - "actives": [] } ]} -- 2.39.5