This is an automated email from the ASF dual-hosted git repository.

vavrtom pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-broker-j.git


The following commit(s) were added to refs/heads/main by this push:
     new 40c2d096ac QPID-8659: [Broker-J] Unit tests in QuerySettingsTest fail 
under some circumstances (#232)
40c2d096ac is described below

commit 40c2d096acb74b02b269a287ac4e4ae48d57e976
Author: Daniil Kirilyuk <[email protected]>
AuthorDate: Mon Jan 22 09:26:42 2024 +0100

    QPID-8659: [Broker-J] Unit tests in QuerySettingsTest fail under some 
circumstances (#232)
---
 .../query/engine/evaluator/QueryEvaluator.java     | 11 +++-
 .../engine/parsing/query/QuerySettingsTest.java    | 75 ++++++++++++++--------
 2 files changed, 59 insertions(+), 27 deletions(-)

diff --git 
a/broker-plugins/query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluator.java
 
b/broker-plugins/query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluator.java
index c81e11e9a0..1d1f9a7b13 100644
--- 
a/broker-plugins/query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluator.java
+++ 
b/broker-plugins/query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluator.java
@@ -137,7 +137,16 @@ public class QueryEvaluator
         {
             throw QueryValidationException.of(Errors.VALIDATION.QUERY_EMPTY);
         }
-        return execute(sql, new QuerySettings());
+        final QuerySettings querySettings = new QuerySettings();
+        querySettings.setDatePattern(_defaultQuerySettings.getDatePattern());
+        
querySettings.setDateTimeFormat(_defaultQuerySettings.getDateTimeFormat());
+        
querySettings.setDecimalDigits(_defaultQuerySettings.getDecimalDigits());
+        
querySettings.setMaxBigDecimalValue(_defaultQuerySettings.getMaxBigDecimalValue());
+        
querySettings.setMaxQueryCacheSize(_defaultQuerySettings.getMaxQueryCacheSize());
+        
querySettings.setMaxQueryDepth(_defaultQuerySettings.getMaxQueryDepth());
+        querySettings.setRoundingMode(_defaultQuerySettings.getRoundingMode());
+        querySettings.setZoneId(_defaultQuerySettings.getZoneId());
+        return execute(sql, querySettings);
     }
 
     /**
diff --git 
a/broker-plugins/query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QuerySettingsTest.java
 
b/broker-plugins/query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QuerySettingsTest.java
index a8105f87d0..f85bd8b102 100644
--- 
a/broker-plugins/query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QuerySettingsTest.java
+++ 
b/broker-plugins/query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QuerySettingsTest.java
@@ -243,39 +243,63 @@ public class QuerySettingsTest
     @Test()
     public void customizeZoneIdViaQuerySettings()
     {
-        DateTimeFormatter formatter = new 
DateTimeFormatterBuilder().appendPattern(DefaultQuerySettings.DATE_TIME_PATTERN)
-            .appendFraction(ChronoField.NANO_OF_SECOND, 0, 6, true)
-            .toFormatter().withZone(ZoneId.of(DefaultQuerySettings.ZONE_ID));
+        final List<ZoneId> zoneIds = List.of(ZoneId.of("UTC"), 
ZoneId.of("GMT+1"), ZoneId.of("GMT+2"),  ZoneId.of("GMT+3"),
+                ZoneId.of("GMT+4"), ZoneId.of("GMT+5"), ZoneId.of("GMT+6"), 
ZoneId.of("GMT+7"), ZoneId.of("GMT+8"),
+                ZoneId.of("GMT+9"), ZoneId.of("GMT+10"), ZoneId.of("GMT+11"), 
ZoneId.of("GMT+12"));
 
-        QueryEvaluator queryEvaluator = new QueryEvaluator(_broker);
-        QuerySettings querySettings = new 
QuerySettingsBuilder().zoneId(ZoneId.of(DefaultQuerySettings.ZONE_ID)).build();
+        zoneIds.forEach(zoneId ->
+        {
+            DateTimeFormatter formatter =
+                    new 
DateTimeFormatterBuilder().appendPattern(DefaultQuerySettings.DATE_TIME_PATTERN)
+                            .appendFraction(ChronoField.NANO_OF_SECOND, 0, 6, 
true)
+                            .toFormatter().withZone(zoneId);
 
-        String query = "select current_timestamp() as result";
-        List<Map<String, Object>> result = queryEvaluator.execute(query, 
querySettings).getResults();
-        assertEquals(1, result.size());
-        formatter.parse((String)result.get(0).get("result"));
+            QueryEvaluator queryEvaluator = new QueryEvaluator(_broker);
+            QuerySettings querySettings = new 
QuerySettingsBuilder().zoneId(zoneId).build();
+
+            String query = "select current_timestamp() as result";
+            List<Map<String, Object>> result = queryEvaluator.execute(query, 
querySettings).getResults();
+
+            Instant expected = Instant.now();
+            Instant actual = LocalDateTime.parse((String) 
result.get(0).get("result"), formatter)
+                    .atZone(zoneId)
+                    .toInstant();
+
+            assertEquals(1, result.size());
+            assertTrue(expected.toEpochMilli() - actual.toEpochMilli() < 1000);
+        });
     }
 
     @Test()
     public void customizeZoneIdViaQueryEngine()
     {
-        QueryEngine queryEngine = new QueryEngine(_broker);
-        queryEngine.setZoneId(ZoneId.of("GMT+2"));
-        queryEngine.setMaxQueryDepth(DefaultQuerySettings.MAX_QUERY_DEPTH);
-        QueryEvaluator queryEvaluator = queryEngine.createEvaluator();
-        QuerySettings querySettings = new QuerySettings();
-
-        Instant expected = 
LocalDateTime.now().atZone(ZoneId.of("GMT+2")).toInstant();
-        DateTimeFormatter formatter = new 
DateTimeFormatterBuilder().appendPattern(DefaultQuerySettings.DATE_TIME_PATTERN)
-           .appendFraction(ChronoField.NANO_OF_SECOND, 0, 6, true)
-           
.toFormatter().withZone(ZoneId.of("GMT+2")).withResolverStyle(ResolverStyle.STRICT);
+        final List<ZoneId> zoneIds = List.of(ZoneId.of("UTC"), 
ZoneId.of("GMT+1"), ZoneId.of("GMT+2"),  ZoneId.of("GMT+3"),
+                ZoneId.of("GMT+4"), ZoneId.of("GMT+5"), ZoneId.of("GMT+6"), 
ZoneId.of("GMT+7"), ZoneId.of("GMT+8"),
+                ZoneId.of("GMT+9"), ZoneId.of("GMT+10"), ZoneId.of("GMT+11"), 
ZoneId.of("GMT+12"));
 
-        String query = "select current_timestamp() as result";
-        List<Map<String,Object>> result = queryEvaluator.execute(query, 
querySettings).getResults();
-        Instant actual = 
LocalDateTime.parse((String)result.get(0).get("result"), 
formatter).atZone(ZoneId.of("GMT+2")).toInstant();
-
-        assertEquals(1, result.size());
-        assertTrue(actual.toEpochMilli() - expected.toEpochMilli() < 1000);
+        zoneIds.forEach(zoneId ->
+        {
+            QueryEngine queryEngine = new QueryEngine(_broker);
+            queryEngine.setZoneId(zoneId);
+            queryEngine.setMaxQueryDepth(DefaultQuerySettings.MAX_QUERY_DEPTH);
+            QueryEvaluator queryEvaluator = queryEngine.createEvaluator();
+
+            Instant expected = Instant.now();
+            DateTimeFormatter formatter =
+                    new 
DateTimeFormatterBuilder().appendPattern(DefaultQuerySettings.DATE_TIME_PATTERN)
+                            .appendFraction(ChronoField.NANO_OF_SECOND, 0, 6, 
true)
+                            .toFormatter()
+                            .withResolverStyle(ResolverStyle.STRICT);
+
+            String query = "select current_timestamp() as result";
+            List<Map<String, Object>> result = 
queryEvaluator.execute(query).getResults();
+            Instant actual = LocalDateTime.parse((String) 
result.get(0).get("result"), formatter)
+                    .atZone(zoneId)
+                    .toInstant();
+
+            assertEquals(1, result.size());
+            assertTrue(expected.toEpochMilli() - actual.toEpochMilli() < 1000);
+        });
     }
 
     @Test()
@@ -307,7 +331,6 @@ public class QuerySettingsTest
     @Test()
     public void customizeMaxQueryCacheSize()
     {
-
         QueryEngine queryEngine = new QueryEngine(_broker);
         queryEngine.setMaxQueryCacheSize(10);
         queryEngine.setMaxQueryDepth(DefaultQuerySettings.MAX_QUERY_DEPTH);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to