geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dblev...@apache.org
Subject svn commit: r700238 [2/4] - in /geronimo/sandbox/failover: ./ grinder-3.0.1/ grinder-3.0.1/bin/ grinder-3.0.1/contrib/ grinder-3.0.1/contrib/mq/ grinder-3.0.1/etc/ grinder-3.0.1/examples/ grinder-3.0.1/examples/.grinder/ grinder-3.0.1/lib/ grinder-3.0....
Date Mon, 29 Sep 2008 20:19:08 GMT
Added: geronimo/sandbox/failover/grinder-3.0.1/LICENSE-HTTPClient
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/LICENSE-HTTPClient?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/LICENSE-HTTPClient (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/LICENSE-HTTPClient Mon Sep 29 13:19:05 2008
@@ -0,0 +1,503 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+Copyright (C) <year> <name of author>
+
+This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+

Added: geronimo/sandbox/failover/grinder-3.0.1/LICENSE-Jython
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/LICENSE-Jython?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/LICENSE-Jython (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/LICENSE-Jython Mon Sep 29 13:19:05 2008
@@ -0,0 +1,200 @@
+
+A. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING JYTHON
+=======================================================
+
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+--------------------------------------------
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+("PSF"), and the Individual or Organization ("Licensee") accessing and
+otherwise using this software ("Jython") in source or binary form and
+its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF
+hereby grants Licensee a nonexclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display publicly,
+prepare derivative works, distribute, and otherwise use Jython alone
+or in any derivative version, provided, however, that PSF's License
+Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2007
+Python Software Foundation; All Rights Reserved" are retained in
+Jython alone or in any derivative version prepared by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Jython or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Jython.
+
+4. PSF is making Jython available to Licensee on an "AS IS"
+basis.  PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF JYTHON WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF JYTHON
+FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING JYTHON,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee.  This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Jython, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+Jython 2.0, 2.1 License
+================================
+
+Copyright (c) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Jython Developers
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the distribution.
+
+ - Neither the name of the Jython Developers nor the names of
+   its contributors may be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+JPython 1.1.x Software License.
+=========================
+
+______________________________________________________________________
+
+IMPORTANT: PLEASE READ THE FOLLOWING AGREEMENT CAREFULLY.
+
+BY CLICKING ON THE "ACCEPT" BUTTON WHERE INDICATED, OR BY INSTALLING,
+COPYING OR OTHERWISE USING THE SOFTWARE, YOU ARE DEEMED TO HAVE AGREED TO
+THE TERMS AND CONDITIONS OF THIS AGREEMENT.
+
+______________________________________________________________________
+
+JPython version 1.1.x
+
+  1. This LICENSE AGREEMENT is between the Corporation for National Research
+     Initiatives, having an office at 1895 Preston White Drive, Reston, VA
+     20191 ("CNRI"), and the Individual or Organization ("Licensee")
+     accessing and using JPython version 1.1.x in source or binary form and
+     its associated documentation as provided herein ("Software").
+
+  2. Subject to the terms and conditions of this License Agreement, CNRI
+     hereby grants Licensee a non-exclusive, non-transferable, royalty-free,
+     world-wide license to reproduce, analyze, test, perform and/or display
+     publicly, prepare derivative works, distribute, and otherwise use the
+     Software alone or in any derivative version, provided, however, that
+     CNRI's License Agreement and CNRI's notice of copyright, i.e.,
+     "Copyright ©1996-1999 Corporation for National Research Initiatives;
+     All Rights Reserved" are both retained in the Software, alone or in any
+     derivative version prepared by Licensee.
+
+     Alternatively, in lieu of CNRI's License Agreement, Licensee may
+     substitute the following text (omitting the quotes), provided, however,
+     that such text is displayed prominently in the Software alone or in any
+     derivative version prepared by Licensee: "JPython (Version 1.1.x) is
+     made available subject to the terms and conditions in CNRI's License
+     Agreement. This Agreement may be located on the Internet using the
+     following unique, persistent identifier (known as a handle):
+     1895.22/1006. The License may also be obtained from a proxy server on
+     the Web using the following URL: http://hdl.handle.net/1895.22/1006."
+
+  3. In the event Licensee prepares a derivative work that is based on or
+     incorporates the Software or any part thereof, and wants to make the
+     derivative work available to the public as provided herein, then
+     Licensee hereby agrees to indicate in any such work, in a prominently
+     visible way, the nature of the modifications made to CNRI's Software.
+
+  4. Licensee may not use CNRI trademarks or trade name, including JPython
+     or CNRI, in a trademark sense to endorse or promote products or
+     services of Licensee, or any third party. Licensee may use the mark
+     JPython in connection with Licensee's derivative versions that are
+     based on or incorporate the Software, but only in the form
+     "JPython-based ___________________," or equivalent.
+
+  5. CNRI is making the Software available to Licensee on an "AS IS" basis.
+     CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY
+     OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND DISCLAIMS ANY
+     REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY
+     PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE
+     ANY THIRD PARTY RIGHTS.
+
+  6. CNRI SHALL NOT BE LIABLE TO LICENSEE OR OTHER USERS OF THE SOFTWARE FOR
+     ANY INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF
+     USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE
+     THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. SOME STATES DO NOT
+     ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY SO THE ABOVE DISCLAIMER
+     MAY NOT APPLY TO LICENSEE.
+
+  7. This License Agreement may be terminated by CNRI (i) immediately upon
+     written notice from CNRI of any material breach by the Licensee, if the
+     nature of the breach is such that it cannot be promptly remedied; or
+     (ii) sixty (60) days following notice from CNRI to Licensee of a
+     material remediable breach, if Licensee has not remedied such breach
+     within that sixty-day period.
+
+  8. This License Agreement shall be governed by and interpreted in all
+     respects by the law of the State of Virginia, excluding conflict of law
+     provisions. Nothing in this Agreement shall be deemed to create any
+     relationship of agency, partnership, or joint venture between CNRI and
+     Licensee.
+
+  9. By clicking on the "ACCEPT" button where indicated, or by installing,
+     copying or otherwise using the Software, Licensee agrees to be bound by
+     the terms and conditions of this License Agreement.
+
+                               [ACCEPT BUTTON]
+
+B. HISTORY OF THE SOFTWARE
+=======================================================
+
+JPython was created in late 1997 by Jim Hugunin. Jim was also the
+primary developer while he was at CNRI. In February 1999 Barry Warsaw
+took over as primary developer and released JPython version 1.1.
+
+In October 2000 Barry helped move the software to SourceForge
+where it was renamed to Jython. Jython 2.0 and 2.1 were developed
+under the Jython specific license below.
+
+From the 2.2 release on, Jython contributors have signed
+Python Software Foundation contributor agreements and releases are
+covered under the Python Software Foundation license version 2.
+
+The standard library is covered by the Python Software Foundation
+license as well. See the Lib/LICENSE file for details.
+
+The zxJDBC package was written by Brian Zimmer and originally licensed
+under the GNU Public License.  The package is now covered by the Jython
+Software License.
+
+The command line interpreter is covered by the Apache Software
+License.  See the org/apache/LICENSE file for details.
+

Added: geronimo/sandbox/failover/grinder-3.0.1/LICENSE-PicoContainer
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/LICENSE-PicoContainer?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/LICENSE-PicoContainer (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/LICENSE-PicoContainer Mon Sep 29 13:19:05 2008
@@ -0,0 +1,28 @@
+Copyright (c) 2003-2005, PicoContainer Organization
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+  Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer. 
+
+  Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution. 
+
+  Neither the name of the PicoContainer Organization nor the names of its 
+  contributors may be used to endorse or promote products derived from this 
+  software without specific prior written permission. 
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+POSSIBILITY OF SUCH DAMAGE.

Added: geronimo/sandbox/failover/grinder-3.0.1/LICENSE-jEditSyntax
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/LICENSE-jEditSyntax?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/LICENSE-jEditSyntax (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/LICENSE-jEditSyntax Mon Sep 29 13:19:05 2008
@@ -0,0 +1,11 @@
+The jEdit 2.2.1 syntax highlighting package contains code that is
+Copyright 1998-1999 Slava Pestov, Artur Biesiadowski, Clancy Malcolm,
+Jonathan Revusky, Juha Lindfors and Mike Dillon.
+
+You may use and modify this package for any purpose. Redistribution is
+permitted, in both source and binary form, provided that this notice
+remains intact in all source distributions of this package.
+
+-- Slava Pestov
+25 September 2000
+<sp@gjt.org>

Added: geronimo/sandbox/failover/grinder-3.0.1/README
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/README?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/README (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/README Mon Sep 29 13:19:05 2008
@@ -0,0 +1,16 @@
+Please refer to the file LICENSE for license and copyright
+information.
+
+The Grinder is a load testing framework that makes it easy to run a
+distributed test using many load injector machines. Test scripts are
+written in Jython, and HTTP scripts can be recorded easily from a
+browser session. The Grinder is freely available under a BSD-style
+open-source license.
+
+The Grinder's home page is http://grinder.sourceforge.net. This site
+contains the latest version of the user manual for The Grinder.
+
+The site also contains details of mailing lists that you might like to
+join. In particular, if you have questions that are not answered by
+the documentation, please try asking on the grinder-use mail list
+(http://grinder.sourceforge.net/support.html).

Added: geronimo/sandbox/failover/grinder-3.0.1/bin/agent
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/bin/agent?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/bin/agent (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/bin/agent Mon Sep 29 13:19:05 2008
@@ -0,0 +1,3 @@
+#!/bin/bash
+cd $(dirname "$0")/..
+java -cp lib/grinder.jar net.grinder.Grinder grinder.properties
\ No newline at end of file

Propchange: geronimo/sandbox/failover/grinder-3.0.1/bin/agent
------------------------------------------------------------------------------
    svn:executable = *

Added: geronimo/sandbox/failover/grinder-3.0.1/bin/console
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/bin/console?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/bin/console (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/bin/console Mon Sep 29 13:19:05 2008
@@ -0,0 +1,3 @@
+#!/bin/bash
+cd $(dirname "$0")/..
+java -cp lib/grinder.jar net.grinder.Console
\ No newline at end of file

Propchange: geronimo/sandbox/failover/grinder-3.0.1/bin/console
------------------------------------------------------------------------------
    svn:executable = *

Added: geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/AUTHORS
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/AUTHORS?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/AUTHORS (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/AUTHORS Mon Sep 29 13:19:05 2008
@@ -0,0 +1 @@
+Phillip Mayhew
\ No newline at end of file

Added: geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/LICENSE
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/LICENSE?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/LICENSE (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/LICENSE Mon Sep 29 13:19:05 2008
@@ -0,0 +1,33 @@
+Copyright (c) 2006 Phillip Mayhew
+All rights reserved.
+
+Additional contributions have been made by individuals listed in the
+AUTHORS file supplied with this distribution. Each individual's claim
+to copyright is asserted in the files to which they contributed.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+    * Neither the names of the copyright holders nor the names of the
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.

Added: geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/MQConnector.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/MQConnector.java?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/MQConnector.java (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/MQConnector.java Mon Sep 29 13:19:05 2008
@@ -0,0 +1,163 @@
+package org.rextency.mq;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+
+
+import com.ibm.mq.*;
+import com.ibm.mq.MQPutMessageOptions;
+import org.rextency.mq.MQMsg;
+/**
+ * An MQ Class, for sending MQ messages
+ *
+ * @author Phillip Mayhew
+ * @version $Revision: 3298 $
+ */
+public class MQConnector {
+
+
+  private static Pattern s_pathParser =
+    Pattern.compile("([^?#]*)(\\?([^#]*))?(#(.*))?");
+
+  private MQQueueManager qmgr;
+  private MQQueue squ;
+  private MQQueue rqu;
+  private int GMO_Options = MQC.MQGMO_WAIT | MQC.MQMO_MATCH_CORREL_ID;
+  private int GMO_WaitInterval = 120000;
+
+  public MQConnector() 
+  {
+
+  }
+
+  public boolean init(String pHostname, String pPort, String pChannel, MQMsg msg)
+  {
+  	  MQEnvironment.hostname = pHostname;
+  	  MQEnvironment.port = Integer.parseInt(pPort);
+  	  MQEnvironment.channel = pChannel;
+	  MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES);
+
+  	try
+  	{
+      System.out.println("QueueManager: " + msg.getQueueManager());
+  	  System.out.println("RequestQueue: " + msg.getRequestQueue());
+      System.out.println("ReplyQueue: " + msg.getReplyQueue());
+            
+  	  if((msg.getQueueManager()).length() > 0)
+  	     qmgr = new MQQueueManager(msg.getQueueManager(), MQC.MQCNO_FASTPATH_BINDING);
+  	  else
+  	  	  return false;
+  	  
+  	  if((msg.getRequestQueue()).length() > 0)
+  	     squ = qmgr.accessQueue(msg.getRequestQueue(),msg.getOpenOptions());
+
+  	  if((msg.getReplyQueue()).length() > 0)
+  	     rqu = qmgr.accessQueue(msg.getReplyQueue(),msg.getReadOptions());
+  	 
+  	} 
+  	
+  	catch(Exception e)
+  	{ System.out.println("Error in: MQConnector.init(): " + e.getMessage()); }
+  	
+  	return true;
+  }
+  public void SendMessage(MQMsg msg)
+  {
+  	  System.out.println("ReplyToQueue: " + msg.getReplyToQueue());
+      System.out.println("ReplyToQueueManager: " + msg.getReplyToQueueManager());
+  	try
+  	{
+    	MQPutMessageOptions pmo = new MQPutMessageOptions();
+    	MQMessage rqMessage = new MQMessage();
+    	
+    	rqMessage.format = MQC.MQFMT_STRING;
+    	rqMessage.replyToQueueName = msg.getReplyToQueue();
+    	rqMessage.replyToQueueManagerName = msg.getReplyToQueueManager();
+    	rqMessage.messageType = MQC.MQMT_REQUEST;
+    	rqMessage.persistence = MQC.MQPER_NOT_PERSISTENT;
+    	
+    	pmo.options = MQC.MQPMO_NEW_MSG_ID;
+    	
+    	rqMessage.writeString(msg.getMessage());
+    	squ.put(rqMessage, pmo);
+    	
+    	msg.setCorrelationID(new String(rqMessage.messageId));
+    	squ.close();
+  	}
+  	catch(Exception e)
+  	{ System.out.println("Exception occured during MQConnector.SendMessage(): " + e.getMessage()); }
+  }
+  
+  public String GetMessage(MQMsg msg)
+  {
+  	 String retVal = new String();
+  	 try
+  	 {
+  	  MQGetMessageOptions gmo = new MQGetMessageOptions();
+  	  gmo.options = this.GMO_Options;
+  	  gmo.waitInterval = this.GMO_WaitInterval;
+  	  
+  	  MQMessage rtMessage = new MQMessage();
+  	  rtMessage.correlationId = (msg.getCorrelationID()).getBytes();
+  	  System.out.println("CorrelationID: " + byteArrayToHexString((msg.getCorrelationID()).getBytes()));
+  	  rqu.get(rtMessage, gmo);  	  
+  	  retVal = rtMessage.readString(rtMessage.getMessageLength());
+  	  rqu.close();
+  	 }
+  	catch(Exception e)
+	  	{ System.out.println("Exception occured during MQConnector.GetMessage(): " + e.getMessage()); }
+  	 
+  	  return retVal; 	  
+  }
+
+  public void finish()
+  {
+  	 try
+  	 {
+  	   	  qmgr.disconnect();
+  	 }
+  	catch(Exception e)
+	  	{ System.out.println("Exception occured during MQConnector.finish(): " + e.getMessage()); }
+  	 
+  }
+  public String toString() {
+    final StringBuffer result = new StringBuffer("MQMessage");
+
+    return result.toString();
+  }
+
+  private String byteArrayToHexString(byte in[]) 
+  {
+    byte ch = 0x00;
+    int i = 0; 
+
+    if (in == null || in.length <= 0)
+        return null;
+     
+    String pseudo[] = {"0", "1", "2","3","4", "5", "6", "7", 
+					   "8", "9", "A", "B", "C", "D", "E","F"};
+
+    StringBuffer out = new StringBuffer(in.length * 2);  
+    
+    while (i < in.length) 
+    {
+       ch = (byte) (in[i] & 0xF0); // Strip off high nibble
+       ch = (byte) (ch >>> 4);     // shift the bits down
+       ch = (byte) (ch & 0x0F);    // must do this is high order bit is on!
+       out.append(pseudo[ (int) ch]); // convert the nibble to a String Character
+       ch = (byte) (in[i] & 0x0F); // Strip off low nibble 
+       out.append(pseudo[ (int) ch]); // convert the nibble to a String Character
+       i++;
+    }
+
+    String rslt = new String(out);
+    return rslt;
+  } 
+}

Added: geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/MQMsg.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/MQMsg.java?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/MQMsg.java (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/MQMsg.java Mon Sep 29 13:19:05 2008
@@ -0,0 +1,100 @@
+package org.rextency.mq;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.ibm.mq.*;
+
+/**
+ * An MQ message class
+ *
+ * @author Phillip Mayhew
+ * @version $Revision: 3298 $
+ */
+public class MQMsg {
+
+  private static Pattern s_pathParser =
+    Pattern.compile("([^?#]*)(\\?([^#]*))?(#(.*))?");
+
+
+  private String ReplyQueue;
+  private String ReplyToQueue;
+  private String RequestQueue;
+  private String QueueManager;
+  private String ReplyToQueueManager;
+  private String Message;
+  private String CorrelationID;
+  
+  private int ReadOptions = MQC.MQOO_INPUT_AS_Q_DEF;
+  private int OpenOptions = MQC.MQOO_OUTPUT;
+  
+  public MQMsg() 
+  {
+  }
+  
+  public void setCorrelationID(String pCorrelation_ID)
+  { this.CorrelationID = pCorrelation_ID; }
+  
+  public String getCorrelationID()
+  { return this.CorrelationID; }
+  
+  public void setReadOptions(int pRead_Options)
+  { this.ReadOptions = pRead_Options; }
+
+  public void setOpenOptions(int pOpen_Options)
+  { this.OpenOptions = pOpen_Options; }
+  
+  public int getReadOptions()
+  { return this.ReadOptions; }
+
+  public int getOpenOptions()
+  { return this.OpenOptions; }
+  
+  public void setReplyQueue(String pReply_Queue)
+  { this.ReplyQueue = pReply_Queue; }
+
+  public void setReplyToQueue(String pReply_To_Queue)
+  { this.ReplyToQueue = pReply_To_Queue; }
+
+  public void setReplyToQueueManager(String pReply_To_Queue_Manager)
+  { this.ReplyToQueueManager = pReply_To_Queue_Manager; }
+  
+  public void setRequestQueue(String pRequest_Queue)
+  { this.RequestQueue = pRequest_Queue; }
+
+  public void setQueueManager(String pQueue_Manager)
+  { this.QueueManager = pQueue_Manager; }
+
+  public void setMessage(String pMessage)
+  { this.Message = pMessage; }
+
+  public String getReplyQueue()
+  { return this.ReplyQueue;}
+
+  public String getReplyToQueue()
+  { return this.ReplyToQueue;}  	  
+
+  public String getReplyToQueueManager()
+  { return this.ReplyToQueueManager;}  
+    
+  public String getRequestQueue()
+  { return this.RequestQueue;}  	  
+  
+  public String getQueueManager()
+  { return this.QueueManager;}
+  
+  public String getMessage()
+  { return this.Message;}
+
+  public String toString() {
+    final StringBuffer result = new StringBuffer("MQMessage");
+
+    return result.toString();
+  }
+
+}

Added: geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/README
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/README?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/README (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/README Mon Sep 29 13:19:05 2008
@@ -0,0 +1,27 @@
+Package	Name		Included
+--------------------------------------------------
+org.rextency.mq		Yes
+com.ibm.mqbind.jar	No
+connector.jar		No
+com.ibm.mq.jar		No
+
+Intro:
+This is a library to help add MQ message sending functionality to The Grinder.
+The whole idea behind this was to make it easy to implement load testing with MQ messages. While 
+org.rextency.mq library makes almost every MQ parameter adjustable, not all are.  
+If you need to extend the functionality of the library, the source code has been included. If you 
+make any changes and would like to have the changes submitted as part of the package please contact
+me with the changes you have made.  Also, if there are any bugs you find in the implementation please
+contact me.
+
+Required Files:
+The three JAR files not included, are IBM jar files.  If you have WebSphere MQ installed, then these JAR
+files by default are located in:  x:\Program Files\IBM\WebSphere MQ\Java\lib on a Windows machine.
+
+Usage:
+Simply add ALL FOUR JAR files to your Grinder agent classpath and everything should be smooth sailing.
+I've also included a sample script to help get you started.
+
+Contact:
+Phillip Mayhew
+rextencygr@gmail.com
\ No newline at end of file

Added: geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/mq.py
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/mq.py?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/mq.py (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/mq.py Mon Sep 29 13:19:05 2008
@@ -0,0 +1,31 @@
+# A simple example using the MQ plugin that sends a mq message
+# and gets a response
+#
+# 
+
+from net.grinder.script.Grinder import grinder
+from net.grinder.script import Test
+from com.ibm.mq import *      
+from org.rextency.mq import MQMsg                 
+from org.rextency.mq import MQConnector
+
+mqTest = Test(1,"MQSend Test")
+mqex = mqTest.wrap(MQConnector())
+mqmessage1 = MQMsg()
+log = grinder.logger.output
+
+class TestRunner:
+    def __call__(self):
+    	mqmessage1.setReplyQueue("REPLYQ")
+    	mqmessage1.setReplyToQueue("REPLYQ")
+    	mqmessage1.setRequestQueue("REQUEST_Q")
+    	mqmessage1.setQueueManager("QueueManager")
+    	mqmessage1.setReplyToQueueManager("ReplyToQueueManager")
+    	mqmessage1.setMessage("MyMessage MyData 010101")	    	
+        mqex.init("myserver.com", "9050", "CHANNEL1", mqmessage1)   
+        mqex.SendMessage(mqmessage1)
+        log(">>>")
+        log(mqex.GetMessage(mqmessage1))
+        log(">>>")
+        mqex.finish() 
+

Added: geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/org.rextency.mq.jar
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/org.rextency.mq.jar?rev=700238&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/sandbox/failover/grinder-3.0.1/contrib/mq/org.rextency.mq.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/sandbox/failover/grinder-3.0.1/etc/httpToJythonScript.xsl
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/etc/httpToJythonScript.xsl?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/etc/httpToJythonScript.xsl (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/etc/httpToJythonScript.xsl Mon Sep 29 13:19:05 2008
@@ -0,0 +1,671 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright (C) 2006, 2007 Philip Aston
+ Copyright (C) 2007 Venelin Mitov
+ All rights reserved.
+
+ This file is part of The Grinder software distribution. Refer to
+ the file LICENSE which is part of The Grinder distribution for
+ licensing details. The Grinder distribution is available on the
+ Internet at http:grinder.sourceforge.net/
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+
+<xsl:stylesheet
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+  xmlns:g="http://grinder.sourceforge.net/tcpproxy/http/1.0"
+  xmlns:helper="net.grinder.plugin.http.tcpproxyfilter.XSLTHelper">
+
+  <xsl:output method="text"/>
+  <xsl:strip-space elements="*"/>
+
+
+  <xsl:template match="g:http-recording">
+    <xsl:value-of select="helper:resetIndent()"/>
+    <xsl:value-of select="concat('# ', g:metadata/g:version)"/>
+
+    <xsl:text>
+# HTTP script recorded by TCPProxy at </xsl:text>
+    <xsl:value-of select="helper:formatTime(g:metadata/g:time)"/>
+
+    <xsl:text>
+
+from net.grinder.script import Test
+from net.grinder.script.Grinder import grinder
+from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest
+from HTTPClient import NVPair
+connectionDefaults = HTTPPluginControl.getConnectionDefaults()
+httpUtilities = HTTPPluginControl.getHTTPUtilities()
+
+# To use a proxy server, uncomment the next line and set the host and port.
+# connectionDefaults.setProxyServer("localhost", 8001)
+
+# These definitions at the top level of the file are evaluated once,
+# when the worker process is started.
+</xsl:text>
+
+    <xsl:apply-templates select="*" mode="file"/>
+
+    <xsl:value-of select="helper:newLine()"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>class TestRunner:</xsl:text>
+    <xsl:value-of select="helper:changeIndent(1)"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>"""A TestRunner instance is created for each worker thread."""</xsl:text>
+    <xsl:value-of select="helper:newLine()"/>
+
+    <xsl:apply-templates select="*" mode="TestRunner"/>
+
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>def __call__(self):</xsl:text>
+    <xsl:value-of select="helper:changeIndent(1)"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>"""This method is called for every run performed by the worker thread."""</xsl:text>
+
+    <xsl:apply-templates select="*" mode="__call__"/>
+
+    <xsl:if test="not(//g:request)">
+      <xsl:value-of select="helper:newLine()"/>
+      <xsl:value-of select="helper:newLineAndIndent()"/>
+      <xsl:text># Empty recording!</xsl:text>
+      <xsl:value-of select="helper:newLineAndIndent()"/>
+      <xsl:text>pass</xsl:text>
+    </xsl:if>
+
+    <xsl:value-of select="helper:newLine()"/>
+
+    <xsl:value-of select="helper:changeIndent(-2)"/>
+    <xsl:value-of select="helper:newLine()"/>
+    <xsl:value-of select="helper:newLine()"/>
+
+    <xsl:text>def instrumentMethod(test, method_name, c=TestRunner):</xsl:text>
+    <xsl:value-of select="helper:changeIndent(1)"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>"""Instrument a method with the given Test."""</xsl:text>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>unadorned = getattr(c, method_name)</xsl:text>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>import new</xsl:text>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>method = new.instancemethod(test.wrap(unadorned), None, c)</xsl:text>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>setattr(c, method_name, method)</xsl:text>
+    <xsl:value-of select="helper:changeIndent(-1)"/>
+    <xsl:value-of select="helper:newLine()"/>
+
+    <xsl:apply-templates select="*" mode="instrumentMethod"/>
+    <xsl:value-of select="helper:newLine()"/>
+
+  </xsl:template>
+
+
+  <xsl:template match="g:base-uri" mode="file">
+    <xsl:value-of select="helper:newLine()"/>
+    <xsl:value-of select="concat(@uri-id, ' = ')"/>
+    <xsl:text>'</xsl:text>
+    <xsl:value-of select="concat(g:scheme, '://', g:host, ':', g:port)"/>
+    <xsl:text>'</xsl:text>
+
+    <xsl:if test="not(following::g:base-uri)">
+      <xsl:value-of select="helper:newLine()"/>
+    </xsl:if>
+  </xsl:template>
+
+
+  <xsl:template match="g:common-headers[@headers-id='defaultHeaders']" mode="file">
+    <xsl:value-of select="helper:newLine()"/>
+    <xsl:text>connectionDefaults.defaultHeaders = \</xsl:text>
+    <xsl:call-template name="tuple-list"/>
+    <xsl:value-of select="helper:newLine()"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:common-headers" mode="file">
+    <xsl:value-of select="helper:newLine()"/>
+    <xsl:value-of select="concat(@headers-id, '= \')"/>
+    <xsl:call-template name="tuple-list"/>
+    <xsl:value-of select="helper:newLine()"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:request" mode="generate-test-number">
+    <!--  Numbers sequentially follow the requests' page test number. -->
+
+    <xsl:variable name="request-number"
+                  select="count(preceding-sibling::g:request) + 1"/>
+
+    <xsl:variable name="page-test-number">
+      <xsl:apply-templates select=".." mode="generate-test-number"/>
+    </xsl:variable>
+
+    <xsl:value-of select="$page-test-number + $request-number"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:request" mode="file">
+    <xsl:variable name="request-number">
+      <xsl:apply-templates select ="." mode="generate-test-number"/>
+    </xsl:variable>
+    <xsl:variable name="request-name" select="concat('request', $request-number)"/>
+
+    <xsl:if test="not(preceding::g:request)">
+      <xsl:value-of select="helper:newLineAndIndent()"/>
+      <xsl:text># Create an HTTPRequest for each request, then replace the</xsl:text>
+      <xsl:value-of select="helper:newLineAndIndent()"/>
+      <xsl:text># reference to the HTTPRequest with an instrumented version.</xsl:text>
+      <xsl:value-of select="helper:newLineAndIndent()"/>
+      <xsl:text># You can access the unadorned instance using </xsl:text>
+      <xsl:value-of select="$request-name"/>
+      <xsl:text>.__target__.</xsl:text>
+    </xsl:if>
+
+    <xsl:for-each select="g:comment">
+      <xsl:value-of select="helper:newLineAndIndent()"/>
+      <xsl:text># </xsl:text>
+      <xsl:value-of select="."/>
+    </xsl:for-each>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:value-of select="$request-name"/>
+
+    <xsl:value-of select="concat(' = HTTPRequest(url=', g:uri/@extends)"/>
+    <xsl:value-of select="concat(', headers=', g:headers/@extends, ')')"/>
+
+    <xsl:if test="g:body/g:file">
+      <xsl:value-of select="helper:newLineAndIndent()"/>
+      <xsl:value-of select="$request-name"/>
+      <xsl:text>.setDataFromFile('</xsl:text>
+      <xsl:value-of select="g:body/g:file"/>
+      <xsl:text>')</xsl:text>
+    </xsl:if>
+
+    <xsl:value-of select="helper:newLine()"/>
+    <xsl:value-of select="concat($request-name, ' = Test(')"/>
+    <xsl:value-of select="concat($request-number, ', ')"/>
+    <xsl:value-of select="helper:quoteForPython(g:description)"/>
+    <xsl:value-of select="concat(').wrap(', $request-name, ')')"/>
+
+    <xsl:value-of select="helper:newLine()"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:request[position() = 1 and position() = last()]" mode="page-description">
+    <xsl:value-of select="g:description"/>
+  </xsl:template>
+
+  <xsl:template match="g:request[position() = 1]" mode="page-description">
+    <xsl:value-of select="g:description"/>
+
+    <xsl:variable name="request-number">
+      <xsl:apply-templates select ="." mode="generate-test-number"/>
+    </xsl:variable>
+
+    <xsl:choose>
+      <xsl:when test="position() = last()">
+        <xsl:value-of select="concat(' (request ', $request-number, ')')"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="concat(' (requests ', $request-number, '-')"/>
+        <xsl:apply-templates select ="following-sibling::g:request[position()=last()]" mode="generate-test-number"/>
+        <xsl:text>)</xsl:text>
+      </xsl:otherwise>
+    </xsl:choose>
+
+  </xsl:template>
+
+
+  <xsl:template match="g:request" mode="page-function">
+    <xsl:apply-templates select="g:sleep-time" mode="request"/>
+
+    <xsl:apply-templates select=".//g:token-reference[not(../../g:response)]" mode="request"/>
+
+    <xsl:apply-templates select="g:annotation" mode="request"/>
+
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:if test="position() = 1">
+      <xsl:text>result = </xsl:text>
+    </xsl:if>
+    <xsl:text>request</xsl:text>
+    <xsl:apply-templates select="." mode="generate-test-number"/>
+    <xsl:text>.</xsl:text>
+    <xsl:value-of select="g:method"/>
+    <xsl:text>(</xsl:text>
+
+    <xsl:apply-templates select="g:uri/g:path" mode="request-uri"/>
+    <xsl:apply-templates select="g:uri/g:query-string" mode="request-uri"/>
+    <xsl:apply-templates select="g:uri/g:fragment" mode="request-uri"/>
+    <xsl:apply-templates select="g:body" mode="request-uri"/>
+    <xsl:apply-templates select="g:headers" mode="request-uri"/>
+
+    <xsl:text>)</xsl:text>
+
+    <xsl:apply-templates select="g:response/g:token-reference" mode="request"/>
+    <xsl:value-of select="helper:newLine()"/>
+
+  </xsl:template>
+
+
+  <!-- Spacing for page test numbers. -->
+  <xsl:variable name="page-test-number-increment" select="100"/>
+
+
+  <xsl:template match="g:page" mode="generate-number">
+    <!--  We number page tests 100, 200, ... and request tests 101, 102; 201,
+          202, ... There's a correspondance between request and page test
+          numbers (request test numbers sequentially follow their page Test
+          number). We cope gracefully with pages that have more than 100 tests.
+          The page number is the page test number / 100.
+     -->
+
+    <xsl:value-of select=
+      "count(preceding::g:page) +
+       count(
+         preceding::g:page/g:request[position() mod $page-test-number-increment = 0])
+       + 1"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:page" mode="generate-test-number">
+    <!--  We ignore the @page-id attribute, and calculate our own number. -->
+
+    <xsl:variable name="page-number">
+      <xsl:apply-templates select="." mode="generate-number"/>
+    </xsl:variable>
+
+    <xsl:value-of select="$page-number * $page-test-number-increment"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:page" mode="generate-function-name">
+    <xsl:text>page</xsl:text>
+    <xsl:apply-templates select="." mode="generate-number"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:page" mode="file">
+    <xsl:apply-templates select="*" mode="file"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:page" mode="TestRunner">
+    <xsl:apply-templates select="*" mode="TestRunner"/>
+
+    <xsl:variable name="page-function-name">
+      <xsl:apply-templates select="." mode="generate-function-name"/>
+    </xsl:variable>
+
+    <xsl:if test="not(preceding::g:page)">
+      <xsl:value-of select="helper:newLineAndIndent()"/>
+      <xsl:text># A method for each recorded page.</xsl:text>
+    </xsl:if>
+
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:value-of select="concat('def ', $page-function-name, '(self):')"/>
+    <xsl:value-of select="helper:changeIndent(1)"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>"""</xsl:text>
+    <xsl:apply-templates select="*" mode="page-description"/>
+    <xsl:text>."""</xsl:text>
+    <xsl:apply-templates select="*" mode="page-function"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>return result</xsl:text>
+    <xsl:value-of select="helper:changeIndent(-1)"/>
+    <xsl:value-of select="helper:newLine()"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:page" mode="instrumentMethod">
+    <xsl:variable name="page-number">
+      <xsl:apply-templates select="." mode="generate-number"/>
+    </xsl:variable>
+
+    <xsl:variable name="page-test-number">
+      <xsl:apply-templates select="." mode="generate-test-number"/>
+    </xsl:variable>
+
+    <xsl:variable name="page-function-name">
+      <xsl:apply-templates select="." mode="generate-function-name"/>
+    </xsl:variable>
+
+    <xsl:if test="not(preceding::g:page)">
+      <xsl:value-of select="helper:newLineAndIndent()"/>
+      <xsl:text># Replace each method with an instrumented version.</xsl:text>
+      <xsl:value-of select="helper:newLineAndIndent()"/>
+      <xsl:text># You can call the unadorned method using </xsl:text>
+      <xsl:text>self.</xsl:text>
+      <xsl:value-of select="$page-function-name"/>
+      <xsl:text>.__target__().</xsl:text>
+    </xsl:if>
+
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>instrumentMethod(Test(</xsl:text>
+    <xsl:value-of select="$page-test-number"/>
+    <xsl:text>, 'Page </xsl:text>
+    <xsl:value-of select="$page-number"/>
+    <xsl:text>'), '</xsl:text>
+    <xsl:value-of select="$page-function-name"/>
+    <xsl:text>')</xsl:text>
+  </xsl:template>
+
+
+  <xsl:template match="g:page" mode="__call__">
+    <xsl:apply-templates select="*" mode="__call__"/>
+
+    <xsl:variable name="page-function-name">
+      <xsl:apply-templates select="." mode="generate-function-name"/>
+    </xsl:variable>
+
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:value-of select="concat('self.', $page-function-name, '()')"/>
+    <xsl:call-template name="indent">
+      <xsl:with-param name="characters" select="12-string-length($page-function-name)"/>
+    </xsl:call-template>
+    <xsl:text># </xsl:text>
+    <xsl:apply-templates select="*" mode="page-description"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:sleep-time[../preceding-sibling::g:request]" mode="request">
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:value-of select="concat('grinder.sleep(', ., ')')"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:annotation" mode="request">
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text># </xsl:text>
+    <xsl:value-of select ="."/>
+  </xsl:template>
+
+
+  <!--  First sleep() for a page appears in the __call__ block. -->
+  <xsl:template match="g:sleep-time[not(../preceding-sibling::g:request)]" mode="__call__">
+    <xsl:value-of select="helper:newLine()"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:value-of select="concat('grinder.sleep(', ., ')')"/>
+  </xsl:template>
+
+
+  <!-- token-reference with a new value. -->
+  <xsl:template match="g:token-reference[g:new-value]" mode="request">
+    <xsl:apply-templates select=".//g:conflicting-value" mode="request"/>
+
+    <xsl:variable name="token-id" select="@token-id"/>
+    <xsl:variable name="name" select="//g:token[@token-id=$token-id]/g:name"/>
+
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>self.</xsl:text>
+    <xsl:value-of select="$token-id"/>
+    <xsl:text> = \</xsl:text>
+
+    <xsl:value-of select="helper:changeIndent(1)"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+
+    <xsl:choose>
+      <xsl:when test="@source">
+        <xsl:text>httpUtilities.</xsl:text>
+        <xsl:choose>
+          <xsl:when test="@source = 'RESPONSE_LOCATION_HEADER_PATH_PARAMETER' or
+                          @source = 'RESPONSE_LOCATION_HEADER_QUERY_STRING'">
+            <xsl:text>valueFromLocationURI(</xsl:text>
+          </xsl:when>
+          <xsl:when test="@source = 'RESPONSE_BODY_HIDDEN_INPUT'">
+            <xsl:text>valueFromHiddenInput(</xsl:text>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:text>valueFromBodyURI(</xsl:text>
+          </xsl:otherwise>
+        </xsl:choose>
+
+        <xsl:value-of select="helper:quoteForPython($name)"/>
+        <xsl:text>)</xsl:text>
+
+        <xsl:text> # </xsl:text>
+        <xsl:value-of select="helper:quoteForPython(helper:summariseAsLine(g:new-value, 40))"/>
+        <xsl:value-of select="helper:changeIndent(-1)"/>
+      </xsl:when>
+
+      <xsl:otherwise>
+        <xsl:value-of select="helper:quoteForPython(g:new-value)"/>
+        <xsl:value-of select="helper:changeIndent(-1)"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="g:conflicting-value[not(preceding-sibling::g:conflicting-value)]" mode="request">
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text># </xsl:text>
+    <xsl:value-of select="count(../*)"/>
+    <xsl:text> different values for </xsl:text>
+    <xsl:value-of select="../@token-id"/>
+    <xsl:text> found in response</xsl:text>
+
+    <xsl:choose>
+      <xsl:when test="preceding-sibling::g:new-value">
+        <xsl:text>, using the first one.</xsl:text>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:text>; the first matched</xsl:text>
+        <xsl:value-of select="helper:newLineAndIndent()"/>
+        <xsl:text># the last known value of </xsl:text>
+        <xsl:value-of select="../@token-id"/>
+        <xsl:text> - don't update the variable.</xsl:text>
+      </xsl:otherwise>
+    </xsl:choose>
+
+  </xsl:template>
+
+  <xsl:template match="g:path" mode="request-uri">
+    <!-- Open quote here, last g:text or g:token-reference will close. -->
+    <xsl:text>'</xsl:text>
+    <xsl:apply-templates mode="request-uri"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:query-string" mode="request-uri">
+    <xsl:text> +</xsl:text>
+    <xsl:value-of select="helper:changeIndent(1)"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <!-- Open quote here, last g:text or g:token-reference will close. -->
+    <xsl:text>'?</xsl:text>
+    <xsl:value-of select="helper:changeIndent(-1)"/>
+    <xsl:apply-templates mode="request-uri"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:path/g:text|g:query-string/g:text" mode="request-uri">
+    <xsl:variable
+      name="preceding-sibling-name"
+      select="local-name(preceding-sibling::node()[1])"/>
+
+    <xsl:if test="position() != 1 and $preceding-sibling-name != 'text'">
+      <xsl:text> +</xsl:text>
+      <xsl:value-of select="helper:changeIndent(1)"/>
+      <xsl:value-of select="helper:newLineAndIndent()"/>
+      <xsl:text>'</xsl:text>
+      <xsl:value-of select="helper:changeIndent(-1)"/>
+    </xsl:if>
+
+    <xsl:value-of select="helper:escape(.)"/>
+
+    <xsl:if test="position() = last()">
+      <!--  Final sibling, close quotes. -->
+      <xsl:text>'</xsl:text>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="g:path/g:token-reference|g:query-string/g:token-reference" mode="request-uri">
+    <xsl:variable name="token-id" select="@token-id"/>
+
+    <!-- A previous token-reference will have defined a variable. -->
+    <xsl:value-of select="//g:token[@token-id=$token-id]/g:name"/>
+    <xsl:text>=' +</xsl:text>
+
+    <xsl:value-of select="helper:changeIndent(1)"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>self.</xsl:text>
+    <xsl:value-of select="$token-id"/>
+    <xsl:value-of select="helper:changeIndent(-1)"/>
+
+  </xsl:template>
+
+
+  <!-- Browsers, and HTTPClient, strip fragments from URIs they send to the
+  wire, so we don't bother putting it into the script. If a browser was used
+  for the TCPProxy recording, there won't be any fragments in the incoming
+  stream anyway. -->
+  <xsl:template match="g:fragment" mode="request-uri"/>
+
+  <xsl:template match="g:body/g:binary" mode="request-uri">
+    <xsl:text>,</xsl:text>
+    <xsl:value-of select="helper:changeIndent(1)"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:value-of select="helper:base64ToPython(.)"/>
+    <xsl:value-of select="helper:changeIndent(-1)"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:body/g:file" mode="request-uri">
+
+    <!-- Data file is read at top level. We provide a parameter here
+    to disambiguate the POST call if per-request headers are
+    specified.-->
+    <xsl:text>,</xsl:text>
+    <xsl:value-of select="helper:changeIndent(1)"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>request</xsl:text>
+    <xsl:apply-templates select="../.." mode="generate-test-number"/>
+    <xsl:text>.__target__.data</xsl:text>
+    <xsl:value-of select="helper:changeIndent(-1)"/>
+
+ </xsl:template>
+
+
+  <xsl:template match="g:body/g:form" mode="request-uri">
+    <xsl:text>,</xsl:text>
+    <xsl:call-template name="tuple-list"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:body/g:escaped-string" mode="request-uri">
+    <xsl:text>,</xsl:text>
+    <xsl:value-of select="helper:changeIndent(1)"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:value-of select="helper:quoteEOLEscapedStringForPython(.)"/>
+    <xsl:value-of select="helper:changeIndent(-1)"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:body/g:content-type" mode="request-uri"/>
+
+
+  <xsl:template match="g:headers[node()]" mode="request-uri">
+    <xsl:if test="../g:method='GET' or
+                  ../g:method='HEAD' or
+                  (../g:method='OPTIONS' or
+                   ../g:method='POST' or
+                   ../g:method='PUT') and not(../g:body)">
+      <!-- No keyword arguments for methods, insert dummy parameter. -->
+      <!-- The query string argument is alwasy null for GET, HEAD, as we pass
+           query information via the uri. -->
+      <xsl:text>, None</xsl:text>
+    </xsl:if>
+
+    <xsl:text>,</xsl:text>
+
+    <xsl:call-template name="tuple-list"/>
+  </xsl:template>
+
+
+  <xsl:template match="g:header|g:parameter|g:form-field" mode="tuple">
+    <xsl:call-template name="indent-tuple-entry"/>
+
+    <xsl:text>NVPair(</xsl:text>
+    <xsl:value-of select="helper:quoteForPython(@name)"/>
+    <xsl:text>, </xsl:text>
+    <xsl:value-of select="helper:quoteForPython(@value)"/>
+    <xsl:text>),</xsl:text>
+  </xsl:template>
+
+  <xsl:template match="g:token-reference" mode="tuple">
+    <xsl:variable name="token-id" select="@token-id"/>
+    <xsl:variable name="name" select="//g:token[@token-id=$token-id]/g:name"/>
+
+    <xsl:call-template name="indent-tuple-entry"/>
+
+    <xsl:text>NVPair(</xsl:text>
+    <xsl:value-of select="helper:quoteForPython($name)"/>
+    <xsl:text>, </xsl:text>
+    <xsl:text>self.</xsl:text>
+    <xsl:value-of select="$token-id"/>
+    <xsl:text>),</xsl:text>
+  </xsl:template>
+
+  <xsl:template match="g:authorization/g:basic" mode="tuple">
+    <xsl:call-template name="indent-tuple-entry">
+      <xsl:with-param name="first-entry" select="not(../preceding-sibling::*)"/>
+    </xsl:call-template>
+
+    <xsl:text>httpUtilities.basicAuthorizationHeader(</xsl:text>
+    <xsl:value-of select="helper:quoteForPython(@userid)"/>
+    <xsl:text>, </xsl:text>
+    <xsl:value-of select="helper:quoteForPython(@password)"/>
+    <xsl:text>),</xsl:text>
+  </xsl:template>
+
+
+  <xsl:template name="tuple-list">
+    <xsl:value-of select="helper:changeIndent(1)"/>
+    <xsl:value-of select="helper:newLineAndIndent()"/>
+    <xsl:text>(</xsl:text>
+    <xsl:value-of select="helper:changeIndent(1)"/>
+
+    <xsl:apply-templates mode="tuple"/>
+
+    <xsl:text> )</xsl:text>
+    <xsl:value-of select="helper:changeIndent(-2)"/>
+  </xsl:template>
+
+
+  <xsl:template name="indent-tuple-entry">
+    <xsl:param name="first-entry" select="not(preceding-sibling::*)"/>
+
+    <xsl:choose>
+      <xsl:when test="$first-entry"><xsl:text> </xsl:text></xsl:when>
+      <xsl:otherwise><xsl:value-of select="helper:newLineAndIndent()"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+
+  <xsl:template name="indent">
+    <xsl:param name="characters" select="1"/>
+    <xsl:value-of select="substring('                      ', 0, $characters)"/>
+  </xsl:template>
+
+
+  <xsl:template match="text()|@*"/>
+  <xsl:template match="text()|@*" mode="__call__"/>
+  <xsl:template match="text()|@*" mode="file"/>
+  <xsl:template match="text()|@*" mode="page-function"/>
+  <xsl:template match="text()|@*" mode="page-description"/>
+  <xsl:template match="text()|@*" mode="request"/>
+  <xsl:template match="text()|@*" mode="request-uri"/>
+  <xsl:template match="text()|@*" mode="TestRunner"/>
+  <xsl:template match="text()|@*" mode="instrumentMethod"/>
+
+</xsl:stylesheet>

Added: geronimo/sandbox/failover/grinder-3.0.1/etc/httpToXML.xsl
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/etc/httpToXML.xsl?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/etc/httpToXML.xsl (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/etc/httpToXML.xsl Mon Sep 29 13:19:05 2008
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+  xmlns:g="http://grinder.sourceforge.net/tcpproxy/http/1.0"
+  xmlns:helper="net.grinder.plugin.http.tcpproxyfilter.XSLTHelper">
+
+  <xsl:output method="xml" indent="yes" />
+
+  <xsl:template match="node()|@*">
+    <xsl:copy>
+      <xsl:apply-templates select="@*"/>
+      <xsl:apply-templates/>
+    </xsl:copy>
+  </xsl:template>
+
+</xsl:stylesheet>

Added: geronimo/sandbox/failover/grinder-3.0.1/examples/amazon.py
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/examples/amazon.py?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/examples/amazon.py (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/examples/amazon.py Mon Sep 29 13:19:05 2008
@@ -0,0 +1,59 @@
+# Simple HTTP Web Service
+#
+# Calls an Amazon.com web service to obtain information about a book.
+#
+# To run this script you must install the standard Python xml module.
+# Here's one way to do that:
+#
+#   1. Download and install Jython 2.1
+#   2. Add the following line to grinder.properties (changing the path appropriately):
+#           grinder.jvm.arguments=-Dpython.home=c:/jython-2.1
+#   3. Add Jakarta Xerces (or one of the other parsers supported by
+#       the xml module) to your CLASSPATH.
+#
+# You may also need to obtain your own Amazon.com web service license
+# and replace the script text <insert license key here> with the
+# license key, although currently that doesn't appear to be necessary.
+
+from net.grinder.script.Grinder import grinder
+from net.grinder.script import Test
+from net.grinder.plugin.http import HTTPRequest
+from HTTPClient import NVPair
+from xml.dom import javadom
+from org.xml.sax import InputSource
+
+bookDetailsTest = Test(1, "Get book details from Amazon")
+parser = javadom.XercesDomImplementation()
+
+class TestRunner:
+    def __call__(self):
+        if grinder.runNumber > 0 or grinder.threadID > 0:
+            raise RuntimeError("Use limited to one thread, one run; "
+                               "see Amazon Web Services terms and conditions")
+
+        request = bookDetailsTest.wrap(
+            HTTPRequest(url="http://xml.amazon.com/onca/xml"))
+
+        parameters = (
+            NVPair("v", "1.0"),
+            NVPair("f", "xml"),
+            NVPair("t", "webservices-20"),
+            NVPair("dev-t", "<insert license key here>"),
+            NVPair("type", "heavy"),
+            NVPair("AsinSearch", "1904284000"),
+            )
+
+        bytes = request.POST(parameters).inputStream
+
+        # Parse results
+        document = parser.buildDocumentUrl(InputSource(bytes))
+
+        result = {}
+
+        for details in document.getElementsByTagName("Details"):
+            for detailName in ("ProductName", "SalesRank", "ListPrice"):
+                result[detailName] = details.getElementsByTagName(
+                    detailName)[0].firstChild.nodeValue
+
+        grinder.logger.output(str(result))
+

Added: geronimo/sandbox/failover/grinder-3.0.1/examples/console.py
URL: http://svn.apache.org/viewvc/geronimo/sandbox/failover/grinder-3.0.1/examples/console.py?rev=700238&view=auto
==============================================================================
--- geronimo/sandbox/failover/grinder-3.0.1/examples/console.py (added)
+++ geronimo/sandbox/failover/grinder-3.0.1/examples/console.py Mon Sep 29 13:19:05 2008
@@ -0,0 +1,27 @@
+# Test script which generates some random data for testing the
+# console.
+
+from net.grinder.script.Grinder import grinder
+from net.grinder.script import Test
+from java.util import Random
+from java.lang import Math
+
+r = Random()
+
+def doIt(v):
+    t = 500 + r.nextGaussian() * v * 10
+    grinder.sleep(int(t), 0)
+    pass
+
+tests = [ Test(i, "Test %s" % i).wrap(doIt) for i in range(0, 10) ]
+
+class TestRunner:
+    def __call__(self):
+        statistics = grinder.statistics
+
+#        statistics.delayReports = 1
+
+        for test in tests:
+            test(test.__test__.number)
+
+



Mime
View raw message