blob: 20cfb4ad452a5de4b29bd1e82eff8df662361aa3 [file] [log] [blame]
/*
*
* 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.
*
*/
var jsonObject = {
_tests:[]
};
for (var i=0; i<2; i++)
{
var deliveryMode = i+1;
var durable = (deliveryMode == 2);
var suffix = durable ? "PERSISTENT" : "NON-PERSISTENT";
var queueName = "direct://amq.direct//queue-selectors-overlapping-" + suffix + "?durable='" + durable + "'";
var consumerNumbers = [2, 4, 8, 16, 32];
var consumerAcknowledgeMode = 1;
for (var j=0; j<consumerNumbers.length; j++)
{
var consumerNumber = consumerNumbers[j];
var testName = "Queues with selectors: " +consumerNumber + " consumers - 1 producer - 50% overlapping - " + suffix;
var test = {
"_name": testName,
"_queues":[
{
"_name": queueName,
"_durable": durable,
"_attributes":
{
"x-qpid-capacity": 10485760,
"x-qpid-flow-resume-capacity": 8388608
}
}
],
"_clients":[
{
"_name": "producingClient",
"_messageProviders": [
{
"_name": "messageProvider",
"_messageProperties": {
"id": {
"@def": "range",
"_lower": 1,
"_upper": consumerNumber * 2,
"_type": "int"
}
}
}
],
"_connections":[
{
"_name": "connection1",
"_factory": "connectionfactory",
"_sessions": [
{
"_sessionName": "session1",
"_acknowledgeMode": 1,
"_producers": [
{
"_name": "Producer1",
"_destinationName": queueName,
"_maximumDuration": 60000,
"_deliveryMode": deliveryMode,
"_messageSize": 1024,
"_messageProviderName": "messageProvider"
}
]
}
]
}
]
},
{
"_name": "consumingClient",
"_connections":[]
}
]
};
var selectorBase = "";
var maxId = consumerNumber * 2;
// odd IDs overlaps in each selector expression
for (var m = 1; m <= maxId; m+=2)
{
selectorBase += " or id=" + m;
}
for(var n = 0, id = 0 ; n< consumerNumber; n++)
{
// even IDs are unique per each selector expression
id = id + 2;
selector = "id=" + id + selectorBase;
var consumerConnection = {
"_name": "connection" + n,
"_factory": "connectionfactory",
"_sessions": [
{
"_sessionName": "session" + n,
"_acknowledgeMode": consumerAcknowledgeMode,
"_consumers": [
{
"_name": "Consumer" + n,
"_destinationName": queueName,
"_maximumDuration": 60000,
"_selector": selector
}
]
}
]
};
test._clients[1]._connections.push(consumerConnection);
}
jsonObject._tests.push(test);
}
}