You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by va...@apache.org on 2022/07/11 09:15:16 UTC
[qpid-broker-j] branch main updated: QPID-8592: [Broker-J] Pass context value from parent query into the subquery (#130)
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 814473dafa QPID-8592: [Broker-J] Pass context value from parent query into the subquery (#130)
814473dafa is described below
commit 814473dafa189df8bef231d18c156a61375ab363
Author: Daniil Kirilyuk <da...@gmail.com>
AuthorDate: Mon Jul 11 11:15:11 2022 +0200
QPID-8592: [Broker-J] Pass context value from parent query into the subquery (#130)
---
broker-plugins/broker-query-engine/README.md | 141 ++++++-
broker-plugins/broker-query-engine/pom.xml | 1 -
.../src/main/grammar/ExpressionParser.jj | 8 +-
.../query/engine/evaluator/QueryEvaluator.java | 14 +
.../query/engine/evaluator/SelectEvaluator.java | 22 +-
.../query/engine/parsing/query/FromExpression.java | 8 +
.../query/engine/retriever/AclRuleRetriever.java | 14 +-
.../query/engine/retriever/BindingRetriever.java | 15 +-
.../engine/retriever/CertificateRetriever.java | 21 +-
.../retriever/ConnectionLimitRuleRetriever.java | 15 +-
.../query/engine/retriever/SessionRetriever.java | 127 ++++++
.../qpid/server/query/engine/TestBroker.java | 424 ++++++++++++---------
.../query/engine/broker/BindingQueryTest.java | 28 ++
.../query/engine/broker/BrokerDigestQueryTest.java | 75 +++-
.../query/engine/broker/CertificateQueryTest.java | 5 +-
.../query/engine/broker/ConnectionQueryTest.java | 3 +
...indingQueryTest.java => ConsumerQueryTest.java} | 50 ++-
.../query/engine/broker/DomainQueryTest.java | 3 +
.../{DomainQueryTest.java => PortQueryTest.java} | 24 +-
.../server/query/engine/broker/QueueQueryTest.java | 23 +-
.../SessionQueryTest.java} | 37 +-
...ueryTest.java => VirtualHostNodeQueryTest.java} | 24 +-
...ainQueryTest.java => VirtualHostQueryTest.java} | 23 +-
.../query/engine/evaluator/QueryEvaluatorTest.java | 3 +
.../parsing/converter/DateTimeConverterTest.java | 8 +-
.../expression/accessor/ChainedAccessorTest.java | 3 +
.../arithmetic/ArithmeticExpressionsTest.java | 3 +
.../arithmetic/NumericTypeConversionsTest.java | 3 +
.../comparison/BetweenExpressionTest.java | 3 +
.../expression/comparison/EqualExpressionTest.java | 3 +
.../comparison/GreaterThanExpressionTest.java | 3 +
.../GreaterThanOrEqualExpressionTest.java | 3 +
.../expression/comparison/InExpressionTest.java | 37 ++
.../comparison/IsNullExpressionTest.java | 3 +
.../comparison/LessThanExpressionTest.java | 3 +
.../comparison/LessThanOrEqualExpressionTest.java | 3 +
.../expression/comparison/LikeExpressionTest.java | 3 +
.../expression/conditional/CaseExpressionTest.java | 3 +
.../function/aggregation/AvgExpressionTest.java | 3 +
.../function/aggregation/CountExpressionTest.java | 3 +
.../function/aggregation/GroupByTest.java | 3 +
.../function/aggregation/MaxExpressionTest.java | 3 +
.../function/aggregation/MinExpressionTest.java | 3 +
.../function/aggregation/SumExpressionTest.java | 3 +
.../datetime/CurrentTimestampExpressionTest.java | 5 +-
.../function/datetime/DateAddExpressionTest.java | 3 +
.../function/datetime/DateDiffExpressionTest.java | 3 +
.../function/datetime/DateExpressionTest.java | 3 +
.../function/datetime/ExtractExpressionTest.java | 3 +
.../function/nulls/CoalesceExpressionTest.java | 3 +
.../function/numeric/AbsExpressionTest.java | 3 +
.../function/numeric/RoundExpressionTest.java | 3 +
.../function/numeric/TruncExpressionTest.java | 3 +
.../function/string/ConcatExpressionTest.java | 4 +-
.../function/string/LeftTrimExpressionTest.java | 3 +
.../function/string/LengthExpressionTest.java | 4 +-
.../function/string/LowerExpressionTest.java | 3 +
.../function/string/PositionExpressionTest.java | 3 +
.../function/string/ReplaceExpressionTest.java | 3 +
.../function/string/RightTrimExpressionTest.java | 3 +
.../function/string/SubstringExpressionTest.java | 8 +-
.../function/string/TrimExpressionTest.java | 3 +
.../function/string/UpperExpressionTest.java | 3 +
.../expression/literal/LiteralExpressionTest.java | 3 +
.../expression/logic/AndExpressionTest.java | 3 +
.../expression/logic/NotExpressionTest.java | 3 +
.../parsing/expression/logic/OrExpressionTest.java | 3 +
.../expression/set/IntersectExpressionTest.java | 3 +
.../expression/set/MinusExpressionTest.java | 3 +
.../expression/set/UnionExpressionTest.java | 3 +
.../factory/AccessorExpressionFactoryTest.java | 3 +
.../factory/ArithmeticExpressionFactoryTest.java | 3 +
.../parsing/factory/CollectorFactoryTest.java | 3 +
.../factory/ComparisonExpressionFactoryTest.java | 3 +
.../factory/ConditionalExpressionFactoryTest.java | 3 +
.../factory/FunctionExpressionFactoryTest.java | 3 +
.../factory/LiteralExpressionFactoryTest.java | 3 +
.../factory/LogicExpressionFactoryTest.java | 3 +
.../factory/NumberExpressionFactoryTest.java | 3 +
.../factory/ProjectionExpressionFactoryTest.java | 3 +
.../parsing/factory/SetExpressionFactoryTest.java | 3 +
.../factory/UnaryExpressionFactoryTest.java | 3 +
.../query/engine/parsing/query/AliasTest.java | 168 +++++++-
.../query/engine/parsing/query/HavingTest.java | 3 +
.../query/engine/parsing/query/OrderByTest.java | 3 +
.../engine/parsing/query/QuerySettingsTest.java | 3 +
.../engine/parsing/query/QueryValidatorTest.java | 3 +
.../query/engine/parsing/query/SubqueryTest.java | 3 +
.../query/engine/parsing/query/WithTest.java | 3 +
.../query/engine/utils/QuerySettingsBuilder.java | 3 +
.../FunctionParameterTypePredicateTest.java | 23 ++
.../FunctionParametersValidatorTest.java | 23 ++
.../validation/QueryExpressionValidatorTest.java | 23 ++
.../validation/SelectExpressionValidatorTest.java | 23 ++
...Broker-Management-Channel-REST-Query-Engine.xml | 109 ++++++
pom.xml | 14 +-
96 files changed, 1436 insertions(+), 298 deletions(-)
diff --git a/broker-plugins/broker-query-engine/README.md b/broker-plugins/broker-query-engine/README.md
index 17ceebc413..e0cf08cba2 100644
--- a/broker-plugins/broker-query-engine/README.md
+++ b/broker-plugins/broker-query-engine/README.md
@@ -76,8 +76,10 @@
* [UPPER](#upper)
10. [Set Operations](#set-operations)
+
+11. [Subqueries](#subqueries)
-11. [Performance Tips](#performance-tips)
+12. [Performance Tips](#performance-tips)
## Introduction
@@ -1847,6 +1849,128 @@ SELECT UPPER(name)
FROM user
```
+## Subqueries
+
+When executing subquery parent query domain mat be passed into the subquery using alias.
+
+E.g. this query
+
+```
+SELECT
+ id,
+ name,
+ (SELECT name FROM connection WHERE SUBSTRING(name, 1, POSITION(']' IN name)) = '[' + SUBSTRING(c.name, 1, POSITION('|' IN c.name) - 1) + ']') as connection,
+ (SELECT id FROM connection WHERE SUBSTRING(name, 1, POSITION(']' IN name)) = '[' + SUBSTRING(c.name, 1, POSITION('|' IN c.name) - 1) + ']') as connectionId,
+ (SELECT name FROM session WHERE id = c.session.id) as session
+FROM consumer c
+```
+
+<details>
+ <summary>returns following result (Click to expand).</summary>
+ <p>
+
+```
+{
+ "results": [
+ {
+ "id": "7a4d7a86-652b-4112-b535-61272b936b57",
+ "name": "1|1|qpid-jms:receiver:ID:6bd18833-3c96-4936-b9ee-9dec5f408b5c:1:1:1:broadcast.amqp_user1.public",
+ "connection": "[1] 127.0.0.1:39134",
+ "connectionId": "afbd0480-43b1-4b39-bc00-260c077095f3",
+ "session": "1"
+ }
+ ],
+ "total": 1
+}
+```
+ </p>
+</details>
+
+Query
+
+```
+SELECT
+ name,
+ destination,
+ (SELECT id FROM queue WHERE name = b.destination) AS destinationId,
+ exchange,
+ (SELECT id FROM exchange WHERE name = b.exchange) AS exchangeId
+FROM binding b
+WHERE name = 'broadcast.amqp_user1.xxx.#'
+```
+<details>
+ <summary>returns following result (Click to expand).</summary>
+ <p>
+
+```
+{
+ "results": [
+ {
+ "name": "broadcast.amqp_user1.xxx.#",
+ "destination": "broadcast.amqp_user1.xxx",
+ "destinationId": "d5ce9e78-8558-40db-8690-15abf69ab255",
+ "exchange": "broadcast",
+ "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158"
+ },
+ {
+ "name": "broadcast.amqp_user1.xxx.#",
+ "destination": "broadcast.amqp_user2.xxx",
+ "destinationId": "88357d15-a590-4ccf-aee8-2d5cda77752e",
+ "exchange": "broadcast",
+ "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158"
+ },
+ {
+ "name": "broadcast.amqp_user1.xxx.#",
+ "destination": "broadcast.amqp_user3.xxx",
+ "destinationId": "c8200f89-2587-4b0c-a8f6-120cda975d03",
+ "exchange": "broadcast",
+ "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158"
+ }
+ ],
+ "total": 3
+}
+```
+ </p>
+</details>
+
+Query
+
+```
+SELECT
+ alias,
+ (SELECT COUNT(id) FROM queue WHERE POSITION(UPPER(c.alias) IN name) > 0) AS queueCount
+FROM certificate c
+```
+<details>
+ <summary>returns following result (Click to expand).</summary>
+ <p>
+
+```
+{
+ "results": [
+ {
+ "alias": "xxx",
+ "queueCount": 5
+ },
+ {
+ "alias": "xxy",
+ "queueCount": 5
+ },
+ {
+ "alias": "xxz",
+ "queueCount": 7
+ }
+ ],
+ "total": 3
+}
+```
+ </p>
+</details>
+
+
+Please consider that subquery usage may be not performant in case of many objects returned
+either by parent query or by subquery.
+
## Performance Tips
Try to select entity fields by names instead of using an asterix. For example, this query
@@ -1867,3 +1991,18 @@ SELECT
FROM queue
LIMIT 10 OFFSET 0
```
+When using subqueries avoid to fire the against unfiltered domains. For example, this query
+```
+SELECT
+ name,
+ (SELECT id FROM queue WHERE name = b.destination) AS destinationId
+FROM binding b
+WHERE name = 'broadcast.amqp_user1.xxx.#'
+```
+will be executed faster than this one:
+```
+SELECT
+ name,
+ (SELECT id FROM queue WHERE name = b.destination) AS destinationId
+FROM binding b
+```
\ No newline at end of file
diff --git a/broker-plugins/broker-query-engine/pom.xml b/broker-plugins/broker-query-engine/pom.xml
index a4f1b4de12..078779dbe0 100644
--- a/broker-plugins/broker-query-engine/pom.xml
+++ b/broker-plugins/broker-query-engine/pom.xml
@@ -93,7 +93,6 @@
<plugin>
<groupId>com.helger.maven</groupId>
<artifactId>ph-javacc-maven-plugin</artifactId>
- <version>4.1.4</version>
<executions>
<execution>
<id>expression-parser-generated</id>
diff --git a/broker-plugins/broker-query-engine/src/main/grammar/ExpressionParser.jj b/broker-plugins/broker-query-engine/src/main/grammar/ExpressionParser.jj
index 31e32366cc..ee9cc09665 100644
--- a/broker-plugins/broker-query-engine/src/main/grammar/ExpressionParser.jj
+++ b/broker-plugins/broker-query-engine/src/main/grammar/ExpressionParser.jj
@@ -587,14 +587,14 @@ ExpressionNode<T, R> comparisonExpression() :
left = (ExpressionNode<T, R>) ComparisonExpressionFactory.inExpression(left, (SelectExpression) right);
}
|
- LOOKAHEAD(3) <NOT> <IN> <LBRACKET> right = orExpression() { list = new ArrayList<>(); list.add( right ); }
+ LOOKAHEAD(6) <NOT> <IN> <LBRACKET> right = orExpression() { list = new ArrayList<>(); list.add( right ); }
( <COMMA> right = orExpression() { list.add( right ); } )* <RBRACKET>
{
stringBuilder.append(")");
left = (ExpressionNode<T, R>) LogicExpressionFactory.negate(LogicExpressionFactory.toFunction(ComparisonExpressionFactory.inExpression(left, list)));
}
|
- LOOKAHEAD(3) <NOT> <IN> <LBRACKET> right = select() <RBRACKET>
+ LOOKAHEAD(6) <NOT> <IN> <LBRACKET> right = select() <RBRACKET>
{
stringBuilder.append(")");
left = (ExpressionNode<T, R>) LogicExpressionFactory.negate(LogicExpressionFactory.toFunction(ComparisonExpressionFactory.inExpression(left, (SelectExpression) right)));
@@ -1001,9 +1001,9 @@ ExpressionNode<T, R> functionPosition() :
{
t = <POSITION> { builder.append(token.image); } <LBRACKET> { builder.append("("); } ( expr = addExpression()
{ builder.append(expr.getAlias()); args.add(expr); } )?
- ( LOOKAHEAD(2) ( <IN> { builder.append(token.image); } | <COMMA> { builder.append(token.image); } ) expr = addExpression()
+ ( LOOKAHEAD(2) ( <IN> { builder.append(" " + token.image + " "); } | <COMMA> { builder.append(token.image); } ) expr = addExpression()
{ builder.append(expr.getAlias()); args.add(expr); } ) ?
- ( <COMMA> expr = addExpression() { builder.append(expr.getAlias()); args.add(expr); } )*
+ ( <COMMA> { builder.append(","); } expr = addExpression() { builder.append(expr.getAlias()); args.add(expr); } )*
<RBRACKET> { builder.append(")"); }
{
String functionName = t.image;
diff --git a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluator.java b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluator.java
index 349402cac6..c81e11e9a0 100644
--- a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluator.java
+++ b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluator.java
@@ -29,6 +29,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -46,6 +47,7 @@ import org.apache.qpid.server.query.engine.exception.QueryValidationException;
import org.apache.qpid.server.query.engine.parsing.ExpressionParser;
import org.apache.qpid.server.query.engine.parsing.ParseException;
import org.apache.qpid.server.query.engine.parsing.converter.NumberConverter;
+import org.apache.qpid.server.query.engine.parsing.expression.Expression;
import org.apache.qpid.server.query.engine.parsing.expression.ExpressionNode;
import org.apache.qpid.server.query.engine.parsing.expression.accessor.MapObjectAccessor;
import org.apache.qpid.server.query.engine.parsing.expression.set.SetExpression;
@@ -358,8 +360,20 @@ public class QueryEvaluator
final String alias
)
{
+ final AtomicBoolean replaced = new AtomicBoolean(false);
return (map1, map2) -> {
+ if (!replaced.get())
+ {
+ final EvaluationContext ctx = EvaluationContextHolder.getEvaluationContext();
+ final Map<String, Expression<T, R>> aliases = ctx.get(EvaluationContext.QUERY_ALIASES, Map.class);
+ for (final Map.Entry<String, Expression<T, R>> entry : aliases.entrySet())
+ {
+ entry.setValue(item -> (R) item);
+ }
+ replaced.set(true);
+ }
+
R object1 = expression.apply((T) map1);
R object2 = expression.apply((T) map2);
diff --git a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/SelectEvaluator.java b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/SelectEvaluator.java
index 462e5b8fbb..51c56c0551 100644
--- a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/SelectEvaluator.java
+++ b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/evaluator/SelectEvaluator.java
@@ -37,6 +37,7 @@ import org.apache.qpid.server.query.engine.parsing.converter.ImplicitConverter;
import org.apache.qpid.server.query.engine.parsing.converter.NumberConverter;
import org.apache.qpid.server.query.engine.parsing.expression.Expression;
import org.apache.qpid.server.query.engine.parsing.expression.function.aggregation.AbstractAggregationExpression;
+import org.apache.qpid.server.query.engine.parsing.expression.literal.ConstantExpression;
import org.apache.qpid.server.query.engine.parsing.query.ProjectionExpression;
import org.apache.qpid.server.query.engine.parsing.collector.CollectorType;
import org.apache.qpid.server.query.engine.parsing.factory.CollectorFactory;
@@ -69,14 +70,19 @@ public class SelectEvaluator
LOGGER.debug("Executing select '{}'", selectExpression);
final EvaluationContext ctx = EvaluationContextHolder.getEvaluationContext();
- if (selectExpression.getFrom() != null && !Objects.equals(selectExpression.getFrom().getAlias(), selectExpression.getFrom().toString()))
- {
- ctx.putAlias(selectExpression.getFrom().getAlias(), object -> object);
- }
+
+ final boolean addAlias = selectExpression.getFrom() != null
+ && !Objects.equals(selectExpression.getFrom().getAlias(), selectExpression.getFrom().toString());
Stream<T> stream = selectExpression.getFrom() == null
? Stream.empty()
- : (Stream<T>) selectExpression.getFrom().get();
+ : (Stream<T>) selectExpression.getFrom().get()
+ .peek(item -> {
+ if (addAlias)
+ {
+ ctx.putAlias(selectExpression.getFrom().getAlias(), new ConstantExpression<>(item));
+ }
+ });
if (selectExpression.getWhere() != null)
{
@@ -108,8 +114,8 @@ public class SelectEvaluator
.map(ProjectionExpression::getAlias).collect(Collectors.toList());
// when ORDER BY clause has items not contained in the SELECT clause, they should be added there
- // (and moved during the sorting process)
- if (!selectExpression.isSelectAll())
+ // (and removed during the sorting process)
+ if (!selectExpression.isSelectAll() && selectExpression.getParent() == null)
{
final List<OrderItem<T, R>> orderItems = ctx.get(EvaluationContext.QUERY_ORDERING);
final List<ProjectionExpression<T, R>> additionalProjections = orderItems == null
@@ -222,7 +228,7 @@ public class SelectEvaluator
* @return Map representing aggregation result
*/
@SuppressWarnings("unchecked")
- private <T, A, R> Map<String, R> groupBy(SelectExpression<T, R> selectExpression, Stream<T> stream)
+ private <T, A, R> Map<String, R> groupBy(final SelectExpression<T, R> selectExpression, final Stream<T> stream)
{
final List<T> items = stream.collect(Collectors.toList());
diff --git a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/parsing/query/FromExpression.java b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/parsing/query/FromExpression.java
index 70c0f50819..8a70fbae9a 100644
--- a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/parsing/query/FromExpression.java
+++ b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/parsing/query/FromExpression.java
@@ -37,6 +37,7 @@ import org.apache.qpid.server.model.Binding;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Model;
+import org.apache.qpid.server.model.Session;
import org.apache.qpid.server.query.engine.exception.Errors;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.model.Domain;
@@ -50,6 +51,7 @@ import org.apache.qpid.server.query.engine.retriever.ConfiguredObjectRetriever;
import org.apache.qpid.server.query.engine.retriever.ConnectionLimitRuleRetriever;
import org.apache.qpid.server.query.engine.retriever.DomainRetriever;
import org.apache.qpid.server.query.engine.retriever.EntityRetriever;
+import org.apache.qpid.server.query.engine.retriever.SessionRetriever;
import org.apache.qpid.server.security.access.plugins.AclRule;
import org.apache.qpid.server.user.connection.limits.plugins.ConnectionLimitRule;
@@ -94,6 +96,11 @@ public class FromExpression<T, R extends Stream<?>, C extends ConfiguredObject<?
*/
private final EntityRetriever<C> _domainRetriever = new DomainRetriever<>();
+ /**
+ * Retrieves data from Session entities
+ */
+ private final EntityRetriever<C> _sessionRetriever = new SessionRetriever<>();
+
/**
* Additional domains allowed to be queried
*/
@@ -103,6 +110,7 @@ public class FromExpression<T, R extends Stream<?>, C extends ConfiguredObject<?
.put(Certificate.class, _certificateRetriever)
.put(ConnectionLimitRule.class, _connectionLimitRuleRetriever)
.put(Domain.class, _domainRetriever)
+ .put(Session.class, _sessionRetriever)
.build();
/**
diff --git a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/AclRuleRetriever.java b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/AclRuleRetriever.java
index ecf49b7b0f..22130d7fd2 100644
--- a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/AclRuleRetriever.java
+++ b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/AclRuleRetriever.java
@@ -20,12 +20,12 @@
*/
package org.apache.qpid.server.query.engine.retriever;
-import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Stream;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,14 +62,18 @@ public class AclRuleRetriever<C extends ConfiguredObject<?>> extends ConfiguredO
/**
* List of entity field names
*/
- private final List<String> _fieldNames = Arrays.asList(
- "identity", "attributes", "objectType", "operation", "outcome"
- );
+ private final List<String> _fieldNames = new ImmutableList.Builder<String>()
+ .add("identity")
+ .add("attributes")
+ .add("objectType")
+ .add("operation")
+ .add("outcome")
+ .build();
/**
* Mapping function for a Rule
*/
- private final Function<Rule, Map<String, Object>> _ruleMapping = rule -> ImmutableMap.<String, Object> builder()
+ private final Function<Rule, Map<String, Object>> _ruleMapping = rule -> ImmutableMap.<String, Object>builder()
.put(_fieldNames.get(0), rule.getIdentity())
.put(_fieldNames.get(1), rule.getAttributes())
.put(_fieldNames.get(2), rule.getObjectType())
diff --git a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/BindingRetriever.java b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/BindingRetriever.java
index ba1aa92b4d..d1f2883135 100644
--- a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/BindingRetriever.java
+++ b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/BindingRetriever.java
@@ -20,12 +20,12 @@
*/
package org.apache.qpid.server.query.engine.retriever;
-import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.stream.Stream;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import org.apache.qpid.server.model.Binding;
@@ -50,15 +50,20 @@ public class BindingRetriever<C extends ConfiguredObject<?>> extends ConfiguredO
/**
* List of entity field names
*/
- private final List<String> _fieldNames = Arrays.asList(
- "exchange", "bindingKey", "name", "type", "arguments", "destination"
- );
+ private final List<String> _fieldNames = new ImmutableList.Builder<String>()
+ .add("exchange")
+ .add("bindingKey")
+ .add("name")
+ .add("type")
+ .add("arguments")
+ .add("destination")
+ .build();
/**
* Mapping function for a Binding
*/
private final BiFunction<ConfiguredObject<?>, Binding, Map<String, Object>> _bindingMapping =
- (ConfiguredObject<?> parent, Binding binding) -> ImmutableMap.<String, Object> builder()
+ (ConfiguredObject<?> parent, Binding binding) -> ImmutableMap.<String, Object>builder()
.put(_fieldNames.get(0), parent.getName())
.put(_fieldNames.get(1), binding.getBindingKey())
.put(_fieldNames.get(2), binding.getName())
diff --git a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/CertificateRetriever.java b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/CertificateRetriever.java
index afab590b01..a36ea442a4 100644
--- a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/CertificateRetriever.java
+++ b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/CertificateRetriever.java
@@ -21,12 +21,12 @@
package org.apache.qpid.server.query.engine.retriever;
import java.math.BigInteger;
-import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.stream.Stream;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import org.apache.qpid.server.model.ConfiguredObject;
@@ -58,16 +58,25 @@ public class CertificateRetriever<C extends ConfiguredObject<?>> extends Configu
/**
* List of entity field names
*/
- private final List<String> _fieldNames = Arrays.asList(
- "store", "alias", "issuerName", "serialNumber", "hexSerialNumber", "signatureAlgorithm", "subjectAltNames",
- "subjectName", "validFrom", "validUntil", "version"
- );
+ private final List<String> _fieldNames = new ImmutableList.Builder<String>()
+ .add("store")
+ .add("alias")
+ .add("issuerName")
+ .add("serialNumber")
+ .add("hexSerialNumber")
+ .add("signatureAlgorithm")
+ .add("subjectAltNames")
+ .add("subjectName")
+ .add("validFrom")
+ .add("validUntil")
+ .add("version")
+ .build();
/**
* Mapping function for a CertificateDetails
*/
private final BiFunction<ConfiguredObject<?>, CertificateDetails, Map<String, Object>> certificateMapping =
- (ConfiguredObject<?> parent, CertificateDetails certificate) -> ImmutableMap.<String, Object> builder()
+ (ConfiguredObject<?> parent, CertificateDetails certificate) -> ImmutableMap.<String, Object>builder()
.put(_fieldNames.get(0), parent.getName())
.put(_fieldNames.get(1), certificate.getAlias())
.put(_fieldNames.get(2), certificate.getIssuerName())
diff --git a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/ConnectionLimitRuleRetriever.java b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/ConnectionLimitRuleRetriever.java
index 508e6af0cc..c66d160ae5 100644
--- a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/ConnectionLimitRuleRetriever.java
+++ b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/ConnectionLimitRuleRetriever.java
@@ -20,12 +20,12 @@
*/
package org.apache.qpid.server.query.engine.retriever;
-import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Stream;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import org.apache.qpid.server.model.BrokerConnectionLimitProvider;
@@ -53,14 +53,19 @@ public class ConnectionLimitRuleRetriever<C extends ConfiguredObject<?>> extends
/**
* List of entity field names
*/
- private final List<String> _fieldNames = Arrays.asList(
- "blocked", "countLimit", "frequencyLimit", "frequencyPeriod", "identity", "port"
- );
+ private final List<String> _fieldNames = new ImmutableList.Builder<String>()
+ .add("blocked")
+ .add("countLimit")
+ .add("frequencyLimit")
+ .add("frequencyPeriod")
+ .add("identity")
+ .add("port")
+ .build();
/**
* Mapping function for a ConnectionLimitRule
*/
- private final Function<ConnectionLimitRule, Map<String, Object>> _connectionLimitRuleMapping = rule -> ImmutableMap.<String, Object> builder()
+ private final Function<ConnectionLimitRule, Map<String, Object>> _connectionLimitRuleMapping = rule -> ImmutableMap.<String, Object>builder()
.put(_fieldNames.get(0), rule.getBlocked())
.put(_fieldNames.get(1), rule.getCountLimit())
.put(_fieldNames.get(2), rule.getFrequencyLimit())
diff --git a/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/SessionRetriever.java b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/SessionRetriever.java
new file mode 100644
index 0000000000..18d44f9733
--- /dev/null
+++ b/broker-plugins/broker-query-engine/src/main/java/org/apache/qpid/server/query/engine/retriever/SessionRetriever.java
@@ -0,0 +1,127 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.query.engine.retriever;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.BiFunction;
+import java.util.stream.Stream;
+
+import com.google.common.collect.ImmutableList;
+
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Connection;
+import org.apache.qpid.server.model.Session;
+
+/**
+ * Retrieves Session entities
+ *
+ * @param <C> Descendant of ConfiguredObject
+ */
+// sonar complains about underscores in variable names
+@SuppressWarnings("java:S116")
+public class SessionRetriever<C extends ConfiguredObject<?>> extends ConfiguredObjectRetriever<C> implements EntityRetriever<C>
+{
+ /**
+ * Target type
+ */
+ @SuppressWarnings({"java:S1170", "rawtypes", "RedundantCast", "unchecked"})
+ private final Class<C> _type = (Class<C>) (Class<? extends ConfiguredObject>) Connection.class;
+
+ /**
+ * List of entity field names
+ */
+ private final List<String> _fieldNames = new ImmutableList.Builder<String>()
+ .add("connectionId")
+ .add("id")
+ .add("name")
+ .add("description")
+ .add("type")
+ .add("desiredState")
+ .add("state")
+ .add("durable")
+ .add("lifetimePolicy")
+ .add("channelId")
+ .add("lastOpenedTime")
+ .add("producerFlowBlocked")
+ .add("lastUpdatedTime")
+ .add("lastUpdatedBy")
+ .add("createdBy")
+ .add("createdTime")
+ .add("statistics")
+ .build();
+
+ /**
+ * Mapping function for a Session
+ */
+ private final BiFunction<ConfiguredObject<?>, Session<?>, Map<String, Object>> _sessionMapping =
+ (ConfiguredObject<?> parent, Session<?> session) ->
+ {
+ final Map<String, Object> result = new LinkedHashMap<>();
+ result.put(_fieldNames.get(0), parent.getId());
+ result.put(_fieldNames.get(1), session.getId());
+ result.put(_fieldNames.get(2), session.getName());
+ result.put(_fieldNames.get(3), session.getDescription());
+ result.put(_fieldNames.get(4), session.getType());
+ result.put(_fieldNames.get(5), session.getDesiredState());
+ result.put(_fieldNames.get(6), session.getState());
+ result.put(_fieldNames.get(7), session.isDurable());
+ result.put(_fieldNames.get(8), session.getLifetimePolicy());
+ result.put(_fieldNames.get(9), session.getChannelId());
+ result.put(_fieldNames.get(10), session.getLastOpenedTime());
+ result.put(_fieldNames.get(11), session.isProducerFlowBlocked());
+ result.put(_fieldNames.get(12), session.getLastUpdatedTime());
+ result.put(_fieldNames.get(13), session.getLastUpdatedBy());
+ result.put(_fieldNames.get(14), session.getCreatedBy());
+ result.put(_fieldNames.get(15), session.getCreatedTime());
+ result.put(_fieldNames.get(16), session.getStatistics());
+ return result;
+ };
+
+ /**
+ * Returns stream of Session entities
+ *
+ * @param broker Broker instance
+ *
+ * @return Stream of entities
+ */
+ @Override()
+ public Stream<Map<String, ?>> retrieve(final C broker)
+ {
+ final Stream<Connection<?>> stream = retrieve(broker, _type).map(connection -> ((Connection<?>) connection));
+ return stream.flatMap(connection -> connection.getSessions().stream()
+ .map(session -> _sessionMapping.apply(connection, session)));
+ }
+
+ /**
+ * Returns list of entity field names
+ *
+ * @return List of field names
+ */
+ @Override()
+ @SuppressWarnings("findbugs:EI_EXPOSE_REP")
+ // List of field names already is an immutable collection
+ public List<String> getFieldNames()
+ {
+ return _fieldNames;
+ }
+}
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/TestBroker.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/TestBroker.java
index b97b2402dc..cfba8644d6 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/TestBroker.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/TestBroker.java
@@ -20,7 +20,6 @@
*/
package org.apache.qpid.server.query.engine;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -31,7 +30,6 @@ import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
@@ -40,24 +38,22 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
+import com.google.common.collect.Lists;
import org.junit.ClassRule;
import org.apache.qpid.server.exchange.ExchangeDefaults;
-import org.apache.qpid.server.message.AMQMessageHeader;
-import org.apache.qpid.server.message.MessageReference;
-import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.model.*;
import org.apache.qpid.server.model.port.HttpPort;
-import org.apache.qpid.server.query.engine.evaluator.settings.DefaultQuerySettings;
import org.apache.qpid.server.security.CertificateDetails;
import org.apache.qpid.server.security.auth.manager.ScramSHA256AuthenticationManager;
-import org.apache.qpid.server.store.StoredMessage;
-import org.apache.qpid.server.store.TransactionLogResource;
import org.apache.qpid.server.transport.AMQPConnection;
import org.apache.qpid.server.virtualhost.TestMemoryVirtualHost;
import org.apache.qpid.server.virtualhostnode.memory.MemoryVirtualHostNode;
import org.apache.qpid.test.utils.tls.TlsResource;
+/**
+ * Helper class for creating broker mock
+ */
@SuppressWarnings({"unchecked", "rawtypes"})
public class TestBroker
{
@@ -66,6 +62,8 @@ public class TestBroker
private static Broker<?> _broker;
+ private static final List<Connection> connections = new ArrayList<>();
+
public static Broker<?> createBroker()
{
try
@@ -77,7 +75,7 @@ public class TestBroker
_broker = BrokerTestHelper.createBrokerMock();
- List<String> attributeNames = new ArrayList<>(_broker.getModel().getTypeRegistry().getAttributeNames(Broker.class));
+ final List<String> attributeNames = new ArrayList<>(_broker.getModel().getTypeRegistry().getAttributeNames(Broker.class));
when(_broker.getAttributeNames()).thenReturn(attributeNames);
when(_broker.getAttribute(eq("name"))).thenReturn("mock");
when(_broker.getName()).thenReturn("mock");
@@ -87,25 +85,26 @@ public class TestBroker
attributesMap.put(AuthenticationProvider.TYPE, "SCRAM-SHA-256");
attributesMap.put(AuthenticationProvider.ID, UUID.randomUUID());
ScramSHA256AuthenticationManager authProvider =
- (ScramSHA256AuthenticationManager) _broker.getObjectFactory()
- .create(AuthenticationProvider.class,
- attributesMap,
- _broker);
+ (ScramSHA256AuthenticationManager) _broker.getObjectFactory()
+ .create(AuthenticationProvider.class, attributesMap, _broker);
when(_broker.getAuthenticationProviders()).thenReturn(Collections.singletonList(authProvider));
- HttpPort<?> httpPort = mock(HttpPort.class);
+ final List<String> portAttributeNames = new ArrayList<>(_broker.getModel().getTypeRegistry().getAttributeNames(Port.class));
+ final HttpPort<?> httpPort = mock(HttpPort.class);
+ when(httpPort.getAttributeNames()).thenReturn(portAttributeNames);
when(httpPort.getPort()).thenReturn(40606);
when(httpPort.getBoundPort()).thenReturn(40606);
when(httpPort.getCreatedBy()).thenReturn("admin");
when(httpPort.getCreatedTime()).thenReturn(new Date());
when(httpPort.getName()).thenReturn("httpPort");
+ when(httpPort.getAttribute(Port.NAME)).thenReturn("httpPort");
when(httpPort.getState()).thenReturn(State.ACTIVE);
when(httpPort.getType()).thenReturn("HTTP");
when(httpPort.getAttribute(HttpPort.AUTHENTICATION_PROVIDER)).thenReturn(authProvider);
+ when(httpPort.getStatistics()).thenReturn(new HashMap<>());
- Collection<Connection> connections = new ArrayList<>();
-
- Port<?> amqpPort = mock(Port.class);
+ final Port<?> amqpPort = mock(Port.class);
+ when(amqpPort.getAttributeNames()).thenReturn(portAttributeNames);
when(amqpPort.getConnections()).thenReturn(connections);
when(amqpPort.getChildren(Connection.class)).thenReturn(connections);
when(amqpPort.getPort()).thenReturn(40206);
@@ -113,193 +112,168 @@ public class TestBroker
when(amqpPort.getCreatedBy()).thenReturn("admin");
when(amqpPort.getCreatedTime()).thenReturn(new Date());
when(amqpPort.getName()).thenReturn("amqpPort");
+ when(amqpPort.getAttribute(Port.NAME)).thenReturn("amqpPort");
when(amqpPort.getState()).thenReturn(State.ACTIVE);
when(amqpPort.getType()).thenReturn("AMQP");
+ final Map<String, Object> portStatistics = new HashMap<>();
+ portStatistics.put("connectionCount", 30);
+ portStatistics.put("totalConnectionCount", 30);
+ when(httpPort.getStatistics()).thenReturn(portStatistics);
when(_broker.getPorts()).thenReturn(Arrays.asList(httpPort, amqpPort));
when(_broker.getChildren(eq(Port.class))).thenReturn(Arrays.asList(httpPort, amqpPort));
- final Map<String, Object> vhnAttributes = new HashMap<>();
- vhnAttributes.put(VirtualHostNode.TYPE, MemoryVirtualHostNode.VIRTUAL_HOST_NODE_TYPE);
- vhnAttributes.put(VirtualHostNode.NAME, "default");
- VirtualHostNode<?> virtualHostNode =
- _broker.getObjectFactory().create(VirtualHostNode.class, vhnAttributes, _broker);
-
- VirtualHostNode mockVirtualHostNode = mock(VirtualHostNode.class);
- when(mockVirtualHostNode.getAttributeNames()).thenReturn(virtualHostNode.getAttributeNames());
+ final List<String> vhnAttributeNames = new ArrayList<>(_broker.getModel().getTypeRegistry().getAttributeNames(VirtualHostNode.class));
+ final VirtualHostNode<?> virtualHostNode = mock(VirtualHostNode.class);
+ when(virtualHostNode.getAttributeNames()).thenReturn(vhnAttributeNames);
+ when(virtualHostNode.getAttribute(VirtualHostNode.ID)).thenReturn(UUID.randomUUID());
+ when(virtualHostNode.getAttribute(eq(VirtualHostNode.NAME))).thenReturn("default");
+ when(virtualHostNode.getAttribute(eq(VirtualHostNode.TYPE))).thenReturn(MemoryVirtualHostNode.VIRTUAL_HOST_NODE_TYPE);
+ when(virtualHostNode.getAttribute(eq(VirtualHostNode.CREATED_TIME))).thenReturn(new Date());
+ when(virtualHostNode.getCreatedTime()).thenReturn(new Date());
+
+ final VirtualHostNode mockVirtualHostNode = mock(VirtualHostNode.class);
+ when(mockVirtualHostNode.getAttributeNames()).thenReturn(vhnAttributeNames);
+ when(mockVirtualHostNode.getAttribute(VirtualHostNode.ID)).thenReturn(UUID.randomUUID());
when(mockVirtualHostNode.getAttribute(eq(VirtualHostNode.NAME))).thenReturn("mock");
when(mockVirtualHostNode.getAttribute(eq(VirtualHostNode.TYPE))).thenReturn("mock");
when(mockVirtualHostNode.getAttribute(eq(VirtualHostNode.CREATED_TIME)))
- .thenReturn(new Date(101, Calendar.JANUARY, 1, 12, 55, 30));
- when(mockVirtualHostNode.getCreatedTime()).thenReturn(new Date(101, Calendar.JANUARY, 1, 12, 55, 30));
-
- when(_broker.getVirtualHostNodes()).thenReturn(Arrays.asList(mockVirtualHostNode,
- mockVirtualHostNode,
- virtualHostNode));
- when(_broker.getChildren(eq(VirtualHostNode.class))).thenReturn(Arrays.asList(virtualHostNode,
- mockVirtualHostNode));
-
- final Map<String, Object> vhAttributes = new HashMap<>();
- vhAttributes.put(VirtualHost.TYPE, TestMemoryVirtualHost.VIRTUAL_HOST_TYPE);
- vhAttributes.put(VirtualHost.NAME, "default");
- TestMemoryVirtualHost virtualHost =
- (TestMemoryVirtualHost) virtualHostNode.createChild(VirtualHost.class, vhAttributes);
-
- List<Queue> queues = new ArrayList<>();
+ .thenReturn(createDate("2001-01-01 12:55:30"));
+ when(mockVirtualHostNode.getCreatedTime()).thenReturn(createDate("2001-01-01 12:55:30"));
+
+ when(_broker.getVirtualHostNodes()).thenReturn(
+ Arrays.asList(mockVirtualHostNode, virtualHostNode)
+ );
+ when(_broker.getChildren(eq(VirtualHostNode.class))).thenReturn(
+ Arrays.asList(virtualHostNode, mockVirtualHostNode)
+ );
+
+ final List<String> vhAttributeNames = new ArrayList<>(_broker.getModel().getTypeRegistry().getAttributeNames(VirtualHost.class));
+ final VirtualHost virtualHost = mock(VirtualHost.class);
+ when(virtualHost.getAttributeNames()).thenReturn(vhAttributeNames);
+ when(virtualHost.getAttribute(VirtualHost.ID)).thenReturn(UUID.randomUUID());
+ when(virtualHost.getAttribute(VirtualHost.TYPE)).thenReturn(TestMemoryVirtualHost.VIRTUAL_HOST_TYPE);
+ when(virtualHost.getAttribute(VirtualHost.NAME)).thenReturn("default");
+ when(virtualHostNode.getChildren(eq(VirtualHost.class))).thenReturn(
+ Arrays.asList(virtualHost)
+ );
+ when(virtualHostNode.getVirtualHost()).thenReturn(virtualHost);
+
+ for (int i = 1 ; i < 11; i ++)
+ {
+ connections.add(createAMQPConnection(i, "127.0.0.1", "principal1"));
+ }
+ for (int i = 11 ; i < 21; i ++)
+ {
+ connections.add(createAMQPConnection(i, "127.0.0.2", "principal2"));
+ }
+ for (int i = 21 ; i < 31; i ++)
+ {
+ connections.add(createAMQPConnection(i, "127.0.0.3", "principal3"));
+ }
+
+ final List<Queue> queues = new ArrayList<>();
for (int i = 0; i < 10; i++)
{
- Map<String, Object> attributes = new HashMap<>();
- attributes.put(Queue.ID, UUID.randomUUID());
- attributes.put(Queue.NAME, "QUEUE_" + i);
- attributes.put(Queue.LAST_UPDATED_TIME, new Date(2021, Calendar.JANUARY, 0, 0, 0, 0));
- attributes.put(Queue.OVERFLOW_POLICY, OverflowPolicy.RING);
- if (i % 2 == 0)
- {
- attributes.put(Queue.EXPIRY_POLICY, Queue.ExpiryPolicy.ROUTE_TO_ALTERNATE);
- }
- attributes.put(Queue.DESCRIPTION, "test description 1");
- queues.add(virtualHost.createChild(Queue.class, attributes));
+ final Queue queue = createQueue(i, OverflowPolicy.RING, "test description 1");
+ queues.add(queue);
}
for (int i = 10; i < 20; i++)
{
- Map<String, Object> attributes = new HashMap<>();
- attributes.put(Queue.ID, UUID.randomUUID());
- attributes.put(Queue.NAME, "QUEUE_" + i);
- attributes.put(Queue.OVERFLOW_POLICY, OverflowPolicy.REJECT);
- if (i % 2 == 0)
- {
- attributes.put(Queue.EXPIRY_POLICY, Queue.ExpiryPolicy.ROUTE_TO_ALTERNATE);
- }
- attributes.put(Queue.DESCRIPTION, "test description 2");
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_BYTES, 1024 * 1024);
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES, 100);
- queues.add(virtualHost.createChild(Queue.class, attributes));
+ final Queue queue = createQueue(i, OverflowPolicy.REJECT, "test description 2");
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_BYTES)).thenReturn(1024 * 1024);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES)).thenReturn(100);
+ queues.add(queue);
}
for (int i = 20; i < 30; i++)
{
- Map<String, Object> attributes = new HashMap<>();
- attributes.put(Queue.ID, UUID.randomUUID());
- attributes.put(Queue.NAME, "QUEUE_" + i);
- attributes.put(Queue.OVERFLOW_POLICY, OverflowPolicy.FLOW_TO_DISK);
- if (i % 2 == 0)
- {
- attributes.put(Queue.EXPIRY_POLICY, Queue.ExpiryPolicy.ROUTE_TO_ALTERNATE);
- }
- attributes.put(Queue.DESCRIPTION, "test description 3");
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_BYTES, 1024 * 1024);
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES, 100);
- queues.add(virtualHost.createChild(Queue.class, attributes));
+ final Queue queue = createQueue(i, OverflowPolicy.FLOW_TO_DISK, "test description 3");
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_BYTES)).thenReturn(1024 * 1024);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES)).thenReturn(100);
+ queues.add(queue);
}
for (int i = 30; i < 40; i++)
{
- Map<String, Object> attributes = new HashMap<>();
- attributes.put(Queue.ID, UUID.randomUUID());
- attributes.put(Queue.NAME, "QUEUE_" + i);
- attributes.put(Queue.OVERFLOW_POLICY, OverflowPolicy.PRODUCER_FLOW_CONTROL);
- if (i % 2 == 0)
- {
- attributes.put(Queue.EXPIRY_POLICY, Queue.ExpiryPolicy.ROUTE_TO_ALTERNATE);
- }
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_BYTES, 1024 * 1024);
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES, 100);
- queues.add(virtualHost.createChild(Queue.class, attributes));
+ final Queue queue = createQueue(i, OverflowPolicy.PRODUCER_FLOW_CONTROL, null);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_BYTES)).thenReturn(1024 * 1024);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES)).thenReturn(100);
+ queues.add(queue);
}
for (int i = 40; i < 50; i++)
{
- Map<String, Object> attributes = new HashMap<>();
- attributes.put(Queue.ID, UUID.randomUUID());
- attributes.put(Queue.NAME, "QUEUE_" + i);
- attributes.put(Queue.OVERFLOW_POLICY, OverflowPolicy.NONE);
+ final Queue queue = createQueue(i, OverflowPolicy.NONE, null);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_BYTES)).thenReturn(1024 * 1024);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES)).thenReturn(100);
if (i % 2 == 0)
{
- attributes.put(Queue.EXPIRY_POLICY, Queue.ExpiryPolicy.ROUTE_TO_ALTERNATE);
- attributes.put(Queue.LIFETIME_POLICY, LifetimePolicy.PERMANENT);
+ when(queue.getAttribute(Queue.EXPIRY_POLICY)).thenReturn(Queue.ExpiryPolicy.ROUTE_TO_ALTERNATE);
+ when(queue.getAttribute(Queue.LIFETIME_POLICY)).thenReturn(LifetimePolicy.PERMANENT);
}
else
{
- attributes.put(Queue.LIFETIME_POLICY, LifetimePolicy.IN_USE);
+ when(queue.getAttribute(Queue.LIFETIME_POLICY)).thenReturn(LifetimePolicy.IN_USE);
}
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_BYTES, 1024 * 1024);
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES, 100);
- queues.add(virtualHost.createChild(Queue.class, attributes));
+ queues.add(queue);
}
for (int i = 50; i < 60; i++)
{
- Map<String, Object> attributes = new HashMap<>();
- attributes.put(Queue.ID, UUID.randomUUID());
- attributes.put(Queue.NAME, "QUEUE_" + i);
- attributes.put(Queue.OVERFLOW_POLICY, OverflowPolicy.NONE);
+ final Queue queue = createQueue(i, OverflowPolicy.NONE, null);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_BYTES)).thenReturn(1024 * 1024);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES)).thenReturn(100);
if (i % 2 == 0)
{
- attributes.put(Queue.EXPIRY_POLICY, Queue.ExpiryPolicy.ROUTE_TO_ALTERNATE);
- attributes.put(Queue.LIFETIME_POLICY, LifetimePolicy.PERMANENT);
+ when(queue.getAttribute(Queue.EXPIRY_POLICY)).thenReturn(Queue.ExpiryPolicy.ROUTE_TO_ALTERNATE);
+ when(queue.getAttribute(Queue.LIFETIME_POLICY)).thenReturn(LifetimePolicy.PERMANENT);
}
else
{
- attributes.put(Queue.LIFETIME_POLICY, LifetimePolicy.IN_USE);
- }
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_BYTES, 1024 * 1024);
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES, 100);
- Queue queue = virtualHost.createChild(Queue.class, attributes);
- for (int j = 0; j < 65; j++)
- {
- queue.enqueue(createMessage((long) j), null, null);
+ when(queue.getAttribute(Queue.LIFETIME_POLICY)).thenReturn(LifetimePolicy.IN_USE);
}
+
+ final Map<String, Object> statistics = new HashMap<>();
+ statistics.put("availableMessages", 65);
+ statistics.put("bindingCount", 0);
+ statistics.put("queueDepthMessages", 65);
+ statistics.put("queueDepthBytes", 0);
+ statistics.put("totalExpiredBytes", 0);
+ when(queue.getStatistics()).thenReturn(statistics);
+
queues.add(queue);
}
for (int i = 60; i < 70; i++)
{
- Map<String, Object> attributes = new HashMap<>();
- attributes.put(Queue.ID, UUID.randomUUID());
- attributes.put(Queue.NAME, "QUEUE_" + i);
- attributes.put(Queue.OVERFLOW_POLICY, OverflowPolicy.NONE);
- if (i % 2 == 0)
- {
- attributes.put(Queue.EXPIRY_POLICY, Queue.ExpiryPolicy.ROUTE_TO_ALTERNATE);
- }
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_BYTES, 1024 * 1024);
- attributes.put(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES, 100);
- Queue queue = virtualHost.createChild(Queue.class, attributes);
- for (int j = 0; j < 95; j++)
- {
- queue.enqueue(createMessage((long) j), null, null);
- }
+ final Queue queue = createQueue(i, OverflowPolicy.NONE, null);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_BYTES)).thenReturn(1024 * 1024);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES)).thenReturn(100);
+
+ final Map<String, Object> statistics = new HashMap<>();
+ statistics.put("availableMessages", 95);
+ statistics.put("bindingCount", 0);
+ statistics.put("queueDepthMessages", 95);
+ statistics.put("queueDepthBytes", 0);
+ statistics.put("totalExpiredBytes", 0);
+ when(queue.getStatistics()).thenReturn(statistics);
+
queues.add(queue);
}
+ when(virtualHost.getChildren(eq(Queue.class))).thenReturn(queues);
- List<Exchange> exchanges = new ArrayList<>();
+ final List<Exchange> exchanges = new ArrayList<>();
for (int i = 0; i < 10; i++)
{
- Map<String, Object> attributes = new HashMap<>();
- attributes.put(Exchange.ID, UUID.randomUUID());
- attributes.put(Exchange.TYPE, ExchangeDefaults.TOPIC_EXCHANGE_CLASS);
- attributes.put(Exchange.NAME, "EXCHANGE_" + i);
- attributes.put(Exchange.DESCRIPTION, "test description " + i);
- Exchange exchange = virtualHost.createChild(Exchange.class, attributes);
- exchange.bind("QUEUE_1", "#", new HashMap<>(), true);
- exchanges.add(exchange);
- }
-
- for (int i = 1 ; i < 11; i ++)
- {
- connections.add(createAMQPConnection(i, "127.0.0.1", "principal1"));
- }
- for (int i = 11 ; i < 21; i ++)
- {
- connections.add(createAMQPConnection(i, "127.0.0.2", "principal2"));
- }
- for (int i = 21 ; i < 31; i ++)
- {
- connections.add(createAMQPConnection(i, "127.0.0.3", "principal3"));
+ exchanges.add(creatExchange(i));
}
+ when(virtualHost.getChildren(eq(Exchange.class))).thenReturn(exchanges);
final Collection<TrustStore> trustStores = createTruststores();
when(_broker.getChildren(eq(TrustStore.class))).thenReturn(trustStores);
-
+ when(_broker.getAttribute("maximumHeapMemorySize")).thenReturn(10_000_000_000L);
+ when(_broker.getAttribute("maximumDirectMemorySize")).thenReturn(1_500_000_000L);
+ when(_broker.getStatistics()).thenReturn(getBrokerStatistics());
}
- catch(Exception e)
+ catch (Exception e)
{
throw new RuntimeException(e);
}
@@ -307,6 +281,73 @@ public class TestBroker
return _broker;
}
+ protected static Queue createQueue(int number, OverflowPolicy overflowPolicy, String description)
+ {
+ final List<String> attributeNames = new ArrayList<>(_broker.getModel().getTypeRegistry().getAttributeNames(Queue.class));
+ final Queue<?> queue = mock(Queue.class);
+ when(queue.getAttributeNames()).thenReturn(attributeNames);
+ when(queue.getAttribute(Queue.ID)).thenReturn(UUID.randomUUID());
+ when(queue.getAttribute(Queue.NAME)).thenReturn("QUEUE_" + number);
+ when(queue.getAttribute(Queue.TYPE)).thenReturn("standard");
+ Date createdTime = new Date();
+ when(queue.getAttribute(Queue.CREATED_TIME)).thenReturn(createdTime);
+ when(queue.getCreatedTime()).thenReturn(createdTime);
+ when(queue.getAttribute(Queue.LAST_UPDATED_TIME)).thenReturn(new Date());
+ when(queue.getAttribute(Queue.OVERFLOW_POLICY)).thenReturn(overflowPolicy);
+ if (number % 2 == 0)
+ {
+ when(queue.getAttribute(Queue.EXPIRY_POLICY)).thenReturn(Queue.ExpiryPolicy.ROUTE_TO_ALTERNATE);
+ }
+ else
+ {
+ when(queue.getAttribute(Queue.EXPIRY_POLICY)).thenReturn(Queue.ExpiryPolicy.DELETE);
+ }
+ when(queue.getAttribute(Queue.LIFETIME_POLICY)).thenReturn(LifetimePolicy.PERMANENT);
+ when(queue.getAttribute(Queue.DESCRIPTION)).thenReturn(description);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_BYTES)).thenReturn(-1);
+ when(queue.getAttribute(Queue.MAXIMUM_QUEUE_DEPTH_MESSAGES)).thenReturn(-1);
+
+ Map<String, Object> statistics = new HashMap<>();
+ statistics.put("availableMessages", 0);
+ statistics.put("bindingCount", number == 1 ? 10 : 0);
+ statistics.put("queueDepthMessages", 0);
+ statistics.put("queueDepthBytes", 0);
+ statistics.put("totalExpiredBytes", 0);
+ when(queue.getStatistics()).thenReturn(statistics);
+
+ if (number > 0 && number < 11)
+ {
+ Consumer consumer = createConsumer(number, "QUEUE_" + number);
+ when(queue.getChildren(eq(Consumer.class))).thenReturn(Lists.newArrayList(consumer));
+ }
+
+ return queue;
+ }
+
+ protected static Exchange creatExchange(int number)
+ {
+ final List<String> attributeNames = new ArrayList<>(_broker.getModel().getTypeRegistry().getAttributeNames(Exchange.class));
+ final Exchange<?> exchange = mock(Exchange.class);
+ when(exchange.getAttributeNames()).thenReturn(attributeNames);
+ when(exchange.getAttribute(Exchange.ID)).thenReturn(UUID.randomUUID());
+ when(exchange.getAttribute(Exchange.TYPE)).thenReturn(ExchangeDefaults.TOPIC_EXCHANGE_CLASS);
+ when(exchange.getAttribute(Exchange.NAME)).thenReturn("EXCHANGE_" + number);
+ when(exchange.getName()).thenReturn("EXCHANGE_" + number);
+ when(exchange.getAttribute(Exchange.DESCRIPTION)).thenReturn("test description " + number);
+
+ Binding binding = mock(Binding.class);
+ when(binding.getName()).thenReturn("#");
+ when(binding.getBindingKey()).thenReturn("#");
+ when(binding.getType()).thenReturn("binding");
+ when(binding.getDestination()).thenReturn("QUEUE_1");
+ when(binding.getArguments()).thenReturn(new HashMap<>());
+
+ when(exchange.getAttribute("bindings")).thenReturn(Collections.unmodifiableList(Arrays.asList(binding)));
+ when(exchange.getBindings()).thenReturn(Collections.unmodifiableList(Arrays.asList(binding)));
+
+ return exchange;
+ }
+
protected static Collection<TrustStore> createTruststores()
{
final Collection<TrustStore> trustStores = new ArrayList<>();
@@ -442,33 +483,14 @@ public class TestBroker
return list;
}
- protected static ServerMessage createMessage(Long id)
- {
- AMQMessageHeader header = mock(AMQMessageHeader.class);
- when(header.getMessageId()).thenReturn(String.valueOf(id));
- ServerMessage message = mock(ServerMessage.class);
- when(message.getMessageNumber()).thenReturn(id);
- when(message.getMessageHeader()).thenReturn(header);
- when(message.checkValid()).thenReturn(true);
-
- StoredMessage storedMessage = mock(StoredMessage.class);
- when(message.getStoredMessage()).thenReturn(storedMessage);
-
- MessageReference ref = mock(MessageReference.class);
- when(ref.getMessage()).thenReturn(message);
-
- when(message.newReference()).thenReturn(ref);
- when(message.newReference(any(TransactionLogResource.class))).thenReturn(ref);
-
- return message;
- }
-
protected static Connection createAMQPConnection(int number, String hostname, String principal)
{
List<String> attributeNames = new ArrayList<>(_broker.getModel().getTypeRegistry().getAttributeNames(Connection.class));
AMQPConnection<?> connection = mock(AMQPConnection.class);
when(connection.getAttributeNames()).thenReturn(attributeNames);
- when(connection.getAttribute(Connection.ID)).thenReturn(UUID.randomUUID());
+ UUID id = UUID.randomUUID();
+ when(connection.getAttribute(Connection.ID)).thenReturn(id);
+ when(connection.getId()).thenReturn(id);
when(connection.getAttribute(Connection.NAME)).thenReturn(String.format("[%d] %s:%d", number, hostname, (47290 + number)));
when(connection.getAttribute(Connection.DESCRIPTION)).thenReturn(null);
when(connection.getAttribute(Connection.TYPE)).thenReturn("AMQP_1_0");
@@ -484,12 +506,68 @@ public class TestBroker
when(connection.getProtocol()).thenReturn(Protocol.AMQP_1_0);
when(connection.getAttribute(Connection.REMOTE_ADDRESS)).thenReturn(String.format("/%s:%d", hostname, (47290 + number)));
when(connection.getAttribute(Connection.TRANSPORT)).thenReturn(Transport.TCP);
+
+ Session session = createSession(0);
+ when(connection.getSessions()).thenReturn(Collections.unmodifiableList(Arrays.asList(session)));
+ when(connection.getChildren(eq(Session.class))).thenReturn(Collections.unmodifiableList(Arrays.asList(session)));
+
return connection;
}
+ protected static Consumer<?, ?> createConsumer(int connectionNumber, String queueName)
+ {
+ final List<String> attributeNames = new ArrayList<>(_broker.getModel().getTypeRegistry().getAttributeNames(Consumer.class));
+ final Consumer<?, ?> consumer = mock(Consumer.class);
+ when(consumer.getAttributeNames()).thenReturn(attributeNames);
+ when(consumer.getAttribute(Consumer.ID)).thenReturn(UUID.randomUUID());
+ when(consumer.getAttribute(Consumer.NAME)).thenReturn(
+ String.format("%d|1|qpid-jms:receiver:ID:%s:1:1:1:%s", connectionNumber, UUID.randomUUID(), queueName)
+ );
+ Session session = (Session) connections.get(connectionNumber).getSessions().iterator().next();
+ when(consumer.getSession()).thenReturn(session);
+ when(consumer.getAttribute("session")).thenReturn(session);
+ return consumer;
+ }
+
+ protected static Session<?> createSession(int sessionNumber)
+ {
+ final List<String> attributeNames = new ArrayList<>(_broker.getModel().getTypeRegistry().getAttributeNames(Session.class));
+ final Session<?> session = mock(Session.class);
+ when(session.getAttributeNames()).thenReturn(attributeNames);
+ UUID id = UUID.randomUUID();
+ when(session.getAttribute(Session.ID)).thenReturn(id);
+ when(session.getId()).thenReturn(id);
+ when(session.getAttribute(Session.NAME)).thenReturn(sessionNumber);
+ when(session.getName()).thenReturn(String.valueOf(sessionNumber));
+ when(session.getType()).thenReturn("Session");
+ when(session.getDescription()).thenReturn("test description");
+ when(session.getDesiredState()).thenReturn(State.ACTIVE);
+ when(session.getState()).thenReturn(State.ACTIVE);
+ when(session.isDurable()).thenReturn(true);
+ when(session.getLifetimePolicy()).thenReturn(LifetimePolicy.PERMANENT);
+ when(session.getChannelId()).thenReturn(0);
+ when(session.getLastOpenedTime()).thenReturn(new Date());
+ when(session.isProducerFlowBlocked()).thenReturn(false);
+ when(session.getLastUpdatedTime()).thenReturn(new Date());
+ when(session.getLastUpdatedBy()).thenReturn("admin");
+ when(session.getCreatedBy()).thenReturn("admin");
+ when(session.getCreatedTime()).thenReturn(new Date());
+ when(session.getStatistics()).thenReturn(new HashMap<>());
+ return session;
+ }
+
+ protected static Map<String, Object> getBrokerStatistics()
+ {
+ final Map<String, Object> map = new HashMap<>();
+ map.put("usedHeapMemorySize", 6_000_000_000L);
+ map.put("usedDirectMemorySize", 500_000_000L);
+ map.put("processCpuLoad", 0.052);
+ return map;
+ }
+
protected static Date createDate(String date)
{
- final LocalDateTime dateTime = LocalDateTime.parse(date, DateTimeFormatter.ofPattern(DefaultQuerySettings.DATE_TIME_PATTERN));
+ final LocalDateTime dateTime = LocalDateTime.parse(date, DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"));
return Date.from(dateTime.toInstant(ZoneOffset.UTC));
}
}
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/BindingQueryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/BindingQueryTest.java
index b5b5867ae2..1d6e2e3ec4 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/BindingQueryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/BindingQueryTest.java
@@ -30,6 +30,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the bindings retrieval
+ */
public class BindingQueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@@ -73,4 +76,29 @@ public class BindingQueryTest
assertEquals(1, result.size());
assertEquals(10, ((Map<String, Object>) result.get(0).get("count(*)")).get("QUEUE_1"));
}
+
+ @Test()
+ public void extractExchangeIdAndDestinationId()
+ {
+ String query = "select "
+ + "exchange, destination, "
+ + "(select id from exchange where name = b.exchange) as exchangeId, "
+ + "(select id from queue where name = b.destination) as destinationId "
+ + "from binding b";
+
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+
+ assertEquals(10, result.size());
+
+ for (Map<String, Object> stringObjectMap : result)
+ {
+ String exchangeQuery = "select id from exchange where name = '" + stringObjectMap.get("exchange") + "'";
+ String exchangeId = (String) _queryEvaluator.execute(exchangeQuery).getResults().get(0).get("id");
+ assertEquals(stringObjectMap.get("exchangeId"), exchangeId);
+
+ String queueQuery = "select id from queue where name = '" + stringObjectMap.get("destination") + "'";
+ String queueId = (String) _queryEvaluator.execute(queueQuery).getResults().get(0).get("id");
+ assertEquals(stringObjectMap.get("destinationId"), queueId);
+ }
+ }
}
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/BrokerDigestQueryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/BrokerDigestQueryTest.java
index 5e1950d283..db1abba3d3 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/BrokerDigestQueryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/BrokerDigestQueryTest.java
@@ -30,6 +30,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the broker digests retrieval
+ */
public class BrokerDigestQueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@@ -37,22 +40,66 @@ public class BrokerDigestQueryTest
@Test()
public void selectBrokerDigest()
{
- String query = "select "
- + "name as label, "
- + "null as objectsState, "
- + "'UNAVAILABLE' as diskUsageState, "
- + "'UNAVAILABLE' as memoryUsageState, "
- + "'UNAVAILABLE' as cpuUsageState, "
- + "(select count(*) from connection) as connectionCount, "
- + "(select count(*) from exchange) as exchangesCount, "
- + "(select count(*) from binding) as bindingsCount, "
- + "(select count(*) from queue) as queuesCount, "
- + "0 as goodQueuesCount, "
- + "0 as badQueuesCount, "
- + "0 as criticalQueuesCount "
- + "from broker";
+ String query = "with important_queues as "
+ + "(select name from queue where name in ("
+ + "'QUEUE_55','QUEUE_56', 'QUEUE_57',"
+ + "'QUEUE_60','QUEUE_61')) "
+ + "select "
+ + "name as label, "
+ + "null as objectsState, "
+ + "usedHeapMemorySize as heapMemoryUsage, "
+ + "maximumHeapMemorySize as maximumHeapMemorySize, "
+ + "usedDirectMemorySize as directMemoryUsage, "
+ + "maximumDirectMemorySize as maximumDirectMemorySize, "
+ + "(statistics.processCpuLoad * 100) as cpuUsage, "
+ + "(select count(*) from certificate) as certificatesCount, "
+ + "(select count(*) from connection) as connectionCount, "
+ + "(select count(*) from exchange) as exchangesCount, "
+ + "(select count(*) from binding) as bindingsCount, "
+ + "(select count(*) from queue) as queuesCount, "
+ + "(select count(*) from user) as usersCount, "
+ // good queues have depth < 60%
+ + "(select count(*) "
+ + "from queue "
+ + "where name not in (select name from important_queues) "
+ + "or maximumQueueDepthMessages = -1 or maximumQueueDepthBytes = -1 "
+ + "or overflowPolicy = 'RING' "
+ + "and (queueDepthMessages < maximumQueueDepthMessages * 0.6 "
+ + "or queueDepthBytes < maximumQueueDepthBytes * 0.6)) as goodQueuesCount, "
+ // bad queues have depth > 60% and < 90%
+ + "(select count(*) "
+ + "from queue "
+ + "where name in (select name from important_queues) "
+ + "and maximumQueueDepthMessages != -1 and maximumQueueDepthBytes != -1 "
+ + "and overflowPolicy != 'RING' "
+ + "and (queueDepthMessages between (maximumQueueDepthMessages * 0.6, maximumQueueDepthMessages * 0.9) "
+ + "or queueDepthBytes between (maximumQueueDepthBytes * 0.6, maximumQueueDepthBytes * 0.9))) as badQueuesCount, "
+ // critical queues have depth > 90%
+ + "(select count(*) "
+ + "from queue "
+ + "where name in (select name from important_queues) "
+ + "and maximumQueueDepthMessages != -1 and maximumQueueDepthBytes != -1 "
+ + "and overflowPolicy != 'RING' "
+ + "and (queueDepthMessages > maximumQueueDepthMessages * 0.9 "
+ + "or queueDepthBytes > maximumQueueDepthBytes * 0.9)) as criticalQueuesCount "
+ + "from broker";
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
assertEquals(1, result.size());
+ assertEquals("mock", result.get(0).get("label"));
+ assertEquals(6_000_000_000L, result.get(0).get("heapMemoryUsage"));
+ assertEquals(10_000_000_000L, result.get(0).get("maximumHeapMemorySize"));
+ assertEquals(500_000_000L, result.get(0).get("directMemoryUsage"));
+ assertEquals(1_500_000_000L, result.get(0).get("maximumDirectMemorySize"));
+ assertEquals(5.2, result.get(0).get("cpuUsage"));
+ assertEquals(10, result.get(0).get("certificatesCount"));
+ assertEquals(30, result.get(0).get("connectionCount"));
+ assertEquals(10, result.get(0).get("exchangesCount"));
+ assertEquals(10, result.get(0).get("bindingsCount"));
+ assertEquals(70, result.get(0).get("queuesCount"));
+ assertEquals(0, result.get(0).get("usersCount"));
+ assertEquals(65, result.get(0).get("goodQueuesCount"));
+ assertEquals(3, result.get(0).get("badQueuesCount"));
+ assertEquals(2, result.get(0).get("criticalQueuesCount"));
}
}
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/CertificateQueryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/CertificateQueryTest.java
index 40959fad56..c5bfb4f072 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/CertificateQueryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/CertificateQueryTest.java
@@ -35,12 +35,15 @@ import org.apache.qpid.server.query.engine.evaluator.settings.DefaultQuerySettin
import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
import org.apache.qpid.server.query.engine.utils.QuerySettingsBuilder;
+/**
+ * Tests designed to verify the certificates retrieval
+ */
public class CertificateQueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
private final QuerySettings _querySettings = new QuerySettingsBuilder()
- .zoneId(ZoneId.of(DefaultQuerySettings.ZONE_ID)).build();
+ .zoneId(ZoneId.of(DefaultQuerySettings.ZONE_ID)).build();
@Test()
public void selectAllCertificates()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/ConnectionQueryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/ConnectionQueryTest.java
index 819624b838..0fb2327a91 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/ConnectionQueryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/ConnectionQueryTest.java
@@ -30,6 +30,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the connections retrieval
+ */
public class ConnectionQueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/BindingQueryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/ConsumerQueryTest.java
similarity index 51%
copy from broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/BindingQueryTest.java
copy to broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/ConsumerQueryTest.java
index b5b5867ae2..b54c8f3fe6 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/BindingQueryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/ConsumerQueryTest.java
@@ -30,47 +30,55 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
-public class BindingQueryTest
+/**
+ * Tests designed to verify the consumers retrieval
+ */
+public class ConsumerQueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@Test()
- public void selectAllBindings()
+ public void selectAllConsumers()
{
- String query = "select * from binding";
+ String query = "select * from consumer";
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
assertEquals(10, result.size());
}
@Test()
- public void countBindings()
+ public void countConsumers()
{
- String query = "select count(*) from binding";
+ String query = "select count(*) from consumer";
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
assertEquals(1, result.size());
assertEquals(10, result.get(0).get("count(*)"));
}
@Test()
- @SuppressWarnings("unchecked")
- public void groupByExchange()
+ public void extractConnectionNameAndSessionName()
{
- String query = "select count(*), exchange from binding group by exchange";
+ String query = "select "
+ + "id, name, "
+ + "(select id from connection where substring(name, 1, position(']' in name)) = '[' + substring(c.name, 1, position('|' in c.name) - 1) + ']') as connectionId, "
+ + "(select name from connection where substring(name, 1, position(']' in name)) = '[' + substring(c.name, 1, position('|' in c.name) - 1) + ']') as connection, "
+ + "(select name from session where id = c.session.id) as session, "
+ + "session.id as sessionId "
+ + "from consumer c "
+ + "order by name";
+
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
- assertEquals(1, result.size());
- for (int i = 0; i < 10; i ++)
+
+ assertEquals(10, result.size());
+
+ for (Map<String, Object> stringObjectMap : result)
{
- assertEquals(1, ((Map<String, Object>) result.get(0).get("count(*)")).get("EXCHANGE_" + i));
- }
- }
+ String connectionQuery = "select id from connection where name = '" + stringObjectMap.get("connection") + "'";
+ String connectionId = (String) _queryEvaluator.execute(connectionQuery).getResults().get(0).get("id");
+ assertEquals(stringObjectMap.get("connectionId"), connectionId);
- @Test()
- @SuppressWarnings("unchecked")
- public void groupByDestination()
- {
- String query = "select count(*), destination from binding group by destination";
- List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
- assertEquals(1, result.size());
- assertEquals(10, ((Map<String, Object>) result.get(0).get("count(*)")).get("QUEUE_1"));
+ String sessionQuery = "select name as name from session where id = '" + stringObjectMap.get("sessionId") + "'";
+ String sessionName = (String) _queryEvaluator.execute(sessionQuery).getResults().get(0).get("name");
+ assertEquals(stringObjectMap.get("session"), sessionName);
+ }
}
}
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java
index 54a41fa95c..a68d3e4e00 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java
@@ -30,6 +30,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the domains retrieval
+ */
public class DomainQueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/PortQueryTest.java
similarity index 66%
copy from broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java
copy to broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/PortQueryTest.java
index 54a41fa95c..cfab59da7b 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/PortQueryTest.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.query.engine.broker;
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertEquals;
import java.util.List;
import java.util.Map;
@@ -30,15 +30,29 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
-public class DomainQueryTest
+/**
+ * Tests designed to verify the ports retrieval
+ */
+public class PortQueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@Test()
- public void selectAllBindings()
+ public void allPorts()
+ {
+ String query = "select * from port";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals(2, result.size());
+ assertEquals("amqpPort", result.get(0).get("name"));
+ assertEquals("httpPort", result.get(1).get("name"));
+ }
+
+ @Test()
+ public void countPorts()
{
- String query = "select * from domain";
+ String query = "select count(*) from port";
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
- assertFalse(result.isEmpty());
+ assertEquals(1, result.size());
+ assertEquals(2, result.get(0).get("count(*)"));
}
}
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/QueueQueryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/QueueQueryTest.java
index b1712c8060..69ab81c8b8 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/QueueQueryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/QueueQueryTest.java
@@ -34,6 +34,9 @@ import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.evaluator.settings.DefaultQuerySettings;
import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
+/**
+ * Tests designed to verify the queues retrieval
+ */
public class QueueQueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@@ -98,10 +101,10 @@ public class QueueQueryTest
public void queuesByMessageDepth()
{
String query = "select * from queue "
- + "where maximumQueueDepthMessages != -1 "
- + "and maximumQueueDepthBytes != -1 "
- + "and ((queueDepthMessages > maximumQueueDepthMessages * 0.6 and queueDepthMessages < maximumQueueDepthMessages * 0.9)"
- + "or (queueDepthBytes > maximumQueueDepthBytes * 0.6 and queueDepthBytes < maximumQueueDepthBytes * 0.9))";
+ + "where maximumQueueDepthMessages != -1 "
+ + "and maximumQueueDepthBytes != -1 "
+ + "and ((queueDepthMessages > maximumQueueDepthMessages * 0.6 and queueDepthMessages < maximumQueueDepthMessages * 0.9)"
+ + "or (queueDepthBytes > maximumQueueDepthBytes * 0.6 and queueDepthBytes < maximumQueueDepthBytes * 0.9))";
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
assertEquals(10, result.size());
for (int i = 50; i < 60; i++)
@@ -110,10 +113,10 @@ public class QueueQueryTest
}
query = "select * from queue "
- + "where maximumQueueDepthMessages != -1 "
- + "and maximumQueueDepthBytes != -1 "
- + "and (queueDepthMessages > maximumQueueDepthMessages * 0.9"
- + "or queueDepthBytes > maximumQueueDepthBytes * 0.9)";
+ + "where maximumQueueDepthMessages != -1 "
+ + "and maximumQueueDepthBytes != -1 "
+ + "and (queueDepthMessages > maximumQueueDepthMessages * 0.9"
+ + "or queueDepthBytes > maximumQueueDepthBytes * 0.9)";
result = _queryEvaluator.execute(query).getResults();
assertEquals(10, result.size());
for (int i = 60; i < 70; i++)
@@ -122,8 +125,8 @@ public class QueueQueryTest
}
query = "select * from queue "
- + "where maximumQueueDepthMessages != -1 "
- + "and maximumQueueDepthBytes != -1 ";
+ + "where maximumQueueDepthMessages != -1 "
+ + "and maximumQueueDepthBytes != -1 ";
result = _queryEvaluator.execute(query).getResults();
assertEquals(60, result.size());
for (int i = 10; i < 70; i++)
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/NotExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/SessionQueryTest.java
similarity index 61%
copy from broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/NotExpressionTest.java
copy to broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/SessionQueryTest.java
index f57a8df2be..5c462e1619 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/NotExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/SessionQueryTest.java
@@ -18,7 +18,7 @@
* under the License.
*
*/
-package org.apache.qpid.server.query.engine.parsing.expression.logic;
+package org.apache.qpid.server.query.engine.broker;
import static org.junit.Assert.assertEquals;
@@ -30,31 +30,32 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
-public class NotExpressionTest
+/**
+ * Tests designed to verify the sessions retrieval
+ */
+public class SessionQueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@Test()
- public void not()
+ public void selectAllSessions()
{
- String query = "select not (true)";
+ String query = "select * from session";
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
- assertEquals(1, result.size());
- assertEquals(false, result.get(0).get("not(true)"));
+ assertEquals(30, result.size());
- query = "select not (false)";
- result = _queryEvaluator.execute(query).getResults();
- assertEquals(1, result.size());
- assertEquals(true, result.get(0).get("not(false)"));
-
- query = "select not (2 > 1)";
- result = _queryEvaluator.execute(query).getResults();
- assertEquals(1, result.size());
- assertEquals(false, result.get(0).get("not(2>1)"));
+ for (Map<String, Object> stringObjectMap : result) {
+ String connectionQuery = "select name from connection where id = '" + stringObjectMap.get("connectionId") + "'";
+ assertEquals(1, _queryEvaluator.execute(connectionQuery).getResults().size());
+ }
+ }
- query = "select not (2 < 1)";
- result = _queryEvaluator.execute(query).getResults();
+ @Test()
+ public void countSessions()
+ {
+ String query = "select count(*) from session";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
assertEquals(1, result.size());
- assertEquals(true, result.get(0).get("not(2<1)"));
+ assertEquals(30, result.get(0).get("count(*)"));
}
}
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/VirtualHostNodeQueryTest.java
similarity index 64%
copy from broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java
copy to broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/VirtualHostNodeQueryTest.java
index 54a41fa95c..1bd9a53b21 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/VirtualHostNodeQueryTest.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.query.engine.broker;
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertEquals;
import java.util.List;
import java.util.Map;
@@ -30,15 +30,29 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
-public class DomainQueryTest
+/**
+ * Tests designed to verify the virtual host nodes retrieval
+ */
+public class VirtualHostNodeQueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@Test()
- public void selectAllBindings()
+ public void allVirtualhostNodes()
+ {
+ String query = "select * from virtualhostnode";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals(2, result.size());
+ assertEquals("default", result.get(0).get("name"));
+ assertEquals("mock", result.get(1).get("name"));
+ }
+
+ @Test()
+ public void countVirtualhostNodes()
{
- String query = "select * from domain";
+ String query = "select count(*) from virtualhostnode";
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
- assertFalse(result.isEmpty());
+ assertEquals(1, result.size());
+ assertEquals(2, result.get(0).get("count(*)"));
}
}
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/VirtualHostQueryTest.java
similarity index 66%
copy from broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java
copy to broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/VirtualHostQueryTest.java
index 54a41fa95c..ea421dd0d7 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/DomainQueryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/broker/VirtualHostQueryTest.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.query.engine.broker;
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertEquals;
import java.util.List;
import java.util.Map;
@@ -30,15 +30,28 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
-public class DomainQueryTest
+/**
+ * Tests designed to verify the virtual hosts retrieval
+ */
+public class VirtualHostQueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@Test()
- public void selectAllBindings()
+ public void allVirtualhosts()
+ {
+ String query = "select * from virtualhost";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals(1, result.size());
+ assertEquals("default", result.get(0).get("name"));
+ }
+
+ @Test()
+ public void countVirtualhosts()
{
- String query = "select * from domain";
+ String query = "select count(*) from virtualhost";
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
- assertFalse(result.isEmpty());
+ assertEquals(1, result.size());
+ assertEquals(1, result.get(0).get("count(*)"));
}
}
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluatorTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluatorTest.java
index f4b2751287..838afe25e3 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluatorTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/evaluator/QueryEvaluatorTest.java
@@ -30,6 +30,9 @@ import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
import org.apache.qpid.server.query.engine.exception.Errors;
import org.apache.qpid.server.query.engine.exception.QueryValidationException;
+/**
+ * Tests designed to verify the {@link QueryEvaluator} functionality
+ */
public class QueryEvaluatorTest
{
@Test()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/converter/DateTimeConverterTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/converter/DateTimeConverterTest.java
index 153c47793c..b61eacdf71 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/converter/DateTimeConverterTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/converter/DateTimeConverterTest.java
@@ -40,14 +40,16 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.evaluator.EvaluationContext;
import org.apache.qpid.server.query.engine.evaluator.EvaluationContextHolder;
-import org.apache.qpid.server.query.engine.evaluator.settings.DefaultQuerySettings;
import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
+/**
+ * Tests designed to verify the {@link DateTimeConverter} functionality
+ */
public class DateTimeConverterTest
{
- private final DateTimeFormatter _formatter = new DateTimeFormatterBuilder().appendPattern(DefaultQuerySettings.DATE_TIME_PATTERN)
+ private final DateTimeFormatter _formatter = new DateTimeFormatterBuilder().appendPattern("uuuu-MM-dd HH:mm:ss")
.appendFraction(ChronoField.NANO_OF_SECOND, 0, 6, true)
- .toFormatter().withZone(ZoneId.of(DefaultQuerySettings.ZONE_ID)).withResolverStyle(ResolverStyle.STRICT);
+ .toFormatter().withZone(ZoneId.of("UTC")).withResolverStyle(ResolverStyle.STRICT);
@Test()
public void isDateTime()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/accessor/ChainedAccessorTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/accessor/ChainedAccessorTest.java
index 3455b95ee2..3464582254 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/accessor/ChainedAccessorTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/accessor/ChainedAccessorTest.java
@@ -31,6 +31,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the {@link ChainedObjectAccessor} functionality
+ */
public class ChainedAccessorTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/arithmetic/ArithmeticExpressionsTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/arithmetic/ArithmeticExpressionsTest.java
index 918abdd563..0c9c22c56e 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/arithmetic/ArithmeticExpressionsTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/arithmetic/ArithmeticExpressionsTest.java
@@ -35,6 +35,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the arithmetic expressions functionality
+ */
public class ArithmeticExpressionsTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/arithmetic/NumericTypeConversionsTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/arithmetic/NumericTypeConversionsTest.java
index 561340400b..b836bd28c7 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/arithmetic/NumericTypeConversionsTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/arithmetic/NumericTypeConversionsTest.java
@@ -32,6 +32,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the numeric type conversions functionality
+ */
public class NumericTypeConversionsTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/BetweenExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/BetweenExpressionTest.java
index 2d8ef249c7..59b93a1073 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/BetweenExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/BetweenExpressionTest.java
@@ -33,6 +33,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the {@link BetweenExpression} functionality
+ */
public class BetweenExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/EqualExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/EqualExpressionTest.java
index db9bae7c6b..f5234809e2 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/EqualExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/EqualExpressionTest.java
@@ -33,6 +33,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the {@link EqualExpression} functionality
+ */
public class EqualExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/GreaterThanExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/GreaterThanExpressionTest.java
index 6bfe2f3f94..f27d576064 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/GreaterThanExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/GreaterThanExpressionTest.java
@@ -33,6 +33,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the {@link GreaterThanExpression} functionality
+ */
public class GreaterThanExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/GreaterThanOrEqualExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/GreaterThanOrEqualExpressionTest.java
index 95ff61db93..84b2660f57 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/GreaterThanOrEqualExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/GreaterThanOrEqualExpressionTest.java
@@ -33,6 +33,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link GreaterThanOrEqualExpression} functionality
+ */
public class GreaterThanOrEqualExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/InExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/InExpressionTest.java
index a6dda4c7c8..ec0f7d1c82 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/InExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/InExpressionTest.java
@@ -31,6 +31,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link InExpression} functionality
+ */
public class InExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@@ -213,6 +216,40 @@ public class InExpressionTest
assertEquals(false, result.get(0).get("result"));
}
+ @Test()
+ public void notInSelect()
+ {
+ String query = "select 'FLOW_TO_DISK' not in (select distinct overflowPolicy from queue) as result";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals(1, result.size());
+ assertEquals(false, result.get(0).get("result"));
+
+ query = "select 'RING' not in (select distinct overflowPolicy from queue) as result";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(1, result.size());
+ assertEquals(false, result.get(0).get("result"));
+
+ query = "select 'REJECT' not in (select distinct overflowPolicy from queue) as result";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(1, result.size());
+ assertEquals(false, result.get(0).get("result"));
+
+ query = "select 'PRODUCER_FLOW_CONTROL' not in (select distinct overflowPolicy from queue) as result";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(1, result.size());
+ assertEquals(false, result.get(0).get("result"));
+
+ query = "select 'NONE' not in (select distinct overflowPolicy from queue) as result";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(1, result.size());
+ assertEquals(false, result.get(0).get("result"));
+
+ query = "select 'UNKNOWN' not in (select distinct overflowPolicy from queue) as result";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(1, result.size());
+ assertEquals(true, result.get(0).get("result"));
+ }
+
@Test()
public void inList()
{
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/IsNullExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/IsNullExpressionTest.java
index 195d5b08d8..ba45d88b45 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/IsNullExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/IsNullExpressionTest.java
@@ -31,6 +31,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link IsNullExpression} functionality
+ */
public class IsNullExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LessThanExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LessThanExpressionTest.java
index 57e42613b3..a12b0f86ff 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LessThanExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LessThanExpressionTest.java
@@ -33,6 +33,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link LessThanExpression} functionality
+ */
public class LessThanExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LessThanOrEqualExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LessThanOrEqualExpressionTest.java
index 483ee93994..13e6eb9948 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LessThanOrEqualExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LessThanOrEqualExpressionTest.java
@@ -33,6 +33,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link LessThanOrEqualExpression} functionality
+ */
public class LessThanOrEqualExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LikeExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LikeExpressionTest.java
index 5ad27f9887..d7c4e96626 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LikeExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/comparison/LikeExpressionTest.java
@@ -30,6 +30,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link LikeExpression} functionality
+ */
public class LikeExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/conditional/CaseExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/conditional/CaseExpressionTest.java
index 6b4770f639..3c9ee543d0 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/conditional/CaseExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/conditional/CaseExpressionTest.java
@@ -30,6 +30,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link CaseExpression} functionality
+ */
public class CaseExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/AvgExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/AvgExpressionTest.java
index fe8a1719cf..76e246cd0d 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/AvgExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/AvgExpressionTest.java
@@ -33,6 +33,9 @@ import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link AvgExpression} functionality
+ */
public class AvgExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/CountExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/CountExpressionTest.java
index f40372b0ce..813fda0c36 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/CountExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/CountExpressionTest.java
@@ -32,6 +32,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link CountExpression} functionality
+ */
public class CountExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/GroupByTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/GroupByTest.java
index 0b6ce54cb5..fdad5a8849 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/GroupByTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/GroupByTest.java
@@ -33,6 +33,9 @@ import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the public class grouping functionality
+ */
public class GroupByTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/MaxExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/MaxExpressionTest.java
index 8f52551a5f..da4d44aff2 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/MaxExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/MaxExpressionTest.java
@@ -43,6 +43,9 @@ import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.EvaluationContextHolder;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link MaxExpression} functionality
+ */
public class MaxExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/MinExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/MinExpressionTest.java
index f1180872b2..31da39a98b 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/MinExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/MinExpressionTest.java
@@ -43,6 +43,9 @@ import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.EvaluationContextHolder;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link MinExpression} functionality
+ */
public class MinExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/SumExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/SumExpressionTest.java
index bd676ff778..b89efa7269 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/SumExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/aggregation/SumExpressionTest.java
@@ -32,6 +32,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link SumExpression} functionality
+ */
public class SumExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/CurrentTimestampExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/CurrentTimestampExpressionTest.java
index 21e2545546..162ae50cad 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/CurrentTimestampExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/CurrentTimestampExpressionTest.java
@@ -36,6 +36,9 @@ import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
import org.apache.qpid.server.query.engine.parsing.converter.DateTimeConverter;
import org.apache.qpid.server.query.engine.utils.QuerySettingsBuilder;
+/**
+ * Tests designed to verify the public class {@link CurrentTimestampExpression} functionality
+ */
public class CurrentTimestampExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@@ -53,7 +56,7 @@ public class CurrentTimestampExpressionTest
@Test()
public void comparingDatetimes()
{
- QuerySettings querySettings = new QuerySettingsBuilder().zoneId(ZoneId.systemDefault()).build();
+ QuerySettings querySettings = new QuerySettingsBuilder().zoneId(ZoneId.of("UTC")).build();
String query = "select name from virtualhostnode where createdTime < '2001-01-01 12:55:31.000'";
List<Map<String, Object>> result = _queryEvaluator.execute(query, querySettings).getResults();
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateAddExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateAddExpressionTest.java
index b0315cf264..e720fae5d8 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateAddExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateAddExpressionTest.java
@@ -34,6 +34,9 @@ import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the public class {@link DateAddExpression} functionality
+ */
public class DateAddExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateDiffExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateDiffExpressionTest.java
index 21a6c49bb0..c3dd40c833 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateDiffExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateDiffExpressionTest.java
@@ -34,6 +34,9 @@ import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the public class {@link DateDiffExpression} functionality
+ */
public class DateDiffExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateExpressionTest.java
index a848241f61..ac2415c1d7 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/DateExpressionTest.java
@@ -13,6 +13,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
+/**
+ * Tests designed to verify the public class {@link DateExpression} functionality
+ */
public class DateExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/ExtractExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/ExtractExpressionTest.java
index 2b77235376..80269aed8d 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/ExtractExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/datetime/ExtractExpressionTest.java
@@ -34,6 +34,9 @@ import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the public class {@link ExtractExpression} functionality
+ */
public class ExtractExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/nulls/CoalesceExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/nulls/CoalesceExpressionTest.java
index ebf71dc1a9..da655987de 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/nulls/CoalesceExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/nulls/CoalesceExpressionTest.java
@@ -33,6 +33,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the public class {@link CoalesceExpression} functionality
+ */
public class CoalesceExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/AbsExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/AbsExpressionTest.java
index 1c68692d46..8f431e5b92 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/AbsExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/AbsExpressionTest.java
@@ -34,6 +34,9 @@ import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the public class {@link AbsExpression} functionality
+ */
public class AbsExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/RoundExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/RoundExpressionTest.java
index 2322b67d8a..e9efd5726d 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/RoundExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/RoundExpressionTest.java
@@ -34,6 +34,9 @@ import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link RoundExpression} functionality
+ */
public class RoundExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/TruncExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/TruncExpressionTest.java
index 6a1b3e6425..4d4d88eed2 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/TruncExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/numeric/TruncExpressionTest.java
@@ -34,6 +34,9 @@ import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link TruncExpression} functionality
+ */
public class TruncExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/ConcatExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/ConcatExpressionTest.java
index 087f134c10..baee316ca7 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/ConcatExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/ConcatExpressionTest.java
@@ -21,7 +21,6 @@
package org.apache.qpid.server.query.engine.parsing.expression.function.string;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import java.math.BigDecimal;
@@ -39,6 +38,9 @@ import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.parsing.converter.DateTimeConverter;
+/**
+ * Tests designed to verify the public class {@link ConcatExpression} functionality
+ */
public class ConcatExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LeftTrimExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LeftTrimExpressionTest.java
index a7cf7c8695..ba63f9e535 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LeftTrimExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LeftTrimExpressionTest.java
@@ -40,6 +40,9 @@ import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.parsing.converter.DateTimeConverter;
+/**
+ * Tests designed to verify the public class {@link LeftTrimExpression} functionality
+ */
public class LeftTrimExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LengthExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LengthExpressionTest.java
index e3d32a3d92..f11aa01ba8 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LengthExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LengthExpressionTest.java
@@ -21,7 +21,6 @@
package org.apache.qpid.server.query.engine.parsing.expression.function.string;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import java.math.BigDecimal;
@@ -35,6 +34,9 @@ import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the public class {@link LengthExpression} functionality
+ */
public class LengthExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LowerExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LowerExpressionTest.java
index 453cd4fe8e..f8e33b7400 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LowerExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/LowerExpressionTest.java
@@ -40,6 +40,9 @@ import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.parsing.converter.DateTimeConverter;
+/**
+ * Tests designed to verify the public class {@link LowerExpression} functionality
+ */
public class LowerExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/PositionExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/PositionExpressionTest.java
index ec94286571..73e3756b8b 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/PositionExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/PositionExpressionTest.java
@@ -33,6 +33,9 @@ import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the public class {@link PositionExpression} functionality
+ */
public class PositionExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/ReplaceExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/ReplaceExpressionTest.java
index ae7105efef..fc1cd5e9c2 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/ReplaceExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/ReplaceExpressionTest.java
@@ -34,6 +34,9 @@ import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the {@link ReplaceExpression} functionality
+ */
public class ReplaceExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/RightTrimExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/RightTrimExpressionTest.java
index f678ec56ba..c4b9b27299 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/RightTrimExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/RightTrimExpressionTest.java
@@ -40,6 +40,9 @@ import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.parsing.converter.DateTimeConverter;
+/**
+ * Tests designed to verify the {@link RightTrimExpression} functionality
+ */
public class RightTrimExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/SubstringExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/SubstringExpressionTest.java
index e420ff488f..9ccecb0255 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/SubstringExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/SubstringExpressionTest.java
@@ -36,11 +36,13 @@ import java.util.Map;
import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
-import org.apache.qpid.server.query.engine.evaluator.settings.DefaultQuerySettings;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the {@link SubstringExpression} functionality
+ */
public class SubstringExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@@ -352,9 +354,9 @@ public class SubstringExpressionTest
@Test()
public void dateArgument()
{
- DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendPattern(DefaultQuerySettings.DATE_TIME_PATTERN)
+ DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendPattern("uuuu-MM-dd HH:mm:ss")
.appendFraction(ChronoField.NANO_OF_SECOND, 0, 6, true)
- .toFormatter().withZone(ZoneId.of(DefaultQuerySettings.ZONE_ID)).withResolverStyle(ResolverStyle.STRICT);
+ .toFormatter().withZone(ZoneId.of("UTC")).withResolverStyle(ResolverStyle.STRICT);
String query = "select substring(lastUpdatedTime, 1) as result from queue where name='QUEUE_0'";
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/TrimExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/TrimExpressionTest.java
index dcdac7e867..5bc0548eac 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/TrimExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/TrimExpressionTest.java
@@ -40,6 +40,9 @@ import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.parsing.converter.DateTimeConverter;
+/**
+ * Tests designed to verify the {@link TrimExpression} functionality
+ */
public class TrimExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/UpperExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/UpperExpressionTest.java
index 04af1cfcf4..de325be07e 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/UpperExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/function/string/UpperExpressionTest.java
@@ -40,6 +40,9 @@ import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.parsing.converter.DateTimeConverter;
+/**
+ * Tests designed to verify the {@link UpperExpression} functionality
+ */
public class UpperExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/literal/LiteralExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/literal/LiteralExpressionTest.java
index b0c31794c2..fd588a28cf 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/literal/LiteralExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/literal/LiteralExpressionTest.java
@@ -32,6 +32,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the literal expressions functionality
+ */
public class LiteralExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/AndExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/AndExpressionTest.java
index 37a16006ab..02d0c07df5 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/AndExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/AndExpressionTest.java
@@ -30,6 +30,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the {@link AndExpression} functionality
+ */
public class AndExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/NotExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/NotExpressionTest.java
index f57a8df2be..968a297509 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/NotExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/NotExpressionTest.java
@@ -30,6 +30,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the {@link NotExpression} functionality
+ */
public class NotExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/OrExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/OrExpressionTest.java
index d72a2eedab..03e9bbf1a1 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/OrExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/logic/OrExpressionTest.java
@@ -30,6 +30,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the {@link OrExpression} functionality
+ */
public class OrExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/IntersectExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/IntersectExpressionTest.java
index baddb93fd3..b158fb5bc0 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/IntersectExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/IntersectExpressionTest.java
@@ -32,6 +32,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the {@link IntersectExpression} functionality
+ */
public class IntersectExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/MinusExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/MinusExpressionTest.java
index a0ac9a0f23..b68b3e3361 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/MinusExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/MinusExpressionTest.java
@@ -32,6 +32,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the {@link MinusExpression} functionality
+ */
public class MinusExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/UnionExpressionTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/UnionExpressionTest.java
index 08055b6c07..d4577cb028 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/UnionExpressionTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/expression/set/UnionExpressionTest.java
@@ -32,6 +32,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the {@link UnionExpression} functionality
+ */
public class UnionExpressionTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/AccessorExpressionFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/AccessorExpressionFactoryTest.java
index 420004a18c..5b33e1e6ad 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/AccessorExpressionFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/AccessorExpressionFactoryTest.java
@@ -39,6 +39,9 @@ import org.apache.qpid.server.query.engine.parsing.expression.accessor.Delegatin
import org.apache.qpid.server.query.engine.parsing.expression.accessor.DelegatingObjectAccessor;
import org.apache.qpid.server.query.engine.parsing.expression.literal.ConstantExpression;
+/**
+ * Tests designed to verify the {@link AccessorExpressionFactory} functionality
+ */
public class AccessorExpressionFactoryTest
{
@Before()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ArithmeticExpressionFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ArithmeticExpressionFactoryTest.java
index 86d1d87f4e..9b5a8c5c49 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ArithmeticExpressionFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ArithmeticExpressionFactoryTest.java
@@ -36,6 +36,9 @@ import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.parsing.expression.ExpressionNode;
import org.apache.qpid.server.query.engine.parsing.expression.literal.ConstantExpression;
+/**
+ * Tests designed to verify the {@link ArithmeticExpressionFactory} functionality
+ */
public class ArithmeticExpressionFactoryTest
{
@Before()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/CollectorFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/CollectorFactoryTest.java
index d615f44932..a65ee9bd7c 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/CollectorFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/CollectorFactoryTest.java
@@ -40,6 +40,9 @@ import org.apache.qpid.server.query.engine.exception.Errors;
import org.apache.qpid.server.query.engine.parsing.collector.CollectorType;
import org.apache.qpid.server.query.engine.parsing.expression.accessor.MapObjectAccessor;
+/**
+ * Tests designed to verify the {@link CollectorFactory} functionality
+ */
public class CollectorFactoryTest
{
private final List<Map<String, Object>> _entities = Arrays.asList(
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ComparisonExpressionFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ComparisonExpressionFactoryTest.java
index 7fde22e926..4c7d5e5697 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ComparisonExpressionFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ComparisonExpressionFactoryTest.java
@@ -48,6 +48,9 @@ import org.apache.qpid.server.query.engine.parsing.expression.literal.ConstantEx
import org.apache.qpid.server.query.engine.parsing.expression.logic.NotExpression;
import org.apache.qpid.server.query.engine.parsing.query.SelectExpression;
+/**
+ * Tests designed to verify the {@link ComparisonExpressionFactory} functionality
+ */
public class ComparisonExpressionFactoryTest
{
@Before()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ConditionalExpressionFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ConditionalExpressionFactoryTest.java
index e5f9cee373..fc932ccb7d 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ConditionalExpressionFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ConditionalExpressionFactoryTest.java
@@ -38,6 +38,9 @@ import org.apache.qpid.server.query.engine.exception.Errors;
import org.apache.qpid.server.query.engine.exception.QueryValidationException;
import org.apache.qpid.server.query.engine.parsing.expression.literal.ConstantExpression;
+/**
+ * Tests designed to verify the {@link ConditionalExpressionFactory} functionality
+ */
public class ConditionalExpressionFactoryTest
{
@Before()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/FunctionExpressionFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/FunctionExpressionFactoryTest.java
index a7d1a12d18..91f4743ae1 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/FunctionExpressionFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/FunctionExpressionFactoryTest.java
@@ -62,6 +62,9 @@ import org.apache.qpid.server.query.engine.parsing.expression.function.string.Tr
import org.apache.qpid.server.query.engine.parsing.expression.function.string.UpperExpression;
import org.apache.qpid.server.query.engine.parsing.expression.literal.ConstantExpression;
+/**
+ * Tests designed to verify the {@link FunctionExpressionFactory} functionality
+ */
public class FunctionExpressionFactoryTest
{
@Before()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/LiteralExpressionFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/LiteralExpressionFactoryTest.java
index e6dca342d5..0a4b59c706 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/LiteralExpressionFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/LiteralExpressionFactoryTest.java
@@ -37,6 +37,9 @@ import org.apache.qpid.server.query.engine.parsing.expression.literal.NumberLite
import org.apache.qpid.server.query.engine.parsing.expression.literal.StringLiteralExpression;
import org.apache.qpid.server.query.engine.parsing.expression.literal.TrueLiteralExpression;
+/**
+ * Tests designed to verify the {@link LiteralExpressionFactory} functionality
+ */
public class LiteralExpressionFactoryTest
{
@Before()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/LogicExpressionFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/LogicExpressionFactoryTest.java
index b0e663697e..445dfb2526 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/LogicExpressionFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/LogicExpressionFactoryTest.java
@@ -39,6 +39,9 @@ import org.apache.qpid.server.query.engine.parsing.expression.logic.AndExpressio
import org.apache.qpid.server.query.engine.parsing.expression.logic.NotExpression;
import org.apache.qpid.server.query.engine.parsing.expression.logic.OrExpression;
+/**
+ * Tests designed to verify the {@link LogicExpressionFactory} functionality
+ */
public class LogicExpressionFactoryTest
{
@Before()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/NumberExpressionFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/NumberExpressionFactoryTest.java
index 26d9721171..4ab808d73b 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/NumberExpressionFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/NumberExpressionFactoryTest.java
@@ -31,6 +31,9 @@ import org.apache.qpid.server.query.engine.evaluator.EvaluationContext;
import org.apache.qpid.server.query.engine.evaluator.EvaluationContextHolder;
import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
+/**
+ * Tests designed to verify the {@link NumberExpressionFactory} functionality
+ */
public class NumberExpressionFactoryTest
{
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ProjectionExpressionFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ProjectionExpressionFactoryTest.java
index 7db354d6b5..e1038ff628 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ProjectionExpressionFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/ProjectionExpressionFactoryTest.java
@@ -35,6 +35,9 @@ import org.apache.qpid.server.query.engine.exception.Errors;
import org.apache.qpid.server.query.engine.exception.QueryValidationException;
import org.apache.qpid.server.query.engine.parsing.expression.literal.ConstantExpression;
+/**
+ * Tests designed to verify the {@link ProjectionExpressionFactory} functionality
+ */
public class ProjectionExpressionFactoryTest
{
@Before()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/SetExpressionFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/SetExpressionFactoryTest.java
index 307e31f40b..724fc15ab5 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/SetExpressionFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/SetExpressionFactoryTest.java
@@ -38,6 +38,9 @@ import org.apache.qpid.server.query.engine.parsing.expression.set.MinusExpressio
import org.apache.qpid.server.query.engine.parsing.expression.set.UnionExpression;
import org.apache.qpid.server.query.engine.parsing.query.SelectExpression;
+/**
+ * Tests designed to verify the {@link SetExpressionFactory} functionality
+ */
public class SetExpressionFactoryTest
{
@Before()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/UnaryExpressionFactoryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/UnaryExpressionFactoryTest.java
index 2258e96bf6..e471cd143f 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/UnaryExpressionFactoryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/factory/UnaryExpressionFactoryTest.java
@@ -37,6 +37,9 @@ import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.parsing.expression.ExpressionNode;
import org.apache.qpid.server.query.engine.parsing.expression.literal.NullLiteralExpression;
+/**
+ * Tests designed to verify the {@link UnaryExpressionFactory} functionality
+ */
public class UnaryExpressionFactoryTest
{
@Before()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/AliasTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/AliasTest.java
index eebf7b1a08..086eac36d2 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/AliasTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/AliasTest.java
@@ -30,6 +30,9 @@ import org.junit.Test;
import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
+/**
+ * Tests designed to verify the aliases functionality
+ */
public class AliasTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
@@ -205,7 +208,7 @@ public class AliasTest
{
String query = "select e.name from exchange e";
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
- assertEquals(14, result.size());
+ assertEquals(10, result.size());
assertEquals("e.name", result.get(0).keySet().iterator().next());
}
@@ -230,6 +233,77 @@ public class AliasTest
assertEquals("current_timestamp()", result.get(0).keySet().iterator().next());
}
+ @Test()
+ public void date()
+ {
+ String query = "select date(validUntil) from certificate";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals(10, result.size());
+ assertEquals("date(validUntil)", result.get(0).keySet().iterator().next());
+ }
+
+ @Test()
+ public void dateadd()
+ {
+ String query = "select dateadd(day, -30, validUntil) from certificate";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals(10, result.size());
+ assertEquals("dateadd(day, -30, validUntil)", result.get(0).keySet().iterator().next());
+ }
+
+ @Test()
+ public void datediff()
+ {
+ String query = "select datediff(day, current_timestamp(), validUntil) from certificate";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals(10, result.size());
+ assertEquals("datediff(day, current_timestamp(), validUntil)", result.get(0).keySet().iterator().next());
+ }
+
+ @Test()
+ public void extract()
+ {
+ String query = "select extract(year from validUntil) from certificate";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals(10, result.size());
+ assertEquals("extract(year from validUntil)", result.get(0).keySet().iterator().next());
+
+ query = "select extract(month from validUntil) from certificate";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(10, result.size());
+ assertEquals("extract(month from validUntil)", result.get(0).keySet().iterator().next());
+
+ query = "select extract(week from validUntil) from certificate";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(10, result.size());
+ assertEquals("extract(week from validUntil)", result.get(0).keySet().iterator().next());
+
+ query = "select extract(day from validUntil) from certificate";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(10, result.size());
+ assertEquals("extract(day from validUntil)", result.get(0).keySet().iterator().next());
+
+ query = "select extract(hour from validUntil) from certificate";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(10, result.size());
+ assertEquals("extract(hour from validUntil)", result.get(0).keySet().iterator().next());
+
+ query = "select extract(minute from validUntil) from certificate";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(10, result.size());
+ assertEquals("extract(minute from validUntil)", result.get(0).keySet().iterator().next());
+
+ query = "select extract(second from validUntil) from certificate";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(10, result.size());
+ assertEquals("extract(second from validUntil)", result.get(0).keySet().iterator().next());
+
+ query = "select extract(millisecond from validUntil) from certificate";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals(10, result.size());
+ assertEquals("extract(millisecond from validUntil)", result.get(0).keySet().iterator().next());
+ }
+
@Test()
public void in()
{
@@ -242,6 +316,34 @@ public class AliasTest
assertEquals("1 not in ('1','test',1)", result.get(0).keySet().iterator().next());
}
+ @Test()
+ public void len()
+ {
+ String query = "select len(name) from queue";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals("len(name)", result.get(0).keySet().iterator().next());
+
+ query = "select length(name) from queue";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals("length(name)", result.get(0).keySet().iterator().next());
+ }
+
+ @Test()
+ public void lower()
+ {
+ String query = "select lower(name) from queue";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals("lower(name)", result.get(0).keySet().iterator().next());
+ }
+
+ @Test()
+ public void ltrim()
+ {
+ String query = "select ltrim(name) from queue";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals("ltrim(name)", result.get(0).keySet().iterator().next());
+ }
+
@Test()
public void max()
{
@@ -258,6 +360,42 @@ public class AliasTest
assertEquals("min(queueDepthMessages)", result.get(0).keySet().iterator().next());
}
+ @Test()
+ public void position()
+ {
+ String query = "select position('_' in name) from queue";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals("position('_' in name)", result.get(0).keySet().iterator().next());
+
+ query = "select position('_' in name, 1) from queue";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals("position('_' in name,1)", result.get(0).keySet().iterator().next());
+
+ query = "select position('_', name) from queue";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals("position('_',name)", result.get(0).keySet().iterator().next());
+
+ query = "select position('_', name, 1) from queue";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals("position('_',name,1)", result.get(0).keySet().iterator().next());
+ }
+
+ @Test()
+ public void replace()
+ {
+ String query = "select replace(name, '_', '') from queue";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals("replace(name, '_', '')", result.get(0).keySet().iterator().next());
+ }
+
+ @Test()
+ public void rtrim()
+ {
+ String query = "select rtrim(name) from queue";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals("rtrim(name)", result.get(0).keySet().iterator().next());
+ }
+
@Test()
public void subquery()
{
@@ -266,6 +404,18 @@ public class AliasTest
assertEquals("select count(*) from queue where queueDepthMessages>0.6*maximumQueueDepthMessages", result.get(0).keySet().iterator().next());
}
+ @Test()
+ public void substring()
+ {
+ String query = "select substring(name, 2) from queue";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals("substring(name, 2)", result.get(0).keySet().iterator().next());
+
+ query = "select substring(name, 2, 5) from queue";
+ result = _queryEvaluator.execute(query).getResults();
+ assertEquals("substring(name, 2, 5)", result.get(0).keySet().iterator().next());
+ }
+
@Test()
public void sum()
{
@@ -273,4 +423,20 @@ public class AliasTest
List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
assertEquals("sum(queueDepthMessages)", result.get(0).keySet().iterator().next());
}
+
+ @Test()
+ public void trim()
+ {
+ String query = "select trim(name) from queue";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals("trim(name)", result.get(0).keySet().iterator().next());
+ }
+
+ @Test()
+ public void upper()
+ {
+ String query = "select upper(name) from queue";
+ List<Map<String, Object>> result = _queryEvaluator.execute(query).getResults();
+ assertEquals("upper(name)", result.get(0).keySet().iterator().next());
+ }
}
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/HavingTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/HavingTest.java
index 01916cb916..3408d3088f 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/HavingTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/HavingTest.java
@@ -32,6 +32,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryValidationException;
+/**
+ * Tests designed to verify the {@link HavingExpression} functionality
+ */
@SuppressWarnings("unchecked")
public class HavingTest
{
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/OrderByTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/OrderByTest.java
index 4ed3d70168..40114147e1 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/OrderByTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/OrderByTest.java
@@ -38,6 +38,9 @@ import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the ordering functionality
+ */
public class OrderByTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QuerySettingsTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QuerySettingsTest.java
index 0b91818fc1..5d69c260b6 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QuerySettingsTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QuerySettingsTest.java
@@ -48,6 +48,9 @@ import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.utils.QuerySettingsBuilder;
+/**
+ * Tests designed to verify the {@link QuerySettings} functionality
+ */
public class QuerySettingsTest
{
private final Broker<?> _broker = TestBroker.createBroker();
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QueryValidatorTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QueryValidatorTest.java
index aa50736b77..daa9b36d51 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QueryValidatorTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/QueryValidatorTest.java
@@ -30,6 +30,9 @@ import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
import org.apache.qpid.server.query.engine.exception.QueryValidationException;
+/**
+ * Tests designed to verify the query validation functionality
+ */
public class QueryValidatorTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/SubqueryTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/SubqueryTest.java
index 04c2a40192..d64fe96d6f 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/SubqueryTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/SubqueryTest.java
@@ -33,6 +33,9 @@ import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryEvaluationException;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the subqueries functionality
+ */
public class SubqueryTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/WithTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/WithTest.java
index 2273aa4f58..a456ebe86f 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/WithTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/parsing/query/WithTest.java
@@ -32,6 +32,9 @@ import org.apache.qpid.server.query.engine.TestBroker;
import org.apache.qpid.server.query.engine.evaluator.QueryEvaluator;
import org.apache.qpid.server.query.engine.exception.QueryParsingException;
+/**
+ * Tests designed to verify the WITH clause functionality
+ */
public class WithTest
{
private final QueryEvaluator _queryEvaluator = new QueryEvaluator(TestBroker.createBroker());
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/utils/QuerySettingsBuilder.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/utils/QuerySettingsBuilder.java
index e2c2d4d819..9c55715bdc 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/utils/QuerySettingsBuilder.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/utils/QuerySettingsBuilder.java
@@ -26,6 +26,9 @@ import java.time.ZoneId;
import org.apache.qpid.server.query.engine.evaluator.DateFormat;
import org.apache.qpid.server.query.engine.evaluator.settings.QuerySettings;
+/**
+ * Helper class for building {@link QuerySettings} instances
+ */
public class QuerySettingsBuilder
{
private DateFormat _dateTimeFormat;
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/FunctionParameterTypePredicateTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/FunctionParameterTypePredicateTest.java
index 420e474653..732f3fcd2d 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/FunctionParameterTypePredicateTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/FunctionParameterTypePredicateTest.java
@@ -1,3 +1,23 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
package org.apache.qpid.server.query.engine.validation;
import static org.junit.Assert.assertEquals;
@@ -18,6 +38,9 @@ import org.apache.qpid.server.model.OverflowPolicy;
import org.apache.qpid.server.query.engine.exception.Errors;
import org.apache.qpid.server.query.engine.exception.QueryValidationException;
+/**
+ * Tests designed to verify the {@link FunctionParameterTypePredicate} functionality
+ */
public class FunctionParameterTypePredicateTest
{
@Test()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/FunctionParametersValidatorTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/FunctionParametersValidatorTest.java
index 2ad552c018..454d0af1b8 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/FunctionParametersValidatorTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/FunctionParametersValidatorTest.java
@@ -1,3 +1,23 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
package org.apache.qpid.server.query.engine.validation;
import static org.junit.Assert.assertEquals;
@@ -19,6 +39,9 @@ import org.apache.qpid.server.query.engine.parsing.expression.function.AbstractF
import org.apache.qpid.server.query.engine.parsing.expression.literal.ConstantExpression;
import org.apache.qpid.server.query.engine.parsing.factory.FunctionExpressionFactory;
+/**
+ * Tests designed to verify the {@link FunctionParametersValidator} functionality
+ */
public class FunctionParametersValidatorTest
{
@Before()
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/QueryExpressionValidatorTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/QueryExpressionValidatorTest.java
index ad44be9f18..37bf3a96c3 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/QueryExpressionValidatorTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/QueryExpressionValidatorTest.java
@@ -1,3 +1,23 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
package org.apache.qpid.server.query.engine.validation;
import static org.junit.Assert.assertEquals;
@@ -15,6 +35,9 @@ import org.apache.qpid.server.query.engine.exception.Errors;
import org.apache.qpid.server.query.engine.exception.QueryValidationException;
import org.apache.qpid.server.query.engine.parsing.query.QueryExpression;
+/**
+ * Tests designed to verify the {@link QueryExpressionValidator} functionality
+ */
public class QueryExpressionValidatorTest
{
private final QueryExpressionValidator _validator = new QueryExpressionValidator();
diff --git a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/SelectExpressionValidatorTest.java b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/SelectExpressionValidatorTest.java
index fb68001878..30e6bc43f3 100644
--- a/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/SelectExpressionValidatorTest.java
+++ b/broker-plugins/broker-query-engine/src/test/java/org/apache/qpid/server/query/engine/validation/SelectExpressionValidatorTest.java
@@ -1,3 +1,23 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
package org.apache.qpid.server.query.engine.validation;
import static org.junit.Assert.assertEquals;
@@ -17,6 +37,9 @@ import org.apache.qpid.server.query.engine.parsing.ExpressionParser;
import org.apache.qpid.server.query.engine.parsing.query.QueryExpression;
import org.apache.qpid.server.query.engine.parsing.query.SelectExpression;
+/**
+ * Tests designed to verify the {@link SelectExpressionValidator} functionality
+ */
public class SelectExpressionValidatorTest
{
private final SelectExpressionValidator _validator = new SelectExpressionValidator();
diff --git a/doc/java-broker/src/docbkx/management/channels/Java-Broker-Management-Channel-REST-Query-Engine.xml b/doc/java-broker/src/docbkx/management/channels/Java-Broker-Management-Channel-REST-Query-Engine.xml
index 4c00341a89..d346ddc8cb 100644
--- a/doc/java-broker/src/docbkx/management/channels/Java-Broker-Management-Channel-REST-Query-Engine.xml
+++ b/doc/java-broker/src/docbkx/management/channels/Java-Broker-Management-Channel-REST-Query-Engine.xml
@@ -3405,6 +3405,115 @@
</programlisting>
</section>
+ <section xml:id="Java-Broker-Management-Channel-REST-Query-Engine-Subqueries">
+ <title>Subqueries</title>
+ <para>
+ When executing subquery parent query domain mat be passed into the subquery using alias.
+ E.g. this query
+ </para>
+ <programlisting language="sql">
+ SELECT
+ id,
+ name,
+ (SELECT name FROM connection WHERE SUBSTRING(name, 1, POSITION(']' IN name)) = '[' + SUBSTRING(c.name, 1, POSITION('|' IN c.name) - 1) + ']') as connection,
+ (SELECT id FROM connection WHERE SUBSTRING(name, 1, POSITION(']' IN name)) = '[' + SUBSTRING(c.name, 1, POSITION('|' IN c.name) - 1) + ']') as connectionId,
+ (SELECT name FROM session WHERE id = c.session.id) as session
+ FROM consumer c
+ </programlisting>
+ <para>
+ returns following result:
+ </para>
+ <programlisting language="javascript">
+ {
+ "results": [
+ {
+ "id": "7a4d7a86-652b-4112-b535-61272b936b57",
+ "name": "1|1|qpid-jms:receiver:ID:6bd18833-3c96-4936-b9ee-9dec5f408b5c:1:1:1:broadcast.amqp_user1.public",
+ "connection": "[1] 127.0.0.1:39134",
+ "connectionId": "afbd0480-43b1-4b39-bc00-260c077095f3",
+ "session": "1"
+ }
+ ],
+ "total": 1
+ }
+ </programlisting>
+ <para>
+ Query
+ </para>
+ <programlisting language="sql">
+ SELECT
+ name,
+ destination,
+ (SELECT id FROM queue WHERE name = b.destination) AS destinationId,
+ exchange,
+ (SELECT id FROM exchange WHERE name = b.exchange) AS exchangeId
+ FROM binding b
+ WHERE name = 'broadcast.amqp_user1.xxx.#'
+ </programlisting>
+ <para>
+ returns following result:
+ </para>
+ <programlisting language="javascript">
+ {
+ "results": [
+ {
+ "name": "broadcast.amqp_user1.xxx.#",
+ "destination": "broadcast.amqp_user1.xxx",
+ "destinationId": "d5ce9e78-8558-40db-8690-15abf69ab255",
+ "exchange": "broadcast",
+ "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158"
+ },
+ {
+ "name": "broadcast.amqp_user1.xxx.#",
+ "destination": "broadcast.amqp_user2.xxx",
+ "destinationId": "88357d15-a590-4ccf-aee8-2d5cda77752e",
+ "exchange": "broadcast",
+ "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158"
+ },
+ {
+ "name": "broadcast.amqp_user1.xxx.#",
+ "destination": "broadcast.amqp_user3.xxx",
+ "destinationId": "c8200f89-2587-4b0c-a8f6-120cda975d03",
+ "exchange": "broadcast",
+ "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158"
+ }
+ ],
+ "total": 3
+ }
+ </programlisting>
+ <para>
+ Query
+ </para>
+ <programlisting language="sql">
+ SELECT
+ alias,
+ (SELECT COUNT(id) FROM queue WHERE POSITION(UPPER(c.alias) IN name) > 0) AS queueCount
+ FROM certificate c
+ </programlisting>
+ <para>
+ returns following result:
+ </para>
+ <programlisting language="javascript">
+ {
+ "results": [
+ {
+ "alias": "xxx",
+ "queueCount": 5
+ },
+ {
+ "alias": "xxy",
+ "queueCount": 5
+ },
+ {
+ "alias": "xxz",
+ "queueCount": 7
+ }
+ ],
+ "total": 3
+ }
+ </programlisting>
+ </section>
+
<section xml:id="Java-Broker-Management-Channel-REST-Query-Engine-Performance-Tips">
<title>Performance Tips</title>
<para>
diff --git a/pom.xml b/pom.xml
index 3ac6ad35f0..8590c80c67 100644
--- a/pom.xml
+++ b/pom.xml
@@ -142,6 +142,8 @@
<exec-maven-plugin-version>1.6.0</exec-maven-plugin-version>
<javacc-maven-plugin-version>2.6</javacc-maven-plugin-version>
+ <ph-javacc-maven-plugin-version>4.1.5</ph-javacc-maven-plugin-version>
+ <maven-enforcer-plugin-version>3.0.0-M2</maven-enforcer-plugin-version>
<maven-rar-plugin-version>2.4</maven-rar-plugin-version>
<license-maven-plugin-version>1.8</license-maven-plugin-version>
<maven-jxr-plugin-version>3.0.0</maven-jxr-plugin-version>
@@ -939,7 +941,17 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
- <version>3.0.0-M2</version>
+ <version>${maven-enforcer-plugin-version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>javacc-maven-plugin</artifactId>
+ <version>${javacc-maven-plugin-version}</version>
+ </plugin>
+ <plugin>
+ <groupId>com.helger.maven</groupId>
+ <artifactId>ph-javacc-maven-plugin</artifactId>
+ <version>${ph-javacc-maven-plugin-version}</version>
</plugin>
</plugins>
</pluginManagement>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org