diff options
| author | Alex Rudyy <orudyy@apache.org> | 2015-04-15 09:47:28 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2015-04-15 09:47:28 +0000 |
| commit | 0a0baee45ebcff44635907d457c4ff6810b09c87 (patch) | |
| tree | 8bfb0f9eddbc23cff88af69be80ab3ce7d47011c /qpid/java/perftests/src | |
| parent | 54aa3d7070da16ce55c28ccad3f7d0871479e461 (diff) | |
| download | qpid-python-0a0baee45ebcff44635907d457c4ff6810b09c87.tar.gz | |
QPID-6481: Move java source tree to top level
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1673693 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/perftests/src')
161 files changed, 0 insertions, 17594 deletions
diff --git a/qpid/java/perftests/src/main/assembly/LICENSE b/qpid/java/perftests/src/main/assembly/LICENSE deleted file mode 100644 index 3754e75507..0000000000 --- a/qpid/java/perftests/src/main/assembly/LICENSE +++ /dev/null @@ -1,233 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed 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. - - - -############################################### -# Third Party Dependency Licensing Information: -############################################### - -This product bundles the slf4j-api and slf4j-log4j jars which are under -the MIT licence: - -Copyright (c) 2004-2013 QOS.ch - All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/qpid/java/perftests/src/main/assembly/NOTICE b/qpid/java/perftests/src/main/assembly/NOTICE deleted file mode 100644 index 5166f1de8d..0000000000 --- a/qpid/java/perftests/src/main/assembly/NOTICE +++ /dev/null @@ -1,48 +0,0 @@ -Qpid Java Perftests -Copyright 2006-2014 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -############################################### - -Apache Derby -Copyright 2004-2011 The Apache Software Foundation - -Portions of Derby were originally developed by -International Business Machines Corporation and are -licensed to the Apache Software Foundation under the -"Software Grant and Corporate Contribution License Agreement", -informally known as the "Derby CLA". -The following copyright notice(s) were affixed to portions of the code -with which this file is now or was at one time distributed -and are placed here unaltered. - -(C) Copyright 1997,2004 International Business Machines Corporation. All rights reserved. - -(C) Copyright IBM Corp. 2003. - -############################################### - -Commons Logging -Copyright 2001-2007 The Apache Software Foundation - -############################################### - -Apache Commons BeanUtils -Copyright 2000-2010 The Apache Software Foundation - -############################################### - -Apache Commons Collections -Copyright 2001-2008 The Apache Software Foundation - -############################################### - -Apache Commons Lang -Copyright 2001-2011 The Apache Software Foundation - -############################################### - -Apache log4j -Copyright 2007 The Apache Software Foundation diff --git a/qpid/java/perftests/src/main/assembly/dependency-verification/DEPENDENCIES_REFERENCE b/qpid/java/perftests/src/main/assembly/dependency-verification/DEPENDENCIES_REFERENCE deleted file mode 100644 index 2fd03b4e3b..0000000000 --- a/qpid/java/perftests/src/main/assembly/dependency-verification/DEPENDENCIES_REFERENCE +++ /dev/null @@ -1,60 +0,0 @@ -# -# 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. -# - -#// ------------------------------------------------------------------ -# TRIMMED 3RD PARTY DEPENDENCY INFORMATION FOR MODIFICATION CHECKS -#// ------------------------------------------------------------------ - - - -From: 'Apache Software Foundation' (http://db.apache.org/) - - Apache Derby Database Engine and Embedded JDBC Driver (http://db.apache.org/derby/derby/) org.apache.derby:derby:jar:10.8.2.2 - License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt) - -From: 'Apache Software Foundation' (http://www.apache.org) - - Apache Log4j (http://logging.apache.org/log4j/1.2/) log4j:log4j:bundle:1.2.16 - License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) - -From: 'Google, Inc.' (http://www.google.com) - - Gson (http://code.google.com/p/google-gson/) com.google.code.gson:gson:jar:2.0 - License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) - -From: 'QOS.ch' (http://www.qos.ch) - - SLF4J API Module (http://www.slf4j.org) org.slf4j:slf4j-api:jar:1.6.4 - License: MIT License (http://www.opensource.org/licenses/mit-license.php) - - SLF4J LOG4J-12 Binding (http://www.slf4j.org) org.slf4j:slf4j-log4j12:jar:1.6.4 - License: MIT License (http://www.opensource.org/licenses/mit-license.php) - -From: 'The Apache Software Foundation' (http://www.apache.org/) - - Commons BeanUtils Core (http://commons.apache.org/beanutils/) commons-beanutils:commons-beanutils-core:jar:1.8.3 - License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) - - Commons Collections (http://commons.apache.org/collections/) commons-collections:commons-collections:jar:3.2.1 - License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) - - Commons Lang (http://commons.apache.org/lang/) commons-lang:commons-lang:jar:2.6 - License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) - - Commons Logging (http://commons.apache.org/logging) commons-logging:commons-logging:jar:1.1.1 - License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) - - Qpid AMQP 0-x JMS Client (http://qpid.apache.org/qpid-java-build/qpid-client) org.apache.qpid:qpid-client:jar - License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) - - Qpid Common (http://qpid.apache.org/qpid-java-build/management/qpid-common) org.apache.qpid:qpid-common:jar - License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) - - - - diff --git a/qpid/java/perftests/src/main/assembly/qpid-perftests-bin.xml b/qpid/java/perftests/src/main/assembly/qpid-perftests-bin.xml deleted file mode 100644 index 7b4e5a44d9..0000000000 --- a/qpid/java/perftests/src/main/assembly/qpid-perftests-bin.xml +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version='1.0'?> -<!-- - - 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. - ---> -<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> - <id>bin</id> - <formats> - <format>tar.gz</format> - </formats> - <baseDirectory>qpid-perftests/${project.version}</baseDirectory> - <fileSets> - <fileSet> - <directory>${project.basedir}</directory> - <outputDirectory>/</outputDirectory> - <includes> - <include>etc/</include> - </includes> - </fileSet> - <fileSet> - <directory>${basedir}/src/main/assembly/</directory> - <outputDirectory>/</outputDirectory> - <includes> - <include>README.txt</include> - <include>NOTICE</include> - <include>LICENSE</include> - </includes> - <fileMode>0644</fileMode> - <directoryMode>0755</directoryMode> - </fileSet> - </fileSets> - <dependencySets> - <dependencySet> - <outputDirectory>/lib</outputDirectory> - <useProjectArtifact>true</useProjectArtifact> - <excludes> - <!-- Exclude client artifacts, user provides appropriate version --> - <exclude>org.apache.qpid:qpid-client</exclude> - <exclude>org.apache.qpid:qpid-common</exclude> - </excludes> - </dependencySet> - <dependencySet> - <outputDirectory>/lib</outputDirectory> - <useProjectArtifact>false</useProjectArtifact> - <scope>provided</scope> - <includes> - <include>org.apache.geronimo.specs:geronimo-jms_1.1_spec</include> - </includes> - </dependencySet> - </dependencySets> -</assembly> - diff --git a/qpid/java/perftests/src/main/java/json2.js b/qpid/java/perftests/src/main/java/json2.js deleted file mode 100644 index 2dbf60d398..0000000000 --- a/qpid/java/perftests/src/main/java/json2.js +++ /dev/null @@ -1,487 +0,0 @@ -/* - http://www.JSON.org/json2.js - 2011-10-19 - - Public Domain. - - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - - See http://www.JSON.org/js.html - - - This code should be minified before deployment. - See http://javascript.crockford.com/jsmin.html - - USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO - NOT CONTROL. - - - This file creates a global JSON object containing two methods: stringify - and parse. - - JSON.stringify(value, replacer, space) - value any JavaScript value, usually an object or array. - - replacer an optional parameter that determines how object - values are stringified for objects. It can be a - function or an array of strings. - - space an optional parameter that specifies the indentation - of nested structures. If it is omitted, the text will - be packed without extra whitespace. If it is a number, - it will specify the number of spaces to indent at each - level. If it is a string (such as '\t' or ' '), - it contains the characters used to indent at each level. - - This method produces a JSON text from a JavaScript value. - - When an object value is found, if the object contains a toJSON - method, its toJSON method will be called and the result will be - stringified. A toJSON method does not serialize: it returns the - value represented by the name/value pair that should be serialized, - or undefined if nothing should be serialized. The toJSON method - will be passed the key associated with the value, and this will be - bound to the value - - For example, this would serialize Dates as ISO strings. - - Date.prototype.toJSON = function (key) { - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - return this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z'; - }; - - You can provide an optional replacer method. It will be passed the - key and value of each member, with this bound to the containing - object. The value that is returned from your method will be - serialized. If your method returns undefined, then the member will - be excluded from the serialization. - - If the replacer parameter is an array of strings, then it will be - used to select the members to be serialized. It filters the results - such that only members with keys listed in the replacer array are - stringified. - - Values that do not have JSON representations, such as undefined or - functions, will not be serialized. Such values in objects will be - dropped; in arrays they will be replaced with null. You can use - a replacer function to replace those with JSON values. - JSON.stringify(undefined) returns undefined. - - The optional space parameter produces a stringification of the - value that is filled with line breaks and indentation to make it - easier to read. - - If the space parameter is a non-empty string, then that string will - be used for indentation. If the space parameter is a number, then - the indentation will be that many spaces. - - Example: - - text = JSON.stringify(['e', {pluribus: 'unum'}]); - // text is '["e",{"pluribus":"unum"}]' - - - text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); - // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' - - text = JSON.stringify([new Date()], function (key, value) { - return this[key] instanceof Date ? - 'Date(' + this[key] + ')' : value; - }); - // text is '["Date(---current time---)"]' - - - JSON.parse(text, reviver) - This method parses a JSON text to produce an object or array. - It can throw a SyntaxError exception. - - The optional reviver parameter is a function that can filter and - transform the results. It receives each of the keys and values, - and its return value is used instead of the original value. - If it returns what it received, then the structure is not modified. - If it returns undefined then the member is deleted. - - Example: - - // Parse the text. Values that look like ISO date strings will - // be converted to Date objects. - - myData = JSON.parse(text, function (key, value) { - var a; - if (typeof value === 'string') { - a = -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); - if (a) { - return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], - +a[5], +a[6])); - } - } - return value; - }); - - myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { - var d; - if (typeof value === 'string' && - value.slice(0, 5) === 'Date(' && - value.slice(-1) === ')') { - d = new Date(value.slice(5, -1)); - if (d) { - return d; - } - } - return value; - }); - - - This is a reference implementation. You are free to copy, modify, or - redistribute. -*/ - -/*jslint evil: true, regexp: true */ - -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, - call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, - getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, - lastIndex, length, parse, prototype, push, replace, slice, stringify, - test, toJSON, toString, valueOf -*/ - - -// Create a JSON object only if one does not already exist. We create the -// methods in a closure to avoid creating global variables. - -var JSON; -if (!JSON) { - JSON = {}; -} - -(function () { - 'use strict'; - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - if (typeof Date.prototype.toJSON !== 'function') { - - Date.prototype.toJSON = function (key) { - - return isFinite(this.valueOf()) - ? this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' - : null; - }; - - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function (key) { - return this.valueOf(); - }; - } - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - - function quote(string) { - -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can safely slap some quotes around it. -// Otherwise we must also replace the offending characters with safe escape -// sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' - ? c - : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; - } - - - function str(key, holder) { - -// Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - -// If the value has a toJSON method, call it to obtain a replacement value. - - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - -// If we were called with a replacer function, then call the replacer to -// obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - -// What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - -// JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - -// If the value is a boolean or null, convert it to a string. Note: -// typeof null does not produce 'null'. The case is included here in -// the remote chance that this gets fixed someday. - - return String(value); - -// If the type is 'object', we might be dealing with an object or an array or -// null. - - case 'object': - -// Due to a specification blunder in ECMAScript, typeof null is 'object', -// so watch out for that case. - - if (!value) { - return 'null'; - } - -// Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - -// Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - -// The value is an array. Stringify every element. Use null as a placeholder -// for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - -// Join all of the elements together, separated with commas, and wrap them in -// brackets. - - v = partial.length === 0 - ? '[]' - : gap - ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' - : '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - -// If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - if (typeof rep[i] === 'string') { - k = rep[i]; - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - -// Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - -// Join all of the member texts together, separated with commas, -// and wrap them in braces. - - v = partial.length === 0 - ? '{}' - : gap - ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' - : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - -// If the JSON object does not yet have a stringify method, give it one. - - if (typeof JSON.stringify !== 'function') { - JSON.stringify = function (value, replacer, space) { - -// The stringify method takes a value and an optional replacer, and an optional -// space parameter, and returns a JSON text. The replacer can be a function -// that can replace values, or an array of strings that will select the keys. -// A default replacer method can be provided. Use of the space parameter can -// produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - -// If the space parameter is a number, make an indent string containing that -// many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - -// If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - -// If there is a replacer, it must be a function or an array. -// Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - -// Make a fake root object containing our value under the key of ''. -// Return the result of stringifying the value. - - return str('', {'': value}); - }; - } - - -// If the JSON object does not yet have a parse method, give it one. - - if (typeof JSON.parse !== 'function') { - JSON.parse = function (text, reviver) { - -// The parse method takes a text and an optional reviver function, and returns -// a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - -// The walk method is used to recursively walk the resulting structure so -// that modifications can be made. - - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - -// Parsing happens in four stages. In the first stage, we replace certain -// Unicode characters with escape sequences. JavaScript handles many characters -// incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - -// In the second stage, we run the text against regular expressions that look -// for non-JSON patterns. We are especially concerned with '()' and 'new' -// because they can cause invocation, and '=' because it can cause mutation. -// But just to be safe, we want to reject all unexpected forms. - -// We split the second stage into 4 regexp operations in order to work around -// crippling inefficiencies in IE's and Safari's regexp engines. First we -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we -// replace all simple value tokens with ']' characters. Third, we delete all -// open brackets that follow a colon or comma or that begin the text. Finally, -// we look to see that the remaining characters are only whitespace or ']' or -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/ - .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') - .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - -// In the third stage we use the eval function to compile the text into a -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity -// in JavaScript: it can begin a block or an object literal. We wrap the text -// in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - -// In the optional fourth stage, we recursively walk the new structure, passing -// each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' - ? walk({'': j}, '') - : j; - } - -// If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - } -}()); diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/AbstractRunner.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/AbstractRunner.java deleted file mode 100644 index 1192a2729a..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/AbstractRunner.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * - * 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.disttest; - -import java.io.FileInputStream; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - -import javax.naming.Context; -import javax.naming.InitialContext; - -public class AbstractRunner -{ - public static final String JNDI_CONFIG_PROP = "jndi-config"; - public static final String JNDI_CONFIG_DEFAULT = "perftests-jndi.properties"; - - private Map<String,String> _cliOptions = new HashMap<String, String>(); - { - getCliOptions().put(JNDI_CONFIG_PROP, JNDI_CONFIG_DEFAULT); - } - - protected Context getContext() - { - Context context = null; - - try(FileInputStream inStream = new FileInputStream(getJndiConfig())) - { - final Properties properties = new Properties(); - properties.load(inStream); - context = new InitialContext(properties); - } - catch (Exception e) - { - throw new DistributedTestException("Exception while loading JNDI properties", e); - } - - return context; - } - - public void parseArgumentsIntoConfig(String[] args) - { - ArgumentParser argumentParser = new ArgumentParser(); - argumentParser.parseArgumentsIntoConfig(getCliOptions(), args); - } - - protected String getJndiConfig() - { - return getCliOptions().get(AbstractRunner.JNDI_CONFIG_PROP); - } - - protected Map<String,String> getCliOptions() - { - return _cliOptions; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ArgumentParser.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ArgumentParser.java deleted file mode 100644 index e7421fb9b3..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ArgumentParser.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * 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.disttest; - -import java.util.Map; - -public class ArgumentParser -{ - public void parseArgumentsIntoConfig(Map<String, String> initialValues, String[] args) - { - for(String arg: args) - { - String[] splitArg = arg.split("="); - if (splitArg.length == 1 && splitArg[0].equals("-h")) - { - initialValues.put("-h", null); - continue; - } - - if(splitArg.length != 2) - { - throw new IllegalArgumentException("arguments must have format <name>=<value>: " + arg); - } - - - String argumentKey = splitArg[0]; - String argumentValue = splitArg[1]; - if(!initialValues.containsKey(argumentKey)) - { - throw new IllegalArgumentException("not a valid configuration property: " + arg); - } - initialValues.put(argumentKey, argumentValue); - } - - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/Benchmark.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/Benchmark.java deleted file mode 100644 index 01aefb0977..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/Benchmark.java +++ /dev/null @@ -1,290 +0,0 @@ -/* - * - * 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.disttest; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; - -import javax.naming.Context; -import javax.naming.InitialContext; - -import org.apache.qpid.disttest.controller.Controller; -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.controller.config.Config; -import org.apache.qpid.disttest.controller.config.ConfigReader; -import org.apache.qpid.disttest.controller.config.TestConfig; -import org.apache.qpid.disttest.jms.ControllerJmsDelegate; -import org.apache.qpid.disttest.results.BenchmarkResultWriter; -import org.apache.qpid.disttest.results.ResultsWriter; -import org.apache.qpid.disttest.results.aggregation.Aggregator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Performs a performance benchmark using the performance test suite. The performance test - * script (Benchmark.js) is normally found on the classpath. - * - * Typical command line usage: - * - * java -cp ".:./lib/*" -Dqpid.disttest.duration=1000 -Dqpid.disttest.messageSize=2048 -Dqpid.dest_syntax=BURL - * org.apache.qpid.disttest.Benchmark - * report-message-totals=false jndi-config=etc/perftests-jndi.properties - * - * The classpath must contain the JMS client and the performance test JAR. - * - */ -public class Benchmark -{ - private static final Logger LOGGER = LoggerFactory.getLogger(Benchmark.class); - - private static final String REPORT_MESSAGE_TOTALS = "report-message-totals"; - private static final String JNDI_CONFIG_PROP = "jndi-config"; - private static final String JNDI_CONFIG_DEFAULT = "jndi.properties"; - private static final String TEST_CONFIG_PROP = "test-config"; - - @SuppressWarnings("serial") - private Map<String,String> _cliOptions = new HashMap<String, String>() - {{ - put(JNDI_CONFIG_PROP, JNDI_CONFIG_DEFAULT); - put(TEST_CONFIG_PROP, "/Benchmark.js"); - put(REPORT_MESSAGE_TOTALS, "false"); - }}; - - private final Aggregator _aggregator = new Aggregator(); - - public static void main(String[] args) throws Exception - { - Benchmark benchmark = new Benchmark(); - benchmark.parseArgumentsIntoConfig(args); - benchmark.doBenchMark(); - } - - private void parseArgumentsIntoConfig(String[] args) - { - ArgumentParser argumentParser = new ArgumentParser(); - argumentParser.parseArgumentsIntoConfig(getCliOptions(), args); - if (_cliOptions.containsKey("-h")) - { - printHelp(null); - } - } - - private void printHelp(String message) - { - if (message != null) - { - System.out.println(message); - System.out.println(); - } - System.out.println("Usage:"); - System.out.println("java -cp \"<classpath>\" -Dqpid.disttest.duration=<test duration in milliseconds> -Dqpid.disttest.messageSize=<message size in bytes> org.apache.qpid.disttest.Benchmark [-h] [report-message-totals=<false|true>] [jndi-config=<path/to/jndi.properties>] [test-config=<path/to/test/configuration>]"); - System.out.println(" -h prints this help"); - System.out.println(" report-message-totals optional flag to report total payload. Default is false"); - System.out.println(" jndi-config path to jndi properties. Default is jndi.properties"); - System.out.println(" test-config path to test configuration. If not set, defaults to a built in bench mark test script. Alternative testscript(s) can be run by setting this option to a directory or file. If the former, all testscripts within the directory are executed."); - System.out.println(); - System.out.println("Supported JVM settings:"); - System.out.println(" qpid.disttest.duration overridden test duration in milliseconds"); - System.out.println(" qpid.disttest.messageSize overridden message size in bytes"); - System.exit(0); - } - - private Context getContext() - { - String jndiConfig = getJndiConfig(); - if (jndiConfig == null) - { - printHelp("JNDI configuration is not provided"); - } - - try - { - final Properties properties = loadProperties(jndiConfig); - return new InitialContext(properties); - } - catch (Exception e) - { - throw new DistributedTestException("Exception while loading JNDI properties from '" + jndiConfig + "'", e); - } - } - - private Properties loadProperties(String jndiConfig) throws IOException, FileNotFoundException - { - final Properties properties = new Properties(); - InputStream inStream = getClass().getResourceAsStream(jndiConfig); - if (inStream == null) - { - if (!new File(jndiConfig).exists()) - { - printHelp("Cannot find " + jndiConfig); - } - inStream = new FileInputStream(jndiConfig); - } - - try - { - properties.load(inStream); - } - finally - { - if (inStream != null) - { - inStream.close(); - } - } - return properties; - } - - private void doBenchMark() throws Exception - { - Context context = getContext(); - ControllerJmsDelegate jmsDelegate = new ControllerJmsDelegate(context); - - try - { - runTests(jmsDelegate, context); - } - finally - { - jmsDelegate.closeConnections(); - } - } - - private String getJndiConfig() - { - return getCliOptions().get(JNDI_CONFIG_PROP); - } - - private boolean getReportMessageTotals() - { - return Boolean.parseBoolean(getCliOptions().get(REPORT_MESSAGE_TOTALS)); - } - - private Map<String,String> getCliOptions() - { - return _cliOptions; - } - private void runTests(ControllerJmsDelegate jmsDelegate, Context context) - { - Controller controller = new Controller(jmsDelegate, DistributedTestConstants.REGISTRATION_TIMEOUT, DistributedTestConstants.COMMAND_RESPONSE_TIMEOUT); - - String testConfigPath = getCliOptions().get(TEST_CONFIG_PROP); - Config testConfig = buildTestConfigFrom(testConfigPath); - createClients(testConfig, context); - controller.setConfig(testConfig); - try - { - List<ResultsForAllTests> results = new ArrayList<ResultsForAllTests>(); - - controller.awaitClientRegistrations(); - - ResultsForAllTests testResult = runTest(controller, testConfig, testConfigPath); - results.add(testResult); - } - catch(Exception e) - { - LOGGER.error("Problem running test", e); - } - finally - { - controller.stopAllRegisteredClients(); - } - } - - private ResultsForAllTests runTest(Controller controller, Config testConfig, String testConfigFile) - { - ResultsWriter _resultsWriter = new BenchmarkResultWriter(getReportMessageTotals()); - ResultsForAllTests rawResultsForAllTests = controller.runAllTests(); - ResultsForAllTests resultsForAllTests = _aggregator.aggregateResults(rawResultsForAllTests); - - _resultsWriter.writeResults(resultsForAllTests, testConfigFile); - - return resultsForAllTests; - } - - private void createClients(Config testConfig, Context context) - { - int maxNumberOfClients = testConfig.getTotalNumberOfClients(); - - //we must create the required test clients, running in single-jvm mode - for (int i = 1; i <= maxNumberOfClients; i++) - { - ClientRunner clientRunner = new ClientRunner(); - clientRunner.runClients(context); - } - } - - private Config buildTestConfigFrom(String testConfigFile) - { - ConfigReader configReader = new ConfigReader(); - Config testConfig; - InputStream configStream = null; - try - { - configStream = getClass().getResourceAsStream(testConfigFile); - if (configStream != null) - { - testConfig = configReader.readConfig(new InputStreamReader(configStream), testConfigFile.endsWith(".js")); - } - else - { - ConfigFileHelper configFileHelper = new ConfigFileHelper(); - List<String> files = configFileHelper.getTestConfigFiles(testConfigFile); - List<TestConfig> tests = new ArrayList<TestConfig>(); - for (String file : files) - { - Config config = configReader.getConfigFromFile(file); - tests.addAll(config.getTestConfigs()); - } - testConfig = new Config(tests); - } - } - catch (IOException e) - { - throw new DistributedTestException("Exception while loading test config from '" - + testConfigFile + "'. Tried both classpath and filesystem", e); - } - finally - { - if (configStream != null) - { - try - { - configStream.close(); - } - catch (IOException e) - { - } - } - } - - return testConfig; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ClientRunner.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ClientRunner.java deleted file mode 100644 index 7450610597..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ClientRunner.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * 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.disttest; - -import javax.naming.Context; -import javax.naming.NamingException; - -import org.apache.qpid.disttest.client.Client; -import org.apache.qpid.disttest.jms.ClientJmsDelegate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ClientRunner extends AbstractRunner -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ClientRunner.class); - - public static final String NUM_OF_CLIENTS_PROP = "number-of-clients"; - - public static final String NUM_OF_CLIENTS_DEFAULT = "1"; - - public ClientRunner() - { - getCliOptions().put(NUM_OF_CLIENTS_PROP, NUM_OF_CLIENTS_DEFAULT); - } - - public static void main(String[] args) - { - ClientRunner runner = new ClientRunner(); - runner.parseArgumentsIntoConfig(args); - runner.runClients(); - } - - public void setJndiPropertiesFileLocation(String jndiConfigFileLocation) - { - getCliOptions().put(JNDI_CONFIG_PROP, jndiConfigFileLocation); - } - - /** - * Run the clients in the background - */ - public void runClients() - { - Context context = getContext(); - runClients(context); - } - - public void runClients(Context context) - { - int numClients = Integer.parseInt(getCliOptions().get(NUM_OF_CLIENTS_PROP)); - - for(int i = 1; i <= numClients; i++) - { - createBackgroundClient(context); - } - } - - private void createBackgroundClient(Context context) - { - try - { - final Client client = new Client(new ClientJmsDelegate(context)); - - final Thread clientThread = new Thread(new Runnable() - { - @Override - public void run() - { - LOGGER.info("Starting client " + client.getClientName()); - client.start(); - client.waitUntilStopped(); - LOGGER.info("Stopped client " + client.getClientName()); - } - }); - clientThread.start(); - } - catch (NamingException e) - { - throw new DistributedTestException("Exception while creating client instance", e); - } - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ConfigFileHelper.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ConfigFileHelper.java deleted file mode 100644 index a465813159..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ConfigFileHelper.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * 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.disttest; - -import java.io.File; -import java.io.FilenameFilter; -import java.util.ArrayList; -import java.util.List; - -public class ConfigFileHelper -{ - /** - * Returns absolute paths to the config file(s). - * <p> - * If testConfigPath is a directory, its .js and .json files are returned. - * Otherwise, the returned list just contains testConfigPath. - */ - public List<String> getTestConfigFiles(String testConfigPath) - { - final List<String> testConfigFile = new ArrayList<String>(); - final File configFileOrDirectory = new File(testConfigPath); - - if (configFileOrDirectory.isDirectory()) - { - final String[] configFiles = configFileOrDirectory.list(new FilenameFilter() - { - @Override - public boolean accept(File dir, String name) - { - boolean suffixOk = name.endsWith(".json") || name.endsWith(".js"); - return new File(dir, name).isFile() && suffixOk; - } - }); - - for (String configFile : configFiles) - { - testConfigFile.add(new File(configFileOrDirectory, configFile).getAbsolutePath()); - } - } - else - { - testConfigFile.add(configFileOrDirectory.getAbsolutePath()); - } - - return testConfigFile; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ControllerRunner.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ControllerRunner.java deleted file mode 100644 index a790011663..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/ControllerRunner.java +++ /dev/null @@ -1,212 +0,0 @@ -/* - * 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.disttest; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import javax.naming.Context; - -import org.apache.qpid.disttest.controller.Controller; -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.controller.config.Config; -import org.apache.qpid.disttest.controller.config.ConfigReader; -import org.apache.qpid.disttest.db.ResultsDbWriter; -import org.apache.qpid.disttest.jms.ControllerJmsDelegate; -import org.apache.qpid.disttest.results.ResultsCsvWriter; -import org.apache.qpid.disttest.results.ResultsWriter; -import org.apache.qpid.disttest.results.aggregation.Aggregator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ControllerRunner extends AbstractRunner -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ControllerRunner.class); - - public static final String TEST_CONFIG_PROP = "test-config"; - public static final String DISTRIBUTED_PROP = "distributed"; - public static final String OUTPUT_DIR_PROP = "outputdir"; - public static final String WRITE_TO_DB = "writeToDb"; - public static final String RUN_ID = "runId"; - - private static final String TEST_CONFIG_DEFAULT = "perftests-config.json"; - private static final String DISTRIBUTED_DEFAULT = "false"; - private static final String OUTPUT_DIR_DEFAULT = "."; - public static final String WRITE_TO_DB_DEFAULT = "false"; - - private final Aggregator _aggregator = new Aggregator(); - - private final ConfigFileHelper _configFileHelper = new ConfigFileHelper(); - - private ResultsWriter _resultsFileWriter; - - private ResultsDbWriter _resultsDbWriter; - - public ControllerRunner() - { - getCliOptions().put(TEST_CONFIG_PROP, TEST_CONFIG_DEFAULT); - getCliOptions().put(DISTRIBUTED_PROP, DISTRIBUTED_DEFAULT); - getCliOptions().put(OUTPUT_DIR_PROP, OUTPUT_DIR_DEFAULT); - getCliOptions().put(WRITE_TO_DB, WRITE_TO_DB_DEFAULT); - getCliOptions().put(RUN_ID, null); - } - - public static void main(String[] args) throws Exception - { - ControllerRunner runner = new ControllerRunner(); - runner.parseArgumentsIntoConfig(args); - runner.runController(); - } - - public void runController() throws Exception - { - Context context = getContext(); - setUpResultFilesWriter(); - setUpResultsDbWriter(); - - ControllerJmsDelegate jmsDelegate = new ControllerJmsDelegate(context); - - try - { - runTests(jmsDelegate); - } - finally - { - jmsDelegate.closeConnections(); - } - } - - private void setUpResultsDbWriter() - { - String writeToDbStr = getCliOptions().get(WRITE_TO_DB); - if(Boolean.valueOf(writeToDbStr)) - { - String runId = getCliOptions().get(RUN_ID); - _resultsDbWriter = new ResultsDbWriter(getContext(), runId); - _resultsDbWriter.createResultsTableIfNecessary(); - } - } - - void setUpResultFilesWriter() - { - String outputDirString = getCliOptions().get(ControllerRunner.OUTPUT_DIR_PROP); - File outputDir = new File(outputDirString); - _resultsFileWriter = new ResultsCsvWriter(outputDir); - } - - private void runTests(ControllerJmsDelegate jmsDelegate) - { - Controller controller = new Controller(jmsDelegate, DistributedTestConstants.REGISTRATION_TIMEOUT, DistributedTestConstants.COMMAND_RESPONSE_TIMEOUT); - - String testConfigPath = getCliOptions().get(ControllerRunner.TEST_CONFIG_PROP); - List<String> testConfigFiles = _configFileHelper.getTestConfigFiles(testConfigPath); - createClientsIfNotDistributed(testConfigFiles); - - try - { - List<ResultsForAllTests> results = new ArrayList<ResultsForAllTests>(); - - for (String testConfigFile : testConfigFiles) - { - final Config testConfig = buildTestConfigFrom(testConfigFile); - controller.setConfig(testConfig); - - controller.awaitClientRegistrations(); - - LOGGER.info("Running test : " + testConfigFile); - ResultsForAllTests testResult = runTest(controller, testConfigFile); - results.add(testResult); - } - - _resultsFileWriter.writeResultsSummary(results); - } - catch(Exception e) - { - LOGGER.error("Problem running test", e); - } - finally - { - controller.stopAllRegisteredClients(); - } - } - - private ResultsForAllTests runTest(Controller controller, String testConfigFile) - { - final Config testConfig = buildTestConfigFrom(testConfigFile); - controller.setConfig(testConfig); - - ResultsForAllTests rawResultsForAllTests = controller.runAllTests(); - ResultsForAllTests resultsForAllTests = _aggregator.aggregateResults(rawResultsForAllTests); - - _resultsFileWriter.writeResults(resultsForAllTests, testConfigFile); - if(_resultsDbWriter != null) - { - _resultsDbWriter.writeResults(resultsForAllTests); - } - - return resultsForAllTests; - } - - private void createClientsIfNotDistributed(final List<String> testConfigFiles) - { - if(!isDistributed()) - { - int maxNumberOfClients = 0; - for (String testConfigFile : testConfigFiles) - { - final Config testConfig = buildTestConfigFrom(testConfigFile); - final int numClients = testConfig.getTotalNumberOfClients(); - maxNumberOfClients = Math.max(numClients, maxNumberOfClients); - } - - //we must create the required test clients, running in single-jvm mode - for (int i = 1; i <= maxNumberOfClients; i++) - { - ClientRunner clientRunner = new ClientRunner(); - clientRunner.setJndiPropertiesFileLocation(getJndiConfig()); - clientRunner.runClients(); - } - } - } - - private Config buildTestConfigFrom(String testConfigFile) - { - ConfigReader configReader = new ConfigReader(); - Config testConfig; - try - { - testConfig = configReader.getConfigFromFile(testConfigFile); - } - catch (IOException e) - { - throw new DistributedTestException("Exception while loading test config from '" + testConfigFile + "'", e); - } - return testConfig; - } - - private boolean isDistributed() - { - return Boolean.valueOf(getCliOptions().get(ControllerRunner.DISTRIBUTED_PROP)); - } - - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/DistributedTestConstants.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/DistributedTestConstants.java deleted file mode 100644 index a6f872e841..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/DistributedTestConstants.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.disttest; - -public abstract class DistributedTestConstants -{ - public static final String PERF_TEST_PROPERTIES_FILE = "perftests.properties"; - - public static final String MSG_COMMAND_PROPERTY = "COMMAND"; - public static final String MSG_JSON_PROPERTY = "JSON"; - - public static final long REGISTRATION_TIMEOUT = 60 * 1000; - - /** set to a long time out because stopping clients can take a long time */ - public static final long COMMAND_RESPONSE_TIMEOUT = 120 * 1000; - - public static final String CONTROLLER_QUEUE_JNDI_NAME = "controllerqueue"; -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/DistributedTestException.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/DistributedTestException.java deleted file mode 100644 index d1d24dcfff..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/DistributedTestException.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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.disttest; - -import org.apache.qpid.disttest.message.Command; - -public class DistributedTestException extends RuntimeException -{ - private static final long serialVersionUID = 1L; - private final Command causeCommand; - - public DistributedTestException(final String message) - { - this(message, (Command) null); - } - - public DistributedTestException(final Throwable cause) - { - this(cause, null); - } - - public DistributedTestException(final String message, final Throwable cause) - { - this(message, cause, null); - } - - public DistributedTestException(final String message, final Command commandCause) - { - super(message); - causeCommand = commandCause; - } - - public DistributedTestException(final Throwable cause, final Command commandCause) - { - super(cause); - causeCommand = commandCause; - } - - public DistributedTestException(final String message, final Throwable cause, final Command commandCause) - { - super(message, cause); - causeCommand = commandCause; - } - - public Command getCauseCommand() - { - return causeCommand; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/Visitor.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/Visitor.java deleted file mode 100644 index 52dad9aa4d..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/Visitor.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 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.disttest; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** - * A variation of the visitor pattern that uses reflection to call the correct - * visit method. By convention, subclasses should provide public - * <pre>visit(SpecificClass)</pre> methods. - */ -public abstract class Visitor -{ - - private static final String VISITOR_METHOD_NAME = "visit"; - - public void visit(Object targetObject) - { - Class<? extends Object> targetObjectClass = targetObject.getClass(); - final Method method = findVisitMethodForTargetObjectClass(targetObjectClass); - invokeVisitMethod(targetObject, method); - } - - private Method findVisitMethodForTargetObjectClass( - Class<? extends Object> targetObjectClass) - { - final Method method; - try - { - method = getClass().getDeclaredMethod(VISITOR_METHOD_NAME, targetObjectClass); - } - catch (Exception e) - { - throw new DistributedTestException("Failed to find method " + VISITOR_METHOD_NAME + " on object of class " + targetObjectClass, e); - } - return method; - } - - private void invokeVisitMethod(Object targetObject, final Method method) - { - try - { - method.invoke(this, targetObject); - } - catch (IllegalArgumentException e) - { - throw new DistributedTestException(e); - } - catch (IllegalAccessException e) - { - throw new DistributedTestException(e); - } - catch (InvocationTargetException e) - { - throw new DistributedTestException(e.getCause()); - } - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/Client.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/Client.java deleted file mode 100644 index cf9820979f..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/Client.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * 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.disttest.client; - -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; - -import javax.naming.NamingException; - -import org.apache.commons.lang.builder.ToStringBuilder; -import org.apache.commons.lang.builder.ToStringStyle; -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.Visitor; -import org.apache.qpid.disttest.jms.ClientJmsDelegate; -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CommandType; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.Response; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class Client -{ - private static final Logger LOGGER = LoggerFactory.getLogger(Client.class); - - private final ClientJmsDelegate _clientJmsDelegate; - - private final CountDownLatch _latch = new CountDownLatch(1); - private Visitor _visitor; - private final AtomicReference<ClientState> _state; - private ParticipantExecutorRegistry _participantRegistry = new ParticipantExecutorRegistry(); - - public Client(final ClientJmsDelegate delegate) throws NamingException - { - _clientJmsDelegate = delegate; - _state = new AtomicReference<ClientState>(ClientState.CREATED); - _visitor = new ClientCommandVisitor(this, _clientJmsDelegate); - } - - /** - * Register with the controller - */ - public void start() - { - _clientJmsDelegate.setConnectionLostListener(new ConnectionLostListener() - { - @Override - public void connectionLost() - { - LOGGER.warn("Client unexpectedly lost the JMS connection. Shutting down."); - transitToStopped(); - } - }); - _clientJmsDelegate.setInstructionListener(this); - _clientJmsDelegate.sendRegistrationMessage(); - _state.set(ClientState.READY); - } - - public void stop() - { - _clientJmsDelegate.setConnectionLostListener(null); - _clientJmsDelegate.sendResponseMessage(new Response(_clientJmsDelegate.getClientName(), CommandType.STOP_CLIENT, null)); - transitToStopped(); - } - - private void transitToStopped() - { - _state.set(ClientState.STOPPED); - _latch.countDown(); - } - - public void addParticipantExecutor(final ParticipantExecutor participant) - { - _participantRegistry.add(participant); - } - - public void waitUntilStopped() - { - waitUntilStopped(0); - } - - public void waitUntilStopped(final long timeout) - { - try - { - if (timeout == 0) - { - _latch.await(); - } - else - { - _latch.await(timeout, TimeUnit.MILLISECONDS); - } - } - catch (final InterruptedException ie) - { - Thread.currentThread().interrupt(); - } - - _clientJmsDelegate.destroy(); - } - - public void processInstruction(final Command command) - { - if (LOGGER.isDebugEnabled()) - { - LOGGER.debug("Client " + getClientName() + " received command: " + command); - } - String responseMessage = null; - try - { - command.accept(_visitor); - } - catch (final Exception e) - { - LOGGER.error("Error processing instruction", e); - responseMessage = e.getMessage(); - } - finally - { - if (_state.get() != ClientState.STOPPED) - { - _clientJmsDelegate.sendResponseMessage(new Response(_clientJmsDelegate.getClientName(), command.getType(), responseMessage)); - } - } - } - - public ClientState getState() - { - return _state.get(); - } - - public String getClientName() - { - return _clientJmsDelegate.getClientName(); - } - - public void setClientCommandVisitor(final ClientCommandVisitor visitor) - { - _visitor = visitor; - } - - public void startTest() - { - if (_state.compareAndSet(ClientState.READY, ClientState.RUNNING_TEST)) - { - try - { - _clientJmsDelegate.startConnections(); - for (final ParticipantExecutor executor : _participantRegistry.executors()) - { - executor.start(this); - } - } - catch (final Exception e) - { - try - { - tearDownTest(); - } - catch (final Exception e2) - { - // ignore - } - throw new DistributedTestException("Error starting test: " + _clientJmsDelegate.getClientName(), e); - } - } - else - { - throw new DistributedTestException("Client '" + _clientJmsDelegate.getClientName() - + "' is not in READY state:" + _state.get()); - } - } - - public void tearDownTest() - { - if (_state.compareAndSet(ClientState.RUNNING_TEST, ClientState.READY)) - { - LOGGER.debug("Tearing down test on client: " + _clientJmsDelegate.getClientName()); - - _clientJmsDelegate.tearDownTest(); - } - else - { - throw new DistributedTestException("Client '" + _clientJmsDelegate.getClientName() + "' is not in RUNNING_TEST state! Ignoring tearDownTest"); - } - - - _participantRegistry.clear(); - } - - public void sendResults(ParticipantResult testResult) - { - _clientJmsDelegate.sendResponseMessage(testResult); - LOGGER.debug("Sent test results " + testResult); - } - - @Override - public String toString() - { - return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) - .append("clientJmsDelegate", _clientJmsDelegate).toString(); - } - - void setParticipantRegistry(ParticipantExecutorRegistry participantRegistry) - { - _participantRegistry = participantRegistry; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ClientCommandVisitor.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ClientCommandVisitor.java deleted file mode 100644 index 6b81c12c22..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ClientCommandVisitor.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * 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.disttest.client; - -import org.apache.qpid.disttest.Visitor; -import org.apache.qpid.disttest.jms.ClientJmsDelegate; -import org.apache.qpid.disttest.message.CreateConnectionCommand; -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.disttest.message.CreateMessageProviderCommand; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.disttest.message.CreateSessionCommand; -import org.apache.qpid.disttest.message.NoOpCommand; -import org.apache.qpid.disttest.message.StartTestCommand; -import org.apache.qpid.disttest.message.StopClientCommand; -import org.apache.qpid.disttest.message.TearDownTestCommand; - -public class ClientCommandVisitor extends Visitor -{ - private final Client _client; - private final ClientJmsDelegate _clientJmsDelegate; - - public ClientCommandVisitor(final Client client, final ClientJmsDelegate clientJmsDelegate) - { - super(); - _client = client; - _clientJmsDelegate = clientJmsDelegate; - } - - public void visit(final StopClientCommand command) - { - - _client.stop(); - } - - public void visit(final NoOpCommand command) - { - // no-op - } - - public void visit(final CreateConnectionCommand command) - { - _clientJmsDelegate.createConnection(command); - } - - public void visit(final CreateSessionCommand command) - { - _clientJmsDelegate.createSession(command); - } - - public void visit(final CreateProducerCommand command) - { - - final ProducerParticipant participant = new ProducerParticipant(_clientJmsDelegate, command); - _clientJmsDelegate.createProducer(command); - final ParticipantExecutor executor = new ParticipantExecutor(participant); - _client.addParticipantExecutor(executor); - } - - public void visit(final CreateConsumerCommand command) - { - final ConsumerParticipant participant = new ConsumerParticipant(_clientJmsDelegate, command); - _clientJmsDelegate.createConsumer(command); - final ParticipantExecutor executor = new ParticipantExecutor(participant); - _client.addParticipantExecutor(executor); - } - - public void visit(final StartTestCommand command) - { - _client.startTest(); - } - - public void visit(final TearDownTestCommand command) - { - _client.tearDownTest(); - } - - public void visit(final CreateMessageProviderCommand command) - { - _clientJmsDelegate.createMessageProvider(command); - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ClientState.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ClientState.java deleted file mode 100644 index c88c0a6c86..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ClientState.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * 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.disttest.client; - -public enum ClientState -{ - CREATED, READY, STOPPED, RUNNING_TEST; -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ConnectionLostListener.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ConnectionLostListener.java deleted file mode 100644 index 9acf80fb4d..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ConnectionLostListener.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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.disttest.client; - - -public interface ConnectionLostListener -{ - void connectionLost(); -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ConsumerParticipant.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ConsumerParticipant.java deleted file mode 100644 index d3a5e30191..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ConsumerParticipant.java +++ /dev/null @@ -1,283 +0,0 @@ -/* - * 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.disttest.client; - - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.NavigableSet; -import java.util.concurrent.ConcurrentSkipListSet; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; - -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageListener; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.jms.ClientJmsDelegate; -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ConsumerParticipant implements Participant -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerParticipant.class); - - private final AtomicInteger _totalNumberOfMessagesReceived = new AtomicInteger(0); - private final NavigableSet<Integer> _allConsumedPayloadSizes = new ConcurrentSkipListSet<Integer>(); - private final AtomicLong _totalPayloadSizeOfAllMessagesReceived = new AtomicLong(0); - private final CountDownLatch _asyncRunHasFinished = new CountDownLatch(1); - private final ClientJmsDelegate _jmsDelegate; - private final CreateConsumerCommand _command; - private final ParticipantResultFactory _resultFactory; - - private long _startTime; - - private volatile Exception _asyncMessageListenerException; - private List<Long> _messageLatencies; - - public ConsumerParticipant(final ClientJmsDelegate delegate, final CreateConsumerCommand command) - { - _jmsDelegate = delegate; - _command = command; - _resultFactory = new ParticipantResultFactory(); - if (command.isEvaluateLatency()) - { - _messageLatencies = new ArrayList<Long>(); - } - } - - @Override - public ParticipantResult doIt(String registeredClientName) throws Exception - { - final Date start = new Date(); - final int acknowledgeMode = _jmsDelegate.getAcknowledgeMode(_command.getSessionName()); - - if (_command.getMaximumDuration() == 0 && _command.getNumberOfMessages() == 0) - { - throw new DistributedTestException("number of messages and duration cannot both be zero"); - } - - if (_command.isSynchronous()) - { - synchronousRun(); - } - else - { - LOGGER.info("Consumer {} registering listener", getName()); - - _jmsDelegate.registerListener(_command.getParticipantName(), new MessageListener(){ - - @Override - public void onMessage(Message message) - { - processAsynchMessage(message); - } - - }); - - waitUntilMsgListenerHasFinished(); - rethrowAnyAsyncMessageListenerException(); - } - - Date end = new Date(); - int numberOfMessagesReceived = _totalNumberOfMessagesReceived.get(); - long totalPayloadSize = _totalPayloadSizeOfAllMessagesReceived.get(); - int payloadSize = getPayloadSizeForResultIfConstantOrZeroOtherwise(_allConsumedPayloadSizes); - - if (LOGGER.isInfoEnabled()) - { - LOGGER.info("Consumer {} finished consuming. Number of messages consumed: {}", - getName(), numberOfMessagesReceived); - } - - ParticipantResult result = _resultFactory.createForConsumer( - getName(), - registeredClientName, - _command, - acknowledgeMode, - numberOfMessagesReceived, - payloadSize, - totalPayloadSize, - start, end, _messageLatencies); - - return result; - } - - private void synchronousRun() - { - LOGGER.info("Consumer {} about to consume messages", getName()); - - _startTime = System.currentTimeMillis(); - - Message message = null; - - do - { - message = _jmsDelegate.consumeMessage(_command.getParticipantName(), - _command.getReceiveTimeout()); - } while (processMessage(message)); - } - - /** - * @return whether to continue running (ie returns false if the message quota has been reached) - */ - private boolean processMessage(Message message) - { - int messageCount = message == null? _totalNumberOfMessagesReceived.get() : _totalNumberOfMessagesReceived.incrementAndGet() ; - boolean batchEnabled = _command.getBatchSize() > 0; - boolean batchComplete = batchEnabled && messageCount % _command.getBatchSize() == 0; - if (message != null) - { - if (LOGGER.isTraceEnabled()) - { - LOGGER.trace("message " + messageCount + " received by " + this); - } - int messagePayloadSize = _jmsDelegate.calculatePayloadSizeFrom(message); - _allConsumedPayloadSizes.add(messagePayloadSize); - _totalPayloadSizeOfAllMessagesReceived.addAndGet(messagePayloadSize); - - if (_command.isEvaluateLatency()) - { - long mesageTimestamp; - try - { - mesageTimestamp = message.getJMSTimestamp(); - } - catch (JMSException e) - { - throw new DistributedTestException("Cannot get message timestamp!", e); - } - long latency = System.currentTimeMillis() - mesageTimestamp; - _messageLatencies.add(latency); - } - - if (!batchEnabled || batchComplete) - { - if (LOGGER.isTraceEnabled() && batchEnabled) - { - LOGGER.trace("Committing: batch size " + _command.getBatchSize() ); - } - _jmsDelegate.commitOrAcknowledgeMessageIfNecessary(_command.getSessionName(), message); - } - } - - boolean reachedExpectedNumberOfMessages = _command.getNumberOfMessages() > 0 && messageCount >= _command.getNumberOfMessages(); - boolean reachedMaximumDuration = _command.getMaximumDuration() > 0 && System.currentTimeMillis() - _startTime >= _command.getMaximumDuration(); - boolean finishedConsuming = reachedExpectedNumberOfMessages || reachedMaximumDuration; - - if (finishedConsuming) - { - if (LOGGER.isDebugEnabled()) - { - LOGGER.debug("message " + messageCount - + " reachedExpectedNumberOfMessages " + reachedExpectedNumberOfMessages - + " reachedMaximumDuration " + reachedMaximumDuration); - } - - if (batchEnabled && !batchComplete) - { - if (LOGGER.isTraceEnabled()) - { - LOGGER.trace("Committing: batch size " + _command.getBatchSize() ); - } - - // commit/acknowledge remaining messages if necessary - _jmsDelegate.commitOrAcknowledgeMessageIfNecessary(_command.getSessionName(), message); - } - return false; - } - - return true; - } - - - /** - * Intended to be called from a {@link MessageListener}. Updates {@link #_asyncRunHasFinished} if - * no more messages should be processed, causing {@link #doIt(String)} to exit. - */ - public void processAsynchMessage(Message message) - { - boolean continueRunning = true; - try - { - if (_startTime == 0) - { - // reset counter and start time on receiving of first message - _startTime = System.currentTimeMillis(); - } - - continueRunning = processMessage(message); - } - catch (Exception e) - { - LOGGER.error("Error occured consuming message " + _totalNumberOfMessagesReceived, e); - continueRunning = false; - _asyncMessageListenerException = e; - } - - if(!continueRunning) - { - _asyncRunHasFinished.countDown(); - } - } - - @Override - public void releaseResources() - { - _jmsDelegate.closeTestConsumer(_command.getParticipantName()); - } - - private int getPayloadSizeForResultIfConstantOrZeroOtherwise(NavigableSet<Integer> allSizes) - { - return allSizes.size() == 1 ? _allConsumedPayloadSizes.first() : 0; - } - - private void rethrowAnyAsyncMessageListenerException() - { - if (_asyncMessageListenerException != null) - { - throw new DistributedTestException(_asyncMessageListenerException); - } - } - - private void waitUntilMsgListenerHasFinished() throws Exception - { - LOGGER.debug("waiting until message listener has finished for " + this); - _asyncRunHasFinished.await(); - LOGGER.debug("Message listener has finished for " + this); - } - - @Override - public String getName() - { - return _command.getParticipantName(); - } - - @Override - public String toString() - { - return "ConsumerParticipant [_command=" + _command + ", _startTime=" + _startTime + "]"; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/MessageProvider.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/MessageProvider.java deleted file mode 100644 index 6af1e1316a..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/MessageProvider.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * 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.disttest.client; - -import java.lang.reflect.InvocationTargetException; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.Callable; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.Future; -import java.util.concurrent.FutureTask; - -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.Session; -import javax.jms.TextMessage; - -import org.apache.commons.beanutils.BeanUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.client.property.PropertyValue; -import org.apache.qpid.disttest.message.CreateProducerCommand; - -public class MessageProvider -{ - public static final String TTL = "ttl"; - - public static final String DELIVERY_MODE = "deliveryMode"; - - public static final String PRIORITY = "priority"; - - public static final String[] STANDARD_JMS_PROPERTIES = { "correlationID", DELIVERY_MODE, - "expiration", "messageID", PRIORITY, "redelivered", "replyTo", "timestamp", "type", TTL }; - - private Map<String, PropertyValue> _messageProperties; - private ConcurrentMap<Integer, Future<String>> _payloads; - - public MessageProvider(Map<String, PropertyValue> messageProperties) - { - _messageProperties = messageProperties; - _payloads = new ConcurrentHashMap<Integer, Future<String>>(); - } - - public Message nextMessage(Session session, CreateProducerCommand command) throws JMSException - { - Message message = createTextMessage(session, command); - setMessageProperties(message); - return message; - } - - public boolean isPropertySet(String name) - { - return _messageProperties != null && _messageProperties.containsKey(name); - } - - public void setMessageProperties(Message message) throws JMSException - { - if (_messageProperties != null) - { - for (Entry<String, PropertyValue> entry : _messageProperties.entrySet()) - { - String propertyName = entry.getKey(); - Object propertyValue = entry.getValue().getValue(); - if (isStandardProperty(propertyName)) - { - setStandardProperty(message, propertyName, propertyValue); - } - else - { - setCustomProperty(message, propertyName, propertyValue); - } - } - } - } - - protected void setCustomProperty(Message message, String propertyName, Object propertyValue) throws JMSException - { - if (propertyValue instanceof Integer) - { - message.setIntProperty(propertyName, ((Integer) propertyValue).intValue()); - } - else if (propertyValue instanceof Long) - { - message.setLongProperty(propertyName, ((Long) propertyValue).longValue()); - } - else if (propertyValue instanceof Boolean) - { - message.setBooleanProperty(propertyName, ((Boolean) propertyValue).booleanValue()); - } - else if (propertyValue instanceof Byte) - { - message.setByteProperty(propertyName, ((Byte) propertyValue).byteValue()); - } - else if (propertyValue instanceof Double) - { - message.setDoubleProperty(propertyName, ((Double) propertyValue).doubleValue()); - } - else if (propertyValue instanceof Float) - { - message.setFloatProperty(propertyName, ((Float) propertyValue).floatValue()); - } - else if (propertyValue instanceof Short) - { - message.setShortProperty(propertyName, ((Short) propertyValue).shortValue()); - } - else if (propertyValue instanceof String) - { - message.setStringProperty(propertyName, (String) propertyValue); - } - else - { - message.setObjectProperty(propertyName, propertyValue); - } - } - - protected void setStandardProperty(Message message, String property, Object propertyValue) throws JMSException - { - String propertyName = "JMS" + StringUtils.capitalize(property); - try - { - BeanUtils.setProperty(message, propertyName, propertyValue); - } - catch (IllegalAccessException e) - { - throw new DistributedTestException("Unable to set property " + propertyName + " :" + e.getMessage(), e); - } - catch (InvocationTargetException e) - { - if (e.getCause() instanceof JMSException) - { - throw ((JMSException) e.getCause()); - } - else - { - throw new DistributedTestException("Unable to set property " + propertyName + " :" + e.getMessage(), e); - } - } - } - - protected boolean isStandardProperty(String propertyName) - { - for (int i = 0; i < STANDARD_JMS_PROPERTIES.length; i++) - { - if (propertyName.equals(STANDARD_JMS_PROPERTIES[i])) - { - return true; - } - } - return false; - } - - protected Message createTextMessage(Session ssn, final CreateProducerCommand command) throws JMSException - { - String payload = getMessagePayload(command); - - TextMessage msg = null; - synchronized(ssn) - { - msg = ssn.createTextMessage(); - } - msg.setText(payload); - - return msg; - } - - protected String getMessagePayload(final CreateProducerCommand command) - { - FutureTask<String> createTextFuture = new FutureTask<String>(new Callable<String>() - { - @Override - public String call() throws Exception - { - return StringUtils.repeat("a", command.getMessageSize()); - } - }); - - Future<String> future = _payloads.putIfAbsent(command.getMessageSize(), createTextFuture); - if (future == null) - { - createTextFuture.run(); - future = createTextFuture; - } - String payload = null; - try - { - payload = future.get(); - } - catch (Exception e) - { - throw new DistributedTestException("Unable to create message payload :" + e.getMessage(), e); - } - return payload; - } - - @Override - public String toString() - { - return "MessageProvider [_messageProperties=" + _messageProperties + "]"; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/Participant.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/Participant.java deleted file mode 100644 index 941ec90565..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/Participant.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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.disttest.client; - -import org.apache.qpid.disttest.message.ParticipantResult; - -public interface Participant -{ - ParticipantResult doIt(String registeredClientName) throws Exception; - - void releaseResources(); - - String getName(); - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantExecutor.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantExecutor.java deleted file mode 100644 index f34ac941bc..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantExecutor.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * 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.disttest.client; - -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; - -import org.apache.commons.lang.builder.ToStringBuilder; -import org.apache.commons.lang.builder.ToStringStyle; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.apache.qpid.disttest.message.ParticipantResult; - -public class ParticipantExecutor -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantExecutor.class); - - private static final ExecutorService SHARED_UNBOUNDED_THREAD_POOL = Executors.newCachedThreadPool(new DaemonThreadFactory()); - - private Executor _executor = SHARED_UNBOUNDED_THREAD_POOL; - - private Client _client; - - private final Participant _participant; - - private final ParticipantResultFactory _factory; - - public ParticipantExecutor(Participant participant) - { - _participant = participant; - _factory = new ParticipantResultFactory(); - } - - /** - * Schedules the test participant to be run in a background thread. - */ - public void start(Client client) - { - _client = client; - - LOGGER.debug("Starting test participant in background thread: " + this); - _executor.execute(new ParticipantRunnable()); - } - - public String getParticipantName() - { - return _participant.getName(); - } - - void setExecutor(Executor executor) - { - _executor = executor; - } - - private class ParticipantRunnable implements Runnable - { - @Override - public final void run() - { - Thread currentThread = Thread.currentThread(); - final String initialThreadName = currentThread.getName(); - currentThread.setName(initialThreadName + "-" + getParticipantName()); - - try - { - runParticipantAndSendResults(); - } - finally - { - currentThread.setName(initialThreadName); - } - } - - private void runParticipantAndSendResults() - { - ParticipantResult result = null; - try - { - if (LOGGER.isDebugEnabled()) - { - LOGGER.debug("About to run participant " + _participant); - } - result = _participant.doIt(_client.getClientName()); - } - catch (Exception t) - { - String errorMessage = "Unhandled error: " + t.getMessage(); - LOGGER.error(errorMessage, t); - result = _factory.createForError(_participant.getName(), _client.getClientName(), errorMessage); - } - finally - { - try - { - _participant.releaseResources(); - } - catch(Exception e) - { - LOGGER.error("Participant " + _participant + " unable to release resources", e); - } - - _client.sendResults(result); - } - } - } - - private static final class DaemonThreadFactory implements ThreadFactory - { - @Override - public Thread newThread(Runnable r) - { - Thread thread = new Thread(r); - thread.setDaemon(true); - return thread; - } - } - - @Override - public String toString() - { - return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) - .append("participantName", getParticipantName()) - .append("client", _client) - .toString(); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantExecutorRegistry.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantExecutorRegistry.java deleted file mode 100644 index 3d9780e640..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantExecutorRegistry.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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.disttest.client; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -public class ParticipantExecutorRegistry -{ - private final Set<ParticipantExecutor> _participantExecutors = Collections.synchronizedSet(new HashSet<ParticipantExecutor>()); - - public void add(ParticipantExecutor participantExecutor) - { - _participantExecutors.add(participantExecutor); - } - - public void clear() - { - _participantExecutors.clear(); - } - - public Collection<ParticipantExecutor> executors() - { - return Collections.unmodifiableSet(_participantExecutors); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantResultFactory.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantResultFactory.java deleted file mode 100644 index 50c0a74ccd..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ParticipantResultFactory.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * 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.disttest.client; - -import java.util.Collection; -import java.util.Date; - -import org.apache.qpid.disttest.message.ConsumerParticipantResult; -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.disttest.message.CreateParticpantCommand; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.ProducerParticipantResult; -import org.apache.qpid.disttest.results.aggregation.SeriesStatistics; - -public class ParticipantResultFactory -{ - public ConsumerParticipantResult createForConsumer(String participantName, String clientRegisteredName, - CreateConsumerCommand command, int acknowledgeMode, int numberOfMessagesReceived, int payloadSize, - long totalPayloadReceived, Date start, Date end) - { - return createForConsumer(participantName, clientRegisteredName, command, acknowledgeMode, numberOfMessagesReceived, - payloadSize, totalPayloadReceived, start, end, null); - } - - public ConsumerParticipantResult createForConsumer(String participantName, String clientRegisteredName, - CreateConsumerCommand command, int acknowledgeMode, int numberOfMessagesReceived, int payloadSize, - long totalPayloadReceived, Date start, Date end, Collection<Long> messageLatencies) - { - ConsumerParticipantResult consumerParticipantResult = new ConsumerParticipantResult(); - consumerParticipantResult.setMessageLatencies(messageLatencies); - - setTestProperties(consumerParticipantResult, command, participantName, clientRegisteredName, acknowledgeMode); - setTestResultProperties(consumerParticipantResult, numberOfMessagesReceived, payloadSize, totalPayloadReceived, start, end); - - consumerParticipantResult.setTopic(command.isTopic()); - consumerParticipantResult.setDurableSubscription(command.isDurableSubscription()); - consumerParticipantResult.setBrowsingSubscription(command.isBrowsingSubscription()); - consumerParticipantResult.setSelector(command.getSelector() != null); - consumerParticipantResult.setNoLocal(command.isNoLocal()); - consumerParticipantResult.setSynchronousConsumer(command.isSynchronous()); - consumerParticipantResult.setTotalNumberOfConsumers(1); - consumerParticipantResult.setTotalNumberOfProducers(0); - - SeriesStatistics statistics = new SeriesStatistics(messageLatencies); - consumerParticipantResult.setAverageLatency(statistics.getAverage()); - consumerParticipantResult.setMinLatency(statistics.getMinimum()); - consumerParticipantResult.setMaxLatency(statistics.getMaximum()); - consumerParticipantResult.setLatencyStandardDeviation(statistics.getStandardDeviation()); - return consumerParticipantResult; - } - - public ProducerParticipantResult createForProducer(String participantName, String clientRegisteredName, CreateProducerCommand command, int acknowledgeMode, int numberOfMessagesSent, int payloadSize, long totalPayloadSent, Date start, Date end) - { - final ProducerParticipantResult producerParticipantResult = new ProducerParticipantResult(); - - producerParticipantResult.setStartDelay(command.getStartDelay()); - producerParticipantResult.setDeliveryMode(command.getDeliveryMode()); - producerParticipantResult.setPriority(command.getPriority()); - producerParticipantResult.setInterval(command.getInterval()); - producerParticipantResult.setTimeToLive(command.getTimeToLive()); - producerParticipantResult.setTotalNumberOfConsumers(0); - producerParticipantResult.setTotalNumberOfProducers(1); - - - setTestProperties(producerParticipantResult, command, participantName, clientRegisteredName, acknowledgeMode); - - setTestResultProperties(producerParticipantResult, numberOfMessagesSent, payloadSize, totalPayloadSent, start, end); - - return producerParticipantResult; - } - - private void setTestResultProperties(final ParticipantResult participantResult, int numberOfMessagesSent, int payloadSize, long totalPayloadReceived, Date start, Date end) - { - participantResult.setNumberOfMessagesProcessed(numberOfMessagesSent); - participantResult.setPayloadSize(payloadSize); - participantResult.setTotalPayloadProcessed(totalPayloadReceived); - participantResult.setStartDate(start); - participantResult.setEndDate(end); - } - - private void setTestProperties(final ParticipantResult participantResult, CreateParticpantCommand command, String participantName, String clientRegisteredName, int acknowledgeMode) - { - participantResult.setParticipantName(participantName); - participantResult.setRegisteredClientName(clientRegisteredName); - participantResult.setBatchSize(command.getBatchSize()); - participantResult.setMaximumDuration(command.getMaximumDuration()); - participantResult.setAcknowledgeMode(acknowledgeMode); - - } - - public ParticipantResult createForError(String participantName, String clientRegisteredName, String errorMessage) - { - ParticipantResult result = new ParticipantResult(); - result.setParticipantName(participantName); - result.setRegisteredClientName(clientRegisteredName); - result.setErrorMessage(errorMessage); - - return result; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ProducerParticipant.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ProducerParticipant.java deleted file mode 100644 index a9da837dea..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/ProducerParticipant.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * 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.disttest.client; - -import java.util.Date; -import java.util.NavigableSet; -import java.util.TreeSet; -import java.util.concurrent.Callable; -import java.util.concurrent.CancellationException; - -import javax.jms.Message; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.client.utils.ExecutorWithLimits; -import org.apache.qpid.disttest.client.utils.ExecutorWithLimitsFactory; -import org.apache.qpid.disttest.jms.ClientJmsDelegate; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ProducerParticipant implements Participant -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ProducerParticipant.class); - - private final ClientJmsDelegate _jmsDelegate; - - private final CreateProducerCommand _command; - - private final ParticipantResultFactory _resultFactory; - - private ExecutorWithLimits _limiter; - - public ProducerParticipant(final ClientJmsDelegate jmsDelegate, final CreateProducerCommand command) - { - _jmsDelegate = jmsDelegate; - _command = command; - _resultFactory = new ParticipantResultFactory(); - } - - @Override - public ParticipantResult doIt(String registeredClientName) throws Exception - { - long numberOfMessages = _command.getNumberOfMessages(); - long maximumDuration = _command.getMaximumDuration(); - - if (maximumDuration == 0 && numberOfMessages == 0) - { - throw new DistributedTestException("number of messages and duration cannot both be zero"); - } - - long duration = maximumDuration - _command.getStartDelay(); - if (maximumDuration > 0 && duration <= 0) - { - throw new DistributedTestException("Start delay must be less than maximum test duration"); - } - final long requiredDuration = duration > 0 ? duration : 0; - - doSleepForStartDelay(); - - final int batchSize = _command.getBatchSize(); - final int acknowledgeMode = _jmsDelegate.getAcknowledgeMode(_command.getSessionName()); - final long startTime = System.currentTimeMillis(); - - Message lastPublishedMessage = null; - int numberOfMessagesSent = 0; - long totalPayloadSizeOfAllMessagesSent = 0; - NavigableSet<Integer> allProducedPayloadSizes = new TreeSet<Integer>(); - - _limiter = ExecutorWithLimitsFactory.createExecutorWithLimit(startTime, requiredDuration); - - if (LOGGER.isInfoEnabled()) - { - LOGGER.info("Producer {} about to send messages. Duration limit: {} ms, Message limit: {}", - new Object[]{getName(), requiredDuration, numberOfMessages}); - } - - while (true) - { - if (numberOfMessages > 0 && numberOfMessagesSent >= numberOfMessages - || requiredDuration > 0 && System.currentTimeMillis() - startTime >= requiredDuration) - { - break; - } - - try - { - lastPublishedMessage = _limiter.execute(new Callable<Message>() - { - @Override - public Message call() throws Exception - { - return _jmsDelegate.sendNextMessage(_command); - } - }); - } - catch (CancellationException ce) - { - LOGGER.debug("Producer send was cancelled due to maximum duration {} ms", requiredDuration); - break; - } - - numberOfMessagesSent++; - - int lastPayloadSize = _jmsDelegate.calculatePayloadSizeFrom(lastPublishedMessage); - totalPayloadSizeOfAllMessagesSent += lastPayloadSize; - allProducedPayloadSizes.add(lastPayloadSize); - - if (LOGGER.isTraceEnabled()) - { - LOGGER.trace("message " + numberOfMessagesSent + " sent by " + this); - } - - final boolean batchLimitReached = batchSize <= 0 - || numberOfMessagesSent % batchSize == 0; - - if (batchLimitReached) - { - if (LOGGER.isTraceEnabled() && batchSize > 0) - { - LOGGER.trace("Committing: batch size " + batchSize ); - } - _jmsDelegate.commitIfNecessary(_command.getSessionName()); - - doSleepForInterval(); - } - } - - // commit the remaining batch messages - if (batchSize > 0 && numberOfMessagesSent % batchSize != 0) - { - if (LOGGER.isTraceEnabled()) - { - LOGGER.trace("Committing: batch size " + batchSize ); - } - _jmsDelegate.commitIfNecessary(_command.getSessionName()); - } - - if (LOGGER.isInfoEnabled()) - { - LOGGER.info("Producer {} finished publishing. Number of messages published: {}", - getName(), numberOfMessagesSent); - } - - Date start = new Date(startTime); - Date end = new Date(); - int payloadSize = getPayloadSizeForResultIfConstantOrZeroOtherwise(allProducedPayloadSizes); - - return _resultFactory.createForProducer( - getName(), - registeredClientName, - _command, - acknowledgeMode, - numberOfMessagesSent, - payloadSize, totalPayloadSizeOfAllMessagesSent, start, end); - } - - private int getPayloadSizeForResultIfConstantOrZeroOtherwise(NavigableSet<Integer> allPayloadSizes) - { - return allPayloadSizes.size() == 1 ? allPayloadSizes.first() : 0; - } - - private void doSleepForStartDelay() - { - long sleepTime = _command.getStartDelay(); - if (sleepTime > 0) - { - LOGGER.debug("{} sleeping for {} milliseconds before starting", getName(), sleepTime); - // start delay is specified. Sleeping... - doSleep(sleepTime); - } - } - - private void doSleepForInterval() throws InterruptedException - { - long sleepTime = _command.getInterval(); - if (sleepTime > 0) - { - doSleep(sleepTime); - } - } - - private void doSleep(long sleepTime) - { - try - { - Thread.sleep(sleepTime); - } - catch (final InterruptedException e) - { - Thread.currentThread().interrupt(); - } - } - - @Override - public void releaseResources() - { - if (_limiter != null) - { - _limiter.shutdown(); - } - _jmsDelegate.closeTestProducer(_command.getParticipantName()); - } - - @Override - public String getName() - { - return _command.getParticipantName(); - } - - @Override - public String toString() - { - return "ProducerParticipant [command=" + _command + "]"; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/GeneratedPropertySupport.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/GeneratedPropertySupport.java deleted file mode 100644 index a49ebf756e..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/GeneratedPropertySupport.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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.disttest.client.property; - -/** - * Provides support to generate message property values. - */ -public abstract class GeneratedPropertySupport implements GeneratedPropertyValue -{ - private Object _lastValue; - - public GeneratedPropertySupport() - { - super(); - _lastValue = null; - } - - @Override - public Object getValue() - { - Object result = nextValue(); - result = evaluate(result); - synchronized(this) - { - _lastValue = result; - } - return result; - } - - protected Object evaluate(Object result) - { - while (result instanceof PropertyValue) - { - result = ((PropertyValue)result).getValue(); - } - return result; - } - - public abstract Object nextValue(); - - public synchronized Object getLastValue() - { - return _lastValue; - } - - @Override - public String toString() - { - return "GeneratedPropertyValue [value=" + getLastValue() + ", @def=" + getDefinition() + "]"; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/GeneratedPropertyValue.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/GeneratedPropertyValue.java deleted file mode 100644 index 39c093fac5..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/GeneratedPropertyValue.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * 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.disttest.client.property; - -/** - * Provides operations to generate message property values. - */ -public interface GeneratedPropertyValue extends PropertyValue -{ - public String getDefinition(); -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/ListPropertyValue.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/ListPropertyValue.java deleted file mode 100644 index 4444351976..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/ListPropertyValue.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * 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.disttest.client.property; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * Provides property values from the underlining list of items. - */ -public class ListPropertyValue extends GeneratedPropertySupport -{ - public static final String DEF_VALUE = "list"; - private List<PropertyValue> _items; - private boolean _cyclic; - private int _currentIndex; - - public ListPropertyValue() - { - super(); - _cyclic = true; - _currentIndex = 0; - _items = new ArrayList<PropertyValue>(); - } - - public synchronized void setItems(List<PropertyValue> items) - { - _items = new ArrayList<PropertyValue>(items); - } - - public synchronized List<PropertyValue> getItems() - { - return Collections.unmodifiableList(_items); - } - - public synchronized void setCyclic(boolean cyclic) - { - _cyclic = cyclic; - } - - public synchronized boolean isCyclic() - { - return _cyclic; - } - - @Override - public synchronized Object nextValue() - { - if (_currentIndex >= _items.size()) - { - if (_cyclic) - { - _currentIndex = 0; - } - else - { - _currentIndex = _items.size() -1; - } - } - Object nextValue = _items.get(_currentIndex); - _currentIndex++; - return nextValue; - } - - @Override - public String getDefinition() - { - return DEF_VALUE; - } - - @Override - public int hashCode() - { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + _currentIndex; - result = prime * result + (_cyclic ? 1231 : 1237); - result = prime * result + ((_items == null) ? 0 : _items.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - { - return true; - } - if (obj == null || !(obj instanceof ListPropertyValue)) - { - return false; - } - ListPropertyValue other = (ListPropertyValue) obj; - if (_cyclic != other._cyclic) - { - return false; - } - if (_items == null && other._items != null) - { - return false; - } - return _items.equals(other._items); - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/NumericGeneratedPropertySupport.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/NumericGeneratedPropertySupport.java deleted file mode 100644 index 1cb938e915..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/NumericGeneratedPropertySupport.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * 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.disttest.client.property; - -import java.util.Arrays; - -/** - * Provides support for numeric generators with lower and upper boundaries. - */ -public abstract class NumericGeneratedPropertySupport extends GeneratedPropertySupport -{ - public static final Class<?>[] SUPPORTED_TYPES = { double.class, float.class, int.class, long.class, short.class, - byte.class }; - - private String _type; - private double _upper; - private double _lower; - - - public NumericGeneratedPropertySupport() - { - super(); - _type = SUPPORTED_TYPES[0].getName(); - _upper = Double.MAX_VALUE; - _lower = 0.0; - } - - public synchronized String getType() - { - return _type; - } - - public synchronized double getUpper() - { - return _upper; - } - - public synchronized double getLower() - { - return _lower; - } - - public synchronized void setUpper(double upper) - { - _upper = upper; - } - - public synchronized void setLower(double lower) - { - _lower = lower; - } - - public synchronized void setType(String type) - { - _type = toClass(type).getName(); - } - - protected Class<?> toClass(String type) - { - Class<?> t = null; - for (int i = 0; i < SUPPORTED_TYPES.length; i++) - { - if (SUPPORTED_TYPES[i].getName().equals(type)) - { - t = SUPPORTED_TYPES[i]; - break; - } - } - if (t == null) - { - throw new IllegalArgumentException("Type " + type + " is not supported: " - + Arrays.toString(SUPPORTED_TYPES)); - } - return t; - } - - @Override - public Object nextValue() - { - double result = nextDouble(); - return doubleToNumber(result, toClass(_type)); - } - - protected Number doubleToNumber(double value, Class<?> targetType) - { - Number result = null; - if (targetType == double.class) - { - result = value; - } - else if (targetType == float.class) - { - result = (float) value; - } - else if (targetType == int.class) - { - result = (int) value; - } - else if (targetType == long.class) - { - result = (long) value; - } - else if (targetType == short.class) - { - result = (short) value; - } - else if (targetType == byte.class) - { - result = (byte) value; - } - else - { - throw new IllegalArgumentException("Type " + targetType + " is not supported: " - + Arrays.toString(SUPPORTED_TYPES)); - } - return result; - } - - protected abstract double nextDouble(); - - @Override - public int hashCode() - { - final int prime = 31; - int result = super.hashCode(); - long temp; - temp = Double.doubleToLongBits(_lower); - result = prime * result + (int) (temp ^ (temp >>> 32)); - result = prime * result + ((_type == null) ? 0 : _type.hashCode()); - temp = Double.doubleToLongBits(_upper); - result = prime * result + (int) (temp ^ (temp >>> 32)); - return result; - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - { - return true; - } - if (obj == null || !(obj instanceof NumericGeneratedPropertySupport)) - { - return false; - } - NumericGeneratedPropertySupport other = (NumericGeneratedPropertySupport) obj; - if (Double.doubleToLongBits(_lower) != Double.doubleToLongBits(other._lower) - || Double.doubleToLongBits(_upper) != Double.doubleToLongBits(other._upper)) - { - return false; - } - if (_type == null && other._type != null) - { - return false; - } - else if (!_type.equals(other._type)) - { - return false; - } - return true; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/PropertyValue.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/PropertyValue.java deleted file mode 100644 index 97adc0cee1..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/PropertyValue.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * 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.disttest.client.property; - -/** - * Provides operations to get a message property value. - */ -public interface PropertyValue -{ - public Object getValue(); -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/PropertyValueFactory.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/PropertyValueFactory.java deleted file mode 100644 index fa44b2da1e..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/PropertyValueFactory.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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.disttest.client.property; - -import org.apache.commons.lang.StringUtils; -import org.apache.qpid.disttest.DistributedTestException; - -/** - * Creates property value instances using given alias (type) value. - */ -public class PropertyValueFactory -{ - public PropertyValue createPropertyValue(String type) - { - try - { - return (PropertyValue)getPropertyValueClass(type).newInstance(); - } - catch(Exception e) - { - throw new DistributedTestException("Unable to create a generator for a type:" + type, e); - } - } - - public Class<?> getPropertyValueClass(String type) throws ClassNotFoundException - { - String className = "org.apache.qpid.disttest.client.property." + StringUtils.capitalize(type) + "PropertyValue"; - return Class.forName(className); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/RandomPropertyValue.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/RandomPropertyValue.java deleted file mode 100644 index 4f44a4bca8..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/RandomPropertyValue.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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.disttest.client.property; - -/** - * Generates random property values in a given lower and upper boundaries. - */ -public class RandomPropertyValue extends NumericGeneratedPropertySupport -{ - public static final String DEF_VALUE = "random"; - - public RandomPropertyValue() - { - super(); - } - - @Override - protected double nextDouble() - { - double lower = getLower(); - double upper = getUpper(); - return lower + Math.random() * (upper - lower); - } - - @Override - public String getDefinition() - { - return DEF_VALUE; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/RangePropertyValue.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/RangePropertyValue.java deleted file mode 100644 index 3aca4d4bca..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/RangePropertyValue.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * 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.disttest.client.property; - -/** - * Generates property values from a range with given lower and upper boundaries. - */ -public class RangePropertyValue extends NumericGeneratedPropertySupport -{ - public static final String DEF_VALUE = "range"; - private double _step; - private double _currentValue; - private boolean _cyclic; - - public RangePropertyValue() - { - super(); - _cyclic = true; - _currentValue = 0.0; - _step = 1.0; - } - - public synchronized double getStep() - { - return _step; - } - - public synchronized boolean isCyclic() - { - return _cyclic; - } - - public synchronized void setCyclic(boolean cyclic) - { - _cyclic = cyclic; - } - - public synchronized void setStep(double step) - { - _step = step; - } - - @Override - public synchronized double nextDouble() - { - double result = 0.0; - double lower = getLower(); - double upper = getUpper(); - if (_currentValue < lower) - { - _currentValue = lower; - } - else if (_currentValue > upper) - { - if (_cyclic) - { - _currentValue = lower; - } - else - { - _currentValue = upper; - } - } - result = _currentValue; - _currentValue += _step; - return result; - } - - @Override - public String getDefinition() - { - return DEF_VALUE; - } - - @Override - public int hashCode() - { - final int prime = 31; - int result = super.hashCode(); - long temp; - temp = Double.doubleToLongBits(_currentValue); - result = prime * result + (int) (temp ^ (temp >>> 32)); - result = prime * result + (_cyclic ? 1231 : 1237); - temp = Double.doubleToLongBits(_step); - result = prime * result + (int) (temp ^ (temp >>> 32)); - return result; - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - { - return true; - } - if (!(obj instanceof RangePropertyValue)) - { - return false; - } - if (!super.equals(obj)) - { - return false; - } - RangePropertyValue other = (RangePropertyValue) obj; - if (Double.doubleToLongBits(_currentValue) != Double.doubleToLongBits(other._currentValue) - || Double.doubleToLongBits(_step) != Double.doubleToLongBits(other._step) || _cyclic != other._cyclic) - { - return false; - } - - return true; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/SimplePropertyValue.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/SimplePropertyValue.java deleted file mode 100644 index 9141e68656..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/property/SimplePropertyValue.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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.disttest.client.property; - -/** - * Simple property value holder for a constant properties. - */ -public class SimplePropertyValue implements PropertyValue -{ - private Object _value; - - public SimplePropertyValue() - { - super(); - } - - public SimplePropertyValue(Object value) - { - super(); - this._value = value; - } - - @Override - public Object getValue() - { - return _value; - } - - @Override - public String toString() - { - return "SimplePropertyValue [value=" + _value + "]"; - } - - @Override - public int hashCode() - { - final int prime = 31; - int result = 1; - result = prime * result + ((_value == null) ? 0 : _value.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - { - return true; - } - if (obj == null || getClass() != obj.getClass()) - { - return false; - } - SimplePropertyValue other = (SimplePropertyValue) obj; - if (_value == null && other._value != null) - { - return false; - } - return _value.equals(other._value); - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithLimits.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithLimits.java deleted file mode 100644 index f64107c125..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithLimits.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.disttest.client.utils; - -import java.util.concurrent.Callable; -import java.util.concurrent.CancellationException; - -/** - * Implementations of this interface execute a {@link Callable} but place some - * kind of limit on that execution, such as time. - */ -public interface ExecutorWithLimits -{ - <T> T execute(Callable<T> callback) throws CancellationException, Exception; - - void shutdown(); - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithLimitsFactory.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithLimitsFactory.java deleted file mode 100644 index 4d17d76568..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithLimitsFactory.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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.disttest.client.utils; - -import java.util.concurrent.Callable; - -public class ExecutorWithLimitsFactory -{ - /** - * Creates an {@link ExecutorWithLimits} that will permit the execution of {@link Callable} implementations until - * until <code>allowedTimeInMillis</code> milliseconds have elapsed beyond <code>startTime</code>. - * If <code>allowedTimeInMillis</code> is less than or equal to zero, a {@link ExecutorWithNoLimits} - * is created that enforces no time-limit. - * - * @param startTime start time (milliseconds) - * @param allowedTimeInMillis allowed time (milliseconds) - * - * @return ExecutionLimiter implementation - */ - public static ExecutorWithLimits createExecutorWithLimit(long startTime, long allowedTimeInMillis) - { - if (allowedTimeInMillis > 0) - { - return new ExecutorWithTimeLimit(startTime, allowedTimeInMillis); - } - else - { - return new ExecutorWithNoLimits(); - } - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithNoLimits.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithNoLimits.java deleted file mode 100644 index f729a72fa5..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithNoLimits.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.disttest.client.utils; - -import java.util.concurrent.Callable; - -/** - * Executes a {@link Callable} without any limits. - */ -public class ExecutorWithNoLimits implements ExecutorWithLimits -{ - - @Override - public <T> T execute(Callable<T> _callback) throws Exception - { - return _callback.call(); - } - - @Override - public void shutdown() - { - // Deliberately blank - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithTimeLimit.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithTimeLimit.java deleted file mode 100644 index 4fa3960d92..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/client/utils/ExecutorWithTimeLimit.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * 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.disttest.client.utils; - -import java.util.Collections; -import java.util.List; -import java.util.concurrent.Callable; -import java.util.concurrent.CancellationException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; - -/** - * Executes a {@link Callable} but limits the execution time. If the execution - * time is exceeded the callable will be cancelled. - */ -public class ExecutorWithTimeLimit implements ExecutorWithLimits -{ - private final long _endTime; - private final ExecutorService _singleThreadExecutor = Executors.newSingleThreadExecutor(); - - public ExecutorWithTimeLimit(long startTime, long allowedTimeInMillis) - { - _endTime = startTime + allowedTimeInMillis; - } - - @Override - public <T> T execute(Callable<T> callback) throws CancellationException, Exception - { - final long timeRemaining = _endTime - System.currentTimeMillis(); - if (timeRemaining <= 0) - { - throw new CancellationException("Too little time remains to schedule callable"); - } - - List<Future<T>> l = _singleThreadExecutor.invokeAll(Collections.singletonList(callback), timeRemaining, TimeUnit.MILLISECONDS); - return l.get(0).get(); - } - - @Override - public void shutdown() - { - _singleThreadExecutor.shutdown(); - } - - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ClientRegistry.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ClientRegistry.java deleted file mode 100644 index 559bdf2451..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ClientRegistry.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * 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.disttest.controller; - -import static java.lang.String.valueOf; - -import java.util.Collection; -import java.util.Collections; -import java.util.Set; -import java.util.concurrent.ConcurrentSkipListSet; - -import org.apache.qpid.disttest.DistributedTestException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ClientRegistry -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ClientRegistry.class); - - private final Set<String> _registeredClientNames = new ConcurrentSkipListSet<String>(); - - private final Object _lock = new Object(); - - public void registerClient(String clientName) - { - final boolean alreadyContainsClient = !_registeredClientNames.add(clientName); - if (alreadyContainsClient) - { - throw new DistributedTestException("Duplicate client name " + clientName); - } - - synchronized (_lock) - { - _lock.notifyAll(); - } - - if (LOGGER.isInfoEnabled()) - { - LOGGER.info("Client registered: " + clientName); - } - } - - - public Collection<String> getClients() - { - return Collections.unmodifiableSet(_registeredClientNames); - } - - /** - * @return the number of clients that are still absent. - */ - public int awaitClients(final int numberOfClientsToAwait, final long idleTimeout) - { - long startTime = System.currentTimeMillis(); - long deadlineForNextRegistration = deadline(idleTimeout); - - synchronized (_lock) - { - int numberOfClientsAbsent = numberAbsent(numberOfClientsToAwait); - - while(numberOfClientsAbsent > 0 && System.currentTimeMillis() < deadlineForNextRegistration) - { - try - { - _lock.wait(idleTimeout); - } - catch (InterruptedException e) - { - Thread.currentThread().interrupt(); - return numberOfClientsAbsent; - } - - int newNumberAbsent = numberAbsent(numberOfClientsToAwait); - if(newNumberAbsent < numberOfClientsAbsent) - { - // a registration was received since the last loop, so reset the timeout - deadlineForNextRegistration = deadline(idleTimeout); - } - - numberOfClientsAbsent = newNumberAbsent; - } - - int retVal = numberOfClientsAbsent < 0 ? 0 : numberOfClientsAbsent; - logAwaitClients(numberOfClientsToAwait, idleTimeout, startTime, retVal); - return retVal; - } - } - - - private void logAwaitClients(int numberOfClientsToAwait, long idleTimeout, long startTime, int retVal) - { - LOGGER.debug( - "awaitClients(numberOfClientsToAwait={}, idleTimeout={}) " + - "returning numberOfClientsAbsent={} after {} ms", - new Object[] { - valueOf(numberOfClientsToAwait), - valueOf(idleTimeout), - valueOf(retVal), - valueOf(System.currentTimeMillis() - startTime)}); - } - - private long deadline(final long idleTimeout) - { - return System.currentTimeMillis() + idleTimeout; - } - - private int numberAbsent(int numberOfClientsToAwait) - { - return numberOfClientsToAwait - _registeredClientNames.size(); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/CommandForClient.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/CommandForClient.java deleted file mode 100644 index 6c0c253807..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/CommandForClient.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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.disttest.controller; - -import org.apache.qpid.disttest.message.Command; - -public class CommandForClient -{ - private String _clientName; - private Command _command; - - public CommandForClient(String clientName, Command command) - { - _clientName = clientName; - _command = command; - } - - public String getClientName() - { - return _clientName; - } - - public Command getCommand() - { - return _command; - } - - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/CommandListener.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/CommandListener.java deleted file mode 100644 index e2f40bebe8..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/CommandListener.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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.disttest.controller; - -import org.apache.qpid.disttest.message.Command; - -public interface CommandListener -{ - - public abstract void processCommand(Command command); - - public boolean supports(Command command); - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/Controller.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/Controller.java deleted file mode 100644 index 513e633566..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/Controller.java +++ /dev/null @@ -1,231 +0,0 @@ -/* - * 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.disttest.controller; - -import java.util.Collection; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.controller.config.Config; -import org.apache.qpid.disttest.controller.config.TestInstance; -import org.apache.qpid.disttest.jms.ControllerJmsDelegate; -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CommandType; -import org.apache.qpid.disttest.message.RegisterClientCommand; -import org.apache.qpid.disttest.message.Response; -import org.apache.qpid.disttest.message.StopClientCommand; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class Controller -{ - private static final Logger LOGGER = LoggerFactory.getLogger(Controller.class); - - private final long _registrationTimeout; - private final long _commandResponseTimeout; - - private final ControllerJmsDelegate _jmsDelegate; - - private volatile CountDownLatch _stopClientsResponseLatch = null; - - private Config _config; - private TestRunnerFactory _testRunnerFactory; - private ClientRegistry _clientRegistry; - - private long _testResultTimeout = TestRunner.WAIT_FOREVER; - - public Controller(final ControllerJmsDelegate jmsDelegate, long registrationTimeout, long commandResponseTimeout) - { - _jmsDelegate = jmsDelegate; - _registrationTimeout = registrationTimeout; - _commandResponseTimeout = commandResponseTimeout; - _testRunnerFactory = new TestRunnerFactory(); - _clientRegistry = new ClientRegistry(); - - _jmsDelegate.addCommandListener(new RegisterClientCommandListener()); - _jmsDelegate.addCommandListener(new StopClientResponseListener()); - _jmsDelegate.start(); - } - - public void setConfig(Config config) - { - _config = config; - validateConfiguration(); - } - - public void awaitClientRegistrations() - { - LOGGER.info("Awaiting client registrations"); - - final int numberOfAbsentClients = _clientRegistry.awaitClients(_config.getTotalNumberOfClients(), _registrationTimeout); - if (numberOfAbsentClients > 0) - { - String formattedMessage = String.format("Timed out waiting for registrations. Expecting %d more registrations", numberOfAbsentClients); - throw new DistributedTestException(formattedMessage); - } - - } - - private void validateConfiguration() - { - if (_config == null || _config.getTotalNumberOfClients() == 0) - { - throw new DistributedTestException("No controller config or no clients specified in test config"); - } - } - - private void awaitStopResponses(CountDownLatch latch, long timeout) - { - String message = "Timed out after %d waiting for stop command responses. Expecting %d more responses."; - - try - { - boolean countedDownOK = latch.await(timeout, TimeUnit.MILLISECONDS); - if (!countedDownOK) - { - long latchCount = latch.getCount(); - String formattedMessage = String.format(message, timeout, latchCount); - LOGGER.error(formattedMessage); - throw new DistributedTestException(formattedMessage); - } - } - catch (final InterruptedException e) - { - Thread.currentThread().interrupt(); - } - } - - public void registerClient(final RegisterClientCommand registrationCommand) - { - final String clientName = registrationCommand.getClientName(); - - _jmsDelegate.registerClient(registrationCommand); - _clientRegistry.registerClient(clientName); - } - - void processStopClientResponse(final Response response) - { - // TODO clientRegistry should expose a deregisterClient - _stopClientsResponseLatch.countDown(); - if (response.hasError()) - { - LOGGER.error("Client " + response.getRegisteredClientName() + " reported exception in response to command : " + - response.getErrorMessage()); - } - } - - public void stopAllRegisteredClients() - { - Collection<String> registeredClients = _clientRegistry.getClients(); - - LOGGER.info("Stopping all clients"); - _stopClientsResponseLatch = new CountDownLatch(registeredClients.size()); - Command command = new StopClientCommand(); - for (final String clientName : registeredClients) - { - _jmsDelegate.sendCommandToClient(clientName, command); - } - - awaitStopResponses(_stopClientsResponseLatch, _commandResponseTimeout); - - LOGGER.info("Stopped all clients"); - } - - - public ResultsForAllTests runAllTests() - { - LOGGER.info("Running all tests"); - - ResultsForAllTests resultsForAllTests = new ResultsForAllTests(); - - for (TestInstance testInstance : _config.getTests()) - { - - ParticipatingClients participatingClients = new ParticipatingClients(_clientRegistry, testInstance.getClientNames()); - - LOGGER.info("Running test " + testInstance + ". Participating clients: " + participatingClients.getRegisteredNames()); - TestRunner runner = _testRunnerFactory.createTestRunner(participatingClients, - testInstance, - _jmsDelegate, - _commandResponseTimeout, - _testResultTimeout); - - TestResult testResult = runner.run(); - LOGGER.info("Finished test " + testInstance); - - resultsForAllTests.add(testResult); - } - - return resultsForAllTests; - } - - private final class StopClientResponseListener implements CommandListener - { - @Override - public boolean supports(Command command) - { - return command.getType() == CommandType.RESPONSE && ((Response)command).getInReplyToCommandType() == CommandType.STOP_CLIENT; - } - - @Override - public void processCommand(Command command) - { - processStopClientResponse((Response)command); - } - } - - private final class RegisterClientCommandListener implements - CommandListener - { - @Override - public boolean supports(Command command) - { - return command.getType() == CommandType.REGISTER_CLIENT; - } - - @Override - public void processCommand(Command command) - { - registerClient((RegisterClientCommand)command); - } - } - - public void setTestResultTimeout(final long testResultTimeout) - { - _testResultTimeout = testResultTimeout; - - } - - void setClientRegistry(ClientRegistry clientRegistry) - { - _clientRegistry = clientRegistry; - - } - - void setTestRunnerFactory(TestRunnerFactory factory) - { - if (factory == null) - { - throw new IllegalArgumentException("TestRunnerFactory cannot be null!"); - } - _testRunnerFactory = factory; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ParticipatingClients.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ParticipatingClients.java deleted file mode 100644 index 077d628697..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ParticipatingClients.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * 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.disttest.controller; - -import java.util.Collection; -import java.util.List; -import java.util.TreeSet; - -import org.apache.commons.collections.BidiMap; -import org.apache.commons.collections.bidimap.DualHashBidiMap; -import org.apache.commons.lang.builder.ToStringBuilder; -import org.apache.commons.lang.builder.ToStringStyle; - -public class ParticipatingClients -{ - private final BidiMap _configuredToRegisteredNameMap; - - public ParticipatingClients(ClientRegistry clientRegistry, List<String> configuredClientNamesForTest) - { - _configuredToRegisteredNameMap = mapConfiguredToRegisteredClientNames(configuredClientNamesForTest, clientRegistry); - } - - public String getRegisteredNameFromConfiguredName(String clientConfiguredName) - { - String registeredClientName = (String) _configuredToRegisteredNameMap.get(clientConfiguredName); - if (registeredClientName == null) - { - throw new IllegalArgumentException("Unrecognised client configured name " + clientConfiguredName - + " Mapping is " + _configuredToRegisteredNameMap); - } - return registeredClientName; - } - - public String getConfiguredNameFromRegisteredName(String registeredClientName) - { - String clientConfiguredName = (String) _configuredToRegisteredNameMap.getKey(registeredClientName); - if (clientConfiguredName == null) - { - throw new IllegalArgumentException("Unrecognised client registered name " + registeredClientName - + " Mapping is " + _configuredToRegisteredNameMap); - } - - return clientConfiguredName; - } - - private BidiMap mapConfiguredToRegisteredClientNames(List<String> configuredClientNamesForTest, ClientRegistry clientRegistry) - { - BidiMap configuredToRegisteredNameMap = new DualHashBidiMap(); - - TreeSet<String> registeredClients = new TreeSet<String>(clientRegistry.getClients()); - for (String configuredClientName : configuredClientNamesForTest) - { - String allocatedClientName = registeredClients.pollFirst(); - if (allocatedClientName == null) - { - throw new IllegalArgumentException("Too few clients in registry " + clientRegistry + " configured clients " + configuredClientNamesForTest); - } - configuredToRegisteredNameMap.put(configuredClientName, allocatedClientName); - } - - return configuredToRegisteredNameMap; - } - - @SuppressWarnings("unchecked") - public Collection<String> getRegisteredNames() - { - return _configuredToRegisteredNameMap.values(); - } - - @Override - public String toString() - { - return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) - .append("configuredToRegisteredNameMap", _configuredToRegisteredNameMap).toString(); - } - - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ResultsForAllTests.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ResultsForAllTests.java deleted file mode 100644 index d4474e2c12..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/ResultsForAllTests.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 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.disttest.controller; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.results.aggregation.ITestResult; -import org.apache.qpid.disttest.results.aggregation.TestResultAggregator; - -public class ResultsForAllTests -{ - private List<ITestResult> _results = new ArrayList<ITestResult>(); - private boolean _hasErrors; - - public List<ITestResult> getTestResults() - { - return _results; - } - - public void add(ITestResult testResult) - { - _results.add(testResult); - if(testResult.hasErrors()) - { - _hasErrors = true; - } - } - - public boolean hasErrors() - { - return _hasErrors; - } - - public ResultsForAllTests getAllParticipantsResult() - { - ResultsForAllTests summaryResultsForAllTests = new ResultsForAllTests(); - - for (ITestResult testResult : _results) - { - for(ParticipantResult participantResult : testResult.getParticipantResults()) - { - if(TestResultAggregator.ALL_CONSUMER_PARTICIPANTS_NAME.equals(participantResult.getParticipantName())) - { - TestResult summaryTestResult = new TestResult(testResult.getName()); - summaryTestResult.addParticipantResult(participantResult); - summaryResultsForAllTests.add(summaryTestResult); - } - } - } - return summaryResultsForAllTests; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/TestResult.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/TestResult.java deleted file mode 100644 index 756c641532..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/TestResult.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 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.disttest.controller; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.SortedSet; -import java.util.TreeSet; - -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.results.aggregation.ITestResult; - -public class TestResult implements ITestResult -{ - private final SortedSet<ParticipantResult> _participantResults = Collections.synchronizedSortedSet( - new TreeSet<ParticipantResult>(ParticipantResult.PARTICIPANT_NAME_COMPARATOR)); - - private boolean _hasErrors; - private String _name; - - public TestResult(String name) - { - _name = name; - } - - @Override - public List<ParticipantResult> getParticipantResults() - { - List<ParticipantResult> list = new ArrayList<ParticipantResult>(_participantResults); - return Collections.unmodifiableList(list); - } - - public void addParticipantResult(ParticipantResult participantResult) - { - _participantResults.add(participantResult); - if(participantResult.hasError()) - { - _hasErrors = true; - } - } - - @Override - public boolean hasErrors() - { - return _hasErrors; - } - - @Override - public String getName() - { - return _name; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/TestRunner.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/TestRunner.java deleted file mode 100644 index a60a7ec88f..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/TestRunner.java +++ /dev/null @@ -1,348 +0,0 @@ -/* - * 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.disttest.controller; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.controller.config.QueueConfig; -import org.apache.qpid.disttest.controller.config.TestInstance; -import org.apache.qpid.disttest.jms.ControllerJmsDelegate; -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CommandType; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.Response; -import org.apache.qpid.disttest.message.StartTestCommand; -import org.apache.qpid.disttest.message.TearDownTestCommand; - -public class TestRunner -{ - private static final Logger LOGGER = LoggerFactory.getLogger(TestRunner.class); - - private static final long PARTICIPANT_RESULTS_LOG_INTERVAL = 60000; - public static final long WAIT_FOREVER = -1; - - private final long _commandResponseTimeout; - - private final Set<CommandType> _setOfResponsesToExpect = Collections.synchronizedSet(new HashSet<CommandType>()); - - private final ParticipatingClients _participatingClients; - - private final TestInstance _testInstance; - private ControllerJmsDelegate _jmsDelegate; - - private volatile CountDownLatch _commandResponseLatch = null; - private final CountDownLatch _testResultsLatch; - private final TestResult _testResult; - - /** Length of time to await test results or {@value #WAIT_FOREVER} */ - private final long _testResultTimeout; - - private Thread _removeQueuesShutdownHook = new Thread() - { - @Override - public void run() - { - LOGGER.info("Shutdown intercepted: deleting test queues"); - try - { - deleteQueues(); - } - catch (Exception t) - { - LOGGER.error("Failed to delete test queues during shutdown", t); - } - } - }; - - public TestRunner(ParticipatingClients participatingClients, TestInstance testInstance, ControllerJmsDelegate jmsDelegate, long commandResponseTimeout, long testResultTimeout) - { - _participatingClients = participatingClients; - _testInstance = testInstance; - _jmsDelegate = jmsDelegate; - _commandResponseTimeout = commandResponseTimeout; - _testResultsLatch = new CountDownLatch(testInstance.getTotalNumberOfParticipants()); - _testResultTimeout = testResultTimeout; - _testResult = new TestResult(testInstance.getName()); - } - - public TestResult run() - { - final ParticipantResultListener participantResultListener = new ParticipantResultListener(); - TestCommandResponseListener testCommandResponseListener = new TestCommandResponseListener(); - - try - { - _jmsDelegate.addCommandListener(testCommandResponseListener); - _jmsDelegate.addCommandListener(participantResultListener); - - runParts(); - - return _testResult; - } - catch(RuntimeException e) - { - LOGGER.error("Couldn't run test", e); - throw e; - } - finally - { - _jmsDelegate.removeCommandListener(participantResultListener); - _jmsDelegate.removeCommandListener(testCommandResponseListener); - } - } - - private void runParts() - { - boolean queuesCreated = false; - - try - { - createQueues(); - queuesCreated = true; - Runtime.getRuntime().addShutdownHook(_removeQueuesShutdownHook); - - sendTestSetupCommands(); - awaitCommandResponses(); - sendCommandToParticipatingClients(new StartTestCommand()); - awaitCommandResponses(); - - awaitTestResults(); - - sendCommandToParticipatingClients(new TearDownTestCommand()); - awaitCommandResponses(); - } - finally - { - - if (queuesCreated) - { - deleteQueues(); - } - - Runtime.getRuntime().removeShutdownHook(_removeQueuesShutdownHook); - } - } - - void createQueues() - { - List<QueueConfig> queues = _testInstance.getQueues(); - if (!queues.isEmpty()) - { - _jmsDelegate.createQueues(queues); - } - } - - void sendTestSetupCommands() - { - List<CommandForClient> commandsForAllClients = _testInstance.createCommands(); - final int numberOfCommandsToSend = commandsForAllClients.size(); - _commandResponseLatch = new CountDownLatch(numberOfCommandsToSend); - - LOGGER.debug("About to send {} command(s)", numberOfCommandsToSend); - - for (CommandForClient commandForClient : commandsForAllClients) - { - String configuredClientName = commandForClient.getClientName(); - String registeredClientName = _participatingClients.getRegisteredNameFromConfiguredName(configuredClientName); - - Command command = commandForClient.getCommand(); - - LOGGER.debug("Sending command : {} ", command); - - sendCommandInternal(registeredClientName, command); - } - } - - void awaitCommandResponses() - { - awaitLatch(_commandResponseLatch, _commandResponseTimeout, "Timed out waiting for command responses"); - } - - - void processCommandResponse(final Response response) - { - if (LOGGER.isDebugEnabled()) - { - LOGGER.debug("Received response for command " + response); - } - - _commandResponseLatch.countDown(); - checkForResponseError(response); - } - - - void awaitTestResults() - { - long timeout = _testResultTimeout; - DistributedTestException lastException = null; - - boolean waitForever = _testResultTimeout == WAIT_FOREVER; - final long interval = waitForever ? PARTICIPANT_RESULTS_LOG_INTERVAL : Math.min(PARTICIPANT_RESULTS_LOG_INTERVAL, _testResultTimeout); - - while(_testResultsLatch.getCount() > 0 && (waitForever || timeout > 0)) - { - try - { - awaitLatch(_testResultsLatch, interval, "still waiting for participant results"); - } - catch (DistributedTestException e) - { - lastException = e; - LOGGER.info(e.getMessage()); - } - - if (!waitForever) - { - timeout =- interval; - } - } - - if (_testResultsLatch.getCount() > 0) - { - throw lastException; - } - } - - void deleteQueues() - { - List<QueueConfig> queues = _testInstance.getQueues(); - if (!queues.isEmpty()) - { - _jmsDelegate.deleteQueues(queues); - } - } - - void sendCommandToParticipatingClients(final Command command) - { - Collection<String> participatingRegisteredClients = _participatingClients.getRegisteredNames(); - final int numberOfClients = participatingRegisteredClients.size(); - _commandResponseLatch = new CountDownLatch(numberOfClients); - - LOGGER.debug("About to send command {} to {} clients", command, numberOfClients); - - for (final String clientName : participatingRegisteredClients) - { - LOGGER.debug("Sending command : {} ", command); - sendCommandInternal(clientName, command); - } - } - - public void processParticipantResult(ParticipantResult result) - { - setOriginalTestDetailsOn(result); - - _testResult.addParticipantResult(result); - LOGGER.debug("Received result " + result); - - _testResultsLatch.countDown(); - checkForResponseError(result); - } - - private void setOriginalTestDetailsOn(ParticipantResult result) - { - // Client knows neither the configured client name nor test name - String registeredClientName = result.getRegisteredClientName(); - String configuredClient = _participatingClients.getConfiguredNameFromRegisteredName(registeredClientName); - - result.setConfiguredClientName(configuredClient); - result.setTestName(_testInstance.getName()); - result.setIterationNumber(_testInstance.getIterationNumber()); - } - - private void sendCommandInternal(String registeredClientName, Command command) - { - _setOfResponsesToExpect.add(command.getType()); - _jmsDelegate.sendCommandToClient(registeredClientName, command); - } - - private void awaitLatch(CountDownLatch latch, long timeout, String message) - { - try - { - final boolean countedDownOK = latch.await(timeout, TimeUnit.MILLISECONDS); - if (!countedDownOK) - { - final long latchCount = latch.getCount(); - String formattedMessage = "After " + timeout + "ms ... " + message + " ... Expecting " + latchCount + " more responses."; - LOGGER.info(formattedMessage); // info rather than error because we time out periodically so we can log progress - throw new DistributedTestException(formattedMessage); - } - } - catch (final InterruptedException e) - { - Thread.currentThread().interrupt(); - } - } - - private void checkForResponseError(final Response response) - { - if (response.hasError()) - { - LOGGER.error("Client " + response.getRegisteredClientName() + " reported error " + response); - } - } - - final class ParticipantResultListener implements CommandListener - { - @Override - public boolean supports(Command command) - { - return command instanceof ParticipantResult; - } - - @Override - public void processCommand(Command command) - { - processParticipantResult((ParticipantResult) command); - - } - } - - final class TestCommandResponseListener implements CommandListener - { - @Override - public void processCommand(Command command) - { - processCommandResponse((Response)command); - } - - @Override - public boolean supports(Command command) - { - CommandType type = command.getType(); - if (type == CommandType.RESPONSE) - { - Response response = (Response)command; - return _setOfResponsesToExpect.contains(response.getInReplyToCommandType()); - } - return false; - } - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/TestRunnerFactory.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/TestRunnerFactory.java deleted file mode 100644 index bf0e5afb9c..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/TestRunnerFactory.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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.disttest.controller; - -import org.apache.qpid.disttest.controller.config.TestInstance; -import org.apache.qpid.disttest.jms.ControllerJmsDelegate; - -public class TestRunnerFactory -{ - public TestRunner createTestRunner(ParticipatingClients participatingClients, TestInstance testInstance, ControllerJmsDelegate jmsDelegate, long commandResponseTimeout, long testResultTimeout) - { - return new TestRunner(participatingClients, testInstance, jmsDelegate, commandResponseTimeout, testResultTimeout); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ClientConfig.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ClientConfig.java deleted file mode 100644 index 4353a85cd3..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ClientConfig.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import org.apache.qpid.disttest.controller.CommandForClient; -import org.apache.qpid.disttest.message.Command; - -public class ClientConfig -{ - /* - * TODO add this field when repeating groups of clients need to be used. Talk to Phil and Keith! - * private int _instances; - */ - - private List<ConnectionConfig> _connections; - private List<MessageProviderConfig> _messageProviders; - private String _name; - - public ClientConfig() - { - _name = null; - _connections = Collections.emptyList(); - _messageProviders = Collections.emptyList(); - } - - public ClientConfig(String name, ConnectionConfig... connections) - { - this(name, Arrays.asList(connections), null); - } - - public ClientConfig(String name, List<ConnectionConfig> connections, List<MessageProviderConfig> messageProviders) - { - _name = name; - _connections = connections; - if (messageProviders == null) - { - _messageProviders = Collections.emptyList(); - } - else - { - _messageProviders = messageProviders; - } - } - - public String getName() - { - return _name; - } - - public List<ConnectionConfig> getConnections() - { - return Collections.unmodifiableList(_connections); - } - - public List<CommandForClient> createCommands() - { - List<CommandForClient> commandsForClient = new ArrayList<CommandForClient>(); - - for (MessageProviderConfig messageProvider : _messageProviders) - { - Command command = messageProvider.createCommand(); - commandsForClient.add(new CommandForClient(_name, command)); - } - for (ConnectionConfig connection : _connections) - { - List<Command> commands = connection.createCommands(); - for (Command command : commands) - { - commandsForClient.add(new CommandForClient(_name, command)); - } - } - return commandsForClient; - } - - public int getTotalNumberOfParticipants() - { - int numOfParticipants = 0; - for (ConnectionConfig connection : _connections) - { - numOfParticipants = numOfParticipants + connection.getTotalNumberOfParticipants(); - } - return numOfParticipants; - } - - public List<MessageProviderConfig> getMessageProviders() - { - return Collections.unmodifiableList(_messageProviders); - } - - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/Config.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/Config.java deleted file mode 100644 index 1698008418..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/Config.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -public class Config -{ - private List<TestConfig> _tests; - - public Config() - { - super(); - _tests = Collections.emptyList(); - } - - public Config(List<TestConfig> tests) - { - _tests = tests; - } - - public Config(TestConfig... tests) - { - _tests = Arrays.asList(tests); - } - - public List<TestInstance> getTests() - { - List<TestInstance> testInstances = new ArrayList<TestInstance>(); - for (TestConfig testConfig : _tests) - { - int iterationNumber = 0; - - List<IterationValue> iterationValues = testConfig.getIterationValues(); - if(iterationValues.isEmpty()) - { - testInstances.add(new TestInstance(testConfig)); - } - else - { - for (IterationValue iterationValue : iterationValues) - { - testInstances.add(new TestInstance(testConfig, iterationNumber, iterationValue)); - iterationNumber++; - } - } - } - - return Collections.unmodifiableList(testInstances); - } - - public List<TestConfig> getTestConfigs() - { - return Collections.unmodifiableList(_tests); - } - - public int getTotalNumberOfClients() - { - int numberOfClients = 0; - for (TestConfig testConfig : _tests) - { - numberOfClients = Math.max(testConfig.getTotalNumberOfClients(), numberOfClients); - } - return numberOfClients; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConfigReader.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConfigReader.java deleted file mode 100644 index 1f0368e87e..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConfigReader.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; - -import org.apache.qpid.disttest.client.property.PropertyValue; -import org.apache.qpid.disttest.json.PropertyValueAdapter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -public class ConfigReader -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ConfigReader.class); - - public Config getConfigFromFile(String fileName) throws IOException - { - Reader reader = getConfigReader(fileName); - - Config config = readConfig(reader); - return config; - } - - public Config readConfig(Reader reader) - { - return readConfig(reader, false); - } - - public Config readConfig(Reader reader, boolean isJavascript) - { - if (isJavascript) - { - return readJson(new StringReader(new JavaScriptConfigEvaluator().evaluateJavaScript(reader))); - } - else - { - return readJson(reader); - } - } - - private Reader getConfigReader(String fileName) throws IOException - { - Reader reader = null; - if (fileName.endsWith(".js")) - { - LOGGER.info("Evaluating javascript:" + fileName); - reader = new StringReader(new JavaScriptConfigEvaluator().evaluateJavaScript(fileName)); - } - else - { - LOGGER.info("Loading JSON:" + fileName); - reader = new FileReader(fileName); - } - return reader; - } - - - private Config readJson(Reader reader) - { - Gson gson = new GsonBuilder() - .registerTypeAdapter(PropertyValue.class, new PropertyValueAdapter()) - .create(); - Config config = gson.fromJson(reader, Config.class); - return config; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConnectionConfig.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConnectionConfig.java deleted file mode 100644 index e2cc31e21e..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConnectionConfig.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CreateConnectionCommand; - -public class ConnectionConfig -{ - private String _name; - private List<SessionConfig> _sessions; - private String _factory; - - // For Gson - public ConnectionConfig() - { - super(); - _sessions = Collections.emptyList(); - } - - public ConnectionConfig(String name, String factory, SessionConfig... sessions) - { - super(); - _name = name; - _factory = factory; - _sessions = Arrays.asList(sessions); - - } - - public List<SessionConfig> getSessions() - { - return Collections.unmodifiableList(_sessions); - } - - public String getName() - { - return _name; - } - - public List<Command> createCommands() - { - List<Command> commands = new ArrayList<Command>(); - commands.add(createCommand()); - for (SessionConfig sessionConfig : _sessions) - { - commands.addAll(sessionConfig.createCommands(_name)); - } - return commands; - } - - private CreateConnectionCommand createCommand() - { - CreateConnectionCommand command = new CreateConnectionCommand(); - command.setConnectionName(_name); - command.setConnectionFactoryName(_factory); - return command; - } - - public int getTotalNumberOfParticipants() - { - int numOfParticipants = 0; - - for (SessionConfig sessionConfig : _sessions) - { - numOfParticipants = numOfParticipants + sessionConfig.getTotalNumberOfParticipants(); - } - return numOfParticipants; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConsumerConfig.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConsumerConfig.java deleted file mode 100644 index dcccccdd5f..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ConsumerConfig.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * - * 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.disttest.controller.config; - -import org.apache.qpid.disttest.message.CreateConsumerCommand; - -public class ConsumerConfig extends ParticipantConfig -{ - private boolean _isDurableSubscription; - private boolean _isBrowsingSubscription; - private String _selector; - private boolean _noLocal; - private boolean _synchronous; - private boolean _evaluateLatency; - - // For Gson - public ConsumerConfig() - { - _isDurableSubscription = false; - _isBrowsingSubscription = false; - _selector = null; - _noLocal = false; - _synchronous = true; - } - - public ConsumerConfig( - String consumerName, - String destinationName, - long numberOfMessages, - int batchSize, - long maximumDuration, - boolean isTopic, - boolean isDurableSubscription, - boolean isBrowsingSubscription, - String selector, - boolean noLocal, - boolean synchronous) - { - super(consumerName, destinationName, isTopic, numberOfMessages, batchSize, maximumDuration); - - _isDurableSubscription = isDurableSubscription; - _isBrowsingSubscription = isBrowsingSubscription; - _selector = selector; - _noLocal = noLocal; - _synchronous = synchronous; - } - - public CreateConsumerCommand createCommand(String sessionName) - { - CreateConsumerCommand createConsumerCommand = new CreateConsumerCommand(); - - setParticipantProperties(createConsumerCommand); - - createConsumerCommand.setSessionName(sessionName); - createConsumerCommand.setDurableSubscription(_isDurableSubscription); - createConsumerCommand.setBrowsingSubscription(_isBrowsingSubscription); - createConsumerCommand.setSelector(_selector); - createConsumerCommand.setNoLocal(_noLocal); - createConsumerCommand.setSynchronous(_synchronous); - createConsumerCommand.setEvaluateLatency(_evaluateLatency); - - return createConsumerCommand; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/IterationValue.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/IterationValue.java deleted file mode 100644 index ef953a5d07..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/IterationValue.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.lang.reflect.InvocationTargetException; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.beanutils.BeanUtilsBean; -import org.apache.commons.lang.builder.ToStringBuilder; -import org.apache.commons.lang.builder.ToStringStyle; -import org.apache.qpid.disttest.message.Command; - -public class IterationValue -{ - private final Map<String, String> _iterationPropertyValuesWithUnderscores; - - public IterationValue(Map<String, String> iterationMap) - { - _iterationPropertyValuesWithUnderscores = iterationMap; - } - - public IterationValue() - { - _iterationPropertyValuesWithUnderscores = Collections.emptyMap(); - } - - public Map<String, String> getIterationPropertyValuesWithUnderscores() - { - return _iterationPropertyValuesWithUnderscores; - } - - public void applyToCommand(Command command) - { - try - { - Map<String, String> withoutUnderscoresToMatchCommandPropertyNames = getIterationPropertyValuesWithoutUnderscores(); - BeanUtilsBean.getInstance().copyProperties(command, withoutUnderscoresToMatchCommandPropertyNames); - } - catch (IllegalAccessException e) - { - throw new RuntimeException("Couldn't copy properties from iteration " + this + " to " + command, e); - } - catch (InvocationTargetException e) - { - throw new RuntimeException("Couldn't copy properties from iteration " + this + " to " + command, e); - } - } - - private Map<String, String> getIterationPropertyValuesWithoutUnderscores() - { - Map<String, String> iterationPropertyValues = new HashMap<String, String>(); - for (String propertyNameWithUnderscore : _iterationPropertyValuesWithUnderscores.keySet()) - { - String propertyName = propertyNameWithUnderscore.replaceFirst("_", ""); - String propertyValue = _iterationPropertyValuesWithUnderscores.get(propertyNameWithUnderscore); - - iterationPropertyValues.put(propertyName, propertyValue); - } - return iterationPropertyValues; - } - - @Override - public String toString() - { - return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("iterationMap", _iterationPropertyValuesWithUnderscores).toString(); - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/JavaScriptConfigEvaluator.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/JavaScriptConfigEvaluator.java deleted file mode 100644 index d760ffe06d..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/JavaScriptConfigEvaluator.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * - * 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.disttest.controller.config; - -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; - -import javax.script.ScriptEngine; -import javax.script.ScriptEngineManager; -import javax.script.ScriptException; - -import org.apache.qpid.disttest.DistributedTestException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * A helper class to load and evaluate JavaScript configuration, producing a JSON string. - */ -public class JavaScriptConfigEvaluator -{ - private static final Logger LOGGER = LoggerFactory.getLogger(JavaScriptConfigEvaluator.class); - - public static final String TEST_CONFIG_VARIABLE_NAME = "jsonObject"; - - public String evaluateJavaScript(String fileName) throws IOException - { - FileReader fileReader = null; - try - { - fileReader = new FileReader(fileName); - String result = evaluateJavaScript(fileReader); - LOGGER.debug("Evaluated javascript file " + fileName + ". Generated the following JSON: " + result); - return result; - } - finally - { - if (fileReader != null) - { - fileReader.close(); - } - } - } - - public String evaluateJavaScript(Reader fileReader) - { - ScriptEngineManager mgr = new ScriptEngineManager(); - ScriptEngine engine = mgr.getEngineByName("JavaScript"); - try - { - engine.eval(new InputStreamReader(getClass().getClassLoader().getResourceAsStream("json2.js"))); - engine.eval(new InputStreamReader(getClass().getClassLoader().getResourceAsStream("test-utils.js"))); - engine.eval(fileReader); - engine.eval("jsonString = JSON.stringify(" + TEST_CONFIG_VARIABLE_NAME + ")"); - } - catch (ScriptException e) - { - throw new DistributedTestException("Exception while evaluating test config", e); - } - String result = (String) engine.get("jsonString"); - - return result; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/MessageProviderConfig.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/MessageProviderConfig.java deleted file mode 100644 index 318ec7f045..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/MessageProviderConfig.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.util.Map; - -import org.apache.qpid.disttest.client.property.PropertyValue; -import org.apache.qpid.disttest.message.CreateMessageProviderCommand; - -public class MessageProviderConfig -{ - private String _name; - private Map<String, PropertyValue> _messageProperties; - - public MessageProviderConfig() - { - super(); - } - - public MessageProviderConfig(String name, Map<String, PropertyValue> messageProperties) - { - super(); - _name = name; - _messageProperties = messageProperties; - } - - public String getName() - { - return _name; - } - - public Map<String, PropertyValue> getMessageProperties() - { - return _messageProperties; - } - - public CreateMessageProviderCommand createCommand() - { - CreateMessageProviderCommand command = new CreateMessageProviderCommand(); - command.setProviderName(_name); - command.setMessageProperties(_messageProperties); - return command; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java deleted file mode 100644 index 99ae4b7426..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ParticipantConfig.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * 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.disttest.controller.config; - -import org.apache.commons.lang.ObjectUtils; -import org.apache.qpid.disttest.message.CreateParticpantCommand; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public abstract class ParticipantConfig -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantConfig.class); - - public static final String DURATION_OVERRIDE_SYSTEM_PROPERTY = "qpid.disttest.duration"; - - /** used to ensure we only log about the overridden duration once */ - private boolean _alreadyLoggedAboutOverriddenDuration; - - private String _destinationName; - private boolean _isTopic; - private long _numberOfMessages; - private String _name; - private int _batchSize; - private long _maximumDuration; - - // For GSON - public ParticipantConfig() - { - _name = null; - _destinationName = null; - _numberOfMessages = 0; - _batchSize = 0; - _maximumDuration = 0; - } - - public ParticipantConfig( - String name, - String destinationName, - boolean isTopic, - long numberOfMessages, - int batchSize, - long maximumDuration) - { - _name = name; - _destinationName = destinationName; - _isTopic = isTopic; - _numberOfMessages = numberOfMessages; - _batchSize = batchSize; - _maximumDuration = maximumDuration; - } - - protected void setParticipantProperties(CreateParticpantCommand createParticipantCommand) - { - createParticipantCommand.setParticipantName(_name); - createParticipantCommand.setDestinationName(_destinationName); - createParticipantCommand.setTopic(_isTopic); - createParticipantCommand.setNumberOfMessages(_numberOfMessages); - createParticipantCommand.setBatchSize(_batchSize); - - Long maximumDuration = (Long)ObjectUtils.defaultIfNull(getOverriddenDuration(), _maximumDuration); - createParticipantCommand.setMaximumDuration(maximumDuration); - } - - private Long getOverriddenDuration() - { - String overriddenDurationString = System.getProperty(DURATION_OVERRIDE_SYSTEM_PROPERTY); - if(overriddenDurationString != null) - { - try - { - long overriddenDuration = Long.valueOf(overriddenDurationString); - - if(!_alreadyLoggedAboutOverriddenDuration) - { - LOGGER.info("Applied overridden maximum duration " + overriddenDuration); - _alreadyLoggedAboutOverriddenDuration = true; - } - - return overriddenDuration; - } - catch (NumberFormatException e) - { - LOGGER.error("Couldn't parse overridden duration " + overriddenDurationString, e); - } - } - - return null; - } -}
\ No newline at end of file diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ProducerConfig.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ProducerConfig.java deleted file mode 100644 index b35321fe5d..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/ProducerConfig.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * 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.disttest.controller.config; - -import javax.jms.Message; - -import org.apache.commons.lang.ObjectUtils; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ProducerConfig extends ParticipantConfig -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ProducerConfig.class); - - public static final String MESSAGE_SIZE_OVERRIDE_SYSTEM_PROPERTY = "qpid.disttest.messageSize"; - - private int _deliveryMode; - private int _messageSize; - private int _priority; - private long _timeToLive; - private long _interval; - private long _startDelay; - private String _messageProviderName; - - // For Gson - public ProducerConfig() - { - _deliveryMode = Message.DEFAULT_DELIVERY_MODE; - _messageSize = 1024; - _priority = Message.DEFAULT_PRIORITY; - _timeToLive = Message.DEFAULT_TIME_TO_LIVE; - _interval = 0; - _startDelay = 0; - _messageProviderName = null; - } - - public ProducerConfig( - String producerName, - String destinationName, - long numberOfMessages, - int batchSize, - long maximumDuration, - int deliveryMode, - int messageSize, - int priority, - long timeToLive, - long interval, - long startDelay, - String messageProviderName) - { - super(producerName, destinationName, false, numberOfMessages, batchSize, maximumDuration); - - _deliveryMode = deliveryMode; - _messageSize = messageSize; - _priority = priority; - _timeToLive = timeToLive; - _interval = interval; - _startDelay = startDelay; - _messageProviderName = messageProviderName; - } - - public CreateProducerCommand createCommand(String sessionName) - { - CreateProducerCommand command = new CreateProducerCommand(); - - setParticipantProperties(command); - - command.setSessionName(sessionName); - command.setDeliveryMode(_deliveryMode); - - Integer messageSize = (Integer)ObjectUtils.defaultIfNull(getOverriddenMessageSize(), _messageSize); - - command.setMessageSize(messageSize); - command.setPriority(_priority); - command.setTimeToLive(_timeToLive); - command.setInterval(_interval); - command.setStartDelay(_startDelay); - command.setMessageProviderName(_messageProviderName); - - return command; - } - - private Integer getOverriddenMessageSize() - { - String overriddenMessageSizeString = System.getProperty(MESSAGE_SIZE_OVERRIDE_SYSTEM_PROPERTY); - if(overriddenMessageSizeString != null) - { - try - { - int overriddenMessageSize = Integer.valueOf(overriddenMessageSizeString); - LOGGER.info("Applied overridden message size " + overriddenMessageSize); - return overriddenMessageSize; - } - catch (NumberFormatException e) - { - LOGGER.error("Couldn't parse overridden message size " + overriddenMessageSizeString, e); - } - } - - return null; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/QueueConfig.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/QueueConfig.java deleted file mode 100644 index 45a4551cbc..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/QueueConfig.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.util.Collections; -import java.util.Map; - -import org.apache.commons.lang.builder.ReflectionToStringBuilder; -import org.apache.commons.lang.builder.ToStringStyle; - -public class QueueConfig -{ - private String _name; - private boolean _durable; - private Map<String, Object> _attributes; - - public QueueConfig() - { - super(); - _attributes = Collections.emptyMap(); - } - - public QueueConfig(String name, boolean durable, Map<String, Object> attributes) - { - this._name = name; - this._durable = durable; - this._attributes = attributes; - } - - public String getName() - { - return _name; - } - - public Map<String, Object> getAttributes() - { - return _attributes; - } - - public boolean isDurable() - { - return _durable; - } - - @Override - public String toString() - { - return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/SessionConfig.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/SessionConfig.java deleted file mode 100644 index 12372e5391..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/SessionConfig.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import javax.jms.Session; - -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CreateSessionCommand; - -public class SessionConfig -{ - private static final List<ProducerConfig> EMPTY_PRODUCER_LIST = Collections.emptyList(); - private static final List<ConsumerConfig> EMPTY_CONSUMER_LIST = Collections.emptyList(); - - private int _acknowledgeMode; - private String _sessionName; - private List<ProducerConfig> _producers; - private List<ConsumerConfig> _consumers; - - // For Gson - public SessionConfig() - { - this(null, Session.SESSION_TRANSACTED, EMPTY_CONSUMER_LIST, EMPTY_PRODUCER_LIST); - } - - public SessionConfig(String sessionName, int acknowledgeMode, ProducerConfig...producers) - { - this(sessionName, acknowledgeMode, EMPTY_CONSUMER_LIST, Arrays.asList(producers)); - } - - public SessionConfig(String sessionName, int acknowledgeMode, ConsumerConfig... consumers) - { - this(sessionName, acknowledgeMode, Arrays.asList(consumers), EMPTY_PRODUCER_LIST); - } - - public SessionConfig(String sessionName, int acknowledgeMode, List<ConsumerConfig> consumers, List<ProducerConfig> producers) - { - _sessionName = sessionName; - _acknowledgeMode = acknowledgeMode; - _consumers = consumers; - _producers = producers; - } - - public int getAcknowledgeMode() - { - return _acknowledgeMode; - } - - public String getSessionName() - { - return _sessionName; - } - - public List<ProducerConfig> getProducers() - { - return Collections.unmodifiableList(_producers); - } - - public List<ConsumerConfig> getConsumers() - { - return Collections.unmodifiableList(_consumers); - } - - public List<Command> createCommands(String connectionName) - { - List<Command> commands = new ArrayList<Command>(); - commands.add(createCommand(connectionName)); - for (ProducerConfig producer : _producers) - { - commands.add(producer.createCommand(_sessionName)); - } - for (ConsumerConfig consumer : _consumers) - { - commands.add(consumer.createCommand(_sessionName)); - } - return commands; - } - - private CreateSessionCommand createCommand(String connectionName) - { - CreateSessionCommand command = new CreateSessionCommand(); - command.setAcknowledgeMode(_acknowledgeMode); - command.setConnectionName(connectionName); - command.setSessionName(_sessionName); - return command; - } - - public int getTotalNumberOfParticipants() - { - return _producers.size() + _consumers.size(); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/TestConfig.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/TestConfig.java deleted file mode 100644 index 2bb5f1b289..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/TestConfig.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.apache.qpid.disttest.controller.CommandForClient; - -public class TestConfig -{ - private final String _name; - - private final List<ClientConfig> _clients; - - private final List<QueueConfig> _queues; - - private final List<Map<String, String>> _iterations; - - public TestConfig() - { - _clients = Collections.emptyList(); - _queues = Collections.emptyList(); - _name = null; - _iterations = Collections.emptyList(); - } - - public TestConfig(String name, ClientConfig[] clients, QueueConfig[] queues) - { - _clients = Arrays.asList(clients); - _queues = Arrays.asList(queues); - _name = name; - _iterations = Collections.emptyList(); - } - - public List<String> getClientNames() - { - List<String> clientNames = new ArrayList<String>(); - for (ClientConfig clientConfig : _clients) - { - clientNames.add(clientConfig.getName()); - } - return clientNames; - } - - public int getTotalNumberOfClients() - { - return _clients.size(); - } - - public int getTotalNumberOfParticipants() - { - int numOfParticipants = 0; - for (ClientConfig client : _clients) - { - numOfParticipants = numOfParticipants + client.getTotalNumberOfParticipants(); - } - return numOfParticipants; - } - - public List<CommandForClient> createCommands() - { - List<CommandForClient> commandsForClients = new ArrayList<CommandForClient>(); - for (ClientConfig client : _clients) - { - commandsForClients.addAll(client.createCommands()); - } - - return Collections.unmodifiableList(commandsForClients); - } - - public List<QueueConfig> getQueues() - { - return Collections.unmodifiableList(_queues); - } - - public String getName() - { - return _name; - } - - public List<IterationValue> getIterationValues() - { - List<IterationValue> iterationValues = new ArrayList<IterationValue>(); - for (Map<String, String> iterationMap : _iterations) - { - iterationValues.add(new IterationValue(iterationMap)); - } - - return iterationValues; - } - - public List<ClientConfig> getClients() - { - return Collections.unmodifiableList(_clients); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/TestInstance.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/TestInstance.java deleted file mode 100644 index 9f555ef4da..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/controller/config/TestInstance.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang.builder.ToStringBuilder; -import org.apache.commons.lang.builder.ToStringStyle; -import org.apache.qpid.disttest.controller.CommandForClient; -import org.apache.qpid.disttest.message.Command; - -public class TestInstance -{ - private static final IterationValue EMPTY_ITERATION_VALUES = new IterationValue(); - - private TestConfig _testConfig; - private IterationValue _iterationValue; - private int _iterationNumber; - - public TestInstance(TestConfig testConfig, int iterationNumber, IterationValue iterationValue) - { - _testConfig = testConfig; - _iterationNumber = iterationNumber; - _iterationValue = iterationValue; - } - - public TestInstance(TestConfig testConfig) - { - this(testConfig, 0, EMPTY_ITERATION_VALUES); - } - - public List<CommandForClient> createCommands() - { - List<CommandForClient> commands = _testConfig.createCommands(); - List<CommandForClient> newCommands = new ArrayList<CommandForClient>(commands.size()); - - for (CommandForClient commandForClient : commands) - { - String clientName = commandForClient.getClientName(); - Command command = commandForClient.getCommand(); - - _iterationValue.applyToCommand(command); - - newCommands.add(new CommandForClient(clientName, command)); - } - - return newCommands; - - } - - public String getName() - { - return _testConfig.getName(); - } - - public int getIterationNumber() - { - return _iterationNumber; - } - - public int getTotalNumberOfParticipants() - { - return _testConfig.getTotalNumberOfParticipants(); - } - - public List<QueueConfig> getQueues() - { - return _testConfig.getQueues(); - } - - public List<String> getClientNames() - { - return _testConfig.getClientNames(); - } - - @Override - public String toString() - { - return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) - .append("testName", getName()) - .append("iterationNumber", _iterationNumber) - .toString(); - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/db/ResultsDbWriter.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/db/ResultsDbWriter.java deleted file mode 100644 index e4cf80a60f..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/db/ResultsDbWriter.java +++ /dev/null @@ -1,440 +0,0 @@ -/* - * 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.disttest.db; - -import static org.apache.qpid.disttest.message.ParticipantAttribute.*; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.sql.Timestamp; -import java.util.Calendar; -import java.util.Date; -import java.util.Hashtable; -import java.util.TimeZone; - -import javax.naming.Context; -import javax.naming.NamingException; - -import org.apache.commons.lang.builder.ToStringBuilder; -import org.apache.commons.lang.builder.ToStringStyle; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.results.aggregation.ITestResult; - -/** - * Intended call sequence: - * <ul> - * <li>{@link #ResultsDbWriter(Context, String)}</li> - * <li>{@link #createResultsTableIfNecessary()}</li> - * <li>{@link #writeResults(ResultsForAllTests)} (usually multiple times)</li> - * </ul> - */ -public class ResultsDbWriter -{ - private static final Logger _logger = LoggerFactory.getLogger(ResultsDbWriter.class); - - private static final String RESULTS_TABLE_NAME = "RESULTS"; - - /** column name */ - static final String INSERTED_TIMESTAMP = "insertedTimestamp"; - /** column name */ - static final String RUN_ID = "runId"; - - private static final String TABLE_EXISTENCE_QUERY = "SELECT 1 FROM SYS.SYSTABLES WHERE TABLENAME = ?"; - - private static final String CREATE_RESULTS_TABLE = String.format( - "CREATE TABLE %1$s (" + - "%2$s varchar(200) not null" + // TEST_NAME - ", %3$s bigint not null" + // ITERATION_NUMBER - ", %4$s varchar(200) not null" + // PARTICIPANT_NAME - ", %5$s double not null" + // THROUGHPUT - ", %6$s double" + // AVERAGE_LATENCY - ", %7$s varchar(200)" + // CONFIGURED_CLIENT_NAME - ", %8$s bigint" + // NUMBER_OF_MESSAGES_PROCESSED - ", %9$s bigint" + // PAYLOAD_SIZE - ", %10$s bigint" + // PRIORITY - ", %11$s bigint" + // TIME_TO_LIVE - ", %12$s bigint" + // ACKNOWLEDGE_MODE - ", %13$s bigint" + // DELIVERY_MODE - ", %14$s bigint" + // BATCH_SIZE - ", %15$s bigint" + // MAXIMUM_DURATION - ", %16$s bigint" + // PRODUCER_START_DELAY - ", %17$s bigint" + // PRODUCER_INTERVAL - ", %18$s bigint" + // IS_TOPIC - ", %19$s bigint" + // IS_DURABLE_SUBSCRIPTION - ", %20$s bigint" + // IS_BROWSING_SUBSCRIPTION - ", %21$s bigint" + // IS_SELECTOR - ", %22$s bigint" + // IS_NO_LOCAL - ", %23$s bigint" + // IS_SYNCHRONOUS_CONSUMER - ", %24$s bigint" + // TOTAL_NUMBER_OF_CONSUMERS - ", %25$s bigint" + // TOTAL_NUMBER_OF_PRODUCERS - ", %26$s bigint" + // TOTAL_PAYLOAD_PROCESSED - ", %27$s bigint" + // TIME_TAKEN - ", %28$s varchar(2000)" + // ERROR_MESSAGE - ", %29$s bigint" + // MIN_LATENCY - ", %30$s bigint" + // MAX_LATENCY - ", %31$s double" + // LATENCY_STANDARD_DEVIATION - ", %32$s varchar(200) not null" + - ", %33$s timestamp not null" + - ")", - RESULTS_TABLE_NAME, - TEST_NAME.getDisplayName(), - ITERATION_NUMBER.getDisplayName(), - PARTICIPANT_NAME.getDisplayName(), - THROUGHPUT.getDisplayName(), - AVERAGE_LATENCY.getDisplayName(), - CONFIGURED_CLIENT_NAME.getDisplayName(), - NUMBER_OF_MESSAGES_PROCESSED.getDisplayName(), - PAYLOAD_SIZE.getDisplayName(), - PRIORITY.getDisplayName(), - TIME_TO_LIVE.getDisplayName(), - ACKNOWLEDGE_MODE.getDisplayName(), - DELIVERY_MODE.getDisplayName(), - BATCH_SIZE.getDisplayName(), - MAXIMUM_DURATION.getDisplayName(), - PRODUCER_START_DELAY.getDisplayName(), - PRODUCER_INTERVAL.getDisplayName(), - IS_TOPIC.getDisplayName(), - IS_DURABLE_SUBSCRIPTION.getDisplayName(), - IS_BROWSING_SUBSCRIPTION.getDisplayName(), - IS_SELECTOR.getDisplayName(), - IS_NO_LOCAL.getDisplayName(), - IS_SYNCHRONOUS_CONSUMER.getDisplayName(), - TOTAL_NUMBER_OF_CONSUMERS.getDisplayName(), - TOTAL_NUMBER_OF_PRODUCERS.getDisplayName(), - TOTAL_PAYLOAD_PROCESSED.getDisplayName(), - TIME_TAKEN.getDisplayName(), - ERROR_MESSAGE.getDisplayName(), - MIN_LATENCY.getDisplayName(), - MAX_LATENCY.getDisplayName(), - LATENCY_STANDARD_DEVIATION.getDisplayName(), - RUN_ID, - INSERTED_TIMESTAMP - ); - - public static final String DRIVER_NAME = "jdbcDriverClass"; - public static final String URL = "jdbcUrl"; - - private final String _url; - private final String _runId; - - private final Clock _clock; - - /** - * @param runId may be null, in which case a default value is chosen based on current GMT time - * @param context must contain environment entries {@value #DRIVER_NAME} and {@value #URL}. - */ - public ResultsDbWriter(Context context, String runId) - { - this(context, runId, new Clock()); - } - - /** only call directly from tests */ - ResultsDbWriter(Context context, String runId, Clock clock) - { - _clock = clock; - _runId = defaultIfNullRunId(runId); - - _url = initialiseJdbc(context); - } - - private String defaultIfNullRunId(String runId) - { - if(runId == null) - { - Date dateNow = new Date(_clock.currentTimeMillis()); - Calendar calNow = Calendar.getInstance(TimeZone.getTimeZone("GMT+00:00")); - calNow.setTime(dateNow); - return String.format("run %1$tF %1$tT.%tL", calNow); - } - else - { - return runId; - } - } - - public String getRunId() - { - return _runId; - } - - /** - * Uses the context's environment to load the JDBC driver class and return the - * JDBC URL specified therein. - * @return the JDBC URL - */ - private String initialiseJdbc(Context context) - { - Hashtable<?, ?> environment = null; - try - { - environment = context.getEnvironment(); - - String driverName = (String) environment.get(DRIVER_NAME); - if(driverName == null) - { - throw new IllegalArgumentException("JDBC driver name " + DRIVER_NAME - + " missing from context environment: " + environment); - } - - Class.forName(driverName); - - Object url = environment.get(URL); - if(url == null) - { - throw new IllegalArgumentException("JDBC URL " + URL + " missing from context environment: " + environment); - } - return (String) url; - } - catch (NamingException e) - { - throw constructorRethrow(e, environment); - } - catch (ClassNotFoundException e) - { - throw constructorRethrow(e, environment); - } - } - - private RuntimeException constructorRethrow(Exception e, Hashtable<?, ?> environment) - { - return new RuntimeException("Couldn't initialise ResultsDbWriter from context with environment" + environment, e); - } - - public void createResultsTableIfNecessary() - { - try - { - Connection connection = null; - try - { - connection = DriverManager.getConnection(_url); - if(!tableExists(RESULTS_TABLE_NAME, connection)) - { - Statement statement = connection.createStatement(); - try - { - _logger.info("About to create results table using SQL: " + CREATE_RESULTS_TABLE); - statement.execute(CREATE_RESULTS_TABLE); - } - finally - { - statement.close(); - } - } - } - finally - { - if(connection != null) - { - connection.close(); - } - } - } - catch (SQLException e) - { - throw new RuntimeException("Couldn't create results table", e); - } - - } - - private boolean tableExists(final String tableName, final Connection conn) throws SQLException - { - PreparedStatement stmt = conn.prepareStatement(TABLE_EXISTENCE_QUERY); - try - { - stmt.setString(1, tableName); - ResultSet rs = stmt.executeQuery(); - try - { - return rs.next(); - } - finally - { - rs.close(); - } - } - finally - { - stmt.close(); - } - } - - public void writeResults(ResultsForAllTests results) - { - try - { - writeResultsThrowingException(results); - } - catch (SQLException e) - { - throw new RuntimeException("Couldn't write results " + results, e); - } - _logger.info(this + " wrote " + results.getTestResults().size() + " results to database"); - } - - private void writeResultsThrowingException(ResultsForAllTests results) throws SQLException - { - Connection connection = null; - try - { - connection = DriverManager.getConnection(_url); - - for (ITestResult testResult : results.getTestResults()) - { - for (ParticipantResult participantResult : testResult.getParticipantResults()) - { - writeParticipantResult(connection, participantResult); - } - } - } - finally - { - if(connection != null) - { - connection.close(); - } - } - } - - private void writeParticipantResult(Connection connection, ParticipantResult participantResult) throws SQLException - { - if(_logger.isDebugEnabled()) - { - _logger.debug("About to write to DB the following participant result: " + participantResult); - } - - PreparedStatement statement = null; - try - { - String sqlTemplate = String.format( - "INSERT INTO %s (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) " + - "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", - RESULTS_TABLE_NAME, - TEST_NAME.getDisplayName(), - ITERATION_NUMBER.getDisplayName(), - PARTICIPANT_NAME.getDisplayName(), - THROUGHPUT.getDisplayName(), - AVERAGE_LATENCY.getDisplayName(), - CONFIGURED_CLIENT_NAME.getDisplayName(), - NUMBER_OF_MESSAGES_PROCESSED.getDisplayName(), - PAYLOAD_SIZE.getDisplayName(), - PRIORITY.getDisplayName(), - TIME_TO_LIVE.getDisplayName(), - ACKNOWLEDGE_MODE.getDisplayName(), - DELIVERY_MODE.getDisplayName(), - BATCH_SIZE.getDisplayName(), - MAXIMUM_DURATION.getDisplayName(), - PRODUCER_START_DELAY.getDisplayName(), - PRODUCER_INTERVAL.getDisplayName(), - IS_TOPIC.getDisplayName(), - IS_DURABLE_SUBSCRIPTION.getDisplayName(), - IS_BROWSING_SUBSCRIPTION.getDisplayName(), - IS_SELECTOR.getDisplayName(), - IS_NO_LOCAL.getDisplayName(), - IS_SYNCHRONOUS_CONSUMER.getDisplayName(), - TOTAL_NUMBER_OF_CONSUMERS.getDisplayName(), - TOTAL_NUMBER_OF_PRODUCERS.getDisplayName(), - TOTAL_PAYLOAD_PROCESSED.getDisplayName(), - TIME_TAKEN.getDisplayName(), - ERROR_MESSAGE.getDisplayName(), - MIN_LATENCY.getDisplayName(), - MAX_LATENCY.getDisplayName(), - LATENCY_STANDARD_DEVIATION.getDisplayName(), - RUN_ID, - INSERTED_TIMESTAMP - ); - statement = connection.prepareStatement(sqlTemplate); - - int columnIndex = 1; - statement.setString(columnIndex++, participantResult.getTestName()); - statement.setInt(columnIndex++, participantResult.getIterationNumber()); - statement.setString(columnIndex++, participantResult.getParticipantName()); - statement.setDouble(columnIndex++, participantResult.getThroughput()); - statement.setDouble(columnIndex++, participantResult.getAverageLatency()); - statement.setString(columnIndex++, participantResult.getConfiguredClientName()); - statement.setLong(columnIndex++, participantResult.getNumberOfMessagesProcessed()); - statement.setLong(columnIndex++, participantResult.getPayloadSize()); - statement.setLong(columnIndex++, participantResult.getPriority()); - statement.setLong(columnIndex++, participantResult.getTimeToLive()); - statement.setLong(columnIndex++, participantResult.getAcknowledgeMode()); - statement.setLong(columnIndex++, participantResult.getDeliveryMode()); - statement.setLong(columnIndex++, participantResult.getBatchSize()); - statement.setLong(columnIndex++, participantResult.getMaximumDuration()); - statement.setLong(columnIndex++, 0 /* TODO PRODUCER_START_DELAY*/); - statement.setLong(columnIndex++, 0 /* TODO PRODUCER_INTERVAL*/); - statement.setLong(columnIndex++, 0 /* TODO IS_TOPIC*/); - statement.setLong(columnIndex++, 0 /* TODO IS_DURABLE_SUBSCRIPTION*/); - statement.setLong(columnIndex++, 0 /* TODO IS_BROWSING_SUBSCRIPTION*/); - statement.setLong(columnIndex++, 0 /* TODO IS_SELECTOR*/); - statement.setLong(columnIndex++, 0 /* TODO IS_NO_LOCAL*/); - statement.setLong(columnIndex++, 0 /* TODO IS_SYNCHRONOUS_CONSUMER*/); - statement.setLong(columnIndex++, participantResult.getTotalNumberOfConsumers()); - statement.setLong(columnIndex++, participantResult.getTotalNumberOfProducers()); - statement.setLong(columnIndex++, participantResult.getTotalPayloadProcessed()); - statement.setLong(columnIndex++, participantResult.getTimeTaken()); - statement.setString(columnIndex++, participantResult.getErrorMessage()); - statement.setLong(columnIndex++, participantResult.getMinLatency()); - statement.setLong(columnIndex++, participantResult.getMaxLatency()); - statement.setDouble(columnIndex++, participantResult.getLatencyStandardDeviation()); - - statement.setString(columnIndex++, _runId); - statement.setTimestamp(columnIndex++, new Timestamp(_clock.currentTimeMillis())); - - statement.execute(); - connection.commit(); - } - catch(SQLException e) - { - _logger.error("Couldn't write " + participantResult, e); - } - finally - { - if (statement != null) - { - statement.close(); - } - } - } - - public static class Clock - { - public long currentTimeMillis() - { - return System.currentTimeMillis(); - } - } - - @Override - public String toString() - { - return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) - .append("runId", _runId) - .append("url", _url) - .toString(); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/ClientJmsDelegate.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/ClientJmsDelegate.java deleted file mode 100644 index 348f398da4..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/ClientJmsDelegate.java +++ /dev/null @@ -1,715 +0,0 @@ -/* - * 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.disttest.jms; - -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import javax.jms.Connection; -import javax.jms.ConnectionFactory; -import javax.jms.ConnectionMetaData; -import javax.jms.DeliveryMode; -import javax.jms.Destination; -import javax.jms.ExceptionListener; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.MessageListener; -import javax.jms.MessageProducer; -import javax.jms.Queue; -import javax.jms.Session; -import javax.jms.TextMessage; -import javax.jms.Topic; -import javax.naming.Context; -import javax.naming.NamingException; - -import org.apache.commons.lang.builder.ToStringBuilder; -import org.apache.commons.lang.builder.ToStringStyle; -import org.apache.qpid.disttest.DistributedTestConstants; -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.client.Client; -import org.apache.qpid.disttest.client.ConnectionLostListener; -import org.apache.qpid.disttest.client.MessageProvider; -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CreateConnectionCommand; -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.disttest.message.CreateMessageProviderCommand; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.disttest.message.CreateSessionCommand; -import org.apache.qpid.disttest.message.RegisterClientCommand; -import org.apache.qpid.disttest.message.Response; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ClientJmsDelegate -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ClientJmsDelegate.class); - - private final Context _context; - private final Destination _controllerQueue; - private final Connection _controllerConnection; - private final Session _instructionListenerSession; - private final Session _controllerSession; - private final MessageProducer _controlQueueProducer; - - private final String _clientName; - private Queue _instructionQueue; - - private Map<String, Connection> _testConnections; - private Map<String, Session> _testSessions; - private Map<String, MessageProducer> _testProducers; - private Map<String, MessageConsumer> _testConsumers; - private Map<String, Session> _testSubscriptions; - private Map<String, MessageProvider> _testMessageProviders; - - private final MessageProvider _defaultMessageProvider; - - public ClientJmsDelegate(final Context context) - { - try - { - _context = context; - final ConnectionFactory connectionFactory = (ConnectionFactory) _context.lookup("connectionfactory"); - _controllerConnection = connectionFactory.createConnection(); - _controllerConnection.start(); - _controllerQueue = (Destination) context.lookup(DistributedTestConstants.CONTROLLER_QUEUE_JNDI_NAME); - _instructionListenerSession = _controllerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); - _controllerSession = _controllerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); - _controlQueueProducer = _controllerSession.createProducer(_controllerQueue); - _clientName = UUID.randomUUID().toString(); - _testConnections = new HashMap<String, Connection>(); - _testSessions = new HashMap<String, Session>(); - _testProducers = new HashMap<String, MessageProducer>(); - _testConsumers = new HashMap<String, MessageConsumer>(); - _testSubscriptions = new HashMap<String, Session>(); - _testMessageProviders = new HashMap<String, MessageProvider>(); - _defaultMessageProvider = new MessageProvider(null); - } - catch (final NamingException ne) - { - throw new DistributedTestException("Unable to create client jms delegate", ne); - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to create client jms delegate", jmse); - } - } - - public void setInstructionListener(final Client client) - { - try - { - _instructionQueue = _instructionListenerSession.createTemporaryQueue(); - final MessageConsumer instructionConsumer = _instructionListenerSession.createConsumer(_instructionQueue); - instructionConsumer.setMessageListener(new MessageListener() - { - @Override - public void onMessage(final Message message) - { - client.processInstruction(JmsMessageAdaptor.messageToCommand(message)); - } - }); - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to setup instruction listener", jmse); - } - } - - public void sendRegistrationMessage() - { - Command command; - try - { - command = new RegisterClientCommand(_clientName, _instructionQueue.getQueueName()); - } - catch (final JMSException e) - { - throw new DistributedTestException(e); - } - sendCommand(command); - } - - public void sendResponseMessage(final Response responseMessage) - { - sendCommand(responseMessage); - } - - private void sendCommand(final Command command) - { - try - { - final Message message = JmsMessageAdaptor.commandToMessage(_controllerSession, command); - _controlQueueProducer.send(message); - LOGGER.debug("Sent message for " + command.getType() + ". message id: " + message.getJMSMessageID()); - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to send command: " + command, jmse); - } - } - - public void createConnection(final CreateConnectionCommand command) - { - try - { - final ConnectionFactory connectionFactory = (ConnectionFactory) _context.lookup(command - .getConnectionFactoryName()); - final Connection newConnection = connectionFactory.createConnection(); - addConnection(command.getConnectionName(), newConnection); - if (LOGGER.isDebugEnabled()) - { - LOGGER.debug("Connection " + command.getConnectionName() + " is created " + metaDataToString(newConnection.getMetaData())); - } - } - catch (final NamingException ne) - { - throw new DistributedTestException("Unable to lookup factoryName: " + command.getConnectionFactoryName(), - ne); - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to create connection: " + command.getConnectionName() - + " (using factory name: " + command.getConnectionFactoryName() + ")", jmse); - } - } - - private String metaDataToString(ConnectionMetaData metaData) throws JMSException - { - StringBuilder sb = new StringBuilder("ConnectionMetaData["); - sb.append(" JMSProviderName : " + metaData.getJMSProviderName()); - sb.append(" JMSVersion : " + metaData.getJMSVersion() + " (" + metaData.getJMSMajorVersion() + "." + metaData.getJMSMinorVersion() +")"); - sb.append(" ProviderVersion : " + metaData.getProviderVersion()+ " (" + metaData.getProviderMajorVersion()+ "." + metaData.getProviderMinorVersion() +")" ); - sb.append(" JMSXPropertyNames : ["); - Enumeration en = metaData.getJMSXPropertyNames(); - while(en.hasMoreElements()) - { - sb.append(" ").append(en.nextElement()); - if( en.hasMoreElements()) - { - sb.append(","); - } - } - sb.append("]]"); - return sb.toString(); - } - - public void createSession(final CreateSessionCommand command) - { - try - { - final Connection connection = _testConnections.get(command.getConnectionName()); - if (connection == null) - { - throw new DistributedTestException("No test connection found called: " + command.getConnectionName(), - command); - } - final boolean transacted = command.getAcknowledgeMode() == Session.SESSION_TRANSACTED; - - final Session newSession = connection.createSession(transacted, command.getAcknowledgeMode()); - LOGGER.debug("Created session " + command.getSessionName() + " with transacted = " + newSession.getTransacted() + " and acknowledgeMode = " + newSession.getAcknowledgeMode()); - - addSession(command.getSessionName(), newSession); - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to create new session: " + command, jmse); - } - } - - public void createProducer(final CreateProducerCommand command) - { - try - { - final Session session = _testSessions.get(command.getSessionName()); - if (session == null) - { - throw new DistributedTestException("No test session found called: " + command.getSessionName(), command); - } - - synchronized(session) - { - final Destination destination; - if(command.isTopic()) - { - destination = session.createTopic(command.getDestinationName()); - } - else - { - destination = session.createQueue(command.getDestinationName()); - } - - final MessageProducer jmsProducer = session.createProducer(destination); - - if (command.getPriority() != -1) - { - jmsProducer.setPriority(command.getPriority()); - } - if (command.getTimeToLive() > 0) - { - jmsProducer.setTimeToLive(command.getTimeToLive()); - } - - if (command.getDeliveryMode() == DeliveryMode.NON_PERSISTENT - || command.getDeliveryMode() == DeliveryMode.PERSISTENT) - { - jmsProducer.setDeliveryMode(command.getDeliveryMode()); - } - - addProducer(command.getParticipantName(), jmsProducer); - } - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to create new producer: " + command, jmse); - } - } - - public void createConsumer(final CreateConsumerCommand command) - { - try - { - final Session session = _testSessions.get(command.getSessionName()); - if (session == null) - { - throw new DistributedTestException("No test session found called: " + command.getSessionName(), command); - } - - synchronized(session) - { - Destination destination; - MessageConsumer jmsConsumer; - if(command.isTopic()) - { - Topic topic = session.createTopic(command.getDestinationName()); - if(command.isDurableSubscription()) - { - String subscription = "subscription-" + command.getParticipantName() + System.currentTimeMillis(); - jmsConsumer = session.createDurableSubscriber(topic, subscription); - - _testSubscriptions.put(subscription, session); - LOGGER.debug("created durable subscription " + subscription + " to topic " + topic); - } - else - { - jmsConsumer = session.createConsumer(topic, command.getSelector()); - } - - destination = topic; - } - else - { - destination = session.createQueue(command.getDestinationName()); - jmsConsumer = session.createConsumer(destination, command.getSelector()); - } - - _testConsumers.put(command.getParticipantName(), jmsConsumer); - } - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to create new consumer: " + command, jmse); - } - } - - /** - * destroy the client. Don't call from the Dispatcher thread. - */ - public void destroy() - { - try - { - // Stopping the connection allows in-flight onMessage calls to - // finish. - _controllerConnection.stop(); - - if (_instructionListenerSession != null) - { - _instructionListenerSession.close(); - } - if (_controllerSession != null) - { - _controllerSession.close(); - } - _controllerConnection.close(); - - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to destroy cleanly", jmse); - } - } - - public Destination getControllerQueue() - { - return _controllerQueue; - } - - public String getClientName() - { - return _clientName; - } - - public int getNoOfTestConnections() - { - return _testConnections.size(); - } - - public int getNoOfTestSessions() - { - return _testSessions.size(); - } - - public int getNoOfTestProducers() - { - return _testProducers.size(); - } - - public int getNoOfTestConsumers() - { - return _testConsumers.size(); - } - - public void startConnections() - { - // start connections for consumers - // it would be better if we could track consumer connections and start - // only those - if (!_testConsumers.isEmpty()) - { - for (final Map.Entry<String, Connection> entry : _testConnections.entrySet()) - { - final Connection connection = entry.getValue(); - try - { - connection.start(); - } - catch (final JMSException e) - { - throw new DistributedTestException("Failed to start connection '" + entry.getKey() + "' :" - + e.getLocalizedMessage()); - } - } - } - } - - public int getAcknowledgeMode(final String sessionName) - { - try - { - final Session session = _testSessions.get(sessionName); - return session.getAcknowledgeMode(); - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to determine acknowledgement mode for session: " + - sessionName, jmse); - } - } - - public Message sendNextMessage(final CreateProducerCommand command) - { - Message sentMessage = null; - MessageProvider messageProvider = _testMessageProviders.get(command.getMessageProviderName()); - if (messageProvider == null) - { - messageProvider = _defaultMessageProvider; - } - - final Session session = _testSessions.get(command.getSessionName()); - final MessageProducer producer = _testProducers.get(command.getParticipantName()); - try - { - sentMessage = messageProvider.nextMessage(session, command); - int deliveryMode = producer.getDeliveryMode(); - int priority = producer.getPriority(); - long ttl = producer.getTimeToLive(); - if (messageProvider.isPropertySet(MessageProvider.PRIORITY)) - { - priority = sentMessage.getJMSPriority(); - } - if (messageProvider.isPropertySet(MessageProvider.DELIVERY_MODE)) - { - deliveryMode = sentMessage.getJMSDeliveryMode(); - } - if (messageProvider.isPropertySet(MessageProvider.TTL)) - { - ttl = sentMessage.getLongProperty(MessageProvider.TTL); - } - producer.send(sentMessage, deliveryMode, priority, ttl); - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to create and send message with producer: " + - command.getParticipantName() + " on session: " + command.getSessionName(), jmse); - } - return sentMessage; - } - - protected void addSession(final String sessionName, final Session newSession) - { - _testSessions.put(sessionName, newSession); - } - - protected void addConnection(final String connectionName, final Connection newConnection) - { - _testConnections.put(connectionName, newConnection); - } - - protected void addProducer(final String producerName, final MessageProducer jmsProducer) - { - _testProducers.put(producerName, jmsProducer); - } - - public Message consumeMessage(String consumerName, long receiveInterval) - { - Message consumedMessage = null; - MessageConsumer consumer = _testConsumers.get(consumerName); - try - { - consumedMessage = consumer.receive(receiveInterval); - } - catch (JMSException e) - { - throw new DistributedTestException("Unable to consume message with consumer: " + consumerName, e); - } - return consumedMessage; - } - - public void registerListener(String consumerName, MessageListener messageListener) - { - MessageConsumer consumer = _testConsumers.get(consumerName); - try - { - consumer.setMessageListener(messageListener); - } - catch (JMSException e) - { - throw new DistributedTestException("Unable to register message listener with consumer: " + consumerName, e); - } - } - - public void commitOrAcknowledgeMessageIfNecessary(final String sessionName, final Message message) - { - try - { - final Session session = _testSessions.get(sessionName); - if (session.getTransacted()) - { - synchronized(session) - { - session.commit(); - } - } - else if (message != null && session.getAcknowledgeMode() == Session.CLIENT_ACKNOWLEDGE) - { - message.acknowledge(); - } - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to commit or acknowledge message on session: " + - sessionName, jmse); - } - } - - public void commitIfNecessary(final String sessionName) - { - commitOrAcknowledgeMessageIfNecessary(sessionName, null); - } - - public void rollbackOrRecoverIfNecessary(String sessionName) - { - try - { - final Session session = _testSessions.get(sessionName); - synchronized(session) - { - if (session.getTransacted()) - { - session.rollback(); - } - else if (session.getAcknowledgeMode() == Session.CLIENT_ACKNOWLEDGE) - { - session.recover(); - } - } - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to rollback or recover on session: " + - sessionName, jmse); - } - } - - @Override - public String toString() - { - return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("clientName", _clientName).toString(); - } - - public void tearDownTest() - { - StringBuilder jmsErrorMessages = new StringBuilder(); - int failureCounter = 0; - - for(String subscription : _testSubscriptions.keySet()) - { - Session session = _testSubscriptions.get(subscription); - try - { - session.unsubscribe(subscription); - } - catch (JMSException e) - { - LOGGER.error("Failed to unsubscribe '" + subscription + "' :" + e.getLocalizedMessage(), e); - failureCounter++; - appendErrorMessage(jmsErrorMessages, e); - } - } - - for (Map.Entry<String, Connection> entry : _testConnections.entrySet()) - { - Connection connection = entry.getValue(); - try - { - connection.close(); - } - catch (JMSException e) - { - LOGGER.error("Failed to close connection '" + entry.getKey() + "' :" + e.getLocalizedMessage(), e); - failureCounter++; - appendErrorMessage(jmsErrorMessages, e); - } - } - - _testConnections.clear(); - _testSubscriptions.clear(); - _testSessions.clear(); - _testProducers.clear(); - _testConsumers.clear(); - - if (failureCounter > 0) - { - throw new DistributedTestException("Tear down test encountered " + failureCounter + " failures with the following errors: " + jmsErrorMessages.toString()); - } - } - - private void appendErrorMessage(StringBuilder errorMessages, JMSException e) - { - if (errorMessages.length() > 0) - { - errorMessages.append('\n'); - } - errorMessages.append(e.getMessage()); - } - - public void closeTestConsumer(String consumerName) - { - MessageConsumer consumer = _testConsumers.get(consumerName); - if (consumer != null) - { - try - { - consumer.close(); - LOGGER.debug("Closed test consumer " + consumerName); - } - catch (JMSException e) - { - throw new DistributedTestException("Failed to close consumer: " + consumerName, e); - } - } - } - - public void closeTestProducer(String producerName) - { - MessageProducer producer = _testProducers.get(producerName); - if (producer != null) - { - try - { - producer.close(); - } - catch (JMSException e) - { - throw new DistributedTestException("Failed to close producer: " + producerName, e); - } - } - } - - /** only supports text messages - returns 0 for other message types */ - public int calculatePayloadSizeFrom(Message message) - { - try - { - if (message != null && message instanceof TextMessage) - { - return ((TextMessage) message).getText().getBytes().length; - } - - return 0; - } - catch (JMSException e) - { - throw new DistributedTestException("Unable to determine the payload size for message " + message, e); - } - } - - public void createMessageProvider(CreateMessageProviderCommand command) - { - _testMessageProviders.put(command.getProviderName(), new MessageProvider(command.getMessageProperties())); - } - - public void setConnectionLostListener(final ConnectionLostListener connectionLostListener) - { - try - { - _controllerConnection.setExceptionListener(new ExceptionListener() - { - @Override - public void onException(final JMSException exception) - { - LOGGER.warn("Caught ", exception); - - if (connectionLostListener != null) - { - try - { - _controllerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE).close(); - } - catch (JMSException e) - { - LOGGER.warn("Unable to create/close a new session, assuming the connection is lost ", exception); - - connectionLostListener.connectionLost(); - } - } - - } - }); - } - catch (JMSException e) - { - // ignore - } - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/ControllerJmsDelegate.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/ControllerJmsDelegate.java deleted file mode 100644 index 2dfe1050df..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/ControllerJmsDelegate.java +++ /dev/null @@ -1,274 +0,0 @@ -/* - * 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.disttest.jms; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; - -import javax.jms.Connection; -import javax.jms.ConnectionFactory; -import javax.jms.Destination; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.MessageListener; -import javax.jms.MessageProducer; -import javax.jms.Session; -import javax.naming.Context; -import javax.naming.NamingException; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.controller.CommandListener; -import org.apache.qpid.disttest.controller.config.QueueConfig; -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.RegisterClientCommand; - -public class ControllerJmsDelegate -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ControllerJmsDelegate.class); - - private static final String QUEUE_CREATOR_CLASS_NAME_SYSTEM_PROPERTY = "qpid.disttest.queue.creator.class"; - - private final Map<String, Destination> _clientNameToQueueMap = new ConcurrentHashMap<String, Destination>(); - private final Connection _connection; - private final Destination _controllerQueue; - private final Session _controllerQueueListenerSession; - private final Session _commandSession; - private QueueCreator _queueCreator; - - private List<CommandListener> _commandListeners = new CopyOnWriteArrayList<CommandListener>(); - - public ControllerJmsDelegate(final Context context) throws NamingException, JMSException - { - final ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("connectionfactory"); - _connection = connectionFactory.createConnection(); - _connection.start(); - _controllerQueue = (Destination) context.lookup("controllerqueue"); - _controllerQueueListenerSession = _connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - _commandSession = _connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - - createVendorSpecificQueueCreator(); - } - - private void createVendorSpecificQueueCreator() - { - String queueCreatorClassName = System.getProperty(QUEUE_CREATOR_CLASS_NAME_SYSTEM_PROPERTY); - if(queueCreatorClassName == null) - { - queueCreatorClassName = QpidQueueCreator.class.getName(); - } - else - { - LOGGER.info("Using overridden queue creator class " + queueCreatorClassName); - } - - try - { - Class<? extends QueueCreator> queueCreatorClass = (Class<? extends QueueCreator>) Class.forName(queueCreatorClassName); - _queueCreator = queueCreatorClass.newInstance(); - } - catch (ClassNotFoundException e) - { - throw new DistributedTestException("Unable to instantiate queue creator using class name " + queueCreatorClassName, e); - } - catch (InstantiationException e) - { - throw new DistributedTestException("Unable to instantiate queue creator using class name " + queueCreatorClassName, e); - } - catch (IllegalAccessException e) - { - throw new DistributedTestException("Unable to instantiate queue creator using class name " + queueCreatorClassName, e); - } - } - - public void start() - { - try - { - final MessageConsumer consumer = _controllerQueueListenerSession.createConsumer(_controllerQueue); - consumer.setMessageListener(new MessageListener() - { - @Override - public void onMessage(final Message message) - { - try - { - String jmsMessageID = message.getJMSMessageID(); - LOGGER.debug("Received message " + jmsMessageID); - - final Command command = JmsMessageAdaptor.messageToCommand(message); - LOGGER.debug("Converted message " + jmsMessageID + " into command: " + command); - - processCommandWithFirstSupportingListener(command); - LOGGER.debug("Finished processing command for message " + jmsMessageID); - } - catch (Exception t) - { - LOGGER.error("Can't handle JMS message", t); - } - } - }); - } - catch (final JMSException e) - { - throw new DistributedTestException(e); - } - } - - /** ensures connections are closed, otherwise the JVM may be prevented from terminating */ - public void closeConnections() - { - if (_commandSession != null) - { - try - { - _commandSession.close(); - } - catch (JMSException e) - { - LOGGER.error("Unable to close command session", e); - } - } - - try - { - _controllerQueueListenerSession.close(); - } - catch (JMSException e) - { - LOGGER.error("Unable to close controller queue listener session", e); - } - - try - { - _connection.stop(); - } - catch (JMSException e) - { - LOGGER.error("Unable to stop connection", e); - } - - try - { - _connection.close(); - } - catch (JMSException e) - { - throw new DistributedTestException("Unable to close connection", e); - } - } - - public void registerClient(final RegisterClientCommand command) - { - final String clientName = command.getClientName(); - final Destination clientIntructionQueue = createDestinationFromString(command.getClientQueueName()); - _clientNameToQueueMap.put(clientName, clientIntructionQueue); - } - - public void sendCommandToClient(final String clientName, final Command command) - { - final Destination clientQueue = _clientNameToQueueMap.get(clientName); - if (clientQueue == null) - { - throw new DistributedTestException("Client name " + clientName + " not known. I know about: " - + _clientNameToQueueMap.keySet()); - } - - MessageProducer producer = null; - try - { - producer =_commandSession.createProducer(clientQueue); - Message message = JmsMessageAdaptor.commandToMessage(_commandSession, command); - - producer.send(message); - } - catch (final JMSException e) - { - throw new DistributedTestException(e); - } - finally - { - if (producer != null) - { - try - { - producer.close(); - } - catch (final JMSException e) - { - throw new DistributedTestException(e); - } - } - } - } - - private void processCommandWithFirstSupportingListener(Command command) - { - for (CommandListener listener : _commandListeners) - { - if (listener.supports(command)) - { - listener.processCommand(command); - return; - } - } - - throw new IllegalStateException("There is no registered listener to process command " + command); - } - - private Destination createDestinationFromString(final String clientQueueName) - { - Destination clientIntructionQueue; - try - { - clientIntructionQueue = _commandSession.createQueue(clientQueueName); - } - catch (JMSException e) - { - throw new DistributedTestException("Unable to create Destination from " + clientQueueName); - } - return clientIntructionQueue; - } - - public void createQueues(List<QueueConfig> queues) - { - _queueCreator.createQueues(_connection, _commandSession, queues); - } - - public void deleteQueues(List<QueueConfig> queues) - { - _queueCreator.deleteQueues(_connection, _commandSession, queues); - } - - public void addCommandListener(CommandListener commandListener) - { - _commandListeners.add(commandListener); - } - - public void removeCommandListener(CommandListener commandListener) - { - _commandListeners.remove(commandListener); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/ExistingQueueDrainer.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/ExistingQueueDrainer.java deleted file mode 100644 index 7f8b3caa4f..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/ExistingQueueDrainer.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * 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.disttest.jms; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.controller.config.QueueConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.jms.Connection; -import javax.jms.JMSException; -import javax.jms.MessageConsumer; -import javax.jms.QueueBrowser; -import javax.jms.Session; -import java.util.List; - -public class ExistingQueueDrainer implements QueueCreator -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ExistingQueueDrainer.class); - private static int _drainPollTimeout = Integer.getInteger(QUEUE_CREATOR_DRAIN_POLL_TIMEOUT, 500); - - @Override - public void createQueues(Connection connection, Session session, List<QueueConfig> configs) - { - } - - @Override - public void deleteQueues(Connection connection, Session session, List<QueueConfig> configs) - { - for (QueueConfig queueConfig : configs) - { - drainQueue(connection, queueConfig.getName()); - } - } - - private void drainQueue(Connection connection, String queueName) - { - try - { - int counter = 0; - while (queueContainsMessages(connection, queueName)) - { - if (counter == 0) - { - LOGGER.debug("Draining queue {}", queueName); - } - counter += drain(connection, queueName); - } - if (counter > 0) - { - LOGGER.info("Drained {} message(s) from queue {} ", counter, queueName); - } - } - catch (JMSException e) - { - throw new DistributedTestException("Failed to drain queue " + queueName, e); - } - } - - private int drain(Connection connection, String queueName) throws JMSException - { - int counter = 0; - Session session = null; - try - { - session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - MessageConsumer messageConsumer = session.createConsumer(session.createQueue(queueName)); - try - { - while (messageConsumer.receive(_drainPollTimeout) != null) - { - counter++; - } - } - finally - { - messageConsumer.close(); - } - } - finally - { - if (session != null) - { - session.close(); - } - } - return counter; - } - - private boolean queueContainsMessages(Connection connection, String queueName) throws JMSException - { - Session session = null; - try - { - session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - QueueBrowser browser = null; - try - { - browser = session.createBrowser(session.createQueue(queueName)); - return browser.getEnumeration().hasMoreElements(); - } - finally - { - if (browser != null) - { - browser.close(); - } - } - } - finally - { - if (session != null) - { - session.close(); - } - } - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/JmsMessageAdaptor.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/JmsMessageAdaptor.java deleted file mode 100644 index c9dba21a74..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/JmsMessageAdaptor.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * 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.disttest.jms; - -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.Session; - -import org.apache.qpid.disttest.DistributedTestConstants; -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.json.JsonHandler; -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CommandType; -import org.apache.qpid.disttest.message.ConsumerParticipantResult; -import org.apache.qpid.disttest.message.CreateConnectionCommand; -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.disttest.message.CreateMessageProviderCommand; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.disttest.message.CreateResponderCommand; -import org.apache.qpid.disttest.message.CreateSessionCommand; -import org.apache.qpid.disttest.message.NoOpCommand; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.ProducerParticipantResult; -import org.apache.qpid.disttest.message.RegisterClientCommand; -import org.apache.qpid.disttest.message.Response; -import org.apache.qpid.disttest.message.StartTestCommand; -import org.apache.qpid.disttest.message.StopClientCommand; -import org.apache.qpid.disttest.message.TearDownTestCommand; - -public class JmsMessageAdaptor -{ - public static Message commandToMessage(final Session session, final Command command) - { - Message jmsMessage = null; - try - { - jmsMessage = session.createMessage(); - jmsMessage.setStringProperty(DistributedTestConstants.MSG_COMMAND_PROPERTY, command.getType().name()); - final JsonHandler jsonHandler = new JsonHandler(); - jmsMessage.setStringProperty(DistributedTestConstants.MSG_JSON_PROPERTY, jsonHandler.marshall(command)); - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to convert command " + command + " to JMS Message", jmse); - } - - return jmsMessage; - } - - public static Command messageToCommand(final Message jmsMessage) - { - Command command = null; - try - { - final CommandType commandType = CommandType.valueOf(jmsMessage - .getStringProperty(DistributedTestConstants.MSG_COMMAND_PROPERTY)); - final JsonHandler jsonHandler = new JsonHandler(); - command = jsonHandler.unmarshall(jmsMessage.getStringProperty(DistributedTestConstants.MSG_JSON_PROPERTY), - getCommandClassFromType(commandType)); - } - catch (final JMSException jmse) - { - throw new DistributedTestException("Unable to convert JMS message " + jmsMessage + " to command object", - jmse); - } - return command; - } - - static Class<? extends Command> getCommandClassFromType(final CommandType type) - { - switch (type) - { - case CREATE_CONNECTION: - return CreateConnectionCommand.class; - case CREATE_SESSION: - return CreateSessionCommand.class; - case CREATE_PRODUCER: - return CreateProducerCommand.class; - case CREATE_CONSUMER: - return CreateConsumerCommand.class; - case CREATE_RESPONDER: - return CreateResponderCommand.class; - case NO_OP: - return NoOpCommand.class; - case REGISTER_CLIENT: - return RegisterClientCommand.class; - case STOP_CLIENT: - return StopClientCommand.class; - case RESPONSE: - return Response.class; - case START_TEST: - return StartTestCommand.class; - case TEAR_DOWN_TEST: - return TearDownTestCommand.class; - case PARTICIPANT_RESULT: - return ParticipantResult.class; - case CONSUMER_PARTICIPANT_RESULT: - return ConsumerParticipantResult.class; - case PRODUCER_PARTICIPANT_RESULT: - return ProducerParticipantResult.class; - case CREATE_MESSAGE_PROVIDER: - return CreateMessageProviderCommand.class; - default: - throw new DistributedTestException("No class defined for type: " + type); - } - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/NoOpQueueCreator.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/NoOpQueueCreator.java deleted file mode 100644 index d7e0007b28..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/NoOpQueueCreator.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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.disttest.jms; - -import java.util.List; - -import javax.jms.Connection; -import javax.jms.Session; - -import org.apache.qpid.disttest.controller.config.QueueConfig; -public class NoOpQueueCreator implements QueueCreator -{ - @Override - public void createQueues(Connection connection, Session session, List<QueueConfig> configs) - { - } - - @Override - public void deleteQueues(Connection connection, Session session, List<QueueConfig> configs) - { - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/QpidQueueCreator.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/QpidQueueCreator.java deleted file mode 100644 index 95a4772198..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/QpidQueueCreator.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * 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.disttest.jms; - -import java.util.List; - -import javax.jms.Connection; -import javax.jms.JMSException; -import javax.jms.MessageConsumer; -import javax.jms.Session; - -import org.apache.qpid.client.AMQDestination; -import org.apache.qpid.client.AMQSession; -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.controller.config.QueueConfig; -import org.apache.qpid.framing.AMQShortString; -import org.apache.qpid.framing.FieldTable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class QpidQueueCreator implements QueueCreator -{ - private static final Logger LOGGER = LoggerFactory.getLogger(QpidQueueCreator.class); - private static final FieldTable EMPTY_QUEUE_BIND_ARGUMENTS = new FieldTable(); - private static int _drainPollTimeout = Integer.getInteger(QUEUE_CREATOR_DRAIN_POLL_TIMEOUT, 500); - - @Override - public void createQueues(Connection connection, Session session, List<QueueConfig> configs) - { - AMQSession<?, ?> amqSession = (AMQSession<?, ?>)session; - for (QueueConfig queueConfig : configs) - { - createQueue(amqSession, queueConfig); - } - } - - @Override - public void deleteQueues(Connection connection, Session session, List<QueueConfig> configs) - { - AMQSession<?, ?> amqSession = (AMQSession<?, ?>)session; - for (QueueConfig queueConfig : configs) - { - AMQDestination destination = createAMQDestination(amqSession, queueConfig); - - // drainQueue method is added because deletion of queue with a lot - // of messages takes time and might cause the timeout exception - drainQueue(connection, destination); - - deleteQueue(amqSession, destination.getAMQQueueName()); - } - } - - private AMQDestination createAMQDestination(AMQSession<?, ?> amqSession, QueueConfig queueConfig) - { - try - { - return (AMQDestination) amqSession.createQueue(queueConfig.getName()); - } - catch (Exception e) - { - throw new DistributedTestException("Failed to create amq destionation object:" + queueConfig, e); - } - } - - private long getQueueDepth(AMQSession<?, ?> amqSession, AMQDestination destination) - { - try - { - long queueDepth = amqSession.getQueueDepth(destination); - return queueDepth; - } - catch (Exception e) - { - throw new DistributedTestException("Failed to query queue depth:" + destination, e); - } - } - - private void drainQueue(Connection connection, AMQDestination destination) - { - Session noAckSession = null; - try - { - LOGGER.debug("About to drain the queue {}", destination.getQueueName()); - noAckSession = connection.createSession(false, org.apache.qpid.jms.Session.NO_ACKNOWLEDGE); - MessageConsumer messageConsumer = noAckSession.createConsumer(destination); - - long currentQueueDepth = getQueueDepth((AMQSession<?,?>)noAckSession, destination); - int counter = 0; - while (currentQueueDepth > 0) - { - LOGGER.info("Queue {} has {} message(s)", destination.getQueueName(), currentQueueDepth); - - while(messageConsumer.receive(_drainPollTimeout) != null) - { - counter++; - } - - currentQueueDepth = getQueueDepth((AMQSession<?,?>)noAckSession, destination); - } - LOGGER.info("Drained {} message(s) from queue {} ", counter, destination.getQueueName()); - messageConsumer.close(); - } - catch (Exception e) - { - throw new DistributedTestException("Failed to drain queue:" + destination, e); - } - finally - { - if (noAckSession != null) - { - try - { - noAckSession.close(); - } - catch (JMSException e) - { - throw new DistributedTestException("Failed to close n/a session:" + noAckSession, e); - } - } - } - } - - private void createQueue(AMQSession<?, ?> session, QueueConfig queueConfig) - { - try - { - AMQDestination destination = (AMQDestination) session.createQueue(queueConfig.getName()); - boolean autoDelete = false; - boolean exclusive = false; - session.createQueue(destination.getAMQQueueName(), autoDelete, - queueConfig.isDurable(), exclusive, queueConfig.getAttributes()); - session.bindQueue(destination.getAMQQueueName(), destination.getRoutingKey(), - EMPTY_QUEUE_BIND_ARGUMENTS, destination.getExchangeName(), - destination, autoDelete); - - LOGGER.debug("Created queue {}", queueConfig); - } - catch (Exception e) - { - throw new DistributedTestException("Failed to create queue:" + queueConfig, e); - } - } - - private void deleteQueue(AMQSession<?, ?> session, AMQShortString queueName) - { - try - { - // The Qpid AMQSession API currently makes the #deleteQueue method protected and the - // raw protocol method public. This should be changed then we should switch the below to - // use #deleteQueue. - session.sendQueueDelete(queueName); - LOGGER.debug("Deleted queue {}", queueName); - } - catch (Exception e) - { - throw new DistributedTestException("Failed to delete queue:" + queueName, e); - } - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/QueueCreator.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/QueueCreator.java deleted file mode 100644 index 16769699c1..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/jms/QueueCreator.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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.disttest.jms; - -import java.util.List; - -import javax.jms.Connection; -import javax.jms.Session; - -import org.apache.qpid.disttest.controller.config.QueueConfig; - -public interface QueueCreator -{ - String QUEUE_CREATOR_DRAIN_POLL_TIMEOUT = "qpid.disttest.queue.creator.drainPollTime"; - - void createQueues(Connection connection, Session session, List<QueueConfig> configs); - void deleteQueues(Connection connection, Session session, List<QueueConfig> configs); -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/json/JsonHandler.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/json/JsonHandler.java deleted file mode 100644 index 8e50cd4f11..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/json/JsonHandler.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.disttest.json; - -import org.apache.qpid.disttest.client.property.PropertyValue; -import org.apache.qpid.disttest.message.Command; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -public class JsonHandler -{ - private final Gson _gson = new GsonBuilder() - .registerTypeAdapter(PropertyValue.class, new PropertyValueAdapter()) - .create(); - - public <T extends Command> T unmarshall(final String jsonParams, final Class<T> clazz) - { - return _gson.fromJson(jsonParams, clazz); - } - - public <T extends Command> String marshall(final T command) - { - return _gson.toJson(command); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/json/PropertyValueAdapter.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/json/PropertyValueAdapter.java deleted file mode 100644 index 94f712e652..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/json/PropertyValueAdapter.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * 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.disttest.json; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.qpid.disttest.client.property.GeneratedPropertyValue; -import org.apache.qpid.disttest.client.property.PropertyValue; -import org.apache.qpid.disttest.client.property.PropertyValueFactory; -import org.apache.qpid.disttest.client.property.SimplePropertyValue; - -import com.google.gson.JsonArray; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; -import com.google.gson.JsonPrimitive; -import com.google.gson.JsonSerializationContext; -import com.google.gson.JsonSerializer; - -public class PropertyValueAdapter implements JsonDeserializer<PropertyValue>, JsonSerializer<PropertyValue> -{ - private static final String DEF_FIELD = "@def"; - private PropertyValueFactory _factory = new PropertyValueFactory(); - - @Override - public PropertyValue deserialize(JsonElement json, Type type, JsonDeserializationContext context) - throws JsonParseException - { - if (json.isJsonNull()) - { - return null; - } - else if (json.isJsonPrimitive()) - { - Object result = null; - JsonPrimitive primitive = json.getAsJsonPrimitive(); - if (primitive.isString()) - { - result = primitive.getAsString(); - } - else if (primitive.isNumber()) - { - String asString = primitive.getAsString(); - if (asString.indexOf('.') != -1 || asString.indexOf('e') != -1) - { - result = primitive.getAsDouble(); - } - else - { - result = primitive.getAsLong(); - } - } - else if (primitive.isBoolean()) - { - result = primitive.getAsBoolean(); - } - else - { - throw new JsonParseException("Unsupported primitive value " + primitive); - } - return new SimplePropertyValue(result); - } - else if (json.isJsonArray()) - { - JsonArray array = json.getAsJsonArray(); - List<Object> result = new ArrayList<Object>(array.size()); - for (JsonElement element : array) - { - result.add(context.deserialize(element, Object.class)); - } - return new SimplePropertyValue(result); - } - else if (json.isJsonObject()) - { - JsonObject object = json.getAsJsonObject(); - JsonElement defElement = object.getAsJsonPrimitive(DEF_FIELD); - Class<?> classInstance = null; - if (defElement != null) - { - try - { - classInstance = _factory.getPropertyValueClass(defElement.getAsString()); - } - catch (ClassNotFoundException e) - { - // ignore - } - } - if (classInstance == null) - { - Map<String, Object> result = new HashMap<String, Object>(); - for (Map.Entry<String, JsonElement> entry : object.entrySet()) - { - Object value = context.deserialize(entry.getValue(), Object.class); - result.put(entry.getKey(), value); - } - return new SimplePropertyValue(result); - } - else - { - return context.deserialize(json, classInstance); - } - } - else - { - throw new JsonParseException("Unsupported JSON type " + json); - } - } - - @Override - public JsonElement serialize(PropertyValue src, Type typeOfSrc, JsonSerializationContext context) - { - if (src instanceof GeneratedPropertyValue) - { - JsonObject object = (JsonObject) context.serialize(src, Object.class); - object.addProperty(DEF_FIELD, ((GeneratedPropertyValue) src).getDefinition()); - return object; - } - else - { - return context.serialize(src.getValue(), Object.class); - } - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/Command.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/Command.java deleted file mode 100644 index 86b4d0e439..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/Command.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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.disttest.message; - - -import org.apache.commons.lang.builder.ReflectionToStringBuilder; -import org.apache.commons.lang.builder.ToStringStyle; -import org.apache.qpid.disttest.Visitor; -import org.apache.qpid.disttest.client.Client; -import org.apache.qpid.disttest.controller.Controller; - -/** - * A command sent between the {@link Controller} and a {@link Client} - */ -public abstract class Command -{ - private final CommandType type; - - public Command(final CommandType type) - { - this.type = type; - } - - public CommandType getType() - { - return type; - } - - public void accept(Visitor visitor) - { - visitor.visit(this); - } - - @Override - public String toString() - { - return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CommandType.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CommandType.java deleted file mode 100644 index b04cbdaba1..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CommandType.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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.disttest.message; - -public enum CommandType -{ - CREATE_CONNECTION, - CREATE_CONSUMER, - CREATE_PRODUCER, - CREATE_RESPONDER, - CREATE_SESSION, - NO_OP, - REGISTER_CLIENT, - RESPONSE, - START_TEST, - STOP_CLIENT, - TEAR_DOWN_TEST, - PARTICIPANT_RESULT, - CONSUMER_PARTICIPANT_RESULT, - PRODUCER_PARTICIPANT_RESULT, - CREATE_MESSAGE_PROVIDER -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ConsumerParticipantResult.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ConsumerParticipantResult.java deleted file mode 100644 index e78f6965d2..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ConsumerParticipantResult.java +++ /dev/null @@ -1,185 +0,0 @@ -/* - * 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.disttest.message; - -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_BROWSING_SUBSCRIPTION; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_DURABLE_SUBSCRIPTION; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_NO_LOCAL; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_SELECTOR; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_SYNCHRONOUS_CONSUMER; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_TOPIC; - -import java.util.Collection; - -public class ConsumerParticipantResult extends ParticipantResult -{ - private boolean _topic; - private boolean _durableSubscription; - private boolean _browsingSubscription; - private boolean _selector; - private boolean _noLocal; - private boolean _synchronousConsumer; - - private Collection<Long> _messageLatencies; - private long _minLatency; - private long _maxLatency; - private double _averageLatency; - private double _latencyStandardDeviation; - - public ConsumerParticipantResult() - { - super(CommandType.CONSUMER_PARTICIPANT_RESULT); - } - - public ConsumerParticipantResult(String participantName) - { - this(); - setParticipantName(participantName); - } - - @OutputAttribute(attribute=IS_DURABLE_SUBSCRIPTION) - public boolean isDurableSubscription() - { - return _durableSubscription; - } - - public void setDurableSubscription(boolean durable) - { - _durableSubscription = durable; - } - - - @OutputAttribute(attribute=IS_BROWSING_SUBSCRIPTION) - public boolean isBrowsingSubscription() - { - return _browsingSubscription; - } - - public void setBrowsingSubscription(boolean browsingSubscription) - { - _browsingSubscription = browsingSubscription; - } - - - @OutputAttribute(attribute=IS_SELECTOR) - public boolean isSelector() - { - return _selector; - } - - public void setSelector(boolean selector) - { - _selector = selector; - } - - - @OutputAttribute(attribute=IS_NO_LOCAL) - public boolean isNoLocal() - { - return _noLocal; - - } - - public void setNoLocal(boolean noLocal) - { - _noLocal = noLocal; - } - - @OutputAttribute(attribute=IS_SYNCHRONOUS_CONSUMER) - public boolean isSynchronousConsumer() - { - return _synchronousConsumer; - } - - public void setSynchronousConsumer(boolean synchronousConsumer) - { - _synchronousConsumer = synchronousConsumer; - } - - - public void setTopic(boolean isTopic) - { - _topic = isTopic; - } - - @OutputAttribute(attribute=IS_TOPIC) - public boolean isTopic() - { - return _topic; - } - - public Collection<Long> getMessageLatencies() - { - return _messageLatencies; - } - - public void setMessageLatencies(Collection<Long> messageLatencies) - { - _messageLatencies = messageLatencies; - } - - @Override - @OutputAttribute(attribute=ParticipantAttribute.MIN_LATENCY) - public long getMinLatency() - { - return _minLatency; - } - - public void setMinLatency(long minLatency) - { - _minLatency = minLatency; - } - - @Override - @OutputAttribute(attribute=ParticipantAttribute.MAX_LATENCY) - public long getMaxLatency() - { - return _maxLatency; - } - - public void setMaxLatency(long maxLatency) - { - _maxLatency = maxLatency; - } - - @Override - @OutputAttribute(attribute=ParticipantAttribute.AVERAGE_LATENCY) - public double getAverageLatency() - { - return _averageLatency; - } - - public void setAverageLatency(double averageLatency) - { - _averageLatency = averageLatency; - } - - @Override - @OutputAttribute(attribute=ParticipantAttribute.LATENCY_STANDARD_DEVIATION) - public double getLatencyStandardDeviation() - { - return _latencyStandardDeviation; - } - - public void setLatencyStandardDeviation(double latencyStandardDeviation) - { - _latencyStandardDeviation = latencyStandardDeviation; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateConnectionCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateConnectionCommand.java deleted file mode 100644 index c5a96e9a94..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateConnectionCommand.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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.disttest.message; - -public class CreateConnectionCommand extends Command -{ - private String _connectionName; - private String _connectionFactoryName; - - public CreateConnectionCommand() - { - super(CommandType.CREATE_CONNECTION); - } - - public CreateConnectionCommand(String connectionName, String connectionFactoryName) - { - super(CommandType.CREATE_CONNECTION); - _connectionName = connectionName; - _connectionFactoryName = connectionFactoryName; - } - - public void setConnectionName(final String connectionName) - { - this._connectionName = connectionName; - } - - public String getConnectionName() - { - return _connectionName; - } - - public void setConnectionFactoryName(final String connectionFactoryName) - { - this._connectionFactoryName = connectionFactoryName; - } - - public String getConnectionFactoryName() - { - return _connectionFactoryName; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateConsumerCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateConsumerCommand.java deleted file mode 100644 index 07a60504c8..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateConsumerCommand.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 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.disttest.message; - -public class CreateConsumerCommand extends CreateParticpantCommand -{ - private boolean _isDurableSubscription; - private boolean _isBrowsingSubscription; - private String _selector; - private boolean _noLocal; - private boolean _synchronous; - private long _receiveTimeout = 5000; - private boolean _evaluateLatency; - - public CreateConsumerCommand() - { - super(CommandType.CREATE_CONSUMER); - } - - public boolean isDurableSubscription() - { - return _isDurableSubscription; - } - - public void setDurableSubscription(final boolean isDurableSubscription) - { - this._isDurableSubscription = isDurableSubscription; - } - - public boolean isBrowsingSubscription() - { - return _isBrowsingSubscription; - } - - public void setBrowsingSubscription(final boolean isBrowsingSubscription) - { - _isBrowsingSubscription = isBrowsingSubscription; - } - - public String getSelector() - { - return _selector; - } - - public void setSelector(final String selector) - { - this._selector = selector; - } - - public boolean isNoLocal() - { - return _noLocal; - } - - public void setNoLocal(final boolean noLocal) - { - this._noLocal = noLocal; - } - - public boolean isSynchronous() - { - return _synchronous; - } - - public void setSynchronous(boolean synchronous) - { - _synchronous = synchronous; - } - - public void setReceiveTimeout(long receiveTimeout) - { - _receiveTimeout = receiveTimeout; - - } - - public long getReceiveTimeout() - { - return _receiveTimeout; - } - - public boolean isEvaluateLatency() - { - return _evaluateLatency; - } - - public void setEvaluateLatency(boolean evaluateLatency) - { - _evaluateLatency = evaluateLatency; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateMessageProviderCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateMessageProviderCommand.java deleted file mode 100644 index 3f30fdd96a..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateMessageProviderCommand.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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.disttest.message; - -import java.util.Map; - -import org.apache.qpid.disttest.client.property.PropertyValue; - -public class CreateMessageProviderCommand extends Command -{ - private String _providerName; - private Map<String, PropertyValue> _messageProperties; - - public CreateMessageProviderCommand() - { - super(CommandType.CREATE_MESSAGE_PROVIDER); - } - - public String getProviderName() - { - return _providerName; - } - - public void setProviderName(String providerName) - { - this._providerName = providerName; - } - - public Map<String, PropertyValue> getMessageProperties() - { - return _messageProperties; - } - - public void setMessageProperties(Map<String, PropertyValue> messageProperties) - { - this._messageProperties = messageProperties; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateParticpantCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateParticpantCommand.java deleted file mode 100644 index e7349bf795..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateParticpantCommand.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 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.disttest.message; - -import org.apache.commons.lang.builder.ToStringBuilder; - -public abstract class CreateParticpantCommand extends Command -{ - private boolean _isTopic; - private String _participantName; - private String _sessionName; - private String _destinationName; - private long _numberOfMessages; - private int _batchSize; - private long _maximumDuration; - - public CreateParticpantCommand(CommandType type) - { - super(type); - } - - public String getParticipantName() - { - return _participantName; - } - - public void setParticipantName(final String participantName) - { - _participantName = participantName; - } - - public String getSessionName() - { - return _sessionName; - } - - public void setSessionName(final String sessionName) - { - _sessionName = sessionName; - } - - public String getDestinationName() - { - return _destinationName; - } - - public void setDestinationName(final String destinationName) - { - _destinationName = destinationName; - } - - public boolean isTopic() - { - return _isTopic; - } - - public void setTopic(boolean isTopic) - { - _isTopic = isTopic; - } - - public long getNumberOfMessages() - { - return _numberOfMessages; - } - - public void setNumberOfMessages(final long numberOfMessages) - { - _numberOfMessages = numberOfMessages; - } - - public int getBatchSize() - { - return _batchSize; - } - - public void setBatchSize(int batchSize) - { - _batchSize = batchSize; - } - - public long getMaximumDuration() - { - return _maximumDuration; - } - - public void setMaximumDuration(long maximumDuration) - { - _maximumDuration = maximumDuration; - } - - @Override - public String toString() - { - return ToStringBuilder.reflectionToString(this); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateProducerCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateProducerCommand.java deleted file mode 100644 index 69dfe1ff5a..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateProducerCommand.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * 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.disttest.message; - -public class CreateProducerCommand extends CreateParticpantCommand -{ - private int _deliveryMode; - private int _messageSize; - private int _priority; - private long _timeToLive; - private long _interval; - private long _startDelay; - private String _messageProviderName; - - public CreateProducerCommand() - { - super(CommandType.CREATE_PRODUCER); - } - - public int getMessageSize() - { - return _messageSize; - } - - public void setMessageSize(final int messageSize) - { - this._messageSize = messageSize; - } - - public int getPriority() - { - return _priority; - } - - public void setPriority(final int priority) - { - this._priority = priority; - } - - public int getDeliveryMode() - { - return _deliveryMode; - } - - public void setDeliveryMode(final int deliveryMode) - { - this._deliveryMode = deliveryMode; - } - - public long getTimeToLive() - { - return _timeToLive; - } - - public void setTimeToLive(final long timeToLive) - { - this._timeToLive = timeToLive; - } - - public long getInterval() - { - return _interval; - } - - public void setInterval(long interval) - { - this._interval = interval; - } - - public long getStartDelay() - { - return _startDelay; - } - - public void setStartDelay(long startDelay) - { - this._startDelay = startDelay; - } - - public String getMessageProviderName() - { - return _messageProviderName; - } - - public void setMessageProviderName(String messageProviderName) - { - this._messageProviderName = messageProviderName; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateResponderCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateResponderCommand.java deleted file mode 100644 index 85a2b5e548..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateResponderCommand.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * 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.disttest.message; - -public class CreateResponderCommand extends Command -{ - public CreateResponderCommand() - { - super(CommandType.CREATE_RESPONDER); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateSessionCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateSessionCommand.java deleted file mode 100644 index f6f59c26af..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/CreateSessionCommand.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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.disttest.message; - -public class CreateSessionCommand extends Command -{ - private String sessionName; - private String connectionName; - private int acknowledgeMode; - - public CreateSessionCommand() - { - super(CommandType.CREATE_SESSION); - } - - public String getSessionName() - { - return sessionName; - } - - public void setSessionName(final String sessionName) - { - this.sessionName = sessionName; - } - - public String getConnectionName() - { - return connectionName; - } - - public void setConnectionName(final String connectionName) - { - this.connectionName = connectionName; - } - - public int getAcknowledgeMode() - { - return acknowledgeMode; - } - - public void setAcknowledgeMode(final int acknowledgeMode) - { - this.acknowledgeMode = acknowledgeMode; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/NoOpCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/NoOpCommand.java deleted file mode 100644 index 1cdaf00163..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/NoOpCommand.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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.disttest.message; - - -public class NoOpCommand extends Command -{ - public NoOpCommand() - { - super(CommandType.NO_OP); - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/OutputAttribute.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/OutputAttribute.java deleted file mode 100644 index b912eaa1cb..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/OutputAttribute.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.disttest.message; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - - -/** - * Marks an attribute of {@link ParticipantResult} that should be written to the test output file. - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -public @interface OutputAttribute -{ - ParticipantAttribute attribute(); -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ParticipantAttribute.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ParticipantAttribute.java deleted file mode 100644 index 1154ff306c..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ParticipantAttribute.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * 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.disttest.message; - -import java.text.DecimalFormat; - -import org.apache.qpid.disttest.client.Participant; - -/** - * Meta-date representing the attributes of {@link Participant} that we write to the test output file. - * - * Order of declaration is currently important - it determines they order they appear in the output. - * - * @see OutputAttribute - */ -public enum ParticipantAttribute -{ - TEST_NAME("testName"), - ITERATION_NUMBER("iterationNumber"), - THROUGHPUT("throughputKbPerS", "#"), - AVERAGE_LATENCY("averageLatency", "#"), - CONFIGURED_CLIENT_NAME("clientName"), - PARTICIPANT_NAME("participantName"), - NUMBER_OF_MESSAGES_PROCESSED("numberOfMessages"), - PAYLOAD_SIZE("payloadSizeB"), - PRIORITY("priority"), - TIME_TO_LIVE("timeToLiveMs"), - ACKNOWLEDGE_MODE("acknowledgeMode"), - DELIVERY_MODE("deliveryMode"), - BATCH_SIZE("batchSize"), - MAXIMUM_DURATION("maximumDurationMs"), - PRODUCER_START_DELAY("producerStartDelayMs"), - PRODUCER_INTERVAL("producerIntervalMs"), - IS_TOPIC("isTopic"), - IS_DURABLE_SUBSCRIPTION("isDurableSubscription"), - IS_BROWSING_SUBSCRIPTION("isBrowsingSubscription"), - IS_SELECTOR("isSelector"), - IS_NO_LOCAL("isNoLocal"), - IS_SYNCHRONOUS_CONSUMER("isSynchronousConsumer"), - TOTAL_NUMBER_OF_CONSUMERS("totalNumberOfConsumers"), - TOTAL_NUMBER_OF_PRODUCERS("totalNumberOfProducers"), - TOTAL_PAYLOAD_PROCESSED("totalPayloadProcessedB"), - TIME_TAKEN("timeTakenMs"), - ERROR_MESSAGE("errorMessage"), - MIN_LATENCY("minLatency"), - MAX_LATENCY("maxLatency"), - LATENCY_STANDARD_DEVIATION("latencyStandardDeviation"), - MESSAGE_THROUGHPUT("throughputMessagesPerS") - ; - - private String _displayName; - private String _decimalFormat; - - ParticipantAttribute(String displayName) - { - _displayName = displayName; - } - - ParticipantAttribute(String displayName, String decimalFormat) - { - _displayName = displayName; - _decimalFormat = decimalFormat; - } - - public String getDecimalFormat() - { - return _decimalFormat; - } - - public String getDisplayName() - { - return _displayName; - } - - public String format(Object attributeValue) - { - if(attributeValue == null) - { - return null; - } - - String attributeAsString = String.valueOf(attributeValue); - - if(_decimalFormat != null) - { - DecimalFormat decimalFormat = new DecimalFormat(_decimalFormat); - double attributeAsDoule = Double.valueOf(attributeAsString); - return decimalFormat.format(attributeAsDoule); - } - else - { - return attributeAsString; - } - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ParticipantAttributeExtractor.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ParticipantAttributeExtractor.java deleted file mode 100644 index 95a19ceefc..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ParticipantAttributeExtractor.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * 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.disttest.message; - -import java.beans.PropertyDescriptor; -import java.lang.annotation.Annotation; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.beanutils.PropertyUtils; - - -public class ParticipantAttributeExtractor -{ - public static Map<ParticipantAttribute, Object> getAttributes(Object targetObject) - { - Map<ParticipantAttribute, Object> attributes = new HashMap<ParticipantAttribute, Object>(); - - - PropertyDescriptor[] descriptors = PropertyUtils.getPropertyDescriptors(targetObject); - for (PropertyDescriptor propertyDescriptor : descriptors) - { - final Method readMethod = getPropertyReadMethod(targetObject, propertyDescriptor); - - for (Annotation annotation : readMethod.getDeclaredAnnotations()) - { - if (annotation instanceof OutputAttribute) - { - OutputAttribute outputAttribute = (OutputAttribute) annotation; - - Object value = getPropertyValue(targetObject, propertyDescriptor.getName()); - attributes.put(outputAttribute.attribute(), value); - } - } - } - - return attributes; - } - - public static Method getPropertyReadMethod(Object targetObject, PropertyDescriptor propertyDescriptor) - { - final Method readMethod = propertyDescriptor.getReadMethod(); - - if (readMethod == null) - { - throw new RuntimeException("No read method for property " + propertyDescriptor.getName() + " on " + targetObject); - } - return readMethod; - } - - public static Object getPropertyValue(Object targetObject, String propertyName) - { - try - { - return PropertyUtils.getProperty(targetObject, propertyName); - } - catch (IllegalAccessException e) - { - throw new RuntimeException("Couldn't get value of property " + propertyName + " from " + targetObject, e); - } - catch (InvocationTargetException e) - { - throw new RuntimeException("Couldn't get value of property " + propertyName + " from " + targetObject, e); - } - catch (NoSuchMethodException e) - { - throw new RuntimeException("Couldn't get value of property " + propertyName + " from " + targetObject, e); - } - - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ParticipantResult.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ParticipantResult.java deleted file mode 100644 index 0a824a316b..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ParticipantResult.java +++ /dev/null @@ -1,322 +0,0 @@ -/* - * 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.disttest.message; - -import static org.apache.qpid.disttest.message.ParticipantAttribute.BATCH_SIZE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.CONFIGURED_CLIENT_NAME; -import static org.apache.qpid.disttest.message.ParticipantAttribute.ITERATION_NUMBER; -import static org.apache.qpid.disttest.message.ParticipantAttribute.MAXIMUM_DURATION; -import static org.apache.qpid.disttest.message.ParticipantAttribute.MESSAGE_THROUGHPUT; -import static org.apache.qpid.disttest.message.ParticipantAttribute.NUMBER_OF_MESSAGES_PROCESSED; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PARTICIPANT_NAME; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PAYLOAD_SIZE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TEST_NAME; -import static org.apache.qpid.disttest.message.ParticipantAttribute.THROUGHPUT; - -import java.util.Comparator; -import java.util.Date; -import java.util.Map; - -public class ParticipantResult extends Response -{ - private String _testName; - private String _participantName; - private int _iterationNumber; - - private long _startInMillis; - private long _endInMillis; - private int _batchSize; - private long _maximumDuration; - - private String _configuredClientName; - - private long _numberOfMessagesProcessed; - private long _totalPayloadProcessed; - private int _payloadSize; - private double _throughput; - private int _messageThroughput; - - private int _totalNumberOfConsumers; - private int _totalNumberOfProducers; - - // As Session.SESSION_TRANSACTED is 0, we use value -1 so we can distinguish the case where an aggregated result - // summarizes results from participants using different session acknowledge modes. - private int _acknowledgeMode = -1; - - public static final Comparator<? super ParticipantResult> PARTICIPANT_NAME_COMPARATOR = new Comparator<ParticipantResult>() - { - @Override - public int compare(ParticipantResult participantResult1, ParticipantResult participantResult2) - { - return participantResult1.getParticipantName().compareTo(participantResult2.getParticipantName()); - } - }; - - public ParticipantResult() - { - this(CommandType.PARTICIPANT_RESULT); - } - - public ParticipantResult(CommandType commandType) - { - super(commandType); - } - - public ParticipantResult(String participantName) - { - this(); - setParticipantName(participantName); - } - - @OutputAttribute(attribute=TEST_NAME) - public String getTestName() - { - return _testName; - } - - public void setTestName(String testName) - { - _testName = testName; - } - - @OutputAttribute(attribute=ITERATION_NUMBER) - public int getIterationNumber() - { - return _iterationNumber; - } - - public void setIterationNumber(int iterationNumber) - { - _iterationNumber = iterationNumber; - } - - public void setStartDate(Date start) - { - _startInMillis = start.getTime(); - } - - public void setEndDate(Date end) - { - _endInMillis = end.getTime(); - } - - public Date getStartDate() - { - return new Date(_startInMillis); - } - - public Date getEndDate() - { - return new Date(_endInMillis); - } - - - public long getStartInMillis() - { - return _startInMillis; - } - - public long getEndInMillis() - { - return _endInMillis; - } - - - @OutputAttribute(attribute=PARTICIPANT_NAME) - public String getParticipantName() - { - return _participantName; - } - - - public void setParticipantName(String participantName) - { - _participantName = participantName; - } - - @OutputAttribute(attribute=ParticipantAttribute.TIME_TAKEN) - public long getTimeTaken() - { - return _endInMillis - _startInMillis; - } - - @OutputAttribute(attribute=CONFIGURED_CLIENT_NAME) - public String getConfiguredClientName() - { - return _configuredClientName; - } - - public void setConfiguredClientName(String configuredClientName) - { - _configuredClientName = configuredClientName; - } - - @OutputAttribute(attribute=NUMBER_OF_MESSAGES_PROCESSED) - public long getNumberOfMessagesProcessed() - { - return _numberOfMessagesProcessed; - } - - public void setNumberOfMessagesProcessed(long numberOfMessagesProcessed) - { - _numberOfMessagesProcessed = numberOfMessagesProcessed; - } - - @OutputAttribute(attribute=ParticipantAttribute.TOTAL_PAYLOAD_PROCESSED) - public long getTotalPayloadProcessed() - { - return _totalPayloadProcessed; - } - - @OutputAttribute(attribute = PAYLOAD_SIZE) - public int getPayloadSize() - { - return _payloadSize; - } - - public void setPayloadSize(int payloadSize) - { - _payloadSize = payloadSize; - } - - public void setTotalPayloadProcessed(long totalPayloadProcessed) - { - _totalPayloadProcessed = totalPayloadProcessed; - } - - public Map<ParticipantAttribute, Object> getAttributes() - { - return ParticipantAttributeExtractor.getAttributes(this); - } - - public void setBatchSize(int batchSize) - { - _batchSize = batchSize; - } - - @OutputAttribute(attribute=BATCH_SIZE) - public int getBatchSize() - { - return _batchSize; - } - - public void setMaximumDuration(long maximumDuration) - { - _maximumDuration = maximumDuration; - } - - @OutputAttribute(attribute=MAXIMUM_DURATION) - public long getMaximumDuration() - { - return _maximumDuration; - } - - @OutputAttribute(attribute=THROUGHPUT) - public double getThroughput() - { - return _throughput; - } - - public void setThroughput(double throughput) - { - _throughput = throughput; - } - - @OutputAttribute(attribute=MESSAGE_THROUGHPUT) - public int getMessageThroughput() - { - return _messageThroughput; - } - - public void setMessageThroughput(int throughput) - { - _messageThroughput = throughput; - } - - public void setTotalNumberOfConsumers(int totalNumberOfConsumers) - { - _totalNumberOfConsumers = totalNumberOfConsumers; - } - - @OutputAttribute(attribute=ParticipantAttribute.TOTAL_NUMBER_OF_CONSUMERS) - public int getTotalNumberOfConsumers() - { - return _totalNumberOfConsumers; - } - - public void setTotalNumberOfProducers(int totalNumberOfProducers) - { - _totalNumberOfProducers = totalNumberOfProducers; - } - - @OutputAttribute(attribute=ParticipantAttribute.TOTAL_NUMBER_OF_PRODUCERS) - public int getTotalNumberOfProducers() - { - return _totalNumberOfProducers; - } - - @OutputAttribute(attribute=ParticipantAttribute.ACKNOWLEDGE_MODE) - public int getAcknowledgeMode() - { - return _acknowledgeMode; - } - - public void setAcknowledgeMode(int acknowledgeMode) - { - _acknowledgeMode = acknowledgeMode; - } - - public double getLatencyStandardDeviation() - { - return 0.0; - } - - @OutputAttribute(attribute = ParticipantAttribute.MIN_LATENCY) - public long getMinLatency() - { - return 0; - } - - @OutputAttribute(attribute = ParticipantAttribute.MAX_LATENCY) - public long getMaxLatency() - { - return 0; - } - - @OutputAttribute(attribute = ParticipantAttribute.AVERAGE_LATENCY) - public double getAverageLatency() - { - return 0; - } - - public int getPriority() - { - return 0; - } - - public long getTimeToLive() - { - return 0; - } - - public int getDeliveryMode() - { - return 0; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ProducerParticipantResult.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ProducerParticipantResult.java deleted file mode 100644 index 2d9399a3d3..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/ProducerParticipantResult.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * 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.disttest.message; - -import static org.apache.qpid.disttest.message.ParticipantAttribute.DELIVERY_MODE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PRIORITY; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PRODUCER_INTERVAL; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PRODUCER_START_DELAY; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TIME_TO_LIVE; - -public class ProducerParticipantResult extends ParticipantResult -{ - private int _priority; - private long _timeToLive; - private long _startDelay; - private long _interval; - private int _deliveryMode; - public ProducerParticipantResult() - { - super(CommandType.PRODUCER_PARTICIPANT_RESULT); - } - - public ProducerParticipantResult(String participantName) - { - this(); - setParticipantName(participantName); - } - - @Override - @OutputAttribute(attribute=PRIORITY) - public int getPriority() - { - return _priority; - } - - public void setPriority(int priority) - { - _priority = priority; - } - - @Override - @OutputAttribute(attribute=TIME_TO_LIVE) - public long getTimeToLive() - { - return _timeToLive; - } - - public void setTimeToLive(long timeToLive) - { - _timeToLive = timeToLive; - } - - @OutputAttribute(attribute=PRODUCER_START_DELAY) - public long getStartDelay() - { - return _startDelay; - } - - public void setStartDelay(long startDelay) - { - _startDelay = startDelay; - } - - @OutputAttribute(attribute=PRODUCER_INTERVAL) - public long getInterval() - { - return _interval; - } - - public void setInterval(long producerInterval) - { - _interval = producerInterval; - } - - @Override - @OutputAttribute(attribute=DELIVERY_MODE) - public int getDeliveryMode() - { - return _deliveryMode; - } - - public void setDeliveryMode(int deliveryMode) - { - this._deliveryMode = deliveryMode; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/RegisterClientCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/RegisterClientCommand.java deleted file mode 100644 index af880a37d9..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/RegisterClientCommand.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.disttest.message; - -public class RegisterClientCommand extends Command -{ - private final String _clientName; - private final String _clientQueueName; - - public RegisterClientCommand(final String clientName, final String clientQueueName) - { - super(CommandType.REGISTER_CLIENT); - _clientName = clientName; - _clientQueueName = clientQueueName; - } - - public String getClientName() - { - return _clientName; - } - - public String getClientQueueName() - { - return _clientQueueName; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/Response.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/Response.java deleted file mode 100644 index aac056efcb..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/Response.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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.disttest.message; - - -public class Response extends Command -{ - protected String _registeredClientName; - protected String _errorMessage; - private CommandType _inReplyToCommandType; - - public Response(final String registeredclientName, final CommandType inReplyToCommandType, final String errorMessage) - { - super(CommandType.RESPONSE); - _registeredClientName = registeredclientName; - _errorMessage = errorMessage; - _inReplyToCommandType = inReplyToCommandType; - } - - public Response(String clientName, CommandType inReplyToCommandType) - { - this(clientName, inReplyToCommandType, null); - } - - /** - * Provided so that subclasses can call super(commandType) - */ - protected Response(CommandType commandType) - { - super(commandType); - } - - public String getRegisteredClientName() - { - return _registeredClientName; - } - - public void setRegisteredClientName(String registeredClientName) - { - _registeredClientName = registeredClientName; - } - - @OutputAttribute(attribute=ParticipantAttribute.ERROR_MESSAGE) - public String getErrorMessage() - { - return _errorMessage; - } - - public void setErrorMessage(String errorMessage) - { - _errorMessage = errorMessage; - } - - public boolean hasError() - { - return _errorMessage != null; - } - - public CommandType getInReplyToCommandType() - { - return _inReplyToCommandType; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/StartTestCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/StartTestCommand.java deleted file mode 100644 index 4a53697ecd..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/StartTestCommand.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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.disttest.message; - -public class StartTestCommand extends Command -{ - - public StartTestCommand() - { - super(CommandType.START_TEST); - } - -}
\ No newline at end of file diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/StopClientCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/StopClientCommand.java deleted file mode 100644 index 08758aaa69..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/StopClientCommand.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * 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.disttest.message; - -public class StopClientCommand extends Command -{ - public StopClientCommand() - { - super(CommandType.STOP_CLIENT); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/TearDownTestCommand.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/TearDownTestCommand.java deleted file mode 100644 index 6b1367d4f9..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/message/TearDownTestCommand.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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.disttest.message; - -public class TearDownTestCommand extends Command -{ - - public TearDownTestCommand() - { - super(CommandType.TEAR_DOWN_TEST); - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/BenchmarkResultWriter.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/BenchmarkResultWriter.java deleted file mode 100644 index a184b53668..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/BenchmarkResultWriter.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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.disttest.results; - -import java.util.List; - -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.results.aggregation.ITestResult; - -public class BenchmarkResultWriter implements ResultsWriter -{ - private final boolean _reportMessageTotals; - - public BenchmarkResultWriter(boolean reportMessageTotals) - { - _reportMessageTotals = reportMessageTotals; - } - - @Override - public void writeResults(ResultsForAllTests resultsForAllTests, String testConfigFile) - { - for (ITestResult allResult : resultsForAllTests.getAllParticipantsResult().getTestResults()) - { - ParticipantResult allRowData = allResult.getParticipantResults().iterator().next(); - - if (allRowData.getErrorMessage() == null) - { - final String output; - if (_reportMessageTotals) - { - output = String.format("%s : %,d (total payload/bytes) : %,d (time taken/ms) : %,d (total messages) : %,d (messages/s) %,.2f (Kbytes/s)", - allResult.getName(), allRowData.getTotalPayloadProcessed(), allRowData.getTimeTaken(), allRowData.getNumberOfMessagesProcessed(), allRowData.getMessageThroughput(), allRowData.getThroughput()); - } - else - { - output = String.format("%s : %,d (messages/s) %,.2f (Kbytes/s)", allResult.getName(), allRowData.getMessageThroughput(), allRowData.getThroughput()); - } - System.out.println(output); - } - else - { - System.err.println(allRowData.getErrorMessage()); - } - } - } - - @Override - public void writeResultsSummary(List<ResultsForAllTests> allResultsList) - { - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/ResultsCsvWriter.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/ResultsCsvWriter.java deleted file mode 100644 index a041233ea3..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/ResultsCsvWriter.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * 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.disttest.results; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.List; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.results.aggregation.TestResultAggregator; -import org.apache.qpid.disttest.results.formatting.CSVFormatter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ResultsCsvWriter implements ResultsWriter -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ResultsCsvWriter.class); - - static final String TEST_SUMMARY_FILE_NAME = "test-summary.csv"; - - private final File _outputDir; - - private CSVFormatter _csvFormater = new CSVFormatter(); - - private TestResultAggregator _testResultAggregator = new TestResultAggregator(); - - public ResultsCsvWriter(File outputDir) - { - _outputDir = outputDir; - } - - @Override - public void writeResults(ResultsForAllTests resultsForAllTests, String testConfigFile) - { - final String outputFile = generateOutputCsvNameFrom(testConfigFile); - writeResultsToOutputFile(resultsForAllTests, outputFile); - } - - @Override - public void writeResultsSummary(List<ResultsForAllTests> allResultsList) - { - ResultsForAllTests combinedResults = _testResultAggregator.aggregateTestResults(allResultsList); - writeResultsToOutputFile(combinedResults, new File(_outputDir, TEST_SUMMARY_FILE_NAME).getAbsolutePath()); - } - - /** - * generateOutputCsvNameFrom("/config/testConfigFile.js", "/output") returns /output/testConfigFile.csv - */ - private String generateOutputCsvNameFrom(String testConfigFile) - { - final String filenameOnlyWithExtension = new File(testConfigFile).getName(); - final String cvsFile = filenameOnlyWithExtension.replaceFirst(".?\\w*$", ".csv"); - - return new File(_outputDir, cvsFile).getAbsolutePath(); - } - - private void writeResultsToOutputFile(ResultsForAllTests resultsForAllTests, String outputFile) - { - FileWriter writer = null; - try - { - final String outputCsv = _csvFormater.format(resultsForAllTests); - writer = new FileWriter(outputFile); - writer.write(outputCsv); - LOGGER.info("Wrote " + resultsForAllTests.getTestResults().size() + " test result(s) to output file " + outputFile); - } - catch (IOException e) - { - throw new DistributedTestException("Unable to write output file " + outputFile, e); - } - finally - { - if (writer != null) - { - try - { - writer.close(); - } - catch (IOException e) - { - LOGGER.error("Failed to close stream for file " + outputFile, e); - } - } - } - } - - public void setCsvFormater(CSVFormatter csvFormater) - { - _csvFormater = csvFormater; - } - - void setTestResultAggregator(TestResultAggregator testResultAggregator) - { - _testResultAggregator = testResultAggregator; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/ResultsWriter.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/ResultsWriter.java deleted file mode 100644 index 4cc8c9cf87..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/ResultsWriter.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * - * 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.disttest.results; - -import java.util.List; - -import org.apache.qpid.disttest.controller.ResultsForAllTests; - -public interface ResultsWriter -{ - - void writeResults(ResultsForAllTests resultsForAllTests, String testConfigFile); - - void writeResultsSummary(List<ResultsForAllTests> allResultsList); - -}
\ No newline at end of file diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/AggregatedTestResult.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/AggregatedTestResult.java deleted file mode 100644 index 5e6da2e65b..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/AggregatedTestResult.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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.disttest.results.aggregation; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.qpid.disttest.message.ParticipantResult; - -public class AggregatedTestResult implements ITestResult -{ - private ParticipantResult _allParticipantResult; - private ParticipantResult _allConsumerParticipantResult; - private ParticipantResult _allProducerParticipantResult; - private final ITestResult _originalTestResult; - - public AggregatedTestResult(ITestResult originalTestResult) - { - _originalTestResult = originalTestResult; - } - - /** - * Returns the result where {@link ParticipantResult#getNumberOfMessagesProcessed()} - * is the total number of messages consumed during the test, and {@link ParticipantResult#getTimeTaken()} - * is the time between the start of the first producer and the end of the last consumer to finish. - */ - public ParticipantResult getAllParticipantResult() - { - return _allParticipantResult; - } - - public void setAllParticipantResult(ParticipantResult allParticipantResult) - { - _allParticipantResult = allParticipantResult; - } - - public ParticipantResult getAllConsumerParticipantResult() - { - return _allConsumerParticipantResult; - } - public void setAllConsumerParticipantResult(ParticipantResult allConsumerParticipantResult) - { - _allConsumerParticipantResult = allConsumerParticipantResult; - } - public ParticipantResult getAllProducerParticipantResult() - { - return _allProducerParticipantResult; - } - public void setAllProducerParticipantResult(ParticipantResult allProducerParticipantResult) - { - _allProducerParticipantResult = allProducerParticipantResult; - } - - // TODO should weaken to Collection - @Override - public List<ParticipantResult> getParticipantResults() - { - List<ParticipantResult> allParticipantResults = new ArrayList<ParticipantResult>(_originalTestResult.getParticipantResults()); - - allParticipantResults.add(_allConsumerParticipantResult); - allParticipantResults.add(_allProducerParticipantResult); - allParticipantResults.add(_allParticipantResult); - - return allParticipantResults; - } - - @Override - public boolean hasErrors() - { - return _originalTestResult.hasErrors(); - } - - @Override - public String getName() - { - return _originalTestResult.getName(); - } - - - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/Aggregator.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/Aggregator.java deleted file mode 100644 index cde30d36e5..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/Aggregator.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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.disttest.results.aggregation; - -import org.apache.qpid.disttest.controller.ResultsForAllTests; - -public class Aggregator -{ - - private TestResultAggregator _testResultAggregator = new TestResultAggregator(); - - public ResultsForAllTests aggregateResults(ResultsForAllTests rawResultsForAllTests) - { - - ResultsForAllTests aggregatedResultsForAllTests = new ResultsForAllTests(); - - - for (ITestResult testResult : rawResultsForAllTests.getTestResults()) - { - AggregatedTestResult aggregateTestResult = _testResultAggregator.aggregateTestResult(testResult); - aggregatedResultsForAllTests.add(aggregateTestResult); - } - - - return aggregatedResultsForAllTests; - } - - void setTestResultAggregator(TestResultAggregator testResultAggregator) - { - _testResultAggregator = testResultAggregator; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/ITestResult.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/ITestResult.java deleted file mode 100644 index 6230067486..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/ITestResult.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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.disttest.results.aggregation; - -import java.util.List; - -import org.apache.qpid.disttest.message.ParticipantResult; - -public interface ITestResult -{ - // TODO should weaken to Collection - List<ParticipantResult> getParticipantResults(); - - boolean hasErrors(); - - String getName(); - -}
\ No newline at end of file diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/ParticipantResultAggregator.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/ParticipantResultAggregator.java deleted file mode 100644 index c21a78d359..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/ParticipantResultAggregator.java +++ /dev/null @@ -1,211 +0,0 @@ -/* - * 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.disttest.results.aggregation; - -import java.util.Date; -import java.util.NavigableSet; -import java.util.TreeSet; - -import org.apache.qpid.disttest.message.ConsumerParticipantResult; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.ProducerParticipantResult; - -public class ParticipantResultAggregator -{ - private final String _aggregatedResultName; - private final Class<? extends ParticipantResult> _targetClass; - - private long _minStartDate = Long.MAX_VALUE; - private long _maxEndDate = 0; - private long _numberOfMessagesProcessed = 0; - private long _totalPayloadProcessed = 0; - - private int _totalNumberOfConsumers = 0; - private int _totalNumberOfProducers = 0; - - private NavigableSet<Integer> _encounteredPayloadSizes = new TreeSet<Integer>(); - private NavigableSet<Integer> _encounteredIterationNumbers = new TreeSet<Integer>(); - private NavigableSet<Integer> _encounteredBatchSizes = new TreeSet<Integer>(); - private NavigableSet<Integer> _encounteredAcknowledgeMode = new TreeSet<Integer>(); - private NavigableSet<Integer> _encounteredDeliveryModes = new TreeSet<Integer>(); - private NavigableSet<Boolean> _encounteredDurableSubscriptions = new TreeSet<Boolean>(); - private NavigableSet<Boolean> _encounteredTopics = new TreeSet<Boolean>(); - private NavigableSet<String> _encountedTestNames = new TreeSet<String>(); - - private SeriesStatistics _latencyStatistics = new SeriesStatistics(); - - public ParticipantResultAggregator(Class<? extends ParticipantResult> targetClass, String aggregateResultName) - { - _aggregatedResultName = aggregateResultName; - _targetClass = targetClass; - } - - public void aggregate(ParticipantResult result) - { - if (isAggregatable(result)) - { - rollupConstantAttributes(result); - computeVariableAttributes(result); - if (result instanceof ConsumerParticipantResult) - { - ConsumerParticipantResult consumerParticipantResult = (ConsumerParticipantResult)result; - _latencyStatistics.addMessageLatencies(consumerParticipantResult.getMessageLatencies()); - _latencyStatistics.aggregate(); - } - } - } - - public ParticipantResult getAggregatedResult() - { - ParticipantResult aggregatedResult; - if (_targetClass == ConsumerParticipantResult.class) - { - ConsumerParticipantResult consumerParticipantResult = new ConsumerParticipantResult(_aggregatedResultName); - consumerParticipantResult.setAverageLatency(_latencyStatistics.getAverage()); - consumerParticipantResult.setMinLatency(_latencyStatistics.getMinimum()); - consumerParticipantResult.setMaxLatency(_latencyStatistics.getMaximum()); - consumerParticipantResult.setLatencyStandardDeviation(_latencyStatistics.getStandardDeviation()); - aggregatedResult = consumerParticipantResult; - } - else - { - aggregatedResult = new ParticipantResult(_aggregatedResultName); - } - - setRolledUpConstantAttributes(aggregatedResult); - setComputedVariableAttributes(aggregatedResult); - - return aggregatedResult; - } - - private boolean isAggregatable(ParticipantResult result) - { - return _targetClass.isAssignableFrom(result.getClass()); - } - - private void computeVariableAttributes(ParticipantResult result) - { - _numberOfMessagesProcessed += result.getNumberOfMessagesProcessed(); - _totalPayloadProcessed += result.getTotalPayloadProcessed(); - _totalNumberOfConsumers += result.getTotalNumberOfConsumers(); - _totalNumberOfProducers += result.getTotalNumberOfProducers(); - _minStartDate = Math.min(_minStartDate, result.getStartInMillis()); - _maxEndDate = Math.max(_maxEndDate, result.getEndInMillis()); - } - - private void rollupConstantAttributes(ParticipantResult result) - { - if (result.getTestName() != null) - { - _encountedTestNames.add(result.getTestName()); - } - _encounteredPayloadSizes.add(result.getPayloadSize()); - _encounteredIterationNumbers.add(result.getIterationNumber()); - _encounteredBatchSizes.add(result.getBatchSize()); - _encounteredAcknowledgeMode.add(result.getAcknowledgeMode()); - if (result instanceof ProducerParticipantResult) - { - ProducerParticipantResult producerParticipantResult = (ProducerParticipantResult) result; - _encounteredDeliveryModes.add(producerParticipantResult.getDeliveryMode()); - } - else if(result instanceof ConsumerParticipantResult) - { - ConsumerParticipantResult consumerParticipantResult = (ConsumerParticipantResult)result; - _encounteredDurableSubscriptions.add(consumerParticipantResult.isDurableSubscription()); - _encounteredTopics.add(consumerParticipantResult.isTopic()); - } - } - - private void setComputedVariableAttributes(ParticipantResult aggregatedResult) - { - aggregatedResult.setNumberOfMessagesProcessed(_numberOfMessagesProcessed); - aggregatedResult.setTotalPayloadProcessed(_totalPayloadProcessed); - aggregatedResult.setTotalNumberOfConsumers(_totalNumberOfConsumers); - aggregatedResult.setTotalNumberOfProducers(_totalNumberOfProducers); - aggregatedResult.setStartDate(new Date(_minStartDate)); - aggregatedResult.setEndDate(new Date(_maxEndDate)); - aggregatedResult.setThroughput(calculateThroughputInKiloBytesPerSecond()); - aggregatedResult.setMessageThroughput(calculateThroughputInMessagesPerSecond()); - } - - private void setRolledUpConstantAttributes(ParticipantResult aggregatedResult) - { - if (_encounteredIterationNumbers.size() == 1) - { - aggregatedResult.setIterationNumber( _encounteredIterationNumbers.first()); - } - if (_encounteredPayloadSizes.size() == 1) - { - aggregatedResult.setPayloadSize(_encounteredPayloadSizes.first()); - } - if (_encountedTestNames.size() == 1) - { - aggregatedResult.setTestName(_encountedTestNames.first()); - } - if (_encounteredBatchSizes.size() == 1) - { - aggregatedResult.setBatchSize(_encounteredBatchSizes.first()); - } - if (_encounteredAcknowledgeMode.size() == 1) - { - aggregatedResult.setAcknowledgeMode(_encounteredAcknowledgeMode.first()); - } - if (aggregatedResult instanceof ProducerParticipantResult) - { - ProducerParticipantResult producerParticipantResult = (ProducerParticipantResult) aggregatedResult; - if(_encounteredDeliveryModes.size() == 1) - { - producerParticipantResult.setDeliveryMode(_encounteredDeliveryModes.first()); - } - } - if (aggregatedResult instanceof ConsumerParticipantResult) - { - ConsumerParticipantResult consumerParticipantResult = (ConsumerParticipantResult) aggregatedResult; - if(_encounteredDurableSubscriptions.size() == 1) - { - consumerParticipantResult.setDurableSubscription(_encounteredDurableSubscriptions.first()); - } - if(_encounteredTopics.size() == 1) - { - consumerParticipantResult.setTopic(_encounteredTopics.first()); - } - } - } - - private double calculateThroughputInKiloBytesPerSecond() - { - double durationInMillis = _maxEndDate - _minStartDate; - double durationInSeconds = durationInMillis / 1000; - double totalPayloadProcessedInKiloBytes = ((double)_totalPayloadProcessed) / 1024; - - return totalPayloadProcessedInKiloBytes/durationInSeconds; - } - - private int calculateThroughputInMessagesPerSecond() - { - double durationInMillis = _maxEndDate - _minStartDate; - if (durationInMillis == 0 ) - { - return 0; - } - - return (int)Math.round((_numberOfMessagesProcessed * 1000.0d)/durationInMillis); - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/SeriesStatistics.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/SeriesStatistics.java deleted file mode 100644 index b93c210473..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/SeriesStatistics.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * - * 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.disttest.results.aggregation; - -import java.util.Collection; -import java.util.concurrent.CopyOnWriteArrayList; - -public class SeriesStatistics -{ - private long _minValue; - private long _maxValue; - private double _mean; - private double _standardDeviation; - private Collection<Long> _series = new CopyOnWriteArrayList<Long>(); - - public SeriesStatistics() - { - super(); - } - - public SeriesStatistics(Collection<Long> messageLatencies) - { - setMessageLatencies(messageLatencies); - } - - public void addMessageLatencies(Collection<Long> messageLatencies) - { - if (messageLatencies != null) - { - _series.addAll(messageLatencies); - } - } - - public void setMessageLatencies(Collection<Long> messageLatencies) - { - _series = messageLatencies; - aggregate(); - } - - public void aggregate() - { - if (_series != null && _series.size() > 0) - { - long minLatency = Long.MAX_VALUE; - long maxLatency = Long.MIN_VALUE; - long totalLatency = 0; - for (Long latency : _series) - { - totalLatency += latency; - minLatency = Math.min(minLatency, latency); - maxLatency = Math.max(maxLatency, latency); - } - _mean = ((double) totalLatency) / (double) _series.size(); - _minValue = minLatency; - _maxValue = maxLatency; - double sum = 0; - for (Long latency : _series) - { - double diff = latency - _mean; - sum += diff * diff; - } - long size = _series.size() == 1 ? 1: _series.size() - 1; - _standardDeviation = Math.sqrt(sum / (double) size); - } - else - { - _mean = 0; - _minValue = 0; - _maxValue = 0; - _standardDeviation = 0; - } - } - - public long getMinimum() - { - return _minValue; - } - - public long getMaximum() - { - return _maxValue; - } - - public double getAverage() - { - return _mean; - } - - public double getStandardDeviation() - { - return _standardDeviation; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/TestResultAggregator.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/TestResultAggregator.java deleted file mode 100644 index 954828b043..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/aggregation/TestResultAggregator.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * 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.disttest.results.aggregation; - -import java.util.List; - -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.message.ConsumerParticipantResult; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.ProducerParticipantResult; - -public class TestResultAggregator -{ - static final String AGGREGATED_ERROR_MESSAGE = "One or more participants reported errors."; - public static final String ALL_PARTICIPANTS_NAME = "All"; - public static final String ALL_PRODUCER_PARTICIPANTS_NAME = "All Producers"; - public static final String ALL_CONSUMER_PARTICIPANTS_NAME = "All Consumers"; - - public AggregatedTestResult aggregateTestResult(ITestResult originalTestResult) - { - ParticipantResultAggregator consumerResultAggregator = new ParticipantResultAggregator(ConsumerParticipantResult.class, - ALL_CONSUMER_PARTICIPANTS_NAME); - ParticipantResultAggregator producerResultAggregator = new ParticipantResultAggregator(ProducerParticipantResult.class, - ALL_PRODUCER_PARTICIPANTS_NAME); - ParticipantResultAggregator aggregatedResultsAggregator = new ParticipantResultAggregator(ParticipantResult.class, - ALL_PARTICIPANTS_NAME); - - boolean hasError = aggregateOriginalResults(originalTestResult, - consumerResultAggregator, - producerResultAggregator); - - ParticipantResult aggregatedProducerResult = producerResultAggregator.getAggregatedResult(); - ParticipantResult aggregaredConsumerResult = consumerResultAggregator.getAggregatedResult(); - - ParticipantResult aggregatedAllResult = aggregateAggregatedResults( - aggregatedResultsAggregator, aggregatedProducerResult, - aggregaredConsumerResult); - - applyNonAggregateablesToAll(aggregatedAllResult, - aggregatedProducerResult, aggregaredConsumerResult); - - AggregatedTestResult newTestResult = new AggregatedTestResult(originalTestResult); - newTestResult.setAllProducerParticipantResult(aggregatedProducerResult); - newTestResult.setAllConsumerParticipantResult(aggregaredConsumerResult); - newTestResult.setAllParticipantResult(aggregatedAllResult); - - if (hasError) - { - aggregatedAllResult.setErrorMessage(TestResultAggregator.AGGREGATED_ERROR_MESSAGE); - } - - return newTestResult; - } - - private ParticipantResult aggregateAggregatedResults( - ParticipantResultAggregator aggregatedResultsAggregator, - ParticipantResult aggregatedProducerResult, - ParticipantResult aggregaredConsumerResult) - { - aggregatedResultsAggregator.aggregate(aggregatedProducerResult); - aggregatedResultsAggregator.aggregate(aggregaredConsumerResult); - ParticipantResult aggregatedAllResult = aggregatedResultsAggregator.getAggregatedResult(); - return aggregatedAllResult; - } - - private boolean aggregateOriginalResults(ITestResult originalTestResult, - ParticipantResultAggregator consumerParticipantResultAggregator, - ParticipantResultAggregator producerParticipantResultAggregator) - { - boolean hasError = false; - for (ParticipantResult result : originalTestResult.getParticipantResults()) - { - consumerParticipantResultAggregator.aggregate(result); - producerParticipantResultAggregator.aggregate(result); - - if (result.hasError()) - { - hasError = true; - } - } - return hasError; - } - - private void applyNonAggregateablesToAll(ParticipantResult aggregatedAllResult, ParticipantResult aggregatedProducerResult, ParticipantResult aggregatedConsumerResult) - { - aggregatedAllResult.setStartDate(aggregatedProducerResult.getStartDate()); - aggregatedAllResult.setEndDate(aggregatedConsumerResult.getEndDate()); - - aggregatedAllResult.setNumberOfMessagesProcessed(aggregatedConsumerResult.getNumberOfMessagesProcessed()); - aggregatedAllResult.setTotalPayloadProcessed(aggregatedConsumerResult.getTotalPayloadProcessed()); - aggregatedAllResult.setThroughput(aggregatedConsumerResult.getThroughput()); - aggregatedAllResult.setMessageThroughput(aggregatedConsumerResult.getMessageThroughput()); - } - - /** - * Produces a single {@link ResultsForAllTests} from the supplied list, only containing - * the "All participants" results. - */ - public ResultsForAllTests aggregateTestResults(List<ResultsForAllTests> allResultsList) - { - ResultsForAllTests retVal = new ResultsForAllTests(); - - for (ResultsForAllTests resultsForAllTests : allResultsList) - { - ResultsForAllTests allParticipantsResult = resultsForAllTests.getAllParticipantsResult(); - for (ITestResult testResult : allParticipantsResult.getTestResults()) - { - retVal.add(testResult); - } - } - - return retVal; - } -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/formatting/CSVFormatter.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/formatting/CSVFormatter.java deleted file mode 100644 index ea7a3f78c7..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/formatting/CSVFormatter.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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.disttest.results.formatting; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang.StringUtils; -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.message.ParticipantAttribute; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.results.aggregation.ITestResult; - -/** - * produces CSV output using the ordered enums in {@link ParticipantAttribute} - */ -public class CSVFormatter -{ - public String format(ResultsForAllTests results) - { - StringBuilder builder = new StringBuilder(); - - builder.append(header()); - - List<ITestResult> testResults = results.getTestResults(); - - for (ITestResult testResult : testResults) - { - - List<ParticipantResult> participantResults = new ArrayList<ParticipantResult>(testResult.getParticipantResults()); - Collections.sort(participantResults, new CSVOrderParticipantResultComparator()); - - for (ParticipantResult participantResult : participantResults) - { - Map<ParticipantAttribute, Object> attributes = participantResult.getAttributes(); - builder.append(row(attributes)); - } - } - - return builder.toString(); - } - - /** - * return a row, including a newline character at the end - */ - private String row(Map<ParticipantAttribute, Object> attributeValueMap) - { - List<Object> attributeValues = new ArrayList<Object>(); - for (ParticipantAttribute attribute : ParticipantAttribute.values()) - { - Object attributeValue = attributeValueMap.get(attribute); - String attributeValueFormatted = attribute.format(attributeValue); - attributeValues.add(attributeValueFormatted); - } - - String row = StringUtils.join(attributeValues.toArray(), ","); - return row + "\n"; - } - - /** return the header row, including a newline at the end */ - private String header() - { - List<String> displayNames = new ArrayList<String>(); - for (ParticipantAttribute attribute : ParticipantAttribute.values()) - { - displayNames.add(attribute.getDisplayName()); - } - - String header = StringUtils.join(displayNames.toArray(), ","); - return header + "\n"; - } - -} diff --git a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/formatting/CSVOrderParticipantResultComparator.java b/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/formatting/CSVOrderParticipantResultComparator.java deleted file mode 100644 index 0e1fbbc3c6..0000000000 --- a/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/results/formatting/CSVOrderParticipantResultComparator.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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.disttest.results.formatting; - -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang.builder.CompareToBuilder; -import org.apache.qpid.disttest.message.ConsumerParticipantResult; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.ProducerParticipantResult; - -public class CSVOrderParticipantResultComparator implements Comparator<ParticipantResult> -{ - // TODO yuk - private static final Map<Class<? extends ParticipantResult>, Integer> TYPE_CODES = new HashMap<Class<? extends ParticipantResult>, Integer>(); - static { - TYPE_CODES.put(ProducerParticipantResult.class, 0); - TYPE_CODES.put(ConsumerParticipantResult.class, 1); - TYPE_CODES.put(ParticipantResult.class, 2); - } - - @Override - public int compare(ParticipantResult left, ParticipantResult right) - { - return new CompareToBuilder() - .append(getTypeCode(left), getTypeCode(right)) - .append(left.getParticipantName(), right.getParticipantName()) - .toComparison(); - } - - - private int getTypeCode(ParticipantResult participantResult) - { - return TYPE_CODES.get(participantResult.getClass()); - } - -} diff --git a/qpid/java/perftests/src/main/java/test-utils.js b/qpid/java/perftests/src/main/java/test-utils.js deleted file mode 100644 index fd7ed38ff5..0000000000 --- a/qpid/java/perftests/src/main/java/test-utils.js +++ /dev/null @@ -1,105 +0,0 @@ -/* - * - * 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 QPID; -if (!QPID) { - QPID = {}; -} -(function () { - 'use strict'; - - if (typeof QPID.times !== 'function') { - QPID.times = function (multiplicity, template, timeIndexName) - { - var retVal = new Array(); - for (var i = 0; i < multiplicity; i++) - { - var templateName = template._name; - var teamplateAsString = JSON.stringify(template); - if (timeIndexName) - { - teamplateAsString = teamplateAsString.replace(new RegExp(timeIndexName, "g"), i); - } - var expandedObject = JSON.parse(teamplateAsString); - if (!(timeIndexName)) - { - expandedObject._name = templateName + "_" + i; - } - retVal[i] = expandedObject; - } - return retVal; - } - } - - if (typeof QPID.iterations !== 'function') { - QPID.iterations = function (values, template) - { - var retVal = new Array() - - var iterationNumber = 0; - - for (var variableName in values) - { - var variableValues = values[variableName] - for (var i in variableValues) - { - var variableValue = variableValues[i] - var templateTestString = JSON.stringify(template) - var actualString = templateTestString.replace(new RegExp(variableName, "g"), variableValue) - var iteration = JSON.parse(actualString) - iteration._iterationNumber = iterationNumber - retVal[iterationNumber] = iteration - iterationNumber++ - } - } - - return retVal - } - } - - if (typeof QPID.transform !== 'function') { - - /** - * Function to transform JSON using specified transformation function. - * Any number of transformation function could be passed after the template argument. - * Each function should return a transformed JSON object. - * Example - * var json = transform({"name": "Test1"}, function(json){json.name="Test"; return json;}); - */ - QPID.transform = function (template) - { - var json = template; - for (var i=1, len=arguments.length; i<len; i++) - { - json = arguments[i](json); - } - return json; - } - } - - if (typeof QPID.cloneJSON !== 'function') { - QPID.cloneJSON = function (json) - { - return JSON.parse( JSON.stringify( json )); - } - } - -}()); - diff --git a/qpid/java/perftests/src/main/resources/Benchmark.js b/qpid/java/perftests/src/main/resources/Benchmark.js deleted file mode 100644 index e11cea8ad6..0000000000 --- a/qpid/java/perftests/src/main/resources/Benchmark.js +++ /dev/null @@ -1,96 +0,0 @@ -/* - * - * 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:[] -}; - -var duration = 30000; -var queueName = "direct://amq.direct//benchmark?durable='true'"; - -var numbersOfParticipants = [1, 2, 5, 10]; - -for(participantIndex=0; participantIndex < numbersOfParticipants.length; participantIndex++) -{ - var numberOfProducers = numbersOfParticipants[participantIndex]; - var numberOfConsumers = numbersOfParticipants[participantIndex]; - var test = { - "_name": "" + numberOfProducers + " producer(s) and " + numberOfConsumers + " consumer(s), each on separate connections, persistent messaging with transactional sessions", - "_queues":[ - { - "_name": queueName, - "_durable": true - } - ], - "_clients": - QPID.times(numberOfProducers, - { - "_name": "producingClient__PRODUCING_CLIENT_INDEX", - "_connections":[ - { - "_name": "connection1", - "_factory": "connectionfactory", - "_sessions": [ - { - "_sessionName": "session1", - "_acknowledgeMode": 0, - "_producers": [ - { - "_name": "Producer__PRODUCING_CLIENT_INDEX", - "_destinationName": queueName, - "_maximumDuration": duration, - "_deliveryMode": 2, - "_messageSize": 1024 - } - ] - } - ] - } - ] - }, - "__PRODUCING_CLIENT_INDEX") - .concat(QPID.times(numberOfConsumers, - { - "_name": "consumingClient__CONSUMING_CLIENT_INDEX", - "_connections":[ - { - "_name": "connection1", - "_factory": "connectionfactory", - "_sessions": [ - { - "_sessionName": "session1", - "_acknowledgeMode": 0, - "_consumers": [ - { - "_name": "Consumer__CONSUMING_CLIENT_INDEX", - "_destinationName": queueName, - "_maximumDuration": duration - } - ] - } - ] - } - ] - }, - "__CONSUMING_CLIENT_INDEX")) - }; - - jsonObject._tests= jsonObject._tests.concat(test); -} diff --git a/qpid/java/perftests/src/main/resources/perftests.properties b/qpid/java/perftests/src/main/resources/perftests.properties deleted file mode 100644 index d8823f9dc5..0000000000 --- a/qpid/java/perftests/src/main/resources/perftests.properties +++ /dev/null @@ -1,20 +0,0 @@ -# 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. - -java.naming.factory.initial = org.apache.qpid.jndi.PropertiesFileInitialContextFactory - -connectionfactory.connectionfactory = amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672' diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/ArgumentParserTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/ArgumentParserTest.java deleted file mode 100644 index 3be82627fe..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/ArgumentParserTest.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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.disttest; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class ArgumentParserTest extends QpidTestCase -{ - private static final String TEST_CONFIG_FILENAME = "ControllerRunnerTest-test-config-filename.json"; - private static final String JNDI_CONFIG_FILENAME = "ControllerRunnerTest-jndi-config-filename.properties"; - private static final String DISTRIBUTED_MODE = "true"; - - public static final String TEST_CONFIG_PROP = "test-config"; - public static final String JNDI_CONFIG_PROP = "jndi-config"; - public static final String DISTRIBUTED_PROP = "distributed"; - - public static final String TEST_CONFIG_DEFAULT = "perftests-config.json"; - public static final String JNDI_CONFIG_DEFAULT = "perftests-jndi.properties"; - public static final String DISTRIBUTED_DEFAULT = "false"; - - private Map<String,String> _options = new HashMap<String, String>(); - - private ArgumentParser _parser; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _parser = new ArgumentParser(); - - _options.clear(); - _options.put(TEST_CONFIG_PROP, TEST_CONFIG_DEFAULT); - _options.put(JNDI_CONFIG_PROP, JNDI_CONFIG_DEFAULT); - _options.put(DISTRIBUTED_PROP, DISTRIBUTED_DEFAULT); - } - - public void testInvalidArguments() - { - String[] args = new String[]{"nonExistentConfigProperty" + "=" + TEST_CONFIG_FILENAME}; - - try - { - _parser.parseArgumentsIntoConfig(_options, args); - fail("expected exception to be thrown due to provision of a non existent config property"); - } - catch(IllegalArgumentException e) - { - //expected - } - } - - public void testDefaultConfigValues() - { - String[] args = new String[0]; - - _parser.parseArgumentsIntoConfig(_options, args); - - assertEquals("unexpected config value", TEST_CONFIG_DEFAULT, _options.get(TEST_CONFIG_PROP)); - assertEquals("unexpected config value", JNDI_CONFIG_DEFAULT, _options.get(JNDI_CONFIG_PROP)); - assertEquals("unexpected config value", DISTRIBUTED_DEFAULT, _options.get(DISTRIBUTED_PROP)); - } - - public void testConfigurationParsingOverridesDefault() throws Exception - { - String[] args = new String[]{TEST_CONFIG_PROP + "=" + TEST_CONFIG_FILENAME, - JNDI_CONFIG_PROP + "=" + JNDI_CONFIG_FILENAME, - DISTRIBUTED_PROP + "=" + DISTRIBUTED_MODE}; - - _parser.parseArgumentsIntoConfig(_options, args); - - assertEquals("unexpected config value", TEST_CONFIG_FILENAME, _options.get(TEST_CONFIG_PROP)); - assertEquals("unexpected config value", JNDI_CONFIG_FILENAME, _options.get(JNDI_CONFIG_PROP)); - assertEquals("unexpected config value", DISTRIBUTED_MODE, _options.get(DISTRIBUTED_PROP)); - assertFalse("override value was the same as the default", DISTRIBUTED_MODE.equalsIgnoreCase(_options.get(DISTRIBUTED_DEFAULT))); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/ConfigFileHelperTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/ConfigFileHelperTest.java deleted file mode 100644 index 629442d86c..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/ConfigFileHelperTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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.disttest; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.apache.qpid.test.utils.QpidTestCase; -import org.apache.qpid.test.utils.TestFileUtils; - -public class ConfigFileHelperTest extends QpidTestCase -{ - private File _testDir; - private ConfigFileHelper _configFileHelper = new ConfigFileHelper(); - - @Override - protected void setUp() throws Exception - { - _testDir = TestFileUtils.createTestDirectory(); - } - - public void testGetTestConfigFilesForDirectory() throws Exception - { - String jsFile = createFile("file1.js"); - String jsonFile = createFile("file2.json"); - createFile("file.txt"); - createDir("dir.js"); - - String testConfigPath = _testDir.getAbsolutePath(); - - List<String> configFiles = _configFileHelper.getTestConfigFiles(testConfigPath); - - Set<String> expectedFiles = new HashSet<String>(Arrays.asList(jsFile, jsonFile)); - Set<String> actualFiles = new HashSet<String>(configFiles); - - assertEquals(expectedFiles, actualFiles); - } - - private void createDir(String dirName) - { - File dir = new File(_testDir, dirName); - dir.mkdir(); - } - - private String createFile(String fileName) throws IOException - { - File file = new File(_testDir, fileName); - file.createNewFile(); - return file.getAbsolutePath(); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/ConfigFileTestHelper.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/ConfigFileTestHelper.java deleted file mode 100644 index 71cd61db82..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/ConfigFileTestHelper.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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.disttest; - -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; - -import org.apache.qpid.disttest.controller.config.Config; -import org.apache.qpid.disttest.controller.config.ConfigReader; - -public class ConfigFileTestHelper -{ - public static Reader getConfigFileReader(Class<?> testClass, String resourceName) - { - InputStream inputStream = testClass.getResourceAsStream(resourceName); - if(inputStream == null) - { - throw new RuntimeException("Can't find resource " + resourceName + " using classloader of class " + testClass); - } - Reader reader = new InputStreamReader(inputStream); - return reader; - } - - public static Config getConfigFromResource(Class<?> testClass, String resourceName) - { - ConfigReader configReader = new ConfigReader(); - Config config = configReader.readConfig(getConfigFileReader(testClass, resourceName)); - return config; - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/PerfTestConstants.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/PerfTestConstants.java deleted file mode 100644 index 5e56f3a89f..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/PerfTestConstants.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * 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.disttest; - -public abstract class PerfTestConstants -{ - public static final long REGISTRATION_TIMEOUT = 20000; - public static final long COMMAND_RESPONSE_TIMEOUT = 30000; - public static final long TEST_RESULT_TIMEOUT = 20000; - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/VisitorTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/VisitorTest.java deleted file mode 100644 index 09f7da4efb..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/VisitorTest.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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.disttest; - -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.test.utils.QpidTestCase; - - -public class VisitorTest extends QpidTestCase -{ - - public void testStringVisited() throws Exception - { - Object argument = new String(); - - TestVisitor visitor = new TestVisitor(); - visitor.visit(argument); - - assertSame(argument, visitor._string); - } - - public void testCommandVisited() throws Exception - { - Object argument = new TestCommand(); - - TestVisitor visitor = new TestVisitor(); - visitor.visit(argument); - - assertSame(argument, visitor._testCommand); - } - - public void testNoVisitIntegerImplementatiom() throws Exception - { - Integer argument = Integer.valueOf(1); - - TestVisitor visitor = new TestVisitor(); - - try - { - visitor.visit(argument); - fail("Exception not thrown"); - } - catch (DistributedTestException e) - { - assertNotNull(e.getCause()); - assertEquals(NoSuchMethodException.class, e.getCause().getClass()); - } - } - - class TestVisitor extends Visitor - { - String _string = null; - TestCommand _testCommand = null; - - public void visit(String string) - { - _string = string; - } - - public void visit(TestCommand command) - { - _testCommand = command; - } - } - - class TestCommand extends Command - { - - public TestCommand() - { - super(null); - } - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ClientCommandVisitorTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ClientCommandVisitorTest.java deleted file mode 100644 index 2b29471558..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ClientCommandVisitorTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * 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.disttest.client; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; - -import org.apache.qpid.disttest.jms.ClientJmsDelegate; -import org.apache.qpid.disttest.message.CreateConnectionCommand; -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.disttest.message.CreateMessageProviderCommand; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.disttest.message.CreateSessionCommand; -import org.apache.qpid.disttest.message.StartTestCommand; -import org.apache.qpid.disttest.message.StopClientCommand; -import org.apache.qpid.disttest.message.TearDownTestCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class ClientCommandVisitorTest extends QpidTestCase -{ - private Client _client; - private ClientCommandVisitor _visitor; - private ClientJmsDelegate _delegate; - - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _client = mock(Client.class); - _delegate = mock(ClientJmsDelegate.class); - _visitor = new ClientCommandVisitor(_client, _delegate); - } - - public void testStopClient() - { - StopClientCommand command = new StopClientCommand(); - _visitor.visit(command); - verify(_client).stop(); - } - - public void testCreateConnection() throws Exception - { - final CreateConnectionCommand command = new CreateConnectionCommand(); - _visitor.visit(command); - verify(_delegate).createConnection(command); - } - - public void testCreateSession() throws Exception - { - final CreateSessionCommand command = new CreateSessionCommand(); - _visitor.visit(command); - verify(_delegate).createSession(command); - } - - public void testCreateProducer() throws Exception - { - final CreateProducerCommand command = new CreateProducerCommand(); - _visitor.visit(command); - verify(_delegate).createProducer(command); - } - - public void testCreateConsumer() throws Exception - { - final CreateConsumerCommand command = new CreateConsumerCommand(); - _visitor.visit(command); - verify(_delegate).createConsumer(command); - } - - public void testStartTest() throws Exception - { - final StartTestCommand command = new StartTestCommand(); - _visitor.visit(command); - verify(_client).startTest(); - } - - public void testStopTest() throws Exception - { - final TearDownTestCommand stopCommand = new TearDownTestCommand(); - _visitor.visit(stopCommand); - verify(_client).tearDownTest(); - } - - public void testCreateMessageProvider() throws Exception - { - final CreateMessageProviderCommand command = new CreateMessageProviderCommand(); - command.setProviderName("test"); - _visitor.visit(command); - verify(_delegate).createMessageProvider(command); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ClientTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ClientTest.java deleted file mode 100644 index 8139961fa4..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ClientTest.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * 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.disttest.client; - -import static org.mockito.Matchers.isA; -import static org.mockito.Mockito.inOrder; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.Collections; -import java.util.Timer; -import java.util.TimerTask; - -import org.apache.qpid.disttest.jms.ClientJmsDelegate; -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.Response; -import org.apache.qpid.disttest.message.StopClientCommand; -import org.apache.qpid.test.utils.QpidTestCase; -import org.mockito.InOrder; -import org.mockito.Mockito; - -public class ClientTest extends QpidTestCase -{ - private Client _client; - private ClientJmsDelegate _delegate; - private ClientCommandVisitor _visitor; - private ParticipantExecutor _participant; - private ParticipantExecutorRegistry _participantRegistry; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _delegate = mock(ClientJmsDelegate.class); - _visitor = mock(ClientCommandVisitor.class); - _client = new Client(_delegate); - _client.setClientCommandVisitor(_visitor); - _participant = mock(ParticipantExecutor.class); - when(_participant.getParticipantName()).thenReturn("testParticipantMock"); - - _participantRegistry = mock(ParticipantExecutorRegistry.class); - when(_participantRegistry.executors()).thenReturn(Collections.singletonList(_participant)); - _client.setParticipantRegistry(_participantRegistry); - } - - public void testInitialState() throws Exception - { - assertEquals("Expected client to be in CREATED state", ClientState.CREATED, _client.getState()); - } - - public void testStart() throws Exception - { - _client.start(); - final InOrder inOrder = inOrder(_delegate); - inOrder.verify(_delegate).setInstructionListener(_client); - inOrder.verify(_delegate).sendRegistrationMessage(); - assertEquals("Expected client to be in STARTED state", ClientState.READY, _client.getState()); - } - - public void testStopClient() throws Exception - { - _client.stop(); - - assertEquals("Expected client to be in STOPPED state", ClientState.STOPPED, _client.getState()); - } - - public void testProcessInstructionVisitsCommandAndResponds() throws Exception - { - // has to be declared to be of supertype Command otherwise Mockito verify() - // refers to wrong method - final Command command = new StopClientCommand(); - _client.processInstruction(command); - - verify(_visitor).visit(command); - verify(_delegate).sendResponseMessage(isA(Response.class)); - } - - public void testWaitUntilStopped() throws Exception - { - stopClientLater(500); - _client.waitUntilStopped(1000); - verify(_delegate).destroy(); - } - - public void testStartTest() throws Exception - { - _client.start(); - _client.addParticipantExecutor(_participant); - - verify(_participantRegistry).add(_participant); - - _client.startTest(); - - InOrder inOrder = Mockito.inOrder(_delegate, _participant); - inOrder.verify(_delegate).startConnections(); - inOrder.verify(_participant).start(_client); - } - - public void testTearDownTest() throws Exception - { - // before we can tear down the test the client needs to be in the "running test" state, which requires a participant - _client.start(); - _client.addParticipantExecutor(_participant); - _client.startTest(); - - _client.tearDownTest(); - - verify(_delegate).tearDownTest(); - - verify(_participantRegistry).clear(); - } - - public void testResults() throws Exception - { - ParticipantResult testResult = mock(ParticipantResult.class); - _client.sendResults(testResult); - verify(_delegate).sendResponseMessage(testResult); - } - - private void stopClientLater(long delay) - { - doLater(new TimerTask() - { - @Override - public void run() - { - _client.stop(); - } - - }, delay); - } - - private void doLater(TimerTask task, long delayInMillis) - { - Timer timer = new Timer(); - timer.schedule(task, delayInMillis); - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ConsumerParticipantTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ConsumerParticipantTest.java deleted file mode 100644 index f75415a2bf..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ConsumerParticipantTest.java +++ /dev/null @@ -1,202 +0,0 @@ -/* - * 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.disttest.client; - -import static org.apache.qpid.disttest.client.ParticipantTestHelper.assertExpectedConsumerResults; -import static org.mockito.Matchers.anyLong; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.atLeastOnce; -import static org.mockito.Mockito.inOrder; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.Collection; - -import javax.jms.Message; -import javax.jms.Session; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.jms.ClientJmsDelegate; -import org.apache.qpid.disttest.message.ConsumerParticipantResult; -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.test.utils.QpidTestCase; -import org.mockito.InOrder; - -public class ConsumerParticipantTest extends QpidTestCase -{ - private static final String SESSION_NAME1 = "SESSION1"; - private static final String PARTICIPANT_NAME1 = "PARTICIPANT_NAME1"; - private static final long RECEIVE_TIMEOUT = 100; - private static final String CLIENT_NAME = "CLIENT_NAME"; - private static final int PAYLOAD_SIZE_PER_MESSAGE = 1024; - - private final Message _mockMessage = mock(Message.class); - private final CreateConsumerCommand _command = new CreateConsumerCommand(); - private ClientJmsDelegate _delegate; - private ConsumerParticipant _consumerParticipant; - private InOrder _inOrder; - - /** used to check start/end time of results */ - private long _testStartTime; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _delegate = mock(ClientJmsDelegate.class); - _inOrder = inOrder(_delegate); - - _command.setSessionName(SESSION_NAME1); - _command.setParticipantName(PARTICIPANT_NAME1); - _command.setSynchronous(true); - _command.setReceiveTimeout(RECEIVE_TIMEOUT); - - _consumerParticipant = new ConsumerParticipant(_delegate, _command); - - when(_delegate.consumeMessage(PARTICIPANT_NAME1, RECEIVE_TIMEOUT)).thenReturn(_mockMessage); - when(_delegate.calculatePayloadSizeFrom(_mockMessage)).thenReturn(PAYLOAD_SIZE_PER_MESSAGE); - when(_delegate.getAcknowledgeMode(SESSION_NAME1)).thenReturn(Session.CLIENT_ACKNOWLEDGE); - - _testStartTime = System.currentTimeMillis(); - } - - public void testNoMessagesToReceive() throws Exception - { - _command.setNumberOfMessages(0); - _command.setMaximumDuration(0); - - try - { - _consumerParticipant.doIt(CLIENT_NAME); - fail("Exception not thrown"); - } - catch(DistributedTestException e) - { - // PASS - assertEquals("number of messages and duration cannot both be zero", e.getMessage()); - - } - - verify(_delegate, never()).consumeMessage(anyString(), anyLong()); - } - - public void testReceiveOneMessageSynch() throws Exception - { - int numberOfMessages = 1; - long totalPayloadSize = PAYLOAD_SIZE_PER_MESSAGE * numberOfMessages; - _command.setNumberOfMessages(numberOfMessages); - - ParticipantResult result = _consumerParticipant.doIt(CLIENT_NAME); - - assertExpectedConsumerResults(result, PARTICIPANT_NAME1, CLIENT_NAME, _testStartTime, - Session.CLIENT_ACKNOWLEDGE, null, numberOfMessages, PAYLOAD_SIZE_PER_MESSAGE, totalPayloadSize, null); - - _inOrder.verify(_delegate).consumeMessage(PARTICIPANT_NAME1, RECEIVE_TIMEOUT); - _inOrder.verify(_delegate).calculatePayloadSizeFrom(_mockMessage); - _inOrder.verify(_delegate).commitOrAcknowledgeMessageIfNecessary(SESSION_NAME1, _mockMessage); - } - - public void testReceiveMessagesForDurationSynch() throws Exception - { - long duration = 100; - _command.setMaximumDuration(duration); - - ParticipantResult result = _consumerParticipant.doIt(CLIENT_NAME); - - assertExpectedConsumerResults(result, PARTICIPANT_NAME1, CLIENT_NAME, _testStartTime, - Session.CLIENT_ACKNOWLEDGE, null, null, PAYLOAD_SIZE_PER_MESSAGE, null, duration); - - verify(_delegate, atLeastOnce()).consumeMessage(PARTICIPANT_NAME1, RECEIVE_TIMEOUT); - verify(_delegate, atLeastOnce()).calculatePayloadSizeFrom(_mockMessage); - verify(_delegate, atLeastOnce()).commitOrAcknowledgeMessageIfNecessary(SESSION_NAME1, _mockMessage); - } - - public void testReceiveMessagesBatchedSynch() throws Exception - { - int numberOfMessages = 10; - final int batchSize = 3; - long totalPayloadSize = PAYLOAD_SIZE_PER_MESSAGE * numberOfMessages; - _command.setNumberOfMessages(numberOfMessages); - _command.setBatchSize(batchSize); - - ParticipantResult result = _consumerParticipant.doIt(CLIENT_NAME); - - assertExpectedConsumerResults(result, PARTICIPANT_NAME1, CLIENT_NAME, _testStartTime, - Session.CLIENT_ACKNOWLEDGE, batchSize, numberOfMessages, PAYLOAD_SIZE_PER_MESSAGE, totalPayloadSize, null); - - verify(_delegate, times(numberOfMessages)).consumeMessage(PARTICIPANT_NAME1, RECEIVE_TIMEOUT); - verify(_delegate, times(numberOfMessages)).calculatePayloadSizeFrom(_mockMessage); - verify(_delegate, times(4)).commitOrAcknowledgeMessageIfNecessary(SESSION_NAME1, _mockMessage); - } - - public void testReceiveMessagesWithVaryingPayloadSize() throws Exception - { - int numberOfMessages = 3; - - int firstPayloadSize = PAYLOAD_SIZE_PER_MESSAGE; - int secondPayloadSize = PAYLOAD_SIZE_PER_MESSAGE * 2; - int thirdPayloadSize = PAYLOAD_SIZE_PER_MESSAGE * 4; - - _command.setNumberOfMessages(numberOfMessages); - - when(_delegate.calculatePayloadSizeFrom(_mockMessage)).thenReturn(firstPayloadSize, secondPayloadSize, thirdPayloadSize); - - ParticipantResult result = _consumerParticipant.doIt(CLIENT_NAME); - - final int expectedPayloadResultPayloadSize = 0; - final long totalPayloadSize = firstPayloadSize + secondPayloadSize + thirdPayloadSize; - assertExpectedConsumerResults(result, PARTICIPANT_NAME1, CLIENT_NAME, _testStartTime, - Session.CLIENT_ACKNOWLEDGE, null, numberOfMessages, expectedPayloadResultPayloadSize, totalPayloadSize, null); - - verify(_delegate, times(numberOfMessages)).consumeMessage(PARTICIPANT_NAME1, RECEIVE_TIMEOUT); - verify(_delegate, times(numberOfMessages)).calculatePayloadSizeFrom(_mockMessage); - verify(_delegate, times(numberOfMessages)).commitOrAcknowledgeMessageIfNecessary(SESSION_NAME1, _mockMessage); - } - - public void testReleaseResources() - { - _consumerParticipant.releaseResources(); - verify(_delegate).closeTestConsumer(PARTICIPANT_NAME1); - } - - public void testLatency() throws Exception - { - int numberOfMessages = 1; - long totalPayloadSize = PAYLOAD_SIZE_PER_MESSAGE * numberOfMessages; - _command.setNumberOfMessages(numberOfMessages); - _command.setEvaluateLatency(true); - _consumerParticipant = new ConsumerParticipant(_delegate, _command); - ParticipantResult result = _consumerParticipant.doIt(CLIENT_NAME); - - assertExpectedConsumerResults(result, PARTICIPANT_NAME1, CLIENT_NAME, _testStartTime, - Session.CLIENT_ACKNOWLEDGE, null, numberOfMessages, PAYLOAD_SIZE_PER_MESSAGE, totalPayloadSize, null); - - _inOrder.verify(_delegate).consumeMessage(PARTICIPANT_NAME1, RECEIVE_TIMEOUT); - _inOrder.verify(_delegate).calculatePayloadSizeFrom(_mockMessage); - _inOrder.verify(_delegate).commitOrAcknowledgeMessageIfNecessary(SESSION_NAME1, _mockMessage); - assertTrue("Unexpected consuemr results", result instanceof ConsumerParticipantResult); - Collection<Long> latencies = ((ConsumerParticipantResult)result).getMessageLatencies(); - assertNotNull("Message latency is not cllected", latencies); - assertEquals("Unexpected message latency results", 1, latencies.size()); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/MessageProviderTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/MessageProviderTest.java deleted file mode 100644 index 8863e0f289..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/MessageProviderTest.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 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.disttest.client; - -import static org.mockito.Matchers.isA; -import static org.mockito.Mockito.atLeastOnce; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.jms.Message; -import javax.jms.Session; -import javax.jms.TextMessage; - -import org.apache.qpid.disttest.client.property.ListPropertyValue; -import org.apache.qpid.disttest.client.property.PropertyValue; -import org.apache.qpid.disttest.client.property.SimplePropertyValue; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class MessageProviderTest extends QpidTestCase -{ - private Session _session; - private TextMessage _message; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _session = mock(Session.class); - _message = mock(TextMessage.class); - when(_session.createTextMessage(isA(String.class))).thenReturn(_message); - when(_session.createTextMessage()).thenReturn(_message); - } - - public void testGetMessagePayload() throws Exception - { - MessageProvider messageProvider = new MessageProvider(null) - { - @Override - public String getMessagePayload(CreateProducerCommand command) - { - return super.getMessagePayload(command); - } - }; - CreateProducerCommand command = new CreateProducerCommand(); - command.setMessageSize(100); - String payloadValue = messageProvider.getMessagePayload(command); - assertNotNull("Mesage payload should not be null", payloadValue); - assertEquals("Unexpected payload size", 100, payloadValue.length()); - } - - public void testNextMessage() throws Exception - { - MessageProvider messageProvider = new MessageProvider(null); - CreateProducerCommand command = new CreateProducerCommand(); - command.setMessageSize(100); - Message message = messageProvider.nextMessage(_session, command); - assertNotNull("Mesage should be returned", message); - verify(_message, atLeastOnce()).setText(isA(String.class)); - } - - public void testNextMessageWithProperties() throws Exception - { - Map<String, PropertyValue> properties = new HashMap<String, PropertyValue>(); - properties.put("test1", new SimplePropertyValue("testValue1")); - properties.put("test2", new SimplePropertyValue(new Integer(1))); - properties.put("priority", new SimplePropertyValue(new Integer(2))); - List<PropertyValue> listItems = new ArrayList<PropertyValue>(); - listItems.add(new SimplePropertyValue(new Double(2.0))); - ListPropertyValue list = new ListPropertyValue(); - list.setItems(listItems); - properties.put("test3", list); - - MessageProvider messageProvider = new MessageProvider(properties); - CreateProducerCommand command = new CreateProducerCommand(); - command.setMessageSize(100); - Message message = messageProvider.nextMessage(_session, command); - assertNotNull("Mesage should be returned", message); - verify(_message, atLeastOnce()).setText(isA(String.class)); - verify(_message, atLeastOnce()).setJMSPriority(2); - verify(_message, atLeastOnce()).setStringProperty("test1", "testValue1"); - verify(_message, atLeastOnce()).setIntProperty("test2", 1); - verify(_message, atLeastOnce()).setDoubleProperty("test3", 2.0); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantExecutorTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantExecutorTest.java deleted file mode 100644 index 6720047cd1..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantExecutorTest.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * 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.disttest.client; - -import static org.mockito.Matchers.argThat; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.inOrder; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.Executor; -import java.util.concurrent.TimeUnit; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.test.utils.QpidTestCase; -import org.mockito.ArgumentMatcher; -import org.mockito.InOrder; - -public class ParticipantExecutorTest extends QpidTestCase -{ - private static final ResultHasError HAS_ERROR = new ResultHasError(); - private static final String CLIENT_NAME = "CLIENT_NAME"; - private static final String PARTICIPANT_NAME = "PARTICIPANT_NAME"; - private ParticipantExecutor _participantExecutor = null; - private Client _client = null; - private Participant _participant = null; - private ParticipantResult _mockResult; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - - _client = mock(Client.class); - when(_client.getClientName()).thenReturn(CLIENT_NAME); - _participant = mock(Participant.class); - - _participantExecutor = new ParticipantExecutor(_participant); - _participantExecutor.setExecutor(new SynchronousExecutor()); - - _mockResult = mock(ParticipantResult.class); - } - - public void testStart() throws Exception - { - when(_participant.doIt(CLIENT_NAME)).thenReturn(_mockResult); - - _participantExecutor.start(_client); - - InOrder inOrder = inOrder(_participant, _client); - - inOrder.verify(_participant).doIt(CLIENT_NAME); - inOrder.verify(_participant).releaseResources(); - inOrder.verify(_client).sendResults(_mockResult); - } - - public void testParticipantThrowsException() throws Exception - { - when(_participant.doIt(CLIENT_NAME)).thenThrow(DistributedTestException.class); - - _participantExecutor.start(_client); - - InOrder inOrder = inOrder(_participant, _client); - - inOrder.verify(_participant).doIt(CLIENT_NAME); - inOrder.verify(_participant).releaseResources(); - inOrder.verify(_client).sendResults(argThat(HAS_ERROR)); - } - - public void testReleaseResourcesThrowsException() throws Exception - { - when(_participant.doIt(CLIENT_NAME)).thenReturn(_mockResult); - doThrow(DistributedTestException.class).when(_participant).releaseResources(); - - _participantExecutor.start(_client); - - InOrder inOrder = inOrder(_participant, _client); - - inOrder.verify(_participant).doIt(CLIENT_NAME); - inOrder.verify(_participant).releaseResources(); - - // check that sendResults is called even though releaseResources threw an exception - inOrder.verify(_client).sendResults(_mockResult); - } - - public void testThreadNameAndDaemonness() throws Exception - { - ThreadPropertyReportingParticipant participant = new ThreadPropertyReportingParticipant(PARTICIPANT_NAME); - _participantExecutor = new ParticipantExecutor(participant); - - _participantExecutor.start(_client); - participant.awaitExecution(); - - assertTrue("Participant should be run in a thread named after it", participant.threadWasCalled().endsWith(PARTICIPANT_NAME)); - assertTrue("Executor should use daemon threads to avoid them preventing JVM termination", participant.wasDaemon()); - } - - private static final class ThreadPropertyReportingParticipant implements Participant - { - private final String _participantName; - private final CountDownLatch _participantExecuted = new CountDownLatch(1); - private String _threadName; - private boolean _daemon; - - public ThreadPropertyReportingParticipant(String participantName) - { - _participantName = participantName; - } - - public String threadWasCalled() - { - return _threadName; - } - - public boolean wasDaemon() - { - return _daemon; - } - - @Override - public void releaseResources() - { - } - - @Override - public String getName() - { - return _participantName; - } - - @Override - public ParticipantResult doIt(String registeredClientName) throws Exception - { - Thread currentThread = Thread.currentThread(); - _threadName = currentThread.getName(); - _daemon = currentThread.isDaemon(); - - _participantExecuted.countDown(); - - return null; // unused - } - - public void awaitExecution() - { - boolean success = false; - try - { - success = _participantExecuted.await(5, TimeUnit.SECONDS); - } - catch (InterruptedException e) - { - Thread.currentThread().interrupt(); - } - - assertTrue("Participant not executed", success); - } - } - - /** avoids our unit test needing to use multiple threads */ - private final class SynchronousExecutor implements Executor - { - @Override - public void execute(Runnable command) - { - command.run(); - } - } - - private static class ResultHasError extends ArgumentMatcher<ParticipantResult> - { - @Override - public boolean matches(Object argument) - { - ParticipantResult result = (ParticipantResult) argument; - return result.hasError(); - } - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantRegistryTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantRegistryTest.java deleted file mode 100644 index 5cc8d2f30a..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantRegistryTest.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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.disttest.client; - -import static org.mockito.Mockito.mock; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class ParticipantRegistryTest extends QpidTestCase -{ - private ParticipantExecutorRegistry _participantRegistry = new ParticipantExecutorRegistry(); - - private ParticipantExecutor _testParticipant1 = mock(ParticipantExecutor.class); - private ParticipantExecutor _testParticipant2 = mock(ParticipantExecutor.class); - - public void testAdd() - { - assertTrue(_participantRegistry.executors().isEmpty()); - - _participantRegistry.add(_testParticipant1); - - assertTrue(_participantRegistry.executors().contains(_testParticipant1)); - - _participantRegistry.add(_testParticipant2); - - assertTrue(_participantRegistry.executors().contains(_testParticipant2)); - } - - public void testClear() - { - _participantRegistry.add(_testParticipant1); - - assertEquals(1, _participantRegistry.executors().size()); - - _participantRegistry.clear(); - - assertTrue(_participantRegistry.executors().isEmpty()); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantResultFactoryTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantResultFactoryTest.java deleted file mode 100644 index 9eab459443..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantResultFactoryTest.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * 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.disttest.client; - -import java.util.Date; - -import javax.jms.DeliveryMode; - -import org.apache.qpid.disttest.message.ConsumerParticipantResult; -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.disttest.message.CreateParticpantCommand; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.ProducerParticipantResult; -import org.apache.qpid.test.utils.QpidTestCase; - -public class ParticipantResultFactoryTest extends QpidTestCase -{ - private static final String PARTICIPANT_NAME = "participantName"; - private static final String REGISTERED_CLIENT_NAME = "registeredClientName"; - - private static final int BATCH_SIZE = 10; - private static final long MAXIMUM_DURATION = 500; - private static final int NUMBER_OF_MESSAGES_PROCESSED = 100; - private static final long TIME_TAKEN = 100; - private static final long TOTAL_PAYLOAD_PROCESSED = 200; - private static final int PAYLOAD_SIZE = 300; - - private static final Date START = new Date(0); - private static final Date END = new Date(START.getTime() + TIME_TAKEN); - - private ParticipantResultFactory _participantResultFactory; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - - _participantResultFactory = new ParticipantResultFactory(); - } - - public void testCreateForProducer() - { - CreateProducerCommand command = new CreateProducerCommand(); - setCommonCommandFields(command); - - long producerStartDelay = 30; - command.setStartDelay(producerStartDelay); - - int deliveryMode = DeliveryMode.PERSISTENT; - command.setDeliveryMode(deliveryMode); - - int priority = 5; - command.setPriority(priority); - - long producerInterval = 50; - command.setInterval(producerInterval); - - long timeToLive = 60; - command.setTimeToLive(timeToLive); - - int totalNumberOfConsumers = 0; - int totalNumberOfProducers = 1; - - int acknowledgeMode = 1; - - ProducerParticipantResult result = _participantResultFactory.createForProducer(PARTICIPANT_NAME, - REGISTERED_CLIENT_NAME, - command, - acknowledgeMode, - NUMBER_OF_MESSAGES_PROCESSED, - PAYLOAD_SIZE, - TOTAL_PAYLOAD_PROCESSED, - START, END); - - assertCommonResultProperties(result); - - assertEquals(deliveryMode, result.getDeliveryMode()); - assertEquals(acknowledgeMode, result.getAcknowledgeMode()); - assertEquals(priority, result.getPriority()); - assertEquals(producerInterval, result.getInterval()); - assertEquals(producerStartDelay, result.getStartDelay()); - assertEquals(timeToLive, result.getTimeToLive()); - assertEquals(totalNumberOfConsumers, result.getTotalNumberOfConsumers()); - assertEquals(totalNumberOfProducers, result.getTotalNumberOfProducers()); - } - - public void testCreateForConsumer() - { - CreateConsumerCommand command = new CreateConsumerCommand(); - setCommonCommandFields(command); - - boolean topic = true; - command.setTopic(topic); - - boolean durable = true; - command.setDurableSubscription(durable); - - boolean browsingSubscription = false; - command.setBrowsingSubscription(browsingSubscription); - - String selector = "selector"; - boolean isSelector = true; - command.setSelector(selector); - - boolean noLocal = false; - command.setNoLocal(noLocal); - - boolean synchronousConsumer = true; - command.setSynchronous(synchronousConsumer); - - int totalNumberOfConsumers = 1; - int totalNumberOfProducers = 0; - - int acknowledgeMode = 2; - - ConsumerParticipantResult result = _participantResultFactory.createForConsumer(PARTICIPANT_NAME, - REGISTERED_CLIENT_NAME, - command, - acknowledgeMode, - NUMBER_OF_MESSAGES_PROCESSED, - PAYLOAD_SIZE, - TOTAL_PAYLOAD_PROCESSED, - START, END); - - assertCommonResultProperties(result); - - assertEquals(topic, result.isTopic()); - assertEquals(durable, result.isDurableSubscription()); - assertEquals(browsingSubscription, result.isBrowsingSubscription()); - assertEquals(isSelector, result.isSelector()); - assertEquals(noLocal, result.isNoLocal()); - assertEquals(synchronousConsumer, result.isSynchronousConsumer()); - assertEquals(totalNumberOfConsumers, result.getTotalNumberOfConsumers()); - assertEquals(totalNumberOfProducers, result.getTotalNumberOfProducers()); - } - - public void testCreateForError() - { - String errorMessage = "error"; - ParticipantResult result = _participantResultFactory.createForError(PARTICIPANT_NAME, REGISTERED_CLIENT_NAME, errorMessage); - assertEquals(PARTICIPANT_NAME, result.getParticipantName()); - assertEquals(REGISTERED_CLIENT_NAME, result.getRegisteredClientName()); - } - - - private void setCommonCommandFields(CreateParticpantCommand command) - { - command.setBatchSize(BATCH_SIZE); - command.setMaximumDuration(MAXIMUM_DURATION); - } - - - private void assertCommonResultProperties(ParticipantResult result) - { - assertEquals(PARTICIPANT_NAME, result.getParticipantName()); - assertEquals(REGISTERED_CLIENT_NAME, result.getRegisteredClientName()); - assertEquals(BATCH_SIZE, result.getBatchSize()); - assertEquals(MAXIMUM_DURATION, result.getMaximumDuration()); - assertEquals(TIME_TAKEN, result.getTimeTaken()); - assertEquals(NUMBER_OF_MESSAGES_PROCESSED, result.getNumberOfMessagesProcessed()); - assertEquals(TOTAL_PAYLOAD_PROCESSED, result.getTotalPayloadProcessed()); - assertEquals(PAYLOAD_SIZE, result.getPayloadSize()); - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantTestHelper.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantTestHelper.java deleted file mode 100644 index 5508ac8aca..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ParticipantTestHelper.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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.disttest.client; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.apache.qpid.disttest.message.ParticipantResult; - -public class ParticipantTestHelper -{ - - public static void assertAtLeast(String message, final long minimumExpected, final long actual) - { - assertTrue(message + " " + actual, actual >= minimumExpected); - } - - public static void assertExpectedConsumerResults(ParticipantResult result, String participantName, String registeredClientName, long expectedTestStartTime, int expectedAcknowledgeMode, Integer expectedBatchSize, Integer expectedNumberOfMessages, Integer expectedPayloadSize, Long expectedTotalPayloadProcessed, Long expectedMinimumExpectedDuration) - { - assertExpectedResults(result, participantName, registeredClientName, expectedTestStartTime, - expectedAcknowledgeMode, expectedBatchSize, expectedNumberOfMessages, expectedPayloadSize, expectedTotalPayloadProcessed, expectedMinimumExpectedDuration); - assertEquals("Unexpected number of consumers", 1, result.getTotalNumberOfConsumers()); - assertEquals("Unexpected number of producers", 0, result.getTotalNumberOfProducers()); - } - - public static void assertExpectedProducerResults(ParticipantResult result, String participantName, String registeredClientName, long expectedTestStartTime, int expectedAcknowledgeMode, Integer expectedBatchSize, Integer expectedNumberOfMessages, Integer expectedPayloadSize, Long expectedTotalPayloadProcessed, Long expectedMinimumExpectedDuration) - { - assertExpectedResults(result, participantName, registeredClientName, expectedTestStartTime, expectedAcknowledgeMode, expectedBatchSize, expectedNumberOfMessages, expectedPayloadSize, expectedTotalPayloadProcessed, expectedMinimumExpectedDuration); - assertEquals("Unexpected number of producers", 1, result.getTotalNumberOfProducers()); - assertEquals("Unexpected number of consumers", 0, result.getTotalNumberOfConsumers()); - } - - private static void assertExpectedResults(ParticipantResult result, String participantName, String registeredClientName, long expectedTestStartTime, int expectedAcknowledgeMode, Integer expectedBatchSize, Integer expectedNumberOfMessages, Integer expectedPayloadSize, Long expectedTotalPayloadProcessed, Long expectedMinimumExpectedDuration) - { - assertFalse(result.hasError()); - - assertEquals("unexpected participant name", participantName, result.getParticipantName()); - assertEquals("unexpected client name", registeredClientName, result.getRegisteredClientName()); - - assertAtLeast("start time of result is too low", expectedTestStartTime, result.getStartInMillis()); - assertAtLeast("end time of result should be after start time", result.getStartInMillis(), result.getEndInMillis()); - - assertEquals("unexpected acknowledge mode", expectedAcknowledgeMode, result.getAcknowledgeMode()); - - if(expectedNumberOfMessages != null) - { - assertEquals("unexpected number of messages", expectedNumberOfMessages.intValue(), result.getNumberOfMessagesProcessed()); - } - if(expectedBatchSize != null) - { - assertEquals("unexpected batch size", expectedBatchSize.intValue(), result.getBatchSize()); - } - if (expectedPayloadSize != null) - { - assertEquals("unexpected payload size", expectedPayloadSize.intValue(), result.getPayloadSize()); - } - if (expectedTotalPayloadProcessed != null) - { - assertEquals("unexpected total payload processed", expectedTotalPayloadProcessed.longValue(), result.getTotalPayloadProcessed()); - } - if(expectedMinimumExpectedDuration != null) - { - assertAtLeast("participant did not take a sufficient length of time.", expectedMinimumExpectedDuration, result.getTimeTaken()); - } - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ProducerParticipantTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ProducerParticipantTest.java deleted file mode 100644 index 08ee8715fd..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/ProducerParticipantTest.java +++ /dev/null @@ -1,235 +0,0 @@ -/* - * 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.disttest.client; - -import static org.apache.qpid.disttest.client.ParticipantTestHelper.assertExpectedProducerResults; -import static org.mockito.Matchers.isA; -import static org.mockito.Mockito.atLeastOnce; -import static org.mockito.Mockito.inOrder; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import javax.jms.DeliveryMode; -import javax.jms.Message; -import javax.jms.Session; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.jms.ClientJmsDelegate; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.test.utils.QpidTestCase; -import org.mockito.InOrder; - -public class ProducerParticipantTest extends QpidTestCase -{ - private ProducerParticipant _producer; - - private static final String SESSION_NAME1 = "SESSION1"; - private static final String PARTICIPANT_NAME1 = "PARTICIPANT_NAME1"; - - private static final String CLIENT_NAME = "CLIENT_NAME"; - private static final int PAYLOAD_SIZE_PER_MESSAGE = 1024; - - - private final Message _mockMessage = mock(Message.class); - private final CreateProducerCommand _command = new CreateProducerCommand(); - private ClientJmsDelegate _delegate; - private InOrder _inOrder; - - /** used to check start/end time of results */ - private long _testStartTime; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _delegate = mock(ClientJmsDelegate.class); - _inOrder = inOrder(_delegate); - - _command.setSessionName(SESSION_NAME1); - _command.setParticipantName(PARTICIPANT_NAME1); - - when(_delegate.sendNextMessage(isA(CreateProducerCommand.class))).thenReturn(_mockMessage); - when(_delegate.calculatePayloadSizeFrom(_mockMessage)).thenReturn(PAYLOAD_SIZE_PER_MESSAGE); - when(_delegate.getAcknowledgeMode(SESSION_NAME1)).thenReturn(Session.AUTO_ACKNOWLEDGE); - - _producer = new ProducerParticipant(_delegate, _command); - - _testStartTime = System.currentTimeMillis(); - } - - public void testStartDelay() throws Exception - { - final long delay = 100; - int numberOfMessages = 1; - long totalPayloadSize = PAYLOAD_SIZE_PER_MESSAGE * numberOfMessages; - - _command.setStartDelay(delay); - _command.setNumberOfMessages(numberOfMessages); - - ParticipantResult result = _producer.doIt(CLIENT_NAME); - - long expectedPublishedStartTime = _testStartTime + delay; - assertExpectedProducerResults(result, PARTICIPANT_NAME1, CLIENT_NAME, expectedPublishedStartTime, Session.AUTO_ACKNOWLEDGE, null, numberOfMessages, PAYLOAD_SIZE_PER_MESSAGE, totalPayloadSize, null); - } - - - public void testNoMessagesToSend() throws Exception - { - _command.setNumberOfMessages(0); - _command.setMaximumDuration(0); - - try - { - _producer.doIt(CLIENT_NAME); - fail("Exception not thrown"); - } - catch (DistributedTestException e) - { - // PASS - assertEquals("number of messages and duration cannot both be zero", e.getMessage()); - } - } - - public void testOneMessageToSend() throws Exception - { - int batchSize = 1; - int numberOfMessages = 1; - long totalPayloadSize = PAYLOAD_SIZE_PER_MESSAGE * numberOfMessages; - int deliveryMode = DeliveryMode.PERSISTENT; - - _command.setNumberOfMessages(numberOfMessages); - _command.setBatchSize(batchSize); - _command.setDeliveryMode(deliveryMode); - - ParticipantResult result = _producer.doIt(CLIENT_NAME); - assertExpectedProducerResults(result, PARTICIPANT_NAME1, CLIENT_NAME, _testStartTime, - Session.AUTO_ACKNOWLEDGE, null, numberOfMessages, PAYLOAD_SIZE_PER_MESSAGE, totalPayloadSize, null); - - _inOrder.verify(_delegate).sendNextMessage(isA(CreateProducerCommand.class)); - _inOrder.verify(_delegate).calculatePayloadSizeFrom(_mockMessage); - _inOrder.verify(_delegate).commitIfNecessary(SESSION_NAME1); - - } - - public void testSendMessagesForDuration() throws Exception - { - final long duration = 1000; - _command.setMaximumDuration(duration); - - ParticipantResult result = _producer.doIt(CLIENT_NAME); - assertExpectedProducerResults(result, PARTICIPANT_NAME1, CLIENT_NAME, _testStartTime, - Session.AUTO_ACKNOWLEDGE, null, null, PAYLOAD_SIZE_PER_MESSAGE, null, duration); - - verify(_delegate, atLeastOnce()).sendNextMessage(isA(CreateProducerCommand.class)); - verify(_delegate, atLeastOnce()).calculatePayloadSizeFrom(_mockMessage); - verify(_delegate, atLeastOnce()).commitIfNecessary(SESSION_NAME1); - } - - public void testSendMessagesForDurationWithDelayExceedingDuration() throws Exception - { - final long duration = 100; - _command.setMaximumDuration(duration); - _command.setStartDelay(150); - - try - { - _producer.doIt(CLIENT_NAME); - fail("Exception should be thrown indicating configuration error"); - } - catch(DistributedTestException e) - { - assertEquals("Start delay must be less than maximum test duration", e.getMessage()); - } - } - - public void testSendMessageBatches() throws Exception - { - final int batchSize = 3; - final int numberOfMessages = 10; - final int expectedNumberOfCommits = 4; // one for each batch of 3 messages, plus one more at the end of the test for the tenth msg. - long totalPayloadSize = PAYLOAD_SIZE_PER_MESSAGE * numberOfMessages; - - _command.setNumberOfMessages(numberOfMessages); - _command.setBatchSize(batchSize); - - ParticipantResult result = _producer.doIt(CLIENT_NAME); - assertExpectedProducerResults(result, PARTICIPANT_NAME1, CLIENT_NAME, _testStartTime, - Session.AUTO_ACKNOWLEDGE, batchSize, numberOfMessages, PAYLOAD_SIZE_PER_MESSAGE, totalPayloadSize, null); - - verify(_delegate, times(numberOfMessages)).sendNextMessage(isA(CreateProducerCommand.class)); - verify(_delegate, times(numberOfMessages)).calculatePayloadSizeFrom(_mockMessage); - verify(_delegate, times(expectedNumberOfCommits)).commitIfNecessary(SESSION_NAME1); - } - - public void testSendMessageWithPublishInterval() throws Exception - { - final int batchSize = 3; - final long publishInterval = 100; - int numberOfMessages = 10; - long totalPayloadSize = PAYLOAD_SIZE_PER_MESSAGE * numberOfMessages; - - final long expectedTimeToRunTest = batchSize * publishInterval; - - _command.setNumberOfMessages(numberOfMessages); - _command.setBatchSize(batchSize); - _command.setInterval(publishInterval); - - ParticipantResult result = _producer.doIt(CLIENT_NAME); - assertExpectedProducerResults(result, PARTICIPANT_NAME1, CLIENT_NAME, _testStartTime, - Session.AUTO_ACKNOWLEDGE, null, numberOfMessages, null, totalPayloadSize, expectedTimeToRunTest); - - verify(_delegate, times(numberOfMessages)).sendNextMessage(isA(CreateProducerCommand.class)); - verify(_delegate, times(numberOfMessages)).calculatePayloadSizeFrom(_mockMessage); - verify(_delegate, times(4)).commitIfNecessary(SESSION_NAME1); - } - - public void testSendMessageWithVaryingPayloadSize() throws Exception - { - int numberOfMessages = 3; - - int firstPayloadSize = PAYLOAD_SIZE_PER_MESSAGE; - int secondPayloadSize = PAYLOAD_SIZE_PER_MESSAGE * 2; - int thirdPayloadSize = PAYLOAD_SIZE_PER_MESSAGE * 4; - - final long totalPayloadSize = firstPayloadSize + secondPayloadSize + thirdPayloadSize; - - when(_delegate.calculatePayloadSizeFrom(_mockMessage)).thenReturn(firstPayloadSize, secondPayloadSize, thirdPayloadSize); - - _command.setNumberOfMessages(numberOfMessages); - - ParticipantResult result = _producer.doIt(CLIENT_NAME); - - final int expectedPayloadResultPayloadSize = 0; - assertExpectedProducerResults(result, PARTICIPANT_NAME1, CLIENT_NAME, _testStartTime, - Session.AUTO_ACKNOWLEDGE, null, numberOfMessages, expectedPayloadResultPayloadSize, totalPayloadSize, null); - - verify(_delegate, times(numberOfMessages)).sendNextMessage(isA(CreateProducerCommand.class)); - verify(_delegate, times(numberOfMessages)).calculatePayloadSizeFrom(_mockMessage); - verify(_delegate, times(numberOfMessages)).commitIfNecessary(SESSION_NAME1); - } - - public void testReleaseResources() - { - _producer.releaseResources(); - verify(_delegate).closeTestProducer(PARTICIPANT_NAME1); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/ListPropertyValueTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/ListPropertyValueTest.java deleted file mode 100644 index 3172eb07ed..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/ListPropertyValueTest.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * 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.disttest.client.property; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class ListPropertyValueTest extends QpidTestCase -{ - private ListPropertyValue _generator; - private List<PropertyValue> _items; - - @Override - public void setUp() throws Exception - { - super.setUp(); - _generator = new ListPropertyValue(); - _items = new ArrayList<PropertyValue>(); - _items.add(new SimplePropertyValue(new Integer(1))); - _items.add(new SimplePropertyValue(new Double(2.1))); - _items.add(new SimplePropertyValue(new Boolean(true))); - ListPropertyValue innerList = new ListPropertyValue(); - List<PropertyValue> innerListItems = new ArrayList<PropertyValue>(); - innerListItems.add(new SimplePropertyValue("test")); - innerListItems.add(new SimplePropertyValue(new Integer(2))); - innerList.setItems(innerListItems); - _items.add(innerList); - _generator.setItems(_items); - } - - public void testGetItems() - { - List<? extends Object> items = _generator.getItems(); - assertEquals("Unexpected list items", _items, items); - } - - public void testGetValue() - { - for (int i = 0; i < 2; i++) - { - assertEquals("Unexpected first item", new Integer(1), _generator.getValue()); - assertEquals("Unexpected second item", new Double(2.1), _generator.getValue()); - assertEquals("Unexpected third item", new Boolean(true), _generator.getValue()); - if (i == 0) - { - assertEquals("Unexpected forth item", "test", _generator.getValue()); - } - else - { - assertEquals("Unexpected forth item", new Integer(2), _generator.getValue()); - } - } - } - - public void testNonCyclicGetValue() - { - _generator.setCyclic(false); - assertFalse("Generator should not be cyclic", _generator.isCyclic()); - assertEquals("Unexpected first item", new Integer(1), _generator.getValue()); - assertEquals("Unexpected second item", new Double(2.1), _generator.getValue()); - assertEquals("Unexpected third item", new Boolean(true), _generator.getValue()); - assertEquals("Unexpected forth item", "test", _generator.getValue()); - assertEquals("Unexpected fifth item", new Integer(2), _generator.getValue()); - assertEquals("Unexpected sixs item", "test", _generator.getValue()); - assertEquals("Unexpected sevens item", new Integer(2), _generator.getValue()); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/PropertyValueFactoryTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/PropertyValueFactoryTest.java deleted file mode 100644 index eba1bcc435..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/PropertyValueFactoryTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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.disttest.client.property; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class PropertyValueFactoryTest extends QpidTestCase -{ - private PropertyValueFactory _factory; - - @Override - public void setUp() throws Exception - { - super.setUp(); - _factory = new PropertyValueFactory(); - } - - public void testCreateListPropertyValue() - { - PropertyValue propertyValue = _factory.createPropertyValue("list"); - assertNotNull("List generator is not created", propertyValue); - assertTrue("Unexpected type of list generator", propertyValue instanceof ListPropertyValue); - } - - public void testCreateRangePropertyValue() - { - PropertyValue propertyValue = _factory.createPropertyValue("range"); - assertNotNull("Range generator is not created", propertyValue); - assertTrue("Unexpected type of range generator", propertyValue instanceof RangePropertyValue); - } - - public void testCreateRandomPropertyValue() - { - PropertyValue propertyValue = _factory.createPropertyValue("random"); - assertNotNull("Random generator is not created", propertyValue); - assertTrue("Unexpected type of range generator", propertyValue instanceof RandomPropertyValue); - } - - public void testCreateSimplePropertyValue() - { - PropertyValue propertyValue = _factory.createPropertyValue("simple"); - assertNotNull("Simple property value is not created", propertyValue); - assertTrue("Unexpected type of property value", propertyValue instanceof SimplePropertyValue); - } - - public void testCreateNonExistingPropertyValue() - { - try - { - _factory.createPropertyValue("nonExisting"); - fail("Non existing property value should not be created"); - } - catch (Exception e) - { - // pass - } - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/RandomPropertyValueTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/RandomPropertyValueTest.java deleted file mode 100644 index 9651dd95ce..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/RandomPropertyValueTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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.disttest.client.property; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class RandomPropertyValueTest extends QpidTestCase -{ - private RandomPropertyValue _generator; - - @Override - public void setUp() throws Exception - { - super.setUp(); - _generator = new RandomPropertyValue(); - _generator.setUpper(20.0); - _generator.setLower(10.0); - _generator.setType("double"); - } - - public void testGetters() - { - assertEquals("Unexpected upper boundary", new Double(20.0), _generator.getUpper()); - assertEquals("Unexpected lower boundary", new Double(10.0), _generator.getLower()); - assertEquals("Unexpected type", "double", _generator.getType()); - } - - public void testGetValue() - { - Object value = _generator.getValue(); - assertTrue("Unexpected type", value instanceof Double); - assertTrue("Unexpected value", ((Double) value).doubleValue() >= 10.0 - && ((Double) value).doubleValue() <= 20.0); - } - - public void testGetValueInt() - { - _generator.setType("int"); - Object value = _generator.getValue(); - assertTrue("Unexpected type", value instanceof Integer); - assertTrue("Unexpected value", ((Integer) value).intValue() >= 10 && ((Integer) value).intValue() <= 20); - } - - public void testGetValueLong() - { - _generator.setType("long"); - Object value = _generator.getValue(); - assertTrue("Unexpected type", value instanceof Long); - assertTrue("Unexpected value", ((Long) value).longValue() >= 10 && ((Long) value).longValue() <= 20); - } - - public void testGetValueFloat() - { - _generator.setType("float"); - Object value = _generator.getValue(); - assertTrue("Unexpected type", value instanceof Float); - assertTrue("Unexpected value", ((Float) value).floatValue() >= 10.0 && ((Float) value).floatValue() <= 20.0); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/RangePropertyValueTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/RangePropertyValueTest.java deleted file mode 100644 index b0649a49ae..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/RangePropertyValueTest.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * 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.disttest.client.property; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class RangePropertyValueTest extends QpidTestCase -{ - private RangePropertyValue _generator; - - @Override - public void setUp() throws Exception - { - super.setUp(); - _generator = new RangePropertyValue(); - _generator.setUpper(10.0); - _generator.setLower(0.0); - _generator.setStep(2.0); - _generator.setType("double"); - } - - public void testGetters() - { - assertEquals("Unexpected upper boundary", new Double(10.0), _generator.getUpper()); - assertEquals("Unexpected lower boundary", new Double(0.0), _generator.getLower()); - assertEquals("Unexpected step", new Double(2.0), _generator.getStep()); - assertEquals("Unexpected type", "double", _generator.getType()); - assertTrue("Unexpected cyclic", _generator.isCyclic()); - } - - public void testGetValue() - { - double[] expected = { 0.0, 2.0, 4.0, 6.0, 8.0, 10.0 }; - for (int j = 0; j < 2; j++) - { - for (int i = 0; i < expected.length; i++) - { - Object value = _generator.getValue(); - assertTrue("Should be Double", value instanceof Double); - assertEquals("Unexpected value ", expected[i], value); - } - } - } - - public void testGetValueNonCyclic() - { - _generator.setCyclic(false); - double[] expected = { 0.0, 2.0, 4.0, 6.0, 8.0, 10.0 }; - for (int i = 0; i < expected.length; i++) - { - Object value = _generator.getValue(); - assertTrue("Should be Double", value instanceof Double); - assertEquals("Unexpected value ", expected[i], value); - } - for (int i = 0; i < expected.length; i++) - { - Object value = _generator.getValue(); - assertEquals("Unexpected value ", expected[expected.length - 1], value); - } - } - - public void testGetValueInt() - { - _generator.setType("int"); - int[] expected = { 0, 2, 4, 6, 8, 10 }; - for (int j = 0; j < 2; j++) - { - for (int i = 0; i < expected.length; i++) - { - Object value = _generator.getValue(); - assertTrue("Should be Double", value instanceof Integer); - assertEquals("Unexpected value ", expected[i], value); - } - } - } - - public void testGetValueByte() - { - _generator.setType("byte"); - byte[] expected = { 0, 2, 4, 6, 8, 10 }; - for (int j = 0; j < 2; j++) - { - for (int i = 0; i < expected.length; i++) - { - Object value = _generator.getValue(); - assertTrue("Should be Double", value instanceof Byte); - assertEquals("Unexpected value ", expected[i], value); - } - } - } - - public void testGetValueLong() - { - _generator.setType("long"); - long[] expected = { 0, 2, 4, 6, 8, 10 }; - for (int j = 0; j < 2; j++) - { - for (int i = 0; i < expected.length; i++) - { - Object value = _generator.getValue(); - assertTrue("Should be Double", value instanceof Long); - assertEquals("Unexpected value ", expected[i], value); - } - } - } - - public void testGetValueShort() - { - _generator.setType("short"); - short[] expected = { 0, 2, 4, 6, 8, 10 }; - for (int j = 0; j < 2; j++) - { - for (int i = 0; i < expected.length; i++) - { - Object value = _generator.getValue(); - assertTrue("Should be Double", value instanceof Short); - assertEquals("Unexpected value ", expected[i], value); - } - } - } - - public void testGetValueFloat() - { - _generator.setType("float"); - float[] expected = { 0.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f }; - for (int j = 0; j < 2; j++) - { - for (int i = 0; i < expected.length; i++) - { - Object value = _generator.getValue(); - assertTrue("Should be Double", value instanceof Float); - assertEquals("Unexpected value ", expected[i], value); - } - } - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/SimplePropertyValueTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/SimplePropertyValueTest.java deleted file mode 100644 index f1977015fe..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/property/SimplePropertyValueTest.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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.disttest.client.property; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class SimplePropertyValueTest extends QpidTestCase -{ - public void testGetValue() - { - SimplePropertyValue value = new SimplePropertyValue(new Integer(1)); - assertEquals("Unexpected value", new Integer(1), value.getValue()); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/utils/ExecutorWithNoLimitsTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/utils/ExecutorWithNoLimitsTest.java deleted file mode 100644 index 0880512333..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/utils/ExecutorWithNoLimitsTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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.disttest.client.utils; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.concurrent.Callable; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class ExecutorWithNoLimitsTest extends QpidTestCase -{ - private final static Object RESULT = new Object(); - - private ExecutorWithLimits _limiter = new ExecutorWithNoLimits(); - @SuppressWarnings("unchecked") - private Callable<Object> _callback = mock(Callable.class); - - public void testNormalExecution() throws Exception - { - when(_callback.call()).thenReturn(RESULT); - final Object actualResult = _limiter.execute(_callback); - verify(_callback).call(); - assertEquals(RESULT, actualResult); - } - - public void testCallableThrowsException() throws Exception - { - when(_callback.call()).thenThrow(new Exception("mocked exception")); - - try - { - _limiter.execute(_callback); - fail("Exception not thrown"); - } - catch (Exception e) - { - // PASS - } - verify(_callback).call(); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/utils/ExecutorWithTimeLimitTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/utils/ExecutorWithTimeLimitTest.java deleted file mode 100644 index 2abdba2446..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/client/utils/ExecutorWithTimeLimitTest.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * 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.disttest.client.utils; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.concurrent.Callable; -import java.util.concurrent.CancellationException; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class ExecutorWithTimeLimitTest extends QpidTestCase -{ - private static final int TIMEOUT = 500; - private static final Object RESULT = new Object(); - - private ExecutorWithLimits _limiter; - @SuppressWarnings("unchecked") - private Callable<Object> _callback = mock(Callable.class); - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _limiter = new ExecutorWithTimeLimit(System.currentTimeMillis(), TIMEOUT); - } - - @Override - protected void tearDown() throws Exception - { - super.tearDown(); - if (_limiter != null) - { - _limiter.shutdown(); - } - } - - public void testCallableCompletesNormally() throws Exception - { - when(_callback.call()).thenReturn(RESULT); - - final Object actualResult = _limiter.execute(_callback); - - verify(_callback).call(); - assertEquals(RESULT, actualResult); - } - - public void testCallableThrowsException() throws Exception - { - when(_callback.call()).thenThrow(new Exception("mocked exception")); - - try - { - _limiter.execute(_callback); - fail("Exception not thrown"); - } - catch (CancellationException ce) - { - fail("Wrong exception thrown"); - } - catch (Exception e) - { - // PASS - } - verify(_callback).call(); - } - - public void testCallableNotRunDueToInsufficentTimeRemaining() throws Exception - { - long now = System.currentTimeMillis(); - ExecutorWithLimits shortTimeLimiter = new ExecutorWithTimeLimit(now - 100, 100); - try - { - shortTimeLimiter.execute(_callback); - fail("Exception not thrown"); - } - catch (CancellationException ca) - { - // PASS - } - finally - { - shortTimeLimiter.shutdown(); - } - - verify(_callback, never()).call(); - } - - public void testExecutionInterruptedByTimeout() throws Exception - { - Callable<Void> oversleepingCallback = new Callable<Void>() - { - @Override - public Void call() throws Exception - { - Thread.sleep(TIMEOUT * 2); - return null; - } - }; - - try - { - _limiter.execute(oversleepingCallback); - fail("Exception not thrown"); - } - catch (CancellationException ca) - { - // PASS - } - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/ClientRegistryTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/ClientRegistryTest.java deleted file mode 100644 index c07d9fcb81..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/ClientRegistryTest.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * 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.disttest.controller; - -import java.util.Timer; -import java.util.TimerTask; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.test.utils.QpidTestCase; - -public class ClientRegistryTest extends QpidTestCase -{ - private static final String CLIENT1_REGISTERED_NAME = "CLIENT1_REGISTERED_NAME"; - private static final String CLIENT2_REGISTERED_NAME = "CLIENT2_REGISTERED_NAME"; - private static final String CLIENT3_REGISTERED_NAME = "CLIENT3_REGISTERED_NAME"; - - private static final int AWAIT_DELAY = 100; - - private ClientRegistry _clientRegistry = new ClientRegistry(); - - public void testRegisterClient() - { - assertEquals(0, _clientRegistry.getClients().size()); - - _clientRegistry.registerClient(CLIENT1_REGISTERED_NAME); - assertEquals(1, _clientRegistry.getClients().size()); - - } - - public void testRejectsDuplicateClientNames() - { - _clientRegistry.registerClient(CLIENT1_REGISTERED_NAME); - try - { - _clientRegistry.registerClient(CLIENT1_REGISTERED_NAME); - fail("Should have thrown an exception"); - } - catch (final DistributedTestException e) - { - // pass - } - } - - public void testAwaitOneClientWhenClientNotRegistered() - { - int numberOfClientsAbsent = _clientRegistry.awaitClients(1, AWAIT_DELAY); - assertEquals(1, numberOfClientsAbsent); - } - - public void testAwaitOneClientWhenClientAlreadyRegistered() - { - _clientRegistry.registerClient(CLIENT1_REGISTERED_NAME); - - int numberOfClientsAbsent = _clientRegistry.awaitClients(1, AWAIT_DELAY); - assertEquals(0, numberOfClientsAbsent); - } - - public void testAwaitTwoClientsWhenClientRegistersWhilstWaiting() - { - _clientRegistry.registerClient(CLIENT1_REGISTERED_NAME); - registerClientLater(CLIENT2_REGISTERED_NAME, 50); - - int numberOfClientsAbsent = _clientRegistry.awaitClients(2, AWAIT_DELAY); - assertEquals(0, numberOfClientsAbsent); - } - - public void testAwaitTimeoutForPromptRegistrations() - { - registerClientsLaterAndAssertResult("Clients registering every 100ms should be within 600ms timeout", - new int[] {300, 400, 500}, - 600, - 0); - } - - public void testAwaitTimeoutForWhenThirdRegistrationIsLate() - { - registerClientsLaterAndAssertResult("Third client registering tardily should exceed timeout", - new int[] {300, 400, 1500}, - 600, - 1); - } - - public void testAwaitTimeoutWhenSecondAndThirdRegistrationsAreLate() - { - registerClientsLaterAndAssertResult("Second and third clients registering tardily should exceed timeout", - new int[] {300, 1500, 1500}, - 600, - 2); - } - - private void registerClientsLaterAndAssertResult(String message, int[] registrationDelays, int timeout, int expectedNumberOfAbsentees) - { - registerClientLater(CLIENT1_REGISTERED_NAME, registrationDelays[0]); - registerClientLater(CLIENT2_REGISTERED_NAME, registrationDelays[1]); - registerClientLater(CLIENT3_REGISTERED_NAME, registrationDelays[2]); - - int numberOfClientsAbsent = _clientRegistry.awaitClients(3, timeout); - - assertEquals(message, expectedNumberOfAbsentees, numberOfClientsAbsent); - } - - private void registerClientLater(final String clientName, long delayInMillis) - { - doLater(new TimerTask() - { - @Override - public void run() - { - _clientRegistry.registerClient(clientName); - } - }, delayInMillis); - } - - private void doLater(TimerTask task, long delayInMillis) - { - Timer timer = new Timer(); - timer.schedule(task, delayInMillis); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/ControllerTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/ControllerTest.java deleted file mode 100644 index e482268ab2..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/ControllerTest.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * 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.disttest.controller; - -import static org.apache.qpid.disttest.PerfTestConstants.COMMAND_RESPONSE_TIMEOUT; -import static org.apache.qpid.disttest.PerfTestConstants.REGISTRATION_TIMEOUT; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.eq; -import static org.mockito.Matchers.isA; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.controller.config.Config; -import org.apache.qpid.disttest.controller.config.TestInstance; -import org.apache.qpid.disttest.jms.ControllerJmsDelegate; -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.RegisterClientCommand; -import org.apache.qpid.disttest.message.Response; -import org.apache.qpid.disttest.message.StopClientCommand; -import org.apache.qpid.disttest.results.aggregation.ITestResult; -import org.apache.qpid.test.utils.QpidTestCase; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - -public class ControllerTest extends QpidTestCase -{ - private static final String CLIENT1_REGISTERED_NAME = "client-uid1"; - - private Controller _controller; - private ControllerJmsDelegate _respondingJmsDelegate; - private TestRunner _testRunner; - private ClientRegistry _clientRegistry; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _respondingJmsDelegate = mock(ControllerJmsDelegate.class); - _controller = new Controller(_respondingJmsDelegate, REGISTRATION_TIMEOUT, COMMAND_RESPONSE_TIMEOUT); - _testRunner = mock(TestRunner.class); - _clientRegistry = mock(ClientRegistry.class); - - Config configWithOneClient = createMockConfig(1); - _controller.setConfig(configWithOneClient); - _controller.setClientRegistry(_clientRegistry); - _controller.setTestRunnerFactory(createTestFactoryReturningMock()); - - doAnswer(new Answer<Void>() - { - @Override - public Void answer(InvocationOnMock invocation) throws Throwable - { - final String clientName = (String)invocation.getArguments()[0]; - final Command command = (Command)invocation.getArguments()[1]; - _controller.processStopClientResponse(new Response(clientName, command.getType())); - return null; - } - }).when(_respondingJmsDelegate).sendCommandToClient(anyString(), isA(Command.class)); - } - - - public void testControllerRejectsEmptyConfiguration() - { - Config configWithZeroClients = createMockConfig(0); - - try - { - _controller.setConfig(configWithZeroClients); - fail("Exception not thrown"); - } - catch (DistributedTestException e) - { - // PASS - } - } - - public void testControllerReceivesTwoExpectedClientRegistrations() - { - Config configWithTwoClients = createMockConfig(2); - _controller.setConfig(configWithTwoClients); - when(_clientRegistry.awaitClients(2, REGISTRATION_TIMEOUT)).thenReturn(0); - - _controller.awaitClientRegistrations(); - } - - public void testControllerDoesntReceiveAnyRegistrations() - { - when(_clientRegistry.awaitClients(1, REGISTRATION_TIMEOUT)).thenReturn(1); - - try - { - _controller.awaitClientRegistrations(); - fail("Exception not thrown"); - } - catch (DistributedTestException e) - { - // PASS - } - } - - public void testRegisterClient() - { - RegisterClientCommand command = new RegisterClientCommand(CLIENT1_REGISTERED_NAME, "dummy"); - _controller.registerClient(command); - - verify(_clientRegistry).registerClient(CLIENT1_REGISTERED_NAME); - verify(_respondingJmsDelegate).registerClient(command); - - } - - public void testControllerSendsClientStopCommandToClient() - { - when(_clientRegistry.getClients()).thenReturn(Collections.singleton(CLIENT1_REGISTERED_NAME)); - - _controller.stopAllRegisteredClients(); - - verify(_respondingJmsDelegate).sendCommandToClient(eq(CLIENT1_REGISTERED_NAME), isA(StopClientCommand.class)); - } - - public void testRunAllTests() - { - Config config = createSimpleConfig(); - _controller.setConfig(config); - - TestResult testResult = new TestResult("test1"); - - when(_testRunner.run()).thenReturn(testResult); - - ResultsForAllTests results = _controller.runAllTests(); - - List<ITestResult> testResults = results.getTestResults(); - assertEquals(1, testResults.size()); - assertSame(testResult, testResults.get(0)); - - verify(_testRunner).run(); - } - - private Config createSimpleConfig() - { - Config config = mock(Config.class); - TestInstance testInstance = mock(TestInstance.class); - - List<TestInstance> testInstances = Arrays.asList(testInstance); - - when(config.getTests()).thenReturn(testInstances); - when(config.getTotalNumberOfClients()).thenReturn(1); // necessary otherwise controller rejects "invalid" config - - return config; - } - - private Config createMockConfig(int numberOfClients) - { - Config config = mock(Config.class); - when(config.getTotalNumberOfClients()).thenReturn(numberOfClients); - return config; - } - - private TestRunnerFactory createTestFactoryReturningMock() - { - TestRunnerFactory testRunnerFactory = mock(TestRunnerFactory.class); - - when(testRunnerFactory.createTestRunner( - isA(ParticipatingClients.class), - isA(TestInstance.class), - isA(ControllerJmsDelegate.class), - isA(Long.class), - isA(Long.class))) - .thenReturn(_testRunner); - - return testRunnerFactory; - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/ParticipatingClientsTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/ParticipatingClientsTest.java deleted file mode 100644 index da180f328f..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/ParticipatingClientsTest.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * 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.disttest.controller; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class ParticipatingClientsTest extends QpidTestCase -{ - private static final String CLIENT1_CONFIGURED_NAME = "CLIENT1_CONFIGURED_NAME"; - private static final String CLIENT2_CONFIGURED_NAME = "CLIENT2_CONFIGURED_NAME"; - - private static final String CLIENT1_REGISTERED_NAME = "CLIENT1_REGISTERED_NAME"; - private static final String CLIENT2_REGISTERED_NAME = "CLIENT2_REGISTERED_NAME"; - private static final String CLIENT3_REGISTERED_NAME = "CLIENT3_REGISTERED_NAME"; - private ClientRegistry _clientRegistry; - private List<String> _configuredClientNamesForTest; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _clientRegistry = mock(ClientRegistry.class); - } - - public void testTooFewRegisteredClientsForTest() - { - _configuredClientNamesForTest = Arrays.asList(CLIENT1_CONFIGURED_NAME, CLIENT2_CONFIGURED_NAME); - when(_clientRegistry.getClients()).thenReturn(Arrays.asList(CLIENT1_REGISTERED_NAME)); - - try - { - new ParticipatingClients(_clientRegistry, _configuredClientNamesForTest); - fail("Exception not thrown"); - } - catch (IllegalArgumentException e) - { - // PASS - } - - } - - - public void testSelectOneClientFromPoolOfOne() - { - _configuredClientNamesForTest = Arrays.asList(CLIENT1_CONFIGURED_NAME); - when(_clientRegistry.getClients()).thenReturn(Arrays.asList(CLIENT1_REGISTERED_NAME)); - - ParticipatingClients clients = new ParticipatingClients(_clientRegistry, _configuredClientNamesForTest); - assertBothWays(clients, CLIENT1_REGISTERED_NAME, CLIENT1_CONFIGURED_NAME); - } - - public void testSelectTwoClientFromPoolOfMany() - { - _configuredClientNamesForTest = Arrays.asList(CLIENT1_CONFIGURED_NAME, CLIENT2_CONFIGURED_NAME); - when(_clientRegistry.getClients()).thenReturn(Arrays.asList(CLIENT1_REGISTERED_NAME, CLIENT2_REGISTERED_NAME, CLIENT3_REGISTERED_NAME)); - - ParticipatingClients clients = new ParticipatingClients(_clientRegistry, _configuredClientNamesForTest); - - assertBothWays(clients, CLIENT1_REGISTERED_NAME, CLIENT1_CONFIGURED_NAME); - assertBothWays(clients, CLIENT2_REGISTERED_NAME, CLIENT2_CONFIGURED_NAME); - } - - public void testGetUnrecognisedConfiguredName() - { - _configuredClientNamesForTest = Arrays.asList(CLIENT1_CONFIGURED_NAME); - when(_clientRegistry.getClients()).thenReturn(Arrays.asList(CLIENT1_REGISTERED_NAME)); - - ParticipatingClients clients = new ParticipatingClients(_clientRegistry, _configuredClientNamesForTest); - - testUnrecognisedClientConfiguredName(clients, "unknown"); - testUnrecognisedClientRegisteredName(clients, "unknown"); - } - - public void testGetRegisteredClientNames() - { - _configuredClientNamesForTest = Arrays.asList(CLIENT1_CONFIGURED_NAME); - List<String> registeredNames = Arrays.asList(CLIENT1_REGISTERED_NAME); - when(_clientRegistry.getClients()).thenReturn(registeredNames); - - ParticipatingClients clients = new ParticipatingClients(_clientRegistry, _configuredClientNamesForTest); - - Collection<String> registeredParticipatingNames = clients.getRegisteredNames(); - assertEquals(1, registeredParticipatingNames.size()); - assertTrue(registeredParticipatingNames.contains(CLIENT1_REGISTERED_NAME)); - } - - private void testUnrecognisedClientConfiguredName(ParticipatingClients clients, String unrecognisedClientConfiguredName) - { - try - { - clients.getRegisteredNameFromConfiguredName(unrecognisedClientConfiguredName); - fail("Exception not thrown"); - } - catch (IllegalArgumentException e) - { - // PASS - } - } - - private void testUnrecognisedClientRegisteredName(ParticipatingClients clients, String unrecognisedClientRegisteredName) - { - try - { - clients.getConfiguredNameFromRegisteredName(unrecognisedClientRegisteredName); - fail("Exception not thrown"); - } - catch (IllegalArgumentException e) - { - // PASS - } - } - - private void assertBothWays(ParticipatingClients clients, String registeredName, String configuredName) - { - assertEquals(registeredName, clients.getRegisteredNameFromConfiguredName(configuredName)); - assertEquals(configuredName, clients.getConfiguredNameFromRegisteredName(registeredName)); - } - - - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/TestRunnerTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/TestRunnerTest.java deleted file mode 100644 index d8b25e76fa..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/TestRunnerTest.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * 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.disttest.controller; - -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.eq; -import static org.mockito.Matchers.isA; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import org.apache.qpid.disttest.DistributedTestException; -import org.apache.qpid.disttest.controller.config.QueueConfig; -import org.apache.qpid.disttest.controller.config.TestInstance; -import org.apache.qpid.disttest.jms.ControllerJmsDelegate; -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CreateConnectionCommand; -import org.apache.qpid.disttest.message.NoOpCommand; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.Response; -import org.apache.qpid.disttest.message.StartTestCommand; -import org.apache.qpid.disttest.message.TearDownTestCommand; -import org.apache.qpid.test.utils.QpidTestCase; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - -public class TestRunnerTest extends QpidTestCase -{ - private static final String TEST_NAME = "TEST_NAME"; - private static final String PARTICIPANT_NAME = "TEST_PARTICIPANT_NAME"; - private static final int ITERATION_NUMBER = 1; - - private static final String CLIENT1_REGISTERED_NAME = "client-uid1"; - private static final String CLIENT1_CONFIGURED_NAME = "client1"; - - private static final long COMMAND_RESPONSE_TIMEOUT = 1000; - private static final long TEST_RESULT_TIMEOUT = 2000; - private static final long DELAY = 100; - - private TestRunner _testRunner; - private TestInstance _testInstance; - private ControllerJmsDelegate _respondingJmsDelegate; - private ParticipatingClients _participatingClients; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _respondingJmsDelegate = mock(ControllerJmsDelegate.class); - - _participatingClients = mock(ParticipatingClients.class); - when(_participatingClients.getRegisteredNameFromConfiguredName(CLIENT1_CONFIGURED_NAME)).thenReturn(CLIENT1_REGISTERED_NAME); - when(_participatingClients.getConfiguredNameFromRegisteredName(CLIENT1_REGISTERED_NAME)).thenReturn(CLIENT1_CONFIGURED_NAME); - when(_participatingClients.getRegisteredNames()).thenReturn(Collections.singleton(CLIENT1_REGISTERED_NAME)); - - doAnswer(new Answer<Void>() - { - @Override - public Void answer(InvocationOnMock invocation) throws Throwable - { - final String clientName = (String)invocation.getArguments()[0]; - final Command command = (Command)invocation.getArguments()[1]; - _testRunner.processCommandResponse(new Response(clientName, command.getType())); - return null; - } - }).when(_respondingJmsDelegate).sendCommandToClient(anyString(), isA(Command.class)); - } - - public void testSendConnectionCommandToClient() - { - _testInstance = createTestInstanceWithConnection(); - - _testRunner = new TestRunner(_participatingClients, _testInstance , _respondingJmsDelegate, COMMAND_RESPONSE_TIMEOUT, TEST_RESULT_TIMEOUT); - _testRunner.sendTestSetupCommands(); - - verify(_respondingJmsDelegate).sendCommandToClient(eq(CLIENT1_REGISTERED_NAME), isA(CreateConnectionCommand.class)); - } - - public void testSendCommandToAllParticipatingClients() - { - _testRunner = new TestRunner(_participatingClients, mock(TestInstance.class), _respondingJmsDelegate, COMMAND_RESPONSE_TIMEOUT, TEST_RESULT_TIMEOUT); - - StartTestCommand startTestCommand = new StartTestCommand(); - _testRunner.sendCommandToParticipatingClients(startTestCommand); - - verify(_respondingJmsDelegate).sendCommandToClient(CLIENT1_REGISTERED_NAME, startTestCommand); - } - - public void testWaitsForCommandResponses() - { - _testInstance = createTestInstanceWithConnection(); - _testRunner = new TestRunner(_participatingClients, _testInstance , _respondingJmsDelegate, COMMAND_RESPONSE_TIMEOUT, TEST_RESULT_TIMEOUT); - - _testRunner.sendTestSetupCommands(); - - _testRunner.awaitCommandResponses(); - } - - public void testClientFailsToSendCommandResponseWithinTimeout() - { - ControllerJmsDelegate jmsDelegate = mock(ControllerJmsDelegate.class); - - _testInstance = createTestInstanceWithConnection(); - _testRunner = new TestRunner(_participatingClients, _testInstance , jmsDelegate, COMMAND_RESPONSE_TIMEOUT, TEST_RESULT_TIMEOUT); - - _testRunner.sendTestSetupCommands(); - // we don't call sendCommandResponseLater so controller should time out - - try - { - _testRunner.awaitCommandResponses(); - fail("Exception not thrown"); - } - catch (DistributedTestException e) - { - // PASS - } - } - - public void testCreateAndDeleteQueues() - { - _testInstance = mock(TestInstance.class); - List<QueueConfig> queues = mock(List.class); - when(_testInstance.getQueues()).thenReturn(queues); - - _testRunner = new TestRunner(_participatingClients, _testInstance, _respondingJmsDelegate, COMMAND_RESPONSE_TIMEOUT, TEST_RESULT_TIMEOUT); - - _testRunner.createQueues(); - verify(_respondingJmsDelegate).createQueues(queues); - - _testRunner.deleteQueues(); - verify(_respondingJmsDelegate).deleteQueues(queues); - } - - public void testRun() - { - _testInstance = createTestInstanceWithOneParticipant(); - _testRunner = new TestRunner(_participatingClients, _testInstance , _respondingJmsDelegate, COMMAND_RESPONSE_TIMEOUT, TEST_RESULT_TIMEOUT); - - ParticipantResult incomingParticipantResult = new ParticipantResult(PARTICIPANT_NAME); - incomingParticipantResult.setRegisteredClientName(CLIENT1_REGISTERED_NAME); - sendTestResultsLater(_testRunner, incomingParticipantResult); - - TestResult results = _testRunner.run(); - - verify(_respondingJmsDelegate).addCommandListener(isA(TestRunner.TestCommandResponseListener.class)); - verify(_respondingJmsDelegate).addCommandListener(isA(TestRunner.ParticipantResultListener.class)); - - verify(_respondingJmsDelegate).createQueues(isA(List.class)); - - verify(_respondingJmsDelegate).sendCommandToClient(eq(CLIENT1_REGISTERED_NAME), isA(StartTestCommand.class)); - verify(_respondingJmsDelegate).sendCommandToClient(eq(CLIENT1_REGISTERED_NAME), isA(NoOpCommand.class)); - verify(_respondingJmsDelegate).sendCommandToClient(eq(CLIENT1_REGISTERED_NAME), isA(TearDownTestCommand.class)); - - verify(_respondingJmsDelegate).deleteQueues(isA(List.class)); - - verify(_respondingJmsDelegate).removeCommandListener(isA(TestRunner.ParticipantResultListener.class)); - verify(_respondingJmsDelegate).removeCommandListener(isA(TestRunner.TestCommandResponseListener.class)); - - List<ParticipantResult> participantResults = results.getParticipantResults(); - assertEquals(1, participantResults.size()); - ParticipantResult resultingParticipantResult = participantResults.get(0); - - assertResultHasCorrectTestDetails(resultingParticipantResult); - } - - private void assertResultHasCorrectTestDetails(ParticipantResult resultingParticipantResult) - { - assertEquals("Test runner should have set configured name when it received participant results", - CLIENT1_CONFIGURED_NAME, resultingParticipantResult.getConfiguredClientName()); - assertEquals("Test runner should have set test name when it received participant results", - TEST_NAME, resultingParticipantResult.getTestName()); - assertEquals("Test runner should have set test iteration number when it received participant results", - ITERATION_NUMBER, resultingParticipantResult.getIterationNumber()); - } - - - private TestInstance createTestInstanceWithOneParticipant() - { - TestInstance testInstance = mock(TestInstance.class); - - List<CommandForClient> commands = Arrays.asList( - new CommandForClient(CLIENT1_CONFIGURED_NAME, new NoOpCommand())); - - when(testInstance.createCommands()).thenReturn(commands); - - when(testInstance.getTotalNumberOfParticipants()).thenReturn(1); - - when(testInstance.getName()).thenReturn(TEST_NAME); - - List<QueueConfig> queues = mock(List.class); - when(testInstance.getQueues()).thenReturn(queues); - - when(testInstance.getIterationNumber()).thenReturn(ITERATION_NUMBER); - - return testInstance; - } - - private TestInstance createTestInstanceWithConnection() - { - TestInstance testInstance = mock(TestInstance.class); - - List<CommandForClient> commands = Arrays.asList( - new CommandForClient(CLIENT1_CONFIGURED_NAME, new CreateConnectionCommand("conn1", "factory"))); - - when(testInstance.createCommands()).thenReturn(commands); - - return testInstance; - } - - private void sendTestResultsLater(final TestRunner runner, final ParticipantResult result) - { - doLater(new TimerTask() - { - @Override - public void run() - { - runner.processParticipantResult(result); - } - }, DELAY); - } - - private void doLater(TimerTask task, long delayInMillis) - { - Timer timer = new Timer(); - timer.schedule(task, delayInMillis); - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ClientConfigTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ClientConfigTest.java deleted file mode 100644 index 4bf4307eaf..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ClientConfigTest.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * 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.disttest.controller.config; - -import static org.apache.qpid.disttest.controller.config.ConfigTestUtils.assertCommandForClient; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.qpid.disttest.client.property.PropertyValue; -import org.apache.qpid.disttest.client.property.SimplePropertyValue; -import org.apache.qpid.disttest.controller.CommandForClient; -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CreateMessageProviderCommand; -import org.apache.qpid.disttest.message.NoOpCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class ClientConfigTest extends QpidTestCase -{ - private static final String CLIENT1 = "client1"; - - public void testClientConfigHasZeroArgConstructorForGson() - { - ClientConfig c = new ClientConfig(); - assertNotNull(c); - } - - public void testCreateCommands() - { - ClientConfig clientConfig = createClientConfigWithConnectionConfigReturningChildCommands(); - - List<CommandForClient> commands = clientConfig.createCommands(); - assertEquals(2, commands.size()); - - assertCommandForClient(commands, 0, CLIENT1, NoOpCommand.class); - assertCommandForClient(commands, 1, CLIENT1, NoOpCommand.class); - } - - public void testCreateCommandsForMessageProvider() - { - ClientConfig clientConfig = createClientConfigWithMessageProviderConfigReturningCommands(); - - List<CommandForClient> commands = clientConfig.createCommands(); - assertEquals(1, commands.size()); - - assertCommandForClient(commands, 0, CLIENT1, CreateMessageProviderCommand.class); - } - - public void testGetTotalNumberOfParticipants() - { - ClientConfig clientConfig = createClientConfigWithTwoParticipants(); - assertEquals(2, clientConfig.getTotalNumberOfParticipants()); - } - - private ClientConfig createClientConfigWithConnectionConfigReturningChildCommands() - { - ConnectionConfig connectionConfig = mock(ConnectionConfig.class); - - List<Command> commands = Arrays.asList((Command)new NoOpCommand(), (Command)new NoOpCommand()); - when(connectionConfig.createCommands()).thenReturn(commands); - - return new ClientConfig(CLIENT1, connectionConfig); - } - - private ClientConfig createClientConfigWithMessageProviderConfigReturningCommands() - { - Map<String, PropertyValue> messageProperties = new HashMap<String, PropertyValue>(); - messageProperties.put("test", new SimplePropertyValue("testValue")); - MessageProviderConfig config = new MessageProviderConfig("test", messageProperties); - - List<MessageProviderConfig> providerConfigs = new ArrayList<MessageProviderConfig>(); - providerConfigs.add(config); - - return new ClientConfig(CLIENT1, new ArrayList<ConnectionConfig>(), providerConfigs); - } - - private ClientConfig createClientConfigWithTwoParticipants() - { - ConnectionConfig connectionConfig1 = mock(ConnectionConfig.class); - ConnectionConfig connectionConfig2 = mock(ConnectionConfig.class); - - when(connectionConfig1.getTotalNumberOfParticipants()).thenReturn(1); - when(connectionConfig2.getTotalNumberOfParticipants()).thenReturn(1); - - ClientConfig clientConfig = new ClientConfig(CLIENT1, connectionConfig1, connectionConfig2); - return clientConfig; - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigReaderTest-test-config.js b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigReaderTest-test-config.js deleted file mode 100644 index 527300eff4..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigReaderTest-test-config.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * 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. - * - */ -jsonObject = { - "_tests": - QPID.iterations( { "__ACK_MODE": [ 0, 1 ] }, - { - // this is a comment - it wouldn't be allowed if this were pure JSON - - "_name": "Test 1", - "_queues": [ - { - "_name": "Json-Queue-Name" - } - ], - - "_clients": QPID.times(2, - { - "_name": "repeatingClient__CLIENT_INDEX", - "_connections": [ - { - "_name": "connection1", - "_sessions": [ - { - "_sessionName": "session1", - "_acknowledgeMode": "__ACK_MODE", - "_consumers": [] - } - ] - } - ] - }, - "__CLIENT_INDEX" - ) - }) - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigReaderTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigReaderTest.java deleted file mode 100644 index e208945901..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigReaderTest.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.io.Reader; -import java.util.List; -import java.util.Map; - -import org.apache.qpid.disttest.ConfigFileTestHelper; -import org.apache.qpid.disttest.client.property.PropertyValue; -import org.apache.qpid.test.utils.QpidTestCase; -import org.apache.qpid.test.utils.TestFileUtils; - -public class ConfigReaderTest extends QpidTestCase -{ - private Config _config; - - @Override - protected void setUp() - { - ConfigReader configReader = new ConfigReader(); - Reader reader = ConfigFileTestHelper.getConfigFileReader(getClass(), "sampleConfig.json"); - _config = configReader.readConfig(reader); - } - - public void testReadTest() - { - List<TestConfig> tests = _config.getTestConfigs(); - assertEquals("Unexpected number of tests", 2, tests.size()); - TestConfig test1Config = tests.get(0); - assertNotNull("Test 1 configuration is expected", test1Config); - assertEquals("Unexpected test name", "Test 1", test1Config.getName()); - - TestConfig test2Config = tests.get(1); - assertNotNull("Test 2 configuration is expected", test2Config); - } - - public void testReadsTestWithQueues() - { - TestConfig test1Config = _config.getTestConfigs().get(0); - List<QueueConfig> queues = test1Config.getQueues(); - assertEquals("Unexpected number of queues", 2, queues.size()); - QueueConfig queue1Config = queues.get(0); - assertNotNull("Expected queue 1 config", queue1Config); - assertEquals("Unexpected queue name", "Json-Queue-Name", queue1Config.getName()); - assertTrue("Unexpected attributes", queue1Config.getAttributes().isEmpty()); - assertFalse("Unexpected durable", queue1Config.isDurable()); - - QueueConfig queue2Config = queues.get(1); - assertNotNull("Expected queue 2 config", queue2Config); - assertEquals("Unexpected queue name", "Json Queue Name 2", queue2Config.getName()); - assertTrue("Unexpected durable", queue2Config.isDurable()); - Map<String, Object> attributes = queue2Config.getAttributes(); - assertNotNull("Expected attributes", attributes); - assertFalse("Attributes are not loaded", attributes.isEmpty()); - assertEquals("Unexpected number of attributes", 1, attributes.size()); - assertEquals("Unexpected attribute 'x-qpid-priorities' value", 10, - ((Number)attributes.get("x-qpid-priorities")).intValue()); - } - - public void testReadsTestWithIterations() - { - TestConfig testConfig = _config.getTestConfigs().get(0); - List<IterationValue> iterationValues = testConfig.getIterationValues(); - assertEquals("Unexpected number of iterations", 2, iterationValues.size()); - - IterationValue iteration1 = iterationValues.get(0); - - String messageSizeProperty = "_messageSize"; - - assertEquals("Unexpected value for property " + messageSizeProperty, - "100", - iteration1.getIterationPropertyValuesWithUnderscores().get(messageSizeProperty)); - } - - public void testReadsMessageProviders() - { - TestConfig testConfig = _config.getTestConfigs().get(0); - ClientConfig cleintConfig = testConfig.getClients().get(0); - List<MessageProviderConfig> configs = cleintConfig.getMessageProviders(); - assertNotNull("Message provider configs should not be null", configs); - assertEquals("Unexpected number of message providers", 1, configs.size()); - MessageProviderConfig messageProvider = configs.get(0); - assertNotNull("Message provider config should not be null", messageProvider); - assertEquals("Unexpected provider name", "testProvider1", messageProvider.getName()); - Map<String, PropertyValue> properties = messageProvider.getMessageProperties(); - assertNotNull("Message properties should not be null", properties); - assertEquals("Unexpected number of message properties", 3, properties.size()); - assertNotNull("test property is not found", properties.get("test")); - assertNotNull("priority property is not found", properties.get("priority")); - assertNotNull("id property is not found", properties.get("id")); - } - - public void testReadsJS() throws Exception - { - ConfigReader configReader = new ConfigReader(); - String path = TestFileUtils.createTempFileFromResource(this, "ConfigReaderTest-test-config.js").getAbsolutePath(); - _config = configReader.getConfigFromFile(path); - - List<TestConfig> testConfigs = _config.getTestConfigs(); - assertEquals("Unexpected number of tests", 2, testConfigs.size()); - TestConfig testConfig1 = _config.getTestConfigs().get(0); - List<ClientConfig> cleintConfigs = testConfig1.getClients(); - assertEquals("Unexpected number of test 1 clients", 2, cleintConfigs.size()); - List<QueueConfig> queueConfigs = testConfig1.getQueues(); - assertEquals("Unexpected number of test 1 queue", 1, queueConfigs.size()); - assertEquals("Unexpected queue name", "Json-Queue-Name", queueConfigs.get(0).getName()); - ClientConfig cleintConfig = cleintConfigs.get(0); - List<ConnectionConfig> connectionConfigs = cleintConfig.getConnections(); - assertEquals("Unexpected number of connections", 1, connectionConfigs.size()); - List<SessionConfig> sessionConfigs = connectionConfigs.get(0).getSessions(); - assertEquals("Unexpected number of sessions", 1, sessionConfigs.size()); - assertEquals("Unexpected ack mode", 0, sessionConfigs.get(0).getAcknowledgeMode()); - - TestConfig testConfig2 = _config.getTestConfigs().get(1); - List<ClientConfig> cleintConfigs2 = testConfig2.getClients(); - assertEquals("Unexpected number of test 1 clients", 2, cleintConfigs2.size()); - List<QueueConfig> queueConfigs2 = testConfig2.getQueues(); - assertEquals("Unexpected number of test 1 queue", 1, queueConfigs2.size()); - assertEquals("Unexpected queue name", "Json-Queue-Name", queueConfigs2.get(0).getName()); - ClientConfig cleintConfig2 = cleintConfigs2.get(0); - List<ConnectionConfig> connectionConfigs2 = cleintConfig2.getConnections(); - assertEquals("Unexpected number of connections", 1, connectionConfigs2.size()); - List<SessionConfig> sessionConfigs2 = connectionConfigs2.get(0).getSessions(); - assertEquals("Unexpected number of sessions", 1, sessionConfigs2.size()); - assertEquals("Unexpected ack mode", 1, sessionConfigs2.get(0).getAcknowledgeMode()); - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigTest.java deleted file mode 100644 index 291ce2af78..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigTest.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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.disttest.controller.config; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.Arrays; -import java.util.List; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class ConfigTest extends QpidTestCase -{ - public void testGetTestsForTestWithIteratingMessageSizes() - { - Config config = createConfigWithIteratingMessageSizes(); - List<TestInstance> testConfigs = config.getTests(); - - assertEquals("should have a test config for each message size", 2, testConfigs.size()); - - TestInstance instance0 = testConfigs.get(0); - assertEquals(0, instance0.getIterationNumber()); - - TestInstance instance1 = testConfigs.get(1); - assertEquals(1, instance1.getIterationNumber()); - } - - private Config createConfigWithIteratingMessageSizes() - { - TestConfig testConfig = mock(TestConfig.class); - - when(testConfig.getIterationValues()).thenReturn(Arrays.asList(new IterationValue(),new IterationValue())); - - Config config = new Config(testConfig); - - return config; - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigTestUtils.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigTestUtils.java deleted file mode 100644 index 6ee42c62c6..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConfigTestUtils.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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.disttest.controller.config; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.List; - -import org.apache.qpid.disttest.controller.CommandForClient; -import org.apache.qpid.disttest.message.Command; - -public class ConfigTestUtils -{ - public static <C extends Command> void assertCommandForClient(final List<CommandForClient> commandsForClients, final int index, final String expectedRegisteredClientName, final Class<C> expectedCommandClass) - { - final CommandForClient commandForClient = commandsForClients.get(index); - assertEquals(expectedRegisteredClientName, commandForClient.getClientName()); - final Command command = commandForClient.getCommand(); - assertTrue("Command " + index + " is of class " + command.getClass() + " but expecting " + expectedCommandClass, - expectedCommandClass.isAssignableFrom(command.getClass())); - } - - public static <C extends Command> void assertCommandEquals(final List<Command> commands, final int index, final Class<C> expectedCommandClass) - { - @SuppressWarnings("unchecked") - C command = (C) getCommand(commands, index); //explicit cast added to get round oracle compiler bug (id 6302954) - assertTrue("Command " + index + " is of class " + command.getClass() + " but expecting " + expectedCommandClass, - expectedCommandClass.isAssignableFrom(command.getClass())); - } - - public static <C extends Command> C getCommand(final List<Command> commands, final int index) - { - @SuppressWarnings("unchecked") - C command = (C) commands.get(index); - return command; - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConnectionConfigTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConnectionConfigTest.java deleted file mode 100644 index 0eee80e425..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConnectionConfigTest.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * 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.disttest.controller.config; - -import static org.apache.qpid.disttest.controller.config.ConfigTestUtils.assertCommandEquals; -import static org.apache.qpid.disttest.controller.config.ConfigTestUtils.getCommand; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.Arrays; -import java.util.List; - -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CreateConnectionCommand; -import org.apache.qpid.disttest.message.NoOpCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class ConnectionConfigTest extends QpidTestCase -{ - private static final String CONNECTION_FACTORY_NAME = "ConnectionFactoryName"; - private static final String CONNECTION_NAME = "ConnectionName"; - - public void testConnectionConfigHasZeroArgConstructorForGson() - { - ConnectionConfig c = new ConnectionConfig(); - assertNotNull(c); - } - - public void testCreateCommandsForConnectionAndChildren() - { - ConnectionConfig connectionConfig = createConnectionConfigWithChildCommands(); - - List<Command> commands = connectionConfig.createCommands(); - assertEquals(3, commands.size()); - - assertCommandEquals(commands, 0, CreateConnectionCommand.class); - assertCommandEquals(commands, 1, NoOpCommand.class); - assertCommandEquals(commands, 2, NoOpCommand.class); - - CreateConnectionCommand createConnectionCommand = getCommand(commands, 0); - assertEquals(CONNECTION_NAME, createConnectionCommand.getConnectionName()); - assertEquals(CONNECTION_FACTORY_NAME, createConnectionCommand.getConnectionFactoryName()); - } - - public void testGetTotalNumberOfParticipants() - { - ConnectionConfig connectionConfig = createConnectionConfigWithTwoParticipants(); - assertEquals(2, connectionConfig.getTotalNumberOfParticipants()); - } - - private ConnectionConfig createConnectionConfigWithTwoParticipants() - { - SessionConfig sessionConfig1 = mock(SessionConfig.class); - SessionConfig sessionConfig2 = mock(SessionConfig.class); - - when(sessionConfig1.getTotalNumberOfParticipants()).thenReturn(1); - when(sessionConfig2.getTotalNumberOfParticipants()).thenReturn(1); - - ConnectionConfig connectionConfig = new ConnectionConfig(CONNECTION_NAME, CONNECTION_FACTORY_NAME, sessionConfig1, sessionConfig2); - - return connectionConfig; - } - - private ConnectionConfig createConnectionConfigWithChildCommands() - { - SessionConfig sessionConfig = mock(SessionConfig.class); - - NoOpCommand cmd1 = mock(NoOpCommand.class); - NoOpCommand cmd2 = mock(NoOpCommand.class); - List<Command> commands = Arrays.asList((Command)cmd1, (Command)cmd2); - when(sessionConfig.createCommands(CONNECTION_NAME)).thenReturn(commands); - - return new ConnectionConfig(CONNECTION_NAME, CONNECTION_FACTORY_NAME, sessionConfig); - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConsumerConfigTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConsumerConfigTest.java deleted file mode 100644 index 0aa05a176e..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ConsumerConfigTest.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * 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.disttest.controller.config; - -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class ConsumerConfigTest extends QpidTestCase -{ - public void testConsumerHasZeroArgConstructorForGson() - { - ConsumerConfig c = new ConsumerConfig(); - assertNotNull(c); - } - - public void testCreateConsumerCommand() - { - boolean isTopic = true; - boolean isDurableSubscription = true; - boolean isBrowsingSubscription = true; - boolean noLocal = true; - long numberOfMessages = 100; - String consumerName = "consumerName"; - String sessionName = "sessionName"; - String destinationName = "destinationName"; - String selector = "selector"; - int batchSize = 10;; - long maximumDuration = 50; - boolean isSynchronousNonDefault = false; - - ConsumerConfig consumerConfig = new ConsumerConfig( - consumerName, - destinationName, - numberOfMessages, - batchSize, - maximumDuration, - isTopic, - isDurableSubscription, - isBrowsingSubscription, - selector, - noLocal, - isSynchronousNonDefault); - - CreateConsumerCommand createConsumerCommand = consumerConfig.createCommand(sessionName); - - assertEquals(sessionName, createConsumerCommand.getSessionName()); - assertEquals(consumerName, createConsumerCommand.getParticipantName()); - assertEquals(destinationName, createConsumerCommand.getDestinationName()); - assertEquals(numberOfMessages, createConsumerCommand.getNumberOfMessages()); - assertEquals(batchSize, createConsumerCommand.getBatchSize()); - assertEquals(maximumDuration, createConsumerCommand.getMaximumDuration()); - - assertEquals(isTopic, createConsumerCommand.isTopic()); - assertEquals(isDurableSubscription, createConsumerCommand.isDurableSubscription()); - assertEquals(isBrowsingSubscription, createConsumerCommand.isBrowsingSubscription()); - assertEquals(selector, createConsumerCommand.getSelector()); - assertEquals(noLocal, createConsumerCommand.isNoLocal()); - assertEquals(isSynchronousNonDefault, createConsumerCommand.isSynchronous()); - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/IterationValueTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/IterationValueTest.java deleted file mode 100644 index 860f6af565..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/IterationValueTest.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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.disttest.controller.config; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.qpid.disttest.message.CreateConnectionCommand; -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class IterationValueTest extends QpidTestCase -{ - private static final int MAXIMUM_DURATION = 10; - - private static final boolean IS_DURABLE_SUBSCRIPTION = true; - - private CreateConsumerCommand _createConsumerCommand; - private Map<String, String> _iterationValueMap; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _createConsumerCommand = mock(CreateConsumerCommand.class); - - _iterationValueMap = new HashMap<String, String>(); - _iterationValueMap.put("_maximumDuration", String.valueOf(MAXIMUM_DURATION)); - _iterationValueMap.put("_durableSubscription", String.valueOf(IS_DURABLE_SUBSCRIPTION)); - } - - public void testApplyPopulatedIterationValueToCommandWithMatchingProperties() throws Exception - { - IterationValue iterationValue = new IterationValue(_iterationValueMap); - - iterationValue.applyToCommand(_createConsumerCommand); - - verify(_createConsumerCommand).setMaximumDuration(MAXIMUM_DURATION); - verify(_createConsumerCommand).setDurableSubscription(IS_DURABLE_SUBSCRIPTION); - } - - public void testApplyPopulatedIterationValueToCommandWithoutMatchingProperties() throws Exception - { - IterationValue iterationValue = new IterationValue(_iterationValueMap); - - CreateConnectionCommand createConnectionCommand = mock(CreateConnectionCommand.class); - iterationValue.applyToCommand(createConnectionCommand); - - verifyZeroInteractions(createConnectionCommand); - } - - public void testApplyUnpopulatedIterationValueToCommand() throws Exception - { - IterationValue iterationValue = new IterationValue(); - - iterationValue.applyToCommand(_createConsumerCommand); - - verifyZeroInteractions(_createConsumerCommand); - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/JavaScriptConfigEvaluatorTest-test-config.js b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/JavaScriptConfigEvaluatorTest-test-config.js deleted file mode 100644 index eab98e8bd7..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/JavaScriptConfigEvaluatorTest-test-config.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - * - * 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. - * - */ -jsonObject = { - "_countries": - QPID.iterations( { "__ITERATING_VALUE": [ 0, 1 ] }, - { - // this is a comment - it wouldn't be allowed if this were pure JSON - - "_name": "Country", - "_regions": QPID.times(2, - { - "_name": "repeatingRegion__REGION_INDEX", - "_towns": [ - { - "_name": "town1", - "_iteratingAttribute": "__ITERATING_VALUE", - "_consumers": [] - } - ] - }, - "__REGION_INDEX" - ) - }) - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/JavaScriptConfigEvaluatorTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/JavaScriptConfigEvaluatorTest.java deleted file mode 100644 index 174bd8092c..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/JavaScriptConfigEvaluatorTest.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * - * 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.disttest.controller.config; - -import static org.apache.commons.beanutils.PropertyUtils.getProperty; - -import java.io.FileReader; -import java.util.List; -import java.util.TreeMap; - -import org.apache.qpid.test.utils.QpidTestCase; -import org.apache.qpid.test.utils.TestFileUtils; - -import com.google.gson.Gson; - -public class JavaScriptConfigEvaluatorTest extends QpidTestCase -{ - public void testEvaluateJavaScript() throws Exception - { - String jsFilePath = TestFileUtils.createTempFileFromResource(this, "JavaScriptConfigEvaluatorTest-test-config.js").getAbsolutePath(); - - String rawConfig = new JavaScriptConfigEvaluator().evaluateJavaScript(jsFilePath); - - Object configAsObject = getObject(rawConfig); - - // Tests are produced by the QPID.iterations js function - assertEquals("Unexpected number of countries", 2, getPropertyAsList(configAsObject, "_countries").size()); - - Object country0 = getProperty(configAsObject, "_countries.[0]"); - assertEquals("Unexpected country name", "Country", getProperty(country0, "_name")); - assertEquals("Unexpected country iteration number", 0, getPropertyAsInt(country0, "_iterationNumber")); - - assertEquals("Unexpected number of regions", 2, getPropertyAsList(country0, "_regions").size()); - // Region names are produced by the QPID.times js function - assertEquals("Unexpected region name", "repeatingRegion0", getProperty(country0, "_regions.[0]._name")); - assertEquals("Unexpected region name", "repeatingRegion1", getProperty(country0, "_regions.[1]._name")); - // Iterating attribute are produced by the QPID.iterations js function - assertEquals("Unexpected iterating attribute", "0", getProperty(country0, "_regions.[0]._towns.[0]._iteratingAttribute")); - - Object country1 = getProperty(configAsObject, "_countries.[1]"); - assertEquals("Unexpected country iteration number", 1, getPropertyAsInt(country1, "_iterationNumber")); - assertEquals("Unexpected iterating attribute", "1", getProperty(country1, "_regions.[0]._towns.[0]._iteratingAttribute")); - } - - public void testEvaluateJavaScriptWithReader() throws Exception - { - String jsFilePath = TestFileUtils.createTempFileFromResource(this, "JavaScriptConfigEvaluatorTest-test-config.js").getAbsolutePath(); - - FileReader fileReader = new FileReader(jsFilePath); - String rawConfig = new JavaScriptConfigEvaluator().evaluateJavaScript(fileReader); - - Object configAsObject = getObject(rawConfig); - - // Tests are produced by the QPID.iterations js function - assertEquals("Unexpected number of countries", 2, getPropertyAsList(configAsObject, "_countries").size()); - - Object country0 = getProperty(configAsObject, "_countries.[0]"); - assertEquals("Unexpected country name", "Country", getProperty(country0, "_name")); - assertEquals("Unexpected country iteration number", 0, getPropertyAsInt(country0, "_iterationNumber")); - - assertEquals("Unexpected number of regions", 2, getPropertyAsList(country0, "_regions").size()); - // Region names are produced by the QPID.times js function - assertEquals("Unexpected region name", "repeatingRegion0", getProperty(country0, "_regions.[0]._name")); - assertEquals("Unexpected region name", "repeatingRegion1", getProperty(country0, "_regions.[1]._name")); - // Iterating attribute are produced by the QPID.iterations js function - assertEquals("Unexpected iterating attribute", "0", getProperty(country0, "_regions.[0]._towns.[0]._iteratingAttribute")); - - Object country1 = getProperty(configAsObject, "_countries.[1]"); - assertEquals("Unexpected country iteration number", 1, getPropertyAsInt(country1, "_iterationNumber")); - assertEquals("Unexpected iterating attribute", "1", getProperty(country1, "_regions.[0]._towns.[0]._iteratingAttribute")); - } - - private int getPropertyAsInt(Object configAsObject, String property) throws Exception - { - Number propertyValue = (Number) getProperty(configAsObject, property); - - return propertyValue.intValue(); - } - - private List<?> getPropertyAsList(Object configAsObject, String property) - throws Exception - { - return (List<?>)getProperty(configAsObject, property); - } - - private Object getObject(String jsonStringIn) - { - Gson gson = new Gson(); - @SuppressWarnings("rawtypes") - TreeMap object = gson.fromJson(jsonStringIn, TreeMap.class); - return object; - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/MessageProviderConfigTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/MessageProviderConfigTest.java deleted file mode 100644 index 148c07b1ca..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/MessageProviderConfigTest.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 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.disttest.controller.config; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.qpid.disttest.client.property.PropertyValue; -import org.apache.qpid.disttest.client.property.SimplePropertyValue; -import org.apache.qpid.disttest.message.CreateMessageProviderCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class MessageProviderConfigTest extends QpidTestCase -{ - public void testCreateCommandsForMessageProvider() - { - Map<String, PropertyValue> messageProperties = new HashMap<String, PropertyValue>(); - messageProperties.put("test", new SimplePropertyValue("testValue")); - MessageProviderConfig config = new MessageProviderConfig("test", messageProperties); - CreateMessageProviderCommand command = config.createCommand(); - assertNotNull("Command should not be null", command); - assertNotNull("Unexpected name", command.getProviderName()); - assertEquals("Unexpected properties", messageProperties, command.getMessageProperties()); - } - - public void testMessageProviderConfig() - { - Map<String, PropertyValue> messageProperties = new HashMap<String, PropertyValue>(); - messageProperties.put("test", new SimplePropertyValue("testValue")); - MessageProviderConfig config = new MessageProviderConfig("test", messageProperties); - assertEquals("Unexpected name", "test", config.getName()); - assertEquals("Unexpected properties", messageProperties, config.getMessageProperties()); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ParticipantConfigTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ParticipantConfigTest.java deleted file mode 100644 index b6efd68cbd..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ParticipantConfigTest.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.disttest.controller.config; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; - -import org.apache.qpid.disttest.message.CreateParticpantCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class ParticipantConfigTest extends QpidTestCase -{ - public void testCreateProducerCommandAppliesDurationOverride() - { - long overriddenDuration = 123; - setTestSystemProperty(ParticipantConfig.DURATION_OVERRIDE_SYSTEM_PROPERTY, String.valueOf(overriddenDuration)); - - CreateParticpantCommand createParticipantCommand = mock(CreateParticpantCommand.class); - ParticipantConfig participantConfig = new ParticipantConfig("name", "destinationName", false, 1, 2, 5000) - { - }; - - participantConfig.setParticipantProperties(createParticipantCommand); - - verify(createParticipantCommand).setMaximumDuration(overriddenDuration); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ProducerConfigTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ProducerConfigTest.java deleted file mode 100644 index ea9a406b1d..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/ProducerConfigTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * 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.disttest.controller.config; - -import javax.jms.DeliveryMode; -import javax.jms.Message; - -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class ProducerConfigTest extends QpidTestCase -{ - public void testProducerHasZeroArgConstructorForGson() - { - ProducerConfig p = new ProducerConfig(); - assertNotNull(p); - } - - public void testConfigProvidesJmsDefaults() - { - CreateProducerCommand p = new ProducerConfig().createCommand("session1"); - assertEquals(Message.DEFAULT_DELIVERY_MODE, p.getDeliveryMode()); - assertEquals(Message.DEFAULT_PRIORITY, p.getPriority()); - assertEquals(Message.DEFAULT_TIME_TO_LIVE, p.getTimeToLive()); - } - - public void testMessageSizeDefault() - { - CreateProducerCommand producer = new ProducerConfig().createCommand("session1"); - assertEquals("Unexpected default message size", 1024, producer.getMessageSize()); - } - - public void testMessageSizeDefaultOverride() - { - final long overriddenMessageSize = 4096; - setTestSystemProperty(ProducerConfig.MESSAGE_SIZE_OVERRIDE_SYSTEM_PROPERTY, String.valueOf(overriddenMessageSize)); - - CreateProducerCommand producer2 = new ProducerConfig().createCommand("session1"); - assertEquals("Unexpected message size", overriddenMessageSize, producer2.getMessageSize()); - } - - public void testCreateProducerCommand() - { - String destination = "url:/destination"; - int messageSize = 1000; - int numberOfMessages = 10; - int priority = 4; - long timeToLive = 10000; - int batchSize = 5; - long interval = 60; - long maximumDuration = 70; - long startDelay = 80; - String providerName = "testProvider1"; - - ProducerConfig producerConfig = new ProducerConfig( - "producer1", - destination, - numberOfMessages, - batchSize, - maximumDuration, - DeliveryMode.NON_PERSISTENT, - messageSize, - priority, - timeToLive, - interval, - startDelay, - providerName); - - CreateProducerCommand command = producerConfig.createCommand("session1"); - - assertEquals("session1", command.getSessionName()); - assertEquals("producer1", command.getParticipantName()); - assertEquals(destination, command.getDestinationName()); - assertEquals(numberOfMessages, command.getNumberOfMessages()); - assertEquals(batchSize, command.getBatchSize()); - assertEquals(maximumDuration, command.getMaximumDuration()); - - assertEquals(DeliveryMode.NON_PERSISTENT, command.getDeliveryMode()); - assertEquals(messageSize, command.getMessageSize()); - assertEquals(priority, command.getPriority()); - assertEquals(timeToLive, command.getTimeToLive()); - assertEquals(interval, command.getInterval()); - assertEquals(startDelay, command.getStartDelay()); - assertEquals(providerName, command.getMessageProviderName()); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/SessionConfigTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/SessionConfigTest.java deleted file mode 100644 index 02cdbb8fca..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/SessionConfigTest.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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.disttest.controller.config; - -import static org.apache.qpid.disttest.controller.config.ConfigTestUtils.assertCommandEquals; -import static org.apache.qpid.disttest.controller.config.ConfigTestUtils.getCommand; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.Collections; -import java.util.List; - -import javax.jms.Session; - -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.disttest.message.CreateSessionCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class SessionConfigTest extends QpidTestCase -{ - private static final String CONNECTION_NAME = "conn1"; - private static final String SESSION = "session1"; - - public void testSessionHasZeroArgConstructorForGson() - { - SessionConfig s = new SessionConfig(); - assertNotNull(s); - } - - public void testCreateCommandsForSessionAndChildren() - { - SessionConfig sessionConfig = createSessionConfigWithChildCommands(); - - List<Command> commands = sessionConfig.createCommands(CONNECTION_NAME); - assertEquals(3, commands.size()); - - assertCommandEquals(commands, 0, CreateSessionCommand.class); - assertCommandEquals(commands, 1, CreateProducerCommand.class); - assertCommandEquals(commands, 2, CreateConsumerCommand.class); - - CreateSessionCommand createSessionCommand = getCommand(commands, 0); - assertEquals(Session.AUTO_ACKNOWLEDGE, createSessionCommand.getAcknowledgeMode()); - assertEquals(SESSION, createSessionCommand.getSessionName()); - assertEquals(CONNECTION_NAME, createSessionCommand.getConnectionName()); - } - - public void testGetTotalNumberOfParticipants() - { - SessionConfig sessionConfig = createSessionConfigWithOneConsumerAndOneProducer(); - assertEquals(2, sessionConfig.getTotalNumberOfParticipants()); - } - - private SessionConfig createSessionConfigWithOneConsumerAndOneProducer() - { - return createSessionConfigWithChildCommands(); - } - - private SessionConfig createSessionConfigWithChildCommands() - { - ProducerConfig producerConfig = mock(ProducerConfig.class); - ConsumerConfig consumerConfig = mock(ConsumerConfig.class); - - when(producerConfig.createCommand(SESSION)).thenReturn(mock(CreateProducerCommand.class)); - when(consumerConfig.createCommand(SESSION)).thenReturn(mock(CreateConsumerCommand.class)); - - return new SessionConfig(SESSION, - Session.AUTO_ACKNOWLEDGE, - Collections.singletonList(consumerConfig), - Collections.singletonList(producerConfig)); - } - - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/TestConfigTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/TestConfigTest.java deleted file mode 100644 index be7c7a7c8c..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/TestConfigTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * 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.disttest.controller.config; - -import static org.apache.qpid.disttest.controller.config.ConfigTestUtils.assertCommandForClient; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.qpid.disttest.controller.CommandForClient; -import org.apache.qpid.disttest.message.NoOpCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class TestConfigTest extends QpidTestCase -{ - private static final QueueConfig[] EMPTY_QUEUES_ARRAY = new QueueConfig[0]; - private static final String CLIENT1 = "client1"; - private static final String CLIENT2 = "client2"; - private static final String TEST1 = "test1"; - - public void testConfigHasZeroArgConstructorForGson() - { - TestConfig c = new TestConfig(); - assertNotNull(c); - } - - public void testCreateCommandsForClient() - { - TestConfig config = createTestConfigWithClientConfigReturningChildCommands(); - - List<CommandForClient> commandsForClients = config.createCommands(); - assertEquals("Unexpected number of commands for client", 3, commandsForClients.size()); - - assertCommandForClient(commandsForClients, 0, CLIENT1, NoOpCommand.class); - assertCommandForClient(commandsForClients, 1, CLIENT1, NoOpCommand.class); - assertCommandForClient(commandsForClients, 2, CLIENT2, NoOpCommand.class); - } - - public void testGetClientNames() - { - TestConfig config = createTestConfigWithTwoClients(); - - assertEquals(2, config.getClientNames().size()); - } - - public void testGetTotalNumberOfClients() - { - TestConfig config = createTestConfigWithTwoClients(); - assertEquals(2, config.getTotalNumberOfClients()); - } - - public void testGetTotalNumberOfParticipants() - { - TestConfig config = createTestConfigWithTwoClients(); - assertEquals(2, config.getTotalNumberOfParticipants()); - } - - private TestConfig createTestConfigWithClientConfigReturningChildCommands() - { - ClientConfig clientConfig1 = createClientConfigReturningCommands(CLIENT1, 2); - ClientConfig clientConfig2 = createClientConfigReturningCommands(CLIENT2, 1); - - TestConfig config = new TestConfig(TEST1, new ClientConfig[] { clientConfig1, clientConfig2 }, EMPTY_QUEUES_ARRAY); - return config; - } - - private ClientConfig createClientConfigReturningCommands(final String clientName, int numberOfCommands) - { - ClientConfig clientConfig = mock(ClientConfig.class); - - List<CommandForClient> commandList = new ArrayList<CommandForClient>(); - - for (int i = 1 ; i <= numberOfCommands; i++) - { - commandList.add(new CommandForClient(clientName, new NoOpCommand())); - } - - when(clientConfig.createCommands()).thenReturn(commandList); - return clientConfig; - } - - private TestConfig createTestConfigWithTwoClients() - { - ClientConfig clientConfig1 = mock(ClientConfig.class); - ClientConfig clientConfig2 = mock(ClientConfig.class); - - when(clientConfig1.getTotalNumberOfParticipants()).thenReturn(1); - when(clientConfig2.getTotalNumberOfParticipants()).thenReturn(1); - - TestConfig config = new TestConfig(TEST1, new ClientConfig[] { clientConfig1, clientConfig2 }, EMPTY_QUEUES_ARRAY); - return config; - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/TestInstanceTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/TestInstanceTest.java deleted file mode 100644 index 187b57c399..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/TestInstanceTest.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * 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.disttest.controller.config; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import org.apache.qpid.disttest.controller.CommandForClient; -import org.apache.qpid.disttest.message.CreateConsumerCommand; -import org.apache.qpid.disttest.message.CreateProducerCommand; -import org.apache.qpid.disttest.message.NoOpCommand; -import org.apache.qpid.test.utils.QpidTestCase; - -public class TestInstanceTest extends QpidTestCase -{ - private static final String CLIENT_NAME = "CLIENT_NAME"; - private static final int ITERATION_NUMBER = 0; - - private NoOpCommand _noOpCommand; - private CreateProducerCommand _createProducerCommand; - private CreateConsumerCommand _createConsumerCommand; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _noOpCommand = mock(NoOpCommand.class); - _createProducerCommand = mock(CreateProducerCommand.class); - _createConsumerCommand = mock(CreateConsumerCommand.class); - } - - public void testCreateCommandsWithIterationValues() - { - IterationValue iterationValue = mock(IterationValue.class); - - TestConfig config = createTestConfig(); - - TestInstance testInstance = new TestInstance(config, ITERATION_NUMBER, iterationValue); - - List<CommandForClient> commandsForClients = testInstance.createCommands(); - assertEquals("Unexpected number of commands for client", 3, commandsForClients.size()); - - verify(iterationValue).applyToCommand(_noOpCommand); - verify(iterationValue).applyToCommand(_createProducerCommand); - verify(iterationValue).applyToCommand(_createConsumerCommand); - } - - public void testCreateCommandsWithoutIterationValues() - { - TestConfig config = createTestConfig(); - TestInstance testInstance = new TestInstance(config); - - List<CommandForClient> commandsForClients = testInstance.createCommands(); - assertEquals("Unexpected number of commands for client", 3, commandsForClients.size()); - } - - public void testGetConfiguredClientNames() - { - TestConfig testConfig = mock(TestConfig.class); - when(testConfig.getClientNames()).thenReturn(Collections.singletonList(CLIENT_NAME)); - TestInstance testInstance = new TestInstance(testConfig); - - List<String> clientNames = testInstance.getClientNames(); - assertEquals(1, clientNames.size()); - assertEquals(CLIENT_NAME, clientNames.get(0)); - } - - private TestConfig createTestConfig() - { - CommandForClient commandForClient1 = new CommandForClient(CLIENT_NAME, _noOpCommand); - CommandForClient commandForClient2 = new CommandForClient(CLIENT_NAME, _createProducerCommand); - CommandForClient commandForClient3 = new CommandForClient(CLIENT_NAME, _createConsumerCommand); - - TestConfig config = mock(TestConfig.class); - when(config.createCommands()).thenReturn(Arrays.asList(commandForClient1, commandForClient2, commandForClient3)); - - return config; - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/sampleConfig.json b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/sampleConfig.json deleted file mode 100644 index 9e1168129b..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/controller/config/sampleConfig.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "_tests": [ - { - "_name": "Test 1", - "_queues": [ - { - "_name": "Json-Queue-Name", - "_durable": false, - "_attributes": {} - }, - { - "_name": "Json Queue Name 2", - "_durable": true, - "_attributes": { - "x-qpid-priorities": 10.0 - } - } - ], - "_iterations": [ - { - "_messageSize": 100, - "_numberOfMessages": 10 - }, - { - "_messageSize": 200, - "_numberOfMessages": 5 - } - ], - "_clients": [ - { - "_connections": [ - { - "_name": "connection1", - "_sessions": [] - } - ]; - "_messageProviders":[ - { - "_name": "testProvider1"; - "_messageProperties": { - "priority": {"@def": "list"; "_items": [1,2,3,4,4]}; - "id": {"@def": "random"; "_upper": 10}; - "test": "test-value" - } - } - ] - } - ] - }, - { - "_name": "Test 2", - "_queues": [ - { - "_name": "Json-Queue-Name", - "_durable": false, - "_attributes": {} - } - ], - "_iterations": [], - "_clients": [ - { - "_connections": [ - { - "_name": "connection1", - "_sessions": [] - } - ] - } - ] - } - ] -}
\ No newline at end of file diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/db/ResultsDbWriterTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/db/ResultsDbWriterTest.java deleted file mode 100644 index abc6b44493..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/db/ResultsDbWriterTest.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * 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.disttest.db; - -import static org.apache.qpid.disttest.message.ParticipantAttribute.ITERATION_NUMBER; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PARTICIPANT_NAME; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TEST_NAME; -import static org.apache.qpid.disttest.message.ParticipantAttribute.THROUGHPUT; -import static org.apache.qpid.test.utils.TestFileUtils.createTestDirectory; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.io.File; -import java.sql.Connection; -import java.sql.Driver; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.Statement; -import java.sql.Timestamp; -import java.util.Hashtable; -import java.util.TimeZone; - -import javax.naming.Context; -import javax.naming.NamingException; - -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.db.ResultsDbWriter.Clock; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.results.ResultsTestFixture; -import org.apache.qpid.test.utils.QpidTestCase; -import org.apache.qpid.util.FileUtils; - -public class ResultsDbWriterTest extends QpidTestCase -{ - private static final long _dummyTimestamp = 1234; - - private File _tempDbDirectory; - private Clock _clock = mock(Clock.class); - private ResultsTestFixture _resultsTestFixture = new ResultsTestFixture(); - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _tempDbDirectory = createTestDirectory(); - when(_clock.currentTimeMillis()).thenReturn(_dummyTimestamp); - } - - - @Override - protected void tearDown() throws Exception - { - try - { - FileUtils.deleteDirectory(_tempDbDirectory.getAbsolutePath()); - } - finally - { - super.tearDown(); - } - } - - - public void testWriteResults() throws Exception - { - Context context = getContext(); - ResultsForAllTests results = _resultsTestFixture.createResultsForAllTests(); - String runId = "myRunId"; - - ResultsDbWriter resultsDbWriter = new ResultsDbWriter(context, runId, _clock); - resultsDbWriter.createResultsTableIfNecessary(); - - resultsDbWriter.writeResults(results); - - ParticipantResult expectedResult = _resultsTestFixture.getFirstParticipantResult(results); - assertResultsAreInDb(context, expectedResult, runId); - } - - public void testDefaultRunId() throws Exception - { - TimeZone defaultTimeZone = TimeZone.getDefault(); - try - { - // set non-GMT timezone to make the test more rigorous. - TimeZone.setDefault(TimeZone.getTimeZone("GMT-05:00")); - ResultsDbWriter resultsDbWriter = new ResultsDbWriter(getContext(), null, _clock); - String runId = resultsDbWriter.getRunId(); - assertEquals( - "Default run id '" + runId + "' should correspond to dummy timestamp " + _clock.currentTimeMillis(), - "run 1970-01-01 00:00:01.234", - runId); - } - finally - { - TimeZone.setDefault(defaultTimeZone); - } - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - private Context getContext() throws NamingException - { - Context context = mock(Context.class); - Hashtable environment = new Hashtable(); - - environment.put(ResultsDbWriter.DRIVER_NAME, "org.apache.derby.jdbc.EmbeddedDriver"); - environment.put(ResultsDbWriter.URL, "jdbc:derby:" + _tempDbDirectory + "perftestResultsDb;create=true"); - - when(context.getEnvironment()).thenReturn(environment); - return context; - } - - @SuppressWarnings("unchecked") - private void assertResultsAreInDb(Context context, ParticipantResult participantResult, String expectedRunId) throws Exception - { - String driverName = (String) context.getEnvironment().get(ResultsDbWriter.DRIVER_NAME); - Class<? extends Driver> driverClass = (Class<? extends Driver>) Class.forName(driverName); - driverClass.newInstance(); - String url = (String) context.getEnvironment().get(ResultsDbWriter.URL); - - Connection connection = DriverManager.getConnection(url); - Statement statement = connection.createStatement(); - ResultSet rs = statement.executeQuery( - "SELECT * FROM results WHERE testName='" + participantResult.getTestName() + - "' AND runId='" + expectedRunId + "'"); - - try - { - rs.next(); - assertEquals(participantResult.getTestName(), rs.getString(TEST_NAME.getDisplayName())); - assertEquals(participantResult.getIterationNumber(), rs.getInt(ITERATION_NUMBER.getDisplayName())); - assertEquals(participantResult.getParticipantName(), rs.getString(PARTICIPANT_NAME.getDisplayName())); - assertEquals(participantResult.getThroughput(), rs.getDouble(THROUGHPUT.getDisplayName())); - assertEquals(expectedRunId, rs.getString(ResultsDbWriter.RUN_ID)); - assertEquals(new Timestamp(_dummyTimestamp), rs.getTimestamp(ResultsDbWriter.INSERTED_TIMESTAMP)); - } - finally - { - connection.close(); - } - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/jms/JmsMessageAdaptorTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/jms/JmsMessageAdaptorTest.java deleted file mode 100644 index d4f0cb1f22..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/jms/JmsMessageAdaptorTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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.disttest.jms; - -import org.apache.qpid.disttest.message.Command; -import org.apache.qpid.disttest.message.CommandType; -import org.apache.qpid.test.utils.QpidTestCase; - -public class JmsMessageAdaptorTest extends QpidTestCase -{ - - public void testCheckAllCommandTypes() - { - for (CommandType commandType : CommandType.values()) - { - Class<? extends Command> clazz = JmsMessageAdaptor.getCommandClassFromType(commandType); - assertNotNull(clazz); - - } - - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/message/JsonHandlerTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/message/JsonHandlerTest.java deleted file mode 100644 index 2e0c2e1ecd..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/message/JsonHandlerTest.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * 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.disttest.message; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang.builder.EqualsBuilder; -import org.apache.qpid.disttest.client.property.ListPropertyValue; -import org.apache.qpid.disttest.client.property.PropertyValue; -import org.apache.qpid.disttest.json.JsonHandler; -import org.apache.qpid.test.utils.QpidTestCase; - -public class JsonHandlerTest extends QpidTestCase -{ - private JsonHandler _jsonHandler = null; - private SendChristmasCards _testCommand = null; - - @Override - protected void setUp() throws Exception - { - super.setUp(); - - _jsonHandler = new JsonHandler(); - - _testCommand = new SendChristmasCards(CommandType.START_TEST, Collections.singletonMap(SendChristmasCards.CardType.FUNNY, 5)); - _testCommand.persons = Arrays.asList(new Person("Phil"), new Person("Andrew")); - } - - public void testMarshallUnmarshall() throws Exception - { - final String jsonString = _jsonHandler.marshall(_testCommand); - - final SendChristmasCards unmarshalledCommand = _jsonHandler.unmarshall(jsonString, SendChristmasCards.class); - - assertEquals("Unmarshalled command should be equal to the original object", _testCommand, unmarshalledCommand); - } - - public void testGeneratorDesrialization() - { - String json = "{_messageProperties: {test: 1; generator: {'@def': 'list'; _cyclic: false; _items: ['first', " + - "{'@def': 'range'; _upper:10; '_type':'int'}]}}}"; - final TestCommand unmarshalledCommand = _jsonHandler.unmarshall(json, TestCommand.class); - Map<String, PropertyValue> properties = unmarshalledCommand.getMessageProperties(); - assertNotNull("Properties should not be null", properties); - assertFalse("Properties should not be empty", properties.isEmpty()); - assertEquals("Unexpected properties size", 2, properties.size()); - PropertyValue testProperty = properties.get("test"); - assertNotNull("Unexpected property test", testProperty); - assertTrue("Unexpected property test", testProperty.getValue() instanceof Number); - assertEquals("Unexpected property value", 1, ((Number)testProperty.getValue()).intValue()); - Object generatorObject = properties.get("generator"); - assertTrue("Unexpected generator object", generatorObject instanceof ListPropertyValue); - PropertyValue generator = (PropertyValue)generatorObject; - assertEquals("Unexpected generator value", "first", generator.getValue()); - for (int i = 0; i < 10; i++) - { - assertEquals("Unexpected generator value", new Integer(i), generator.getValue()); - } - String newJson =_jsonHandler.marshall(unmarshalledCommand); - final TestCommand newUnmarshalledCommand = _jsonHandler.unmarshall(newJson, TestCommand.class); - assertEquals("Unmarshalled command should be equal to the original object", unmarshalledCommand, newUnmarshalledCommand); - } - - /** - * A {@link Command} designed to exercise {@link JsonHandler}, e.g does it handle a map of enums?. - * - * This class is non-private to avoid auto-deletion of "unused" fields/methods - */ - static class SendChristmasCards extends Command - { - enum CardType {FUNNY, TRADITIONAL} - - private Map<CardType, Integer> _cardTypes; - private List<Person> persons; - - public SendChristmasCards(final CommandType type, Map<CardType, Integer> cardTypes) - { - super(type); - _cardTypes = cardTypes; - } - - public Map<CardType, Integer> getCardTypes() - { - return _cardTypes; - } - - public List<Person> getPersons() - { - return persons; - } - - @Override - public boolean equals(final Object obj) - { - return EqualsBuilder.reflectionEquals(this, obj); - } - } - - /** - * This class is non-private to avoid auto-deletion of "unused" fields/methods - */ - static class Person - { - private String _firstName; - - public Person(final String firstName) - { - _firstName = firstName; - } - - public String getFirstName() - { - return _firstName; - } - - @Override - public boolean equals(final Object obj) - { - return EqualsBuilder.reflectionEquals(this, obj); - } - - } - - /** - * Yet another test class - */ - static class TestCommand extends Command - { - - private Map<String, PropertyValue> _messageProperties; - - public TestCommand(CommandType type) - { - super(type); - } - - public Map<String, PropertyValue> getMessageProperties() - { - return _messageProperties; - } - - public void setMessageProperties(Map<String, PropertyValue> _messageProperties) - { - this._messageProperties = _messageProperties; - } - - @Override - public boolean equals(final Object obj) - { - if (obj == null || !(obj instanceof TestCommand)) - { - return false; - } - TestCommand other = (TestCommand)obj; - if (_messageProperties == null && other._messageProperties != null ) - { - return false; - } - return _messageProperties.equals(other._messageProperties); - } - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/message/ParticipantResultTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/message/ParticipantResultTest.java deleted file mode 100644 index e9d444d59c..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/message/ParticipantResultTest.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * 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.disttest.message; - -import static org.apache.qpid.disttest.message.ParticipantAttribute.ACKNOWLEDGE_MODE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.BATCH_SIZE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.CONFIGURED_CLIENT_NAME; -import static org.apache.qpid.disttest.message.ParticipantAttribute.DELIVERY_MODE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.ERROR_MESSAGE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_BROWSING_SUBSCRIPTION; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_DURABLE_SUBSCRIPTION; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_NO_LOCAL; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_SELECTOR; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_SYNCHRONOUS_CONSUMER; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_TOPIC; -import static org.apache.qpid.disttest.message.ParticipantAttribute.ITERATION_NUMBER; -import static org.apache.qpid.disttest.message.ParticipantAttribute.MAXIMUM_DURATION; -import static org.apache.qpid.disttest.message.ParticipantAttribute.NUMBER_OF_MESSAGES_PROCESSED; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PARTICIPANT_NAME; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PAYLOAD_SIZE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PRIORITY; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PRODUCER_INTERVAL; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PRODUCER_START_DELAY; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TEST_NAME; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TIME_TAKEN; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TIME_TO_LIVE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TOTAL_NUMBER_OF_CONSUMERS; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TOTAL_NUMBER_OF_PRODUCERS; - -import java.util.Date; - -import javax.jms.DeliveryMode; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class ParticipantResultTest extends QpidTestCase -{ - - public void testSharedParticipantResultAttributes() throws Exception - { - final String participantName = "PARTICIPANT_NAME1"; - final String testName = "TEST_NAME1"; - String clientConfiguredName = "CLIENT_CONFIGURED_NAME"; - String errorMessage = "errorMessage"; - int iterationNumber = 1; - - ParticipantResult result = new ParticipantResult(); - - long numberOfMessages = 500; - long timeTaken = 30; - int batchSize = 10; - - long startTime = System.currentTimeMillis(); - long endTime = startTime + timeTaken; - long maximumDuration = 1000; - - int totalNumberOfConsumers = 1; - int totalNumberOfProducers = 1; - - int acknowledgeMode = 1; - - result.setParticipantName(participantName); - result.setTestName(testName); - result.setIterationNumber(iterationNumber); - result.setConfiguredClientName(clientConfiguredName); - - result.setAcknowledgeMode(acknowledgeMode); - result.setNumberOfMessagesProcessed(numberOfMessages); - result.setConfiguredClientName(clientConfiguredName); - result.setBatchSize(batchSize); - - result.setStartDate(new Date(startTime)); - result.setEndDate(new Date(endTime)); - result.setMaximumDuration(maximumDuration); - - result.setTotalNumberOfConsumers(totalNumberOfConsumers); - result.setTotalNumberOfProducers(totalNumberOfProducers); - - result.setErrorMessage(errorMessage); - - assertEquals(participantName, result.getAttributes().get(PARTICIPANT_NAME)); - assertEquals(testName, result.getAttributes().get(TEST_NAME)); - assertEquals(iterationNumber, result.getAttributes().get(ITERATION_NUMBER)); - assertEquals(clientConfiguredName, result.getAttributes().get(CONFIGURED_CLIENT_NAME)); - assertEquals(numberOfMessages, result.getAttributes().get(NUMBER_OF_MESSAGES_PROCESSED)); - assertEquals(timeTaken, result.getAttributes().get(TIME_TAKEN)); - assertEquals(timeTaken, result.getAttributes().get(TIME_TAKEN)); - assertEquals(timeTaken, result.getAttributes().get(TIME_TAKEN)); - assertEquals(batchSize, result.getAttributes().get(BATCH_SIZE)); - assertEquals(maximumDuration, result.getAttributes().get(MAXIMUM_DURATION)); - assertEquals(totalNumberOfConsumers, result.getAttributes().get(TOTAL_NUMBER_OF_CONSUMERS)); - assertEquals(totalNumberOfProducers, result.getAttributes().get(TOTAL_NUMBER_OF_PRODUCERS)); - assertEquals(acknowledgeMode, result.getAttributes().get(ACKNOWLEDGE_MODE)); - assertEquals(errorMessage, result.getAttributes().get(ERROR_MESSAGE)); - } - - public void testConsumerParticipantResultAttributes() throws Exception - { - ConsumerParticipantResult result = new ConsumerParticipantResult(); - - boolean topic = true; - boolean durable = true; - boolean browsingSubscription = false; - boolean selector = true; - boolean noLocal = false; - boolean synchronousConsumer = true; - - result.setTopic(topic); - result.setDurableSubscription(durable); - result.setBrowsingSubscription(browsingSubscription); - result.setSelector(selector); - result.setNoLocal(noLocal); - result.setSynchronousConsumer(synchronousConsumer); - - assertEquals(topic, result.getAttributes().get(IS_TOPIC)); - assertEquals(durable, result.getAttributes().get(IS_DURABLE_SUBSCRIPTION)); - assertEquals(browsingSubscription, result.getAttributes().get(IS_BROWSING_SUBSCRIPTION)); - assertEquals(selector, result.getAttributes().get(IS_SELECTOR)); - assertEquals(noLocal, result.getAttributes().get(IS_NO_LOCAL)); - assertEquals(synchronousConsumer, result.getAttributes().get(IS_SYNCHRONOUS_CONSUMER)); - } - - public void testProducerParticipantResultAttributes() throws Exception - { - ProducerParticipantResult result = new ProducerParticipantResult(); - - int priority = 2; - long timeToLive = 30; - long producerStartDelay = 40; - long producerInterval = 50; - int messageSize = 60; - int deliveryMode = DeliveryMode.PERSISTENT; - - result.setPriority(priority); - result.setTimeToLive(timeToLive); - result.setStartDelay(producerStartDelay); - result.setInterval(producerInterval); - result.setPayloadSize(messageSize); - result.setDeliveryMode(deliveryMode); - - - assertEquals(priority, result.getAttributes().get(PRIORITY)); - assertEquals(timeToLive, result.getAttributes().get(TIME_TO_LIVE)); - assertEquals(producerStartDelay, result.getAttributes().get(PRODUCER_START_DELAY)); - assertEquals(producerInterval, result.getAttributes().get(PRODUCER_INTERVAL)); - assertEquals(messageSize, result.getAttributes().get(PAYLOAD_SIZE)); - assertEquals(deliveryMode, result.getAttributes().get(DELIVERY_MODE)); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/ResultsFileWriterTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/ResultsFileWriterTest.java deleted file mode 100644 index db306ea1a4..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/ResultsFileWriterTest.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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.disttest.results; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.io.File; -import java.util.Arrays; - -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.results.ResultsCsvWriter; -import org.apache.qpid.disttest.results.aggregation.TestResultAggregator; -import org.apache.qpid.disttest.results.formatting.CSVFormatter; -import org.apache.qpid.test.utils.QpidTestCase; -import org.apache.qpid.test.utils.TestFileUtils; -import org.apache.qpid.util.FileUtils; - -public class ResultsFileWriterTest extends QpidTestCase -{ - private CSVFormatter _csvFormater = mock(CSVFormatter.class); - private TestResultAggregator _testResultAggregator = mock(TestResultAggregator.class); - - private File _outputDir = TestFileUtils.createTestDirectory(); - - private ResultsCsvWriter _resultsFileWriter = new ResultsCsvWriter(_outputDir); - - @Override - public void setUp() - { - _resultsFileWriter.setCsvFormater(_csvFormater); - _resultsFileWriter.setTestResultAggregator(_testResultAggregator); - } - - public void testWriteResultsToFile() - { - ResultsForAllTests resultsForAllTests = mock(ResultsForAllTests.class); - - String expectedCsvContents = "expected-csv-contents"; - when(_csvFormater.format(resultsForAllTests)).thenReturn(expectedCsvContents); - - _resultsFileWriter.writeResults(resultsForAllTests, "config.json"); - - File resultsFile = new File(_outputDir, "config.csv"); - - assertEquals(expectedCsvContents, FileUtils.readFileAsString(resultsFile)); - } - - public void testWriteResultsSummary() - { - ResultsForAllTests results1 = mock(ResultsForAllTests.class); - ResultsForAllTests results2 = mock(ResultsForAllTests.class); - ResultsForAllTests summaryResults = mock(ResultsForAllTests.class); - - when(_testResultAggregator.aggregateTestResults(Arrays.asList(results1, results2))) - .thenReturn(summaryResults); - - String expectedSummaryFileContents = "expected-summary-file"; - - when(_csvFormater.format(summaryResults)) - .thenReturn(expectedSummaryFileContents); - - _resultsFileWriter.writeResultsSummary(Arrays.asList(results1, results2)); - - File summaryFile = new File(_outputDir, ResultsCsvWriter.TEST_SUMMARY_FILE_NAME); - - assertEquals(expectedSummaryFileContents, FileUtils.readFileAsString(summaryFile)); - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/ResultsTestFixture.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/ResultsTestFixture.java deleted file mode 100644 index 1edef031bf..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/ResultsTestFixture.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * 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.disttest.results; - -import static org.apache.qpid.disttest.message.ParticipantAttribute.ACKNOWLEDGE_MODE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.AVERAGE_LATENCY; -import static org.apache.qpid.disttest.message.ParticipantAttribute.BATCH_SIZE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.CONFIGURED_CLIENT_NAME; -import static org.apache.qpid.disttest.message.ParticipantAttribute.DELIVERY_MODE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.ERROR_MESSAGE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_BROWSING_SUBSCRIPTION; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_DURABLE_SUBSCRIPTION; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_NO_LOCAL; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_SELECTOR; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_SYNCHRONOUS_CONSUMER; -import static org.apache.qpid.disttest.message.ParticipantAttribute.IS_TOPIC; -import static org.apache.qpid.disttest.message.ParticipantAttribute.ITERATION_NUMBER; -import static org.apache.qpid.disttest.message.ParticipantAttribute.LATENCY_STANDARD_DEVIATION; -import static org.apache.qpid.disttest.message.ParticipantAttribute.MAXIMUM_DURATION; -import static org.apache.qpid.disttest.message.ParticipantAttribute.MAX_LATENCY; -import static org.apache.qpid.disttest.message.ParticipantAttribute.MESSAGE_THROUGHPUT; -import static org.apache.qpid.disttest.message.ParticipantAttribute.MIN_LATENCY; -import static org.apache.qpid.disttest.message.ParticipantAttribute.NUMBER_OF_MESSAGES_PROCESSED; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PARTICIPANT_NAME; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PAYLOAD_SIZE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PRIORITY; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PRODUCER_INTERVAL; -import static org.apache.qpid.disttest.message.ParticipantAttribute.PRODUCER_START_DELAY; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TEST_NAME; -import static org.apache.qpid.disttest.message.ParticipantAttribute.THROUGHPUT; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TIME_TAKEN; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TIME_TO_LIVE; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TOTAL_NUMBER_OF_CONSUMERS; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TOTAL_NUMBER_OF_PRODUCERS; -import static org.apache.qpid.disttest.message.ParticipantAttribute.TOTAL_PAYLOAD_PROCESSED; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.controller.TestResult; -import org.apache.qpid.disttest.message.ParticipantAttribute; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.results.aggregation.ITestResult; - -public class ResultsTestFixture -{ - public static final double THROUGHPUT_VALUE = 2048.49; - - private static final String TEST1 = "TEST1"; - private static final String PARTICIPANT = "PARTICIPANT"; - private static final String CONFIGURED_CLIENT1 = "CONFIGURED_CLIENT1"; - - public ResultsForAllTests createResultsForAllTests() - { - ParticipantResult participantResult = mock(ParticipantResult.class); - Map<ParticipantAttribute, Object> participantAttributes = getParticipantAttributes(); - - when(participantResult.getAttributes()).thenReturn(participantAttributes); - when(participantResult.getParticipantName()).thenReturn(PARTICIPANT); - when(participantResult.getTestName()).thenReturn(TEST1); - when(participantResult.getIterationNumber()).thenReturn(0); - when(participantResult.getThroughput()).thenReturn(THROUGHPUT_VALUE); - - TestResult testResult = new TestResult(TEST1); - testResult.addParticipantResult(participantResult); - - ResultsForAllTests resultsForAllTests = new ResultsForAllTests(); - resultsForAllTests.add(testResult); - return resultsForAllTests; - } - - private Map<ParticipantAttribute, Object> getParticipantAttributes() - { - Map<ParticipantAttribute, Object> participantAttributes = new HashMap<ParticipantAttribute, Object>(); - - participantAttributes.put(TEST_NAME, TEST1); - participantAttributes.put(ITERATION_NUMBER, 0); - participantAttributes.put(CONFIGURED_CLIENT_NAME, CONFIGURED_CLIENT1); - participantAttributes.put(PARTICIPANT_NAME, PARTICIPANT); - participantAttributes.put(NUMBER_OF_MESSAGES_PROCESSED, 2); - participantAttributes.put(PAYLOAD_SIZE, 1); - participantAttributes.put(PRIORITY, 2); - participantAttributes.put(TIME_TO_LIVE, 3); - participantAttributes.put(ACKNOWLEDGE_MODE, 4); - participantAttributes.put(DELIVERY_MODE, 5); - participantAttributes.put(BATCH_SIZE, 6); - participantAttributes.put(MAXIMUM_DURATION, 7); - participantAttributes.put(PRODUCER_START_DELAY, 8); - participantAttributes.put(PRODUCER_INTERVAL, 9); - participantAttributes.put(IS_TOPIC, true); - participantAttributes.put(IS_DURABLE_SUBSCRIPTION, false); - participantAttributes.put(IS_BROWSING_SUBSCRIPTION, true); - participantAttributes.put(IS_SELECTOR, false); - participantAttributes.put(IS_NO_LOCAL, true); - participantAttributes.put(IS_SYNCHRONOUS_CONSUMER, false); - participantAttributes.put(TOTAL_NUMBER_OF_CONSUMERS, 1); - participantAttributes.put(TOTAL_NUMBER_OF_PRODUCERS, 2); - participantAttributes.put(TOTAL_PAYLOAD_PROCESSED, 1024); - participantAttributes.put(THROUGHPUT, THROUGHPUT_VALUE); - participantAttributes.put(TIME_TAKEN, 1000); - participantAttributes.put(ERROR_MESSAGE, "error"); - participantAttributes.put(MIN_LATENCY, 2l); - participantAttributes.put(MAX_LATENCY, 9l); - participantAttributes.put(AVERAGE_LATENCY, 4.6f); - participantAttributes.put(LATENCY_STANDARD_DEVIATION, 2.0f); - participantAttributes.put(MESSAGE_THROUGHPUT, 2); - return participantAttributes; - } - - public ParticipantResult getFirstParticipantResult(ResultsForAllTests results) - { - List<ITestResult> testResults = results.getTestResults(); - ITestResult testResult = testResults.iterator().next(); - List<ParticipantResult> participantResults = testResult.getParticipantResults(); - return participantResults.iterator().next(); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/AggregatorTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/AggregatorTest.java deleted file mode 100644 index 011eb4e68b..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/AggregatorTest.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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.disttest.results.aggregation; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.Arrays; - -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.test.utils.QpidTestCase; - -public class AggregatorTest extends QpidTestCase -{ - private Aggregator _aggregator = new Aggregator(); - private TestResultAggregator _testResultAggregator = mock(TestResultAggregator.class); - - @Override - protected void setUp() throws Exception - { - super.setUp(); - _aggregator.setTestResultAggregator(_testResultAggregator); - } - - public void testAggregrateManyTestResults() throws Exception - { - ResultsForAllTests resultsForAllTests = mock(ResultsForAllTests.class); - ITestResult testResult1 = mock(ITestResult.class); - ITestResult testResult2 = mock(ITestResult.class); - - when(resultsForAllTests.getTestResults()).thenReturn(Arrays.asList(testResult1, testResult2)); - when(_testResultAggregator.aggregateTestResult(testResult1)).thenReturn(mock(AggregatedTestResult.class)); - when(_testResultAggregator.aggregateTestResult(testResult2)).thenReturn(mock(AggregatedTestResult.class)); - - ResultsForAllTests aggregatedResultsForAllTests = _aggregator.aggregateResults(resultsForAllTests); - assertEquals(2, aggregatedResultsForAllTests.getTestResults().size()); - - verify(_testResultAggregator).aggregateTestResult(testResult1); - verify(_testResultAggregator).aggregateTestResult(testResult2); - - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/ParticipantResultAggregatorTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/ParticipantResultAggregatorTest.java deleted file mode 100644 index 41da1edb33..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/ParticipantResultAggregatorTest.java +++ /dev/null @@ -1,294 +0,0 @@ -/* - * 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.disttest.results.aggregation; - -import java.util.Date; - -import javax.jms.Session; - -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.test.utils.QpidTestCase; - -public class ParticipantResultAggregatorTest extends QpidTestCase -{ - private ParticipantResultAggregator _aggregator = new ParticipantResultAggregator(ParticipantResult.class, AGGREGATED_RESULT_NAME); - - private static final String TEST_NAME = "TEST_NAME"; - private static final String AGGREGATED_RESULT_NAME = "AGGREGATED_RESULT_NAME"; - private static final int TEST_ITERATION_NUMBER = 1; - - private static final long PARTICIPANT1_STARTDATE = 50; - private static final long PARTICIPANT1_ENDDATE = 20000; - private static final long PARTICIPANT1_TOTAL_PROCESSED = 1024; - private static final int PARTICIPANT1_NUMBER_OF_MESSAGES_PROCESSED = 20000; - - private static final long PARTICIPANT2_STARTDATE = 100; - private static final long PARTICIPANT2_ENDDATE = 21000; - private static final long PARTICIPANT2_TOTAL_PROCESSED = 2048; - private static final int PARTICIPANT2_NUMBER_OF_MESSAGES_PROCESSED = 950; - - private static final long OVERALL_PROCESSED = PARTICIPANT1_TOTAL_PROCESSED + PARTICIPANT2_TOTAL_PROCESSED; - private static final double OVERALL_TIMETAKEN = PARTICIPANT2_ENDDATE - PARTICIPANT1_STARTDATE; - private static final long OVERALL_NUMBER_OF_MESSAGES_PROCESSED = PARTICIPANT1_NUMBER_OF_MESSAGES_PROCESSED + PARTICIPANT2_NUMBER_OF_MESSAGES_PROCESSED; - - private static final double EXPECTED_AGGREGATED_ALL_THROUGHPUT = ((OVERALL_PROCESSED)/1024)/((OVERALL_TIMETAKEN)/1000); - private static final int EXPECTED_AGGREGATED_MESSAGE_THROUGHPUT = (int)(OVERALL_NUMBER_OF_MESSAGES_PROCESSED * 1000.0d/OVERALL_TIMETAKEN); - - public void testStartAndEndDateForOneParticipantResult() - { - ParticipantResult result = new ParticipantResult(); - result.setStartDate(new Date(PARTICIPANT1_STARTDATE)); - result.setEndDate(new Date(PARTICIPANT1_ENDDATE)); - - _aggregator.aggregate(result); - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(PARTICIPANT1_STARTDATE, aggregratedResult.getStartInMillis()); - assertEquals(PARTICIPANT1_ENDDATE, aggregratedResult.getEndInMillis()); - } - - public void testStartAndEndDateForTwoParticipantResults() - { - ParticipantResult result1 = new ParticipantResult(); - result1.setStartDate(new Date(PARTICIPANT1_STARTDATE)); - result1.setEndDate(new Date(PARTICIPANT1_ENDDATE)); - - ParticipantResult result2 = new ParticipantResult(); - result2.setStartDate(new Date(PARTICIPANT2_STARTDATE)); - result2.setEndDate(new Date(PARTICIPANT2_ENDDATE)); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(PARTICIPANT1_STARTDATE, aggregratedResult.getStartInMillis()); - assertEquals(PARTICIPANT2_ENDDATE, aggregratedResult.getEndInMillis()); - } - - public void testComputeNumberOfMessagesProcessed() - { - ParticipantResult result1 = new ParticipantResult(); - result1.setNumberOfMessagesProcessed(10); - - ParticipantResult result2 = new ParticipantResult(); - result2.setNumberOfMessagesProcessed(15); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(25, aggregratedResult.getNumberOfMessagesProcessed()); - } - - public void testComputeTotalPayloadProcessed() - { - ParticipantResult result1 = new ParticipantResult(); - result1.setTotalPayloadProcessed(PARTICIPANT1_TOTAL_PROCESSED); - - ParticipantResult result2 = new ParticipantResult(); - result2.setTotalPayloadProcessed(PARTICIPANT2_TOTAL_PROCESSED); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(OVERALL_PROCESSED, aggregratedResult.getTotalPayloadProcessed()); - } - - public void testComputeThroughput() - { - ParticipantResult result1 = new ParticipantResult(); - result1.setStartDate(new Date(PARTICIPANT1_STARTDATE)); - result1.setEndDate(new Date(PARTICIPANT1_ENDDATE)); - result1.setTotalPayloadProcessed(PARTICIPANT1_TOTAL_PROCESSED); - - ParticipantResult result2 = new ParticipantResult(); - result2.setStartDate(new Date(PARTICIPANT2_STARTDATE)); - result2.setEndDate(new Date(PARTICIPANT2_ENDDATE)); - result2.setTotalPayloadProcessed(PARTICIPANT2_TOTAL_PROCESSED); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(EXPECTED_AGGREGATED_ALL_THROUGHPUT, aggregratedResult.getThroughput(), 0.1); - } - - public void testComputeMessageThroughput() - { - ParticipantResult result1 = new ParticipantResult(); - result1.setStartDate(new Date(PARTICIPANT1_STARTDATE)); - result1.setEndDate(new Date(PARTICIPANT1_ENDDATE)); - result1.setNumberOfMessagesProcessed(PARTICIPANT1_NUMBER_OF_MESSAGES_PROCESSED); - - ParticipantResult result2 = new ParticipantResult(); - result2.setStartDate(new Date(PARTICIPANT2_STARTDATE)); - result2.setEndDate(new Date(PARTICIPANT2_ENDDATE)); - result2.setNumberOfMessagesProcessed(PARTICIPANT2_NUMBER_OF_MESSAGES_PROCESSED); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(EXPECTED_AGGREGATED_MESSAGE_THROUGHPUT, aggregratedResult.getMessageThroughput()); - - } - - public void testConstantTestNameAndIterationNumberRolledUp() throws Exception - { - ParticipantResult result1 = new ParticipantResult(); - result1.setTestName(TEST_NAME); - result1.setIterationNumber(TEST_ITERATION_NUMBER); - - ParticipantResult result2 = new ParticipantResult(); - result2.setTestName(TEST_NAME); - result2.setIterationNumber(TEST_ITERATION_NUMBER); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(TEST_ITERATION_NUMBER, aggregratedResult.getIterationNumber()); - assertEquals(TEST_NAME, aggregratedResult.getTestName()); - } - - public void testConstantPayloadSizesRolledUp() throws Exception - { - final int payloadSize = 1024; - - ParticipantResult result1 = new ParticipantResult(); - result1.setPayloadSize(payloadSize); - - ParticipantResult result2 = new ParticipantResult(); - result2.setPayloadSize(payloadSize); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(payloadSize, aggregratedResult.getPayloadSize()); - } - - public void testDifferingPayloadSizesNotRolledUp() throws Exception - { - final int payload1Size = 1024; - final int payload2Size = 2048; - - ParticipantResult result1 = new ParticipantResult(); - result1.setPayloadSize(payload1Size); - - ParticipantResult result2 = new ParticipantResult(); - result2.setPayloadSize(payload2Size); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(0, aggregratedResult.getPayloadSize()); - } - - public void testConstantBatchSizesRolledUp() throws Exception - { - final int batchSize = 10; - - ParticipantResult result1 = new ParticipantResult(); - result1.setBatchSize(batchSize); - - ParticipantResult result2 = new ParticipantResult(); - result2.setBatchSize(batchSize); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(batchSize, aggregratedResult.getBatchSize()); - } - - public void testDifferingBatchSizesNotRolledUp() throws Exception - { - final int batch1Size = 10; - final int batch2Size = 20; - - ParticipantResult result1 = new ParticipantResult(); - result1.setBatchSize(batch1Size); - - ParticipantResult result2 = new ParticipantResult(); - result2.setBatchSize(batch2Size); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(0, aggregratedResult.getBatchSize()); - } - - public void testConstantAcknowledgeModesRolledUp() throws Exception - { - ParticipantResult result1 = new ParticipantResult(); - result1.setAcknowledgeMode(Session.DUPS_OK_ACKNOWLEDGE); - - ParticipantResult result2 = new ParticipantResult(); - result2.setAcknowledgeMode(Session.DUPS_OK_ACKNOWLEDGE); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(Session.DUPS_OK_ACKNOWLEDGE, aggregratedResult.getAcknowledgeMode()); - } - - public void testDifferingAcknowledgeModesNotRolledUp() throws Exception - { - ParticipantResult result1 = new ParticipantResult(); - result1.setBatchSize(Session.AUTO_ACKNOWLEDGE); - - ParticipantResult result2 = new ParticipantResult(); - result2.setBatchSize(Session.SESSION_TRANSACTED); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(-1, aggregratedResult.getAcknowledgeMode()); - } - - public void testSumNumberOfConsumerAndProducers() throws Exception - { - final int expectedNumberOfProducers = 1; - final int expectedNumberOfConsumers = 2; - - ParticipantResult result1 = new ParticipantResult(); - result1.setTotalNumberOfConsumers(1); - - ParticipantResult result2 = new ParticipantResult(); - result2.setTotalNumberOfConsumers(1); - - ParticipantResult result3 = new ParticipantResult(); - result2.setTotalNumberOfProducers(1); - - _aggregator.aggregate(result1); - _aggregator.aggregate(result2); - _aggregator.aggregate(result3); - - ParticipantResult aggregratedResult = _aggregator.getAggregatedResult(); - assertEquals(expectedNumberOfConsumers, aggregratedResult.getTotalNumberOfConsumers()); - assertEquals(expectedNumberOfProducers, aggregratedResult.getTotalNumberOfProducers()); - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/SeriesStatisticsTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/SeriesStatisticsTest.java deleted file mode 100644 index 7417dddc4f..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/SeriesStatisticsTest.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * - * 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.disttest.results.aggregation; - -import java.util.Arrays; -import java.util.Collection; - -import org.apache.qpid.test.utils.QpidTestCase; - -public class SeriesStatisticsTest extends QpidTestCase -{ - public static Collection<Long> SERIES = Arrays.asList(new Long[] { 2l, 4l, 4l, 4l, 5l, 5l, 7l, 9l, 5l }); - - public void testAggregate() - { - SeriesStatistics results = new SeriesStatistics(); - results.addMessageLatencies(SERIES); - results.aggregate(); - assertEquals("Unexpected average", 5.0, results.getAverage(), 0.01); - assertEquals("Unexpected min", 2, results.getMinimum()); - assertEquals("Unexpected max", 9, results.getMaximum()); - assertEquals("Unexpected standard deviation", 2.0, results.getStandardDeviation(), 0.01); - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/TestResultAggregatorTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/TestResultAggregatorTest.java deleted file mode 100644 index b254a0e3bf..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/aggregation/TestResultAggregatorTest.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * 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.disttest.results.aggregation; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.Arrays; -import java.util.Date; -import java.util.List; - -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.controller.TestResult; -import org.apache.qpid.disttest.message.ConsumerParticipantResult; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.ProducerParticipantResult; -import org.apache.qpid.test.utils.QpidTestCase; - -public class TestResultAggregatorTest extends QpidTestCase -{ - private static final String TEST1_NAME = "TEST1_NAME"; - private static final int TEST1_ITERATION_NUMBER = 1; - - private static final String CONSUMER_PARTICIPANT_NAME1 = "CONSUMER_PARTICIPANT_NAME1"; - private static final String CONSUMER_PARTICIPANT_NAME2 = "CONSUMER_PARTICIPANT_NAME2"; - - private static final String PRODUCER_PARTICIPANT_NAME = "PRODUCER_PARTICIPANT_NAME"; - - private static final long CONSUMER1_STARTDATE = 50; - private static final long CONSUMER1_ENDDATE = 20000; - - private static final long CONSUMER2_STARTDATE = 100; - private static final long CONSUMER2_ENDDATE = 21000; - - private static final long PRODUCER_STARTDATE = 0; - private static final long PRODUCER_ENDDATE = 19000; - - private static final long NUMBER_OF_MESSAGES_PROCESSED_PER_CONSUMER = 50; - private static final long NUMBER_OF_MESSAGES_CONSUMED_IN_TOTAL = NUMBER_OF_MESSAGES_PROCESSED_PER_CONSUMER * 2; - private static final long NUMBER_OF_MESSAGES_PRODUCED = NUMBER_OF_MESSAGES_PROCESSED_PER_CONSUMER * 2; - - private static final int PAYLOAD_SIZE = 1024; - private static final long TOTAL_PAYLOAD_PROCESSED_PER_CONSUMER = NUMBER_OF_MESSAGES_PROCESSED_PER_CONSUMER * PAYLOAD_SIZE; - private static final long TOTAL_PAYLOAD_PRODUCED_IN_TOTAL = TOTAL_PAYLOAD_PROCESSED_PER_CONSUMER * 2; - - private static final int EXPECTED_NUMBER_OF_AGGREGATED_RESULTS = 3; - - private static final int BATCH_SIZE = 3; - - private TestResultAggregator _aggregator = new TestResultAggregator(); - - public void testAggregateTestResults() - { - ResultsForAllTests resultsForAllTests1 = mock(ResultsForAllTests.class); - ResultsForAllTests resultsForAllTests2 = mock(ResultsForAllTests.class); - - ResultsForAllTests summaryResult1 = mock(ResultsForAllTests.class); - ResultsForAllTests summaryResult2 = mock(ResultsForAllTests.class); - - when(resultsForAllTests1.getAllParticipantsResult()).thenReturn(summaryResult1); - when(resultsForAllTests2.getAllParticipantsResult()).thenReturn(summaryResult2); - - ITestResult testResult1 = mock(ITestResult.class); - ITestResult testResult2 = mock(ITestResult.class); - - when(summaryResult1.getTestResults()).thenReturn(Arrays.asList(testResult1)); - when(summaryResult2.getTestResults()).thenReturn(Arrays.asList(testResult2)); - - ResultsForAllTests actualSummaryResults = _aggregator.aggregateTestResults(Arrays.asList( - resultsForAllTests1, - resultsForAllTests2)); - - assertEquals( - "Summary results should contain the all the 'all participants' test results", - Arrays.asList(testResult1, testResult2), - actualSummaryResults.getTestResults()); - } - - public void testAggregateResultsForTwoConsumerAndOneProducer() throws Exception - { - TestResult originalTestResult = createResultsFromTest(); - - int numberOfOriginalParticipantResults = originalTestResult.getParticipantResults().size(); - int expectedNumberOfResults = numberOfOriginalParticipantResults + EXPECTED_NUMBER_OF_AGGREGATED_RESULTS; - - AggregatedTestResult aggregatedTestResult = _aggregator.aggregateTestResult(originalTestResult); - - aggregatedTestResult.getAllConsumerParticipantResult().getTotalPayloadProcessed(); - assertEquals(expectedNumberOfResults, aggregatedTestResult.getParticipantResults().size()); - - assertMinimalAggregatedResults( - aggregatedTestResult.getAllConsumerParticipantResult(), - TEST1_NAME, TEST1_ITERATION_NUMBER, - BATCH_SIZE, NUMBER_OF_MESSAGES_CONSUMED_IN_TOTAL, 2, 0); - - assertMinimalAggregatedResults( - aggregatedTestResult.getAllProducerParticipantResult(), - TEST1_NAME, TEST1_ITERATION_NUMBER, - BATCH_SIZE, NUMBER_OF_MESSAGES_PRODUCED, 0, 1); - - assertMinimalAggregatedResults( - aggregatedTestResult.getAllParticipantResult(), - TEST1_NAME, TEST1_ITERATION_NUMBER, - BATCH_SIZE, NUMBER_OF_MESSAGES_CONSUMED_IN_TOTAL, 2, 1); - } - - public void testAggregateResultsWhenParticipantErrored() - { - ParticipantResult failedParticipantResult = new ParticipantResult(); - failedParticipantResult.setParticipantName(PRODUCER_PARTICIPANT_NAME); - failedParticipantResult.setErrorMessage("error"); - TestResult result = new TestResult(TEST1_NAME); - result.addParticipantResult(failedParticipantResult); - - AggregatedTestResult aggregatedTestResult = _aggregator.aggregateTestResult(result); - assertEquals(TestResultAggregator.AGGREGATED_ERROR_MESSAGE, aggregatedTestResult.getAllParticipantResult().getErrorMessage()); - } - - public void testAggregateResultsForConsumerWithLatencyResults() throws Exception - { - TestResult originalTestResult = createResultsFromTest(); - List<ParticipantResult> results = originalTestResult.getParticipantResults(); - for (ParticipantResult participantResult : results) - { - if (participantResult instanceof ConsumerParticipantResult) - { - ((ConsumerParticipantResult)participantResult).setMessageLatencies(SeriesStatisticsTest.SERIES); - break; - } - } - - int numberOfOriginalParticipantResults = originalTestResult.getParticipantResults().size(); - int expectedNumberOfResults = numberOfOriginalParticipantResults + EXPECTED_NUMBER_OF_AGGREGATED_RESULTS; - - AggregatedTestResult aggregatedTestResult = _aggregator.aggregateTestResult(originalTestResult); - - aggregatedTestResult.getAllConsumerParticipantResult().getTotalPayloadProcessed(); - assertEquals(expectedNumberOfResults, aggregatedTestResult.getParticipantResults().size()); - - assertMinimalAggregatedResults( - aggregatedTestResult.getAllConsumerParticipantResult(), - TEST1_NAME, TEST1_ITERATION_NUMBER, - BATCH_SIZE, NUMBER_OF_MESSAGES_CONSUMED_IN_TOTAL, 2, 0); - - assertLatencyAggregatedResults(aggregatedTestResult.getAllConsumerParticipantResult()); - - assertMinimalAggregatedResults( - aggregatedTestResult.getAllProducerParticipantResult(), - TEST1_NAME, TEST1_ITERATION_NUMBER, - BATCH_SIZE, NUMBER_OF_MESSAGES_PRODUCED, 0, 1); - - assertMinimalAggregatedResults( - aggregatedTestResult.getAllParticipantResult(), - TEST1_NAME, TEST1_ITERATION_NUMBER, - BATCH_SIZE, NUMBER_OF_MESSAGES_CONSUMED_IN_TOTAL, 2, 1); - - int expectedThroughtput = (int)Math.round(NUMBER_OF_MESSAGES_PRODUCED * 1000.0d /(CONSUMER2_ENDDATE - PRODUCER_STARTDATE)); - ParticipantResult result = aggregatedTestResult.getAllParticipantResult(); - assertEquals("Unexpected message throughtput", expectedThroughtput, result.getMessageThroughput()); - } - - private void assertLatencyAggregatedResults(ParticipantResult allConsumerParticipantResult) - { - assertTrue("Unexpected result", allConsumerParticipantResult instanceof ConsumerParticipantResult); - ConsumerParticipantResult results = (ConsumerParticipantResult)allConsumerParticipantResult; - assertEquals("Unexpected average", 5.0, results.getAverageLatency(), 0.01); - assertEquals("Unexpected min", 2, results.getMinLatency()); - assertEquals("Unexpected max", 9, results.getMaxLatency()); - assertEquals("Unexpected standard deviation", 2.0, results.getLatencyStandardDeviation(), 0.01); - } - - private void assertMinimalAggregatedResults(ParticipantResult result, String expectedTestName, int expectedIterationNumber, int expectedBatchSize, long expectedNumberOfMessagesProcessed, int expectedTotalNumberOfConsumers, int expectedTotalNumberOfProducers) - { - assertEquals("Unexpected test name in " + result.getParticipantName(), expectedTestName, result.getTestName()); - assertEquals("Unexpected iteration number in " + result.getParticipantName(), expectedIterationNumber, result.getIterationNumber()); - assertEquals("Unexpected batch size " + result.getParticipantName(), expectedBatchSize, result.getBatchSize()); - assertEquals("Unexpected number of messages processed in " + result.getParticipantName(), expectedNumberOfMessagesProcessed, result.getNumberOfMessagesProcessed()); - assertEquals("Unexpected total number of consumers " + result.getParticipantName(), expectedTotalNumberOfConsumers, result.getTotalNumberOfConsumers()); - assertEquals("Unexpected total number of producers " + result.getParticipantName(), expectedTotalNumberOfProducers, result.getTotalNumberOfProducers()); - } - - private TestResult createResultsFromTest() - { - TestResult testResult = new TestResult(TEST1_NAME); - - ConsumerParticipantResult consumerResult1 = new ConsumerParticipantResult(); - setPropertiesOn(consumerResult1, TEST1_NAME, TEST1_ITERATION_NUMBER, CONSUMER_PARTICIPANT_NAME1, NUMBER_OF_MESSAGES_PROCESSED_PER_CONSUMER, BATCH_SIZE, PAYLOAD_SIZE, TOTAL_PAYLOAD_PROCESSED_PER_CONSUMER, CONSUMER1_STARTDATE, CONSUMER1_ENDDATE, 1, 0); - testResult.addParticipantResult(consumerResult1); - - ConsumerParticipantResult consumerResult2 = new ConsumerParticipantResult(); - setPropertiesOn(consumerResult2, TEST1_NAME, TEST1_ITERATION_NUMBER, CONSUMER_PARTICIPANT_NAME2, NUMBER_OF_MESSAGES_PROCESSED_PER_CONSUMER, BATCH_SIZE, PAYLOAD_SIZE, TOTAL_PAYLOAD_PROCESSED_PER_CONSUMER, CONSUMER2_STARTDATE, CONSUMER2_ENDDATE, 1, 0); - testResult.addParticipantResult(consumerResult2); - - ParticipantResult producerResult = new ProducerParticipantResult(); - setPropertiesOn(producerResult, TEST1_NAME, TEST1_ITERATION_NUMBER, PRODUCER_PARTICIPANT_NAME, NUMBER_OF_MESSAGES_PRODUCED, BATCH_SIZE, PAYLOAD_SIZE, TOTAL_PAYLOAD_PRODUCED_IN_TOTAL, PRODUCER_STARTDATE, PRODUCER_ENDDATE, 0, 1); - testResult.addParticipantResult(producerResult); - - return testResult; - } - - private void setPropertiesOn(ParticipantResult participantResult, String testName, int iterationNumber, String participantName, long numberOfMessagesProcessed, int batchSize, int payloadSize, long totalPayloadProcessed, long start, long end, int totalNumberOfConsumers, int totalNumberOfProducers) - { - participantResult.setParticipantName(participantName); - participantResult.setTestName(testName); - participantResult.setIterationNumber(iterationNumber); - participantResult.setTotalNumberOfConsumers(totalNumberOfConsumers); - participantResult.setTotalNumberOfProducers(totalNumberOfProducers); - - participantResult.setNumberOfMessagesProcessed(numberOfMessagesProcessed); - participantResult.setPayloadSize(payloadSize); - participantResult.setTotalPayloadProcessed(totalPayloadProcessed); - participantResult.setStartDate(new Date(start)); - participantResult.setEndDate(new Date(end)); - participantResult.setBatchSize(batchSize); - } - -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/formatting/CSVFormatterTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/formatting/CSVFormatterTest.java deleted file mode 100644 index bbf73b23d2..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/formatting/CSVFormatterTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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.disttest.results.formatting; - -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; - -import org.apache.qpid.disttest.controller.ResultsForAllTests; -import org.apache.qpid.disttest.results.ResultsTestFixture; -import org.apache.qpid.test.utils.QpidTestCase; - -public class CSVFormatterTest extends QpidTestCase -{ - private CSVFormatter _formatter = new CSVFormatter(); - - public void testResultsFileWithWithOneRow() throws Exception - { - ResultsTestFixture resultsTestFixture = new ResultsTestFixture(); - ResultsForAllTests resultsForAllTests = resultsTestFixture.createResultsForAllTests(); - - String output = _formatter.format(resultsForAllTests); - - String expectedOutput = readCsvOutputFileAsString("expectedOutput.csv"); - - assertEquals(expectedOutput, output); - } - - private String readCsvOutputFileAsString(String filename) throws Exception - { - InputStream is = getClass().getResourceAsStream(filename); - assertNotNull(is); - - StringBuilder output = new StringBuilder(); - - BufferedReader br = new BufferedReader(new InputStreamReader(is)); - String line = null; - while((line = br.readLine()) != null) - { - output.append(line); - output.append("\n"); - } - - return output.toString(); - } -} diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/formatting/CSVOrderParticipantResultComparatorTest.java b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/formatting/CSVOrderParticipantResultComparatorTest.java deleted file mode 100644 index ed109a2e27..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/formatting/CSVOrderParticipantResultComparatorTest.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * 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.disttest.results.formatting; - - -import org.apache.qpid.disttest.message.ConsumerParticipantResult; -import org.apache.qpid.disttest.message.ParticipantResult; -import org.apache.qpid.disttest.message.ProducerParticipantResult; -import org.apache.qpid.disttest.results.aggregation.TestResultAggregator; -import org.apache.qpid.test.utils.QpidTestCase; - -public class CSVOrderParticipantResultComparatorTest extends QpidTestCase -{ - CSVOrderParticipantResultComparator _comparator = new CSVOrderParticipantResultComparator(); - - public void testOrderedConsumerParticipants() throws Exception - { - assertCompare( - new ConsumerParticipantResult("apple"), - new ConsumerParticipantResult("banana")); - - } - public void testProducerPrecedesConsumerParticipants() throws Exception - { - assertCompare( - new ProducerParticipantResult(), - new ConsumerParticipantResult()); - } - - public void testProducerPrecedesAllProducersResult() - { - assertCompare( - new ProducerParticipantResult("participantName"), - new ParticipantResult(TestResultAggregator.ALL_PRODUCER_PARTICIPANTS_NAME)); - } - - public void testConsumerPrecedesAllConsumersResult() - { - assertCompare( - new ConsumerParticipantResult("participantName"), - new ParticipantResult(TestResultAggregator.ALL_CONSUMER_PARTICIPANTS_NAME)); - } - - public void testAllParticipantsPrecedesAllConsumersResult() - { - assertCompare( - new ParticipantResult(TestResultAggregator.ALL_PARTICIPANTS_NAME), - new ParticipantResult(TestResultAggregator.ALL_CONSUMER_PARTICIPANTS_NAME)); - } - - public void testAllParticipantsPrecedesAllProducersResult() - { - assertCompare( - new ParticipantResult(TestResultAggregator.ALL_PARTICIPANTS_NAME), - new ParticipantResult(TestResultAggregator.ALL_PRODUCER_PARTICIPANTS_NAME)); - } - - private void assertCompare(ParticipantResult smaller, ParticipantResult bigger) - { - assertEquals("Expected " + smaller + " to 'equal' itself", - 0, - _comparator.compare(smaller, smaller)); - - String failureMsg = "Expected " + smaller + " to be smaller than " + bigger; - - assertTrue(failureMsg, _comparator.compare(smaller, bigger) < 0); - assertTrue(failureMsg, _comparator.compare(bigger, smaller) > 0); - } - -} -// <ParticipantResult> diff --git a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/formatting/expectedOutput.csv b/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/formatting/expectedOutput.csv deleted file mode 100644 index 02ea67d56d..0000000000 --- a/qpid/java/perftests/src/test/java/org/apache/qpid/disttest/results/formatting/expectedOutput.csv +++ /dev/null @@ -1,2 +0,0 @@ -testName,iterationNumber,throughputKbPerS,averageLatency,clientName,participantName,numberOfMessages,payloadSizeB,priority,timeToLiveMs,acknowledgeMode,deliveryMode,batchSize,maximumDurationMs,producerStartDelayMs,producerIntervalMs,isTopic,isDurableSubscription,isBrowsingSubscription,isSelector,isNoLocal,isSynchronousConsumer,totalNumberOfConsumers,totalNumberOfProducers,totalPayloadProcessedB,timeTakenMs,errorMessage,minLatency,maxLatency,latencyStandardDeviation,throughputMessagesPerS -TEST1,0,2048,5,CONFIGURED_CLIENT1,PARTICIPANT,2,1,2,3,4,5,6,7,8,9,true,false,true,false,true,false,1,2,1024,1000,error,2,9,2.0,2 |
