Author: arnaudsimon
Date: Fri Oct 10 05:06:07 2008
New Revision: 703430

URL: http://svn.apache.org/viewvc?rev=703430&view=rev
Log:
QPID-1346: Added .net perftest 

Added:
    incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/
    incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/C5-License.txt
    incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/C5.dll   (with 
props)
    incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/Plossum 
CommandLine.dll   (with props)
    incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/license.txt
    incubator/qpid/trunk/qpid/dotnet/client-010/perftest/
    incubator/qpid/trunk/qpid/dotnet/client-010/perftest/PerfTest.cs
    incubator/qpid/trunk/qpid/dotnet/client-010/perftest/Properties/
    
incubator/qpid/trunk/qpid/dotnet/client-010/perftest/Properties/AssemblyInfo.cs
    incubator/qpid/trunk/qpid/dotnet/client-010/perftest/README.txt
    incubator/qpid/trunk/qpid/dotnet/client-010/perftest/default.build
    incubator/qpid/trunk/qpid/dotnet/client-010/perftest/perftest.csproj
Removed:
    incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/Result.cs
Modified:
    incubator/qpid/trunk/qpid/dotnet/client-010/client/Client.csproj
    incubator/qpid/trunk/qpid/dotnet/client-010/client/client.sln
    incubator/qpid/trunk/qpid/dotnet/client-010/client/client.suo
    incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/Receiver.cs
    
incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/SessionDelegate.cs
    
incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/util/CircularBuffer.cs
    incubator/qpid/trunk/qpid/dotnet/client-010/default.build

Modified: incubator/qpid/trunk/qpid/dotnet/client-010/client/Client.csproj
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/client/Client.csproj?rev=703430&r1=703429&r2=703430&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/client-010/client/Client.csproj (original)
+++ incubator/qpid/trunk/qpid/dotnet/client-010/client/Client.csproj Fri Oct 10 
05:06:07 2008
@@ -189,7 +189,6 @@
     <Compile Include="transport\RangeSet.cs" />
     <Compile Include="transport\ReceivedPayload.cs" />
     <Compile Include="transport\Receiver.cs" />
-    <Compile Include="transport\Result.cs" />
     <Compile Include="transport\Sender.cs" />
     <Compile Include="transport\Session.cs" />
     <Compile Include="transport\SessionDelegate.cs" />

Modified: incubator/qpid/trunk/qpid/dotnet/client-010/client/client.sln
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/client/client.sln?rev=703430&r1=703429&r2=703430&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/client-010/client/client.sln (original)
+++ incubator/qpid/trunk/qpid/dotnet/client-010/client/client.sln Fri Oct 10 
05:06:07 2008
@@ -3,9 +3,33 @@
 # Visual Studio 2005
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client", "Client.csproj", 
"{B911FFD7-754F-4735-A188-218D5065BE79}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo", 
"..\demo\Demo.csproj", "{E4C46FBC-7560-406D-BFEF-CA010E584DF4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExcelAddIn", 
"..\addins\ExcelAddIn\ExcelAddIn.csproj", 
"{85EFD719-39F6-4471-90FF-9E621430344B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExcelAddInProducer", 
"..\addins\ExcelAddInProducer\ExcelAddInProducer.csproj", 
"{80F00C3B-EB38-4B3B-9F77-68977A30B155}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MessagePRocessor", 
"..\addins\MessagePRocessor\MessagePRocessor.csproj", 
"{244ACF6F-F632-47B0-9DCE-4C9421AE8EF0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "example-direct-producer", 
"..\examples\direct\example-direct-producer\example-direct-producer.csproj", 
"{96FCB250-8142-40EE-9BDD-CA839EE21021}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "example-direct-Listener", 
"..\examples\direct\example-direct-Listener\example-direct-Listener.csproj", 
"{AE65B1B9-8779-4CB1-91AF-E7F6C7A736D7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"example-pub-sub-Listener", 
"..\examples\pub-sub\example-pub-sub-Listener\example-pub-sub-Listener.csproj", 
"{2BCDC2CC-5BDA-4CC7-944D-2899AD8A53C7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"example-pub-sub-Publisher", 
"..\examples\pub-sub\example-pub-sub-Publisher\example-pub-sub-Publisher.csproj",
 "{F8857634-A134-44E7-A953-F2B22688C599}"
+EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test", 
"..\test\Test.csproj", "{95CB4C90-7C53-44A9-B11C-96235F158ACA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo", 
"..\demo\Demo.csproj", "{E4C46FBC-7560-406D-BFEF-CA010E584DF4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"example-request-response-Client", 
"..\examples\request-response\example-request-response-Client\example-request-response-Client.csproj",
 "{1BC63815-4029-4039-9207-35E7E06ECC99}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = 
"example-request-response-Server", 
"..\examples\request-response\example-request-response-Server\example-request-response-Server.csproj",
 "{922FBA9C-E483-4AEF-ABE8-AC87421E829B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "example-fanout-Producer", 
"..\examples\fanout\example-fanout-Producer\example-fanout-Producer.csproj", 
"{4513BF94-D54A-42FE-8506-FE2CD57B2C51}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "example-fanout-Listener", 
"..\examples\fanout\example-fanout-Listener\example-fanout-Listener.csproj", 
"{18A0792B-DC3A-4EC5-93D6-DB8A111D8F15}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "perftest", 
"..\perftest\perftest.csproj", "{7F7E8DE7-FDF2-4A52-A4CE-D3756B05273C}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -17,14 +41,62 @@
                {B911FFD7-754F-4735-A188-218D5065BE79}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
                {B911FFD7-754F-4735-A188-218D5065BE79}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
                {B911FFD7-754F-4735-A188-218D5065BE79}.Release|Any CPU.Build.0 
= Release|Any CPU
-               {95CB4C90-7C53-44A9-B11C-96235F158ACA}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
-               {95CB4C90-7C53-44A9-B11C-96235F158ACA}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
-               {95CB4C90-7C53-44A9-B11C-96235F158ACA}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
-               {95CB4C90-7C53-44A9-B11C-96235F158ACA}.Release|Any CPU.Build.0 
= Release|Any CPU
                {E4C46FBC-7560-406D-BFEF-CA010E584DF4}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
                {E4C46FBC-7560-406D-BFEF-CA010E584DF4}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
                {E4C46FBC-7560-406D-BFEF-CA010E584DF4}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
                {E4C46FBC-7560-406D-BFEF-CA010E584DF4}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {85EFD719-39F6-4471-90FF-9E621430344B}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {85EFD719-39F6-4471-90FF-9E621430344B}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {85EFD719-39F6-4471-90FF-9E621430344B}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {85EFD719-39F6-4471-90FF-9E621430344B}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {80F00C3B-EB38-4B3B-9F77-68977A30B155}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {80F00C3B-EB38-4B3B-9F77-68977A30B155}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {80F00C3B-EB38-4B3B-9F77-68977A30B155}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {80F00C3B-EB38-4B3B-9F77-68977A30B155}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {244ACF6F-F632-47B0-9DCE-4C9421AE8EF0}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {244ACF6F-F632-47B0-9DCE-4C9421AE8EF0}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {244ACF6F-F632-47B0-9DCE-4C9421AE8EF0}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {244ACF6F-F632-47B0-9DCE-4C9421AE8EF0}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {96FCB250-8142-40EE-9BDD-CA839EE21021}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {96FCB250-8142-40EE-9BDD-CA839EE21021}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {96FCB250-8142-40EE-9BDD-CA839EE21021}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {96FCB250-8142-40EE-9BDD-CA839EE21021}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {AE65B1B9-8779-4CB1-91AF-E7F6C7A736D7}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {AE65B1B9-8779-4CB1-91AF-E7F6C7A736D7}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {AE65B1B9-8779-4CB1-91AF-E7F6C7A736D7}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {AE65B1B9-8779-4CB1-91AF-E7F6C7A736D7}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {2BCDC2CC-5BDA-4CC7-944D-2899AD8A53C7}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {2BCDC2CC-5BDA-4CC7-944D-2899AD8A53C7}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {2BCDC2CC-5BDA-4CC7-944D-2899AD8A53C7}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {2BCDC2CC-5BDA-4CC7-944D-2899AD8A53C7}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {F8857634-A134-44E7-A953-F2B22688C599}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {F8857634-A134-44E7-A953-F2B22688C599}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {F8857634-A134-44E7-A953-F2B22688C599}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {F8857634-A134-44E7-A953-F2B22688C599}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {95CB4C90-7C53-44A9-B11C-96235F158ACA}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {95CB4C90-7C53-44A9-B11C-96235F158ACA}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {95CB4C90-7C53-44A9-B11C-96235F158ACA}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {95CB4C90-7C53-44A9-B11C-96235F158ACA}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {1BC63815-4029-4039-9207-35E7E06ECC99}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {1BC63815-4029-4039-9207-35E7E06ECC99}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {1BC63815-4029-4039-9207-35E7E06ECC99}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {1BC63815-4029-4039-9207-35E7E06ECC99}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {922FBA9C-E483-4AEF-ABE8-AC87421E829B}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {922FBA9C-E483-4AEF-ABE8-AC87421E829B}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {922FBA9C-E483-4AEF-ABE8-AC87421E829B}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {922FBA9C-E483-4AEF-ABE8-AC87421E829B}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {4513BF94-D54A-42FE-8506-FE2CD57B2C51}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {4513BF94-D54A-42FE-8506-FE2CD57B2C51}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {4513BF94-D54A-42FE-8506-FE2CD57B2C51}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {4513BF94-D54A-42FE-8506-FE2CD57B2C51}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {18A0792B-DC3A-4EC5-93D6-DB8A111D8F15}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {18A0792B-DC3A-4EC5-93D6-DB8A111D8F15}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {18A0792B-DC3A-4EC5-93D6-DB8A111D8F15}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {18A0792B-DC3A-4EC5-93D6-DB8A111D8F15}.Release|Any CPU.Build.0 
= Release|Any CPU
+               {7F7E8DE7-FDF2-4A52-A4CE-D3756B05273C}.Debug|Any CPU.ActiveCfg 
= Debug|Any CPU
+               {7F7E8DE7-FDF2-4A52-A4CE-D3756B05273C}.Debug|Any CPU.Build.0 = 
Debug|Any CPU
+               {7F7E8DE7-FDF2-4A52-A4CE-D3756B05273C}.Release|Any 
CPU.ActiveCfg = Release|Any CPU
+               {7F7E8DE7-FDF2-4A52-A4CE-D3756B05273C}.Release|Any CPU.Build.0 
= Release|Any CPU
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE

Modified: incubator/qpid/trunk/qpid/dotnet/client-010/client/client.suo
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/client/client.suo?rev=703430&r1=703429&r2=703430&view=diff
==============================================================================
Binary files - no diff available.

Modified: 
incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/Receiver.cs
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/Receiver.cs?rev=703430&r1=703429&r2=703430&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/Receiver.cs 
(original)
+++ incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/Receiver.cs 
Fri Oct 10 05:06:07 2008
@@ -20,7 +20,6 @@
 */
 
 using System;
-using org.apache.qpid.transport;
 
 namespace org.apache.qpid.transport
 {              

Modified: 
incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/SessionDelegate.cs
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/SessionDelegate.cs?rev=703430&r1=703429&r2=703430&view=diff
==============================================================================
--- 
incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/SessionDelegate.cs 
(original)
+++ 
incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/SessionDelegate.cs 
Fri Oct 10 05:06:07 2008
@@ -19,8 +19,6 @@
 *
 */
 
-using System;
-
 namespace org.apache.qpid.transport
 {
     /// <summary> 

Modified: 
incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/util/CircularBuffer.cs
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/util/CircularBuffer.cs?rev=703430&r1=703429&r2=703430&view=diff
==============================================================================
--- 
incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/util/CircularBuffer.cs
 (original)
+++ 
incubator/qpid/trunk/qpid/dotnet/client-010/client/transport/util/CircularBuffer.cs
 Fri Oct 10 05:06:07 2008
@@ -105,10 +105,8 @@
             buffer[i] = t;
             i += add;
             if (i < 0) i += len;
-            nwp = i; 
-            countValue = nwp - nrp;
-            if (countValue == 0)
-                countValue += len;
+            nwp = i;
+            updateCount();
         }
 
         private void updateCount()
@@ -125,7 +123,7 @@
             i += add;
             if (i < 0) i += len;
             nrp = i;
-            countValue = nwp - nrp;          
+            countValue--;    
             return (temp);
         }
 

Modified: incubator/qpid/trunk/qpid/dotnet/client-010/default.build
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/default.build?rev=703430&r1=703429&r2=703430&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/client-010/default.build (original)
+++ incubator/qpid/trunk/qpid/dotnet/client-010/default.build Fri Oct 10 
05:06:07 2008
@@ -38,6 +38,11 @@
     <fileset id="tests.builds">
         <include name="test/default.build" />  
     </fileset> 
+    
+     <!-- Fileset with build files for 'performence' test assemblies. -->
+    <fileset id="perftest.builds">
+        <include name="perftest/default.build" />      
+    </fileset> 
 
     <!-- Prepare environment for a debug build. -->
     <target name="debug">
@@ -171,6 +176,11 @@
         <nant target="build">
             <buildfiles refid="tests.builds" />
         </nant>
+        
+        <!-- Compile test assemblies. -->
+        <nant target="build">
+            <buildfiles refid="perftest.builds" />
+        </nant>
       
         <!-- copy config files over to the output dir -->
         <copy todir="${build.dir}" file="test/test.config"/>

Added: incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/C5-License.txt
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/C5-License.txt?rev=703430&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/C5-License.txt 
(added)
+++ incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/C5-License.txt Fri 
Oct 10 05:06:07 2008
@@ -0,0 +1,27 @@
+-----------------------------------------------------------------------------
+
+The following license applies to the C5 library (found in C5.dll and C5.pdb)
+The source code for this library together with more information can be found 
on 
+http://www.itu.dk/research/c5/.
+
+-----------------------------------------------------------------------------
+
+Copyright (c) 2003-2007 Niels Kokholm and Peter Sestoft.
+
+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.

Added: incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/C5.dll
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/C5.dll?rev=703430&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/C5.dll
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/Plossum 
CommandLine.dll
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/Plossum%20CommandLine.dll?rev=703430&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/Plossum 
CommandLine.dll
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/license.txt
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/license.txt?rev=703430&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/license.txt (added)
+++ incubator/qpid/trunk/qpid/dotnet/client-010/lib/plossum/license.txt Fri Oct 
10 05:06:07 2008
@@ -0,0 +1,28 @@
+Copyright (c) Peter Palotas 2007
+
+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 copyright holder 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: incubator/qpid/trunk/qpid/dotnet/client-010/perftest/PerfTest.cs
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/perftest/PerfTest.cs?rev=703430&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/client-010/perftest/PerfTest.cs (added)
+++ incubator/qpid/trunk/qpid/dotnet/client-010/perftest/PerfTest.cs Fri Oct 10 
05:06:07 2008
@@ -0,0 +1,684 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Threading;
+using common.org.apache.qpid.transport.util;
+using org.apache.qpid.client;
+using org.apache.qpid.transport;
+using org.apache.qpid.transport.util;
+using Plossum.CommandLine;
+
+namespace PerfTest
+{
+    [CommandLineManager(ApplicationName = "Qpid Perf Tests", Copyright = 
"Apache Software Foundation")]
+    public class Options
+    {
+        [CommandLineOption(Description = "Displays this help text")] public 
bool Help;
+
+        [CommandLineOption(Description = "Create shared queues.", MinOccurs = 
0)] public Boolean Setup;
+
+        [CommandLineOption(Description = "Run test, print report.", MinOccurs 
= 0)] public Boolean Control;
+
+        [CommandLineOption(Description = "Publish messages.", MinOccurs = 0)] 
public Boolean Publish;
+
+        [CommandLineOption(Description = "Subscribe for messages.", MinOccurs 
= 0)] public Boolean Subscribe;
+
+        [CommandLineOption(Description = "Test mode: [shared|fanout|topic]", 
MinOccurs = 0)]
+        public string Mode
+        {
+            get { return _mMode; }
+            set
+            {
+                if (! value.Equals("shared") && ! value.Equals("fanout") && ! 
value.Equals("topic"))
+                    throw new InvalidOptionValueException(
+                        "The mode must not be shared|fanout|topic", false);
+                _mMode = value;
+            }
+        }
+
+        private string _mMode = "shared";
+
+        [CommandLineOption(Description = "Specifies the broler name", 
MinOccurs = 0)]
+        public string Broker
+        {
+            get { return _broker; }
+            set
+            {
+                if (String.IsNullOrEmpty(value))
+                    throw new InvalidOptionValueException(
+                        "The broker name must not be empty", false);
+                _broker = value;
+            }
+        }
+
+        private string _broker = "localhost";
+
+        [CommandLineOption(Description = "Specifies the port name", MinOccurs 
= 0)]
+        public int Port
+        {
+            get { return _port; }
+            set { _port = value; }
+        }
+
+        private int _port = 5672;
+
+        #region Publisher
+
+        [CommandLineOption(Description = "Create N publishers.", MinOccurs = 
0)]
+        public int Pubs
+        {
+            get { return _pubs; }
+            set { _pubs = value; }
+        }
+
+        private int _pubs = 1;
+
+        [CommandLineOption(Description = "Each publisher sends N messages.", 
MinOccurs = 0)]
+        public double Count
+        {
+            get { return _count; }
+            set { _count = value; }
+        }
+
+        private double _count = 5000;
+
+        [CommandLineOption(Description = "Size of messages in bytes.", 
MinOccurs = 0)]
+        public long Size
+        {
+            get { return _size; }
+            set { _size = value; }
+        }
+
+        private long _size = 1024;
+
+        [CommandLineOption(Description = "Publisher use confirm-mode.", 
MinOccurs = 0)] public Boolean Confirm = true;
+
+        [CommandLineOption(Description = "Publish messages as durable.", 
MinOccurs = 0)] public Boolean Durable;
+
+        [CommandLineOption(Description = "Make data for each message unique.", 
MinOccurs = 0)] public Boolean UniqueData;
+
+        [CommandLineOption(Description = "Wait for confirmation of each 
message before sending the next one.",
+            MinOccurs = 0)] public Boolean SyncPub;
+
+        [CommandLineOption(Description = ">=0 delay between msg publish.", 
MinOccurs = 0)]
+        public double IntervalPub
+        {
+            get { return _interval_pub; }
+            set { _interval_pub = value; }
+        }
+
+        private double _interval_pub;
+
+        #endregion
+
+        #region Subscriber
+
+        [CommandLineOption(Description = "Create N subscribers.", MinOccurs = 
0)]
+        public int Subs
+        {
+            get { return _subs; }
+            set { _subs = value; }
+        }
+
+        private int _subs = 1;
+
+        [CommandLineOption(Description = "N>0: Subscriber acks batches of N.\n 
N==0: Subscriber uses unconfirmed mode",
+            MinOccurs = 0)]
+        public int SubAck
+        {
+            get { return _suback; }
+            set { _suback = value; }
+        }
+
+        private int _suback;
+
+        [CommandLineOption(Description = ">=0 delay between msg consume", 
MinOccurs = 0)]
+        public double IntervalSub
+        {
+            get { return _interval_sub; }
+            set { _interval_sub = value; }
+        }
+
+        private double _interval_sub;
+
+        #endregion
+
+        [CommandLineOption(Description = "Create N queues.", MinOccurs = 0)]
+        public int Queues
+        {
+            get { return _qt; }
+            set { _qt = value; }
+        }
+
+        private int _qt = 1;
+
+        [CommandLineOption(Description = "Desired number of iterations of the 
test.", MinOccurs = 0)]
+        public int Iterations
+        {
+            get { return _iterations; }
+            set { _iterations = value; }
+        }
+
+        private int _iterations = 1;
+
+        [CommandLineOption(Description = "If non-zero, the transaction batch 
size.", MinOccurs = 0)]
+        public int Tx
+        {
+            get { return _tx; }
+            set { _tx = value; }
+        }
+
+        private int _tx;
+
+        [CommandLineOption(Description = "Make queue durable (implied if 
durable set.", MinOccurs = 0)] public Boolean
+            QueueDurable;
+
+        [CommandLineOption(Description = "Queue policy: count to trigger 'flow 
to disk'", MinOccurs = 0)]
+        public double QueueMaxCount
+        {
+            get { return _queueMaxCount; }
+            set { _queueMaxCount = value; }
+        }
+
+        private double _queueMaxCount;
+
+        [CommandLineOption(Description = "Queue policy: accumulated size to 
trigger 'flow to disk'", MinOccurs = 0)]
+        public double QueueMaxSize
+        {
+            get { return _queueMaxSize; }
+            set { _queueMaxSize = value; }
+        }
+
+        private double _queueMaxSize;
+
+        public double SubQuota
+        {
+            get { return _subQuota; }
+            set { _subQuota = value; }
+        }
+
+        private double _subQuota;
+    }
+
+    internal interface Startable
+    {
+        void Start();
+    }
+
+    public abstract class PerfTestClient : Startable
+    {
+        private readonly Client _connection;
+        private readonly ClientSession _session;
+        private readonly Options _options;
+
+        public ClientSession Session
+        {
+            get { return _session; }
+        }
+
+        public Options Options
+        {
+            get { return _options; }
+        }
+
+        protected PerfTestClient(Options options)
+        {
+            _options = options;
+            _connection = new Client();
+            _connection.connect(options.Broker, options.Port, "test", "guest", 
"guest");
+            _session = _connection.createSession(50000);
+        }
+
+        public abstract void Start();
+    }
+
+    public class SetupTest : PerfTestClient
+    {
+        public SetupTest(Options options)
+            : base(options)
+        {
+        }
+
+        private void queueInit(String name, Boolean durable, 
Dictionary<String, Object> arguments)
+        {
+            Session.queueDeclare(name, null, arguments, durable ? 
Option.DURABLE : Option.NONE);
+            Session.queuePurge(name);
+            Session.exchangeBind(name, "amq.direct", name);
+            Session.sync();
+        }
+
+        public override void Start()
+        {
+            queueInit("pub_start", false, null);
+            queueInit("pub_done", false, null);
+            queueInit("sub_ready", false, null);
+            queueInit("sub_done", false, null);
+            if (Options.Mode.Equals("shared"))
+            {
+                Dictionary<String, Object> settings = new Dictionary<string, 
object>();
+                if (Options.QueueMaxCount > 0)
+                    settings.Add("qpid.max_count", Options.QueueMaxCount);
+                if (Options.QueueMaxSize > 0)
+                    settings.Add("qpid.max_size", Options.QueueMaxSize);
+                for (int i = 0; i < Options.Queues; ++i)
+                {
+                    string qname = "perftest" + i;
+                    queueInit(qname, Options.Durable || Options.QueueDurable, 
settings);
+                }
+            }
+        }
+    }
+
+    public class SubscribeThread : PerfTestClient
+    {
+        private readonly string _queue;
+
+        public SubscribeThread(Options options, string key, string exchange)
+            : base(options)
+        {
+            _queue = "perftest" + (new UUID(10, 10)).ToString();
+            Session.queueDeclare(_queue, null, null, Option.EXCLUSIVE, 
Option.AUTO_DELETE,
+                                 Options.Durable ? Option.DURABLE : 
Option.NONE);
+            Session.exchangeBind(_queue, exchange, key);
+        }
+
+        public SubscribeThread(Options options, string key)
+            : base(options)
+        {
+            _queue = key;
+        }
+
+        public override void Start()
+        {
+            if (Options.Tx > 0)
+            {
+                Session.txSelect();
+                Session.sync();
+            }
+            CircularBuffer<IMessage> buffer = new 
CircularBuffer<IMessage>(100);
+            // Create a listener and subscribe it to the queue named 
"message_queue"
+            IMessageListener listener = new SyncListener(buffer);
+            string dest = "dest" + UUID.randomUUID().ToString();
+            Session.attachMessageListener(listener, dest);
+            Session.messageSubscribe(_queue, dest,
+                                     Options.Tx > 0 || Options.SubAck > 0
+                                         ? MessageAcceptMode.EXPLICIT
+                                         : MessageAcceptMode.NONE,
+                                     MessageAcquireMode.PRE_ACQUIRED, null, 0, 
null);
+            // issue credits     
+            Session.messageSetFlowMode(dest, MessageFlowMode.WINDOW);
+            Session.messageFlow(dest, MessageCreditUnit.BYTE, 
ClientSession.MESSAGE_FLOW_MAX_BYTES);
+
+            // Notify controller we are ready.
+            IMessage message = new Message();
+            message.DeliveryProperties.setRoutingKey("sub_ready");
+
+            message.appendData(Encoding.UTF8.GetBytes("ready"));
+            Session.messageTransfer("amq.direct", message);
+
+            if (Options.Tx > 0)
+            {
+                Session.txCommit();
+                Session.sync();
+            }
+
+
+            for (int j = 0; j < Options.Iterations; ++j)
+            {
+               
+                //need to allocate some more credit
+                Session.messageFlow(dest, MessageCreditUnit.MESSAGE, 
(long)Options.SubQuota);
+                
+                RangeSet range = new RangeSet();
+                IMessage msg;
+                DateTime start = DateTime.Now;
+                for (long i = 0; i < Options.SubQuota; ++i)
+                {                   
+                    msg = buffer.Dequeue();
+                    if (Options.Tx > 0 && ((i + 1)%Options.Tx == 0))
+                    {
+                        Session.txCommit();
+                        Session.sync();
+                    }
+                    if (Options.IntervalSub > 0)
+                    {
+                        Thread.Sleep((int) Options.IntervalSub*1000);
+                    }
+                    range.add(msg.Id);
+                }
+                if (Options.Tx > 0 || Options.SubAck > 0)
+                    Session.messageAccept(range);
+                range.clear();
+                if (Options.Tx > 0)
+                {
+                    Session.txSelect();
+                    Session.sync();
+                }
+                DateTime end = DateTime.Now;
+
+                // Report to publisher.
+                message.DeliveryProperties.setRoutingKey("sub_done");
+                message.clearData();
+                message.appendData(BitConverter.GetBytes(Options.SubQuota / 
end.Subtract(start).TotalMilliseconds ));
+                Session.messageTransfer("amq.direct", message);
+                if (Options.Tx > 0)
+                {
+                    Session.txSelect();
+                    Session.sync();
+                }
+            }
+            Session.close();
+        }
+    }
+
+    public class SyncListener : IMessageListener
+    {
+        private readonly CircularBuffer<IMessage> _buffer;
+
+        public SyncListener(CircularBuffer<IMessage> buffer)
+        {
+            _buffer = buffer;
+        }
+
+        public void messageTransfer(IMessage m)
+        {
+            _buffer.Enqueue(m);
+        }
+    }
+
+
+    public class PublishThread : PerfTestClient
+    {
+        private readonly string _exchange;
+        private readonly string _key;
+
+        public PublishThread(Options options, string key, string exchange)
+            : base(options)
+        {
+            _key = key;
+            _exchange = exchange;
+        }
+
+
+        public override void Start()
+        {
+            byte[] data = new byte[Options.Size];
+            // randomly populate data 
+            Random r = new Random(34);
+            r.NextBytes(data);
+            IMessage message = new Message();
+            message.appendData(data);
+
+            message.DeliveryProperties.setRoutingKey(_key);
+
+            if (Options.Durable)
+                
message.DeliveryProperties.setDeliveryMode(MessageDeliveryMode.PERSISTENT);
+
+            if (Options.Tx > 0)
+            {
+                Session.txSelect();
+                Session.sync();
+            }
+
+            CircularBuffer<IMessage> buffer = new 
CircularBuffer<IMessage>(100);
+            // Create a listener and subscribe it to the queue named 
"pub_start"          
+            IMessageListener listener = new SyncListener(buffer);
+            string localQueue = "localQueue-" + UUID.randomUUID().ToString();
+            Session.queueDeclare(localQueue, null, null, Option.AUTO_DELETE);
+            Session.exchangeBind(localQueue, "amq.direct", "pub_start");
+            Session.attachMessageListener(listener, localQueue);
+            Session.messageSubscribe(localQueue);
+            if (Options.Tx > 0)
+            {
+                Session.txCommit();
+                Session.sync();
+            }
+            buffer.Dequeue();
+
+            for (int j = 0; j < Options.Iterations; ++j)
+            {
+                DateTime start = DateTime.Now;                
+                for (long i = 0; i < Options.Count; ++i)
+                {
+                    Session.messageTransfer(_exchange, message);
+
+                    if (Options.SyncPub)
+                    {
+                        Session.sync();
+                    }
+                    if (Options.Tx > 0 && (i + 1)%Options.Tx == 0)
+                    {
+                        Session.txSelect();
+                        Session.sync();
+                    }
+                    if (Options.IntervalPub > 0)
+                    {
+                        Thread.Sleep((int) Options.IntervalSub*1000);
+                    }
+                }
+                Session.sync();
+                DateTime end = DateTime.Now;
+
+                // Report to publisher.
+                message.DeliveryProperties.setRoutingKey("pub_done");
+                message.clearData();
+                double time = end.Subtract(start).TotalMilliseconds;
+                byte[] rate = BitConverter.GetBytes( Options.Count / time );
+                message.appendData(rate);
+                Session.messageTransfer("amq.direct", message);
+                if (Options.Tx > 0)
+                {
+                    Session.txSelect();
+                    Session.sync();
+                }
+            }
+            Session.close();
+        }
+    }
+
+    public class Controller : PerfTestClient
+    {
+        public Controller(Options options)
+            : base(options)
+        {
+        }
+
+        private void process(int size, string queue)
+        {
+            CircularBuffer<IMessage> buffer = new 
CircularBuffer<IMessage>(100);
+            IMessageListener listener = new SyncListener(buffer);
+            string localQueue = "queue-" + UUID.randomUUID().ToString();
+            Session.queueDeclare(localQueue, null, null, Option.AUTO_DELETE);
+            Session.exchangeBind(localQueue, "amq.direct", queue);
+            Session.attachMessageListener(listener, localQueue);
+            Session.messageSubscribe(localQueue);
+            for (int i = 0; i < size; ++i)
+            {
+                buffer.Dequeue();
+            }
+        }
+
+        private double processRate(int size, string queue)
+        {
+            CircularBuffer<IMessage> buffer = new 
CircularBuffer<IMessage>(100);
+            IMessageListener listener = new SyncListener(buffer);
+            string localQueue = "queue-" + UUID.randomUUID().ToString();
+            Session.queueDeclare(localQueue, null, null, Option.AUTO_DELETE);
+            Session.exchangeBind(localQueue, "amq.direct", queue);
+            Session.attachMessageListener(listener, localQueue);
+            Session.messageSubscribe(localQueue);
+            double rate = 0;
+            RangeSet range = new RangeSet();
+            for (int i = 0; i < size; ++i)
+            {
+                IMessage m = buffer.Dequeue();
+                range.add(m.Id);
+                BinaryReader reader = new BinaryReader(m.Body, Encoding.UTF8);
+                byte[] body = new byte[m.Body.Length - m.Body.Position];
+                reader.Read(body, 0, body.Length);
+                rate += BitConverter.ToDouble(body,0);
+            }
+            Session.messageAccept(range);
+            return rate;
+        }
+
+        private void send(int size, string queue, string data)
+        {
+            IMessage message = new Message();
+            message.DeliveryProperties.setRoutingKey(queue);
+            message.appendData(Encoding.UTF8.GetBytes(data));
+            for (int i = 0; i < size; ++i)
+            {
+                Session.messageTransfer("amq.direct", message);
+            }
+        }
+
+        public override void Start()
+        {
+            process(Options.Subs, "sub_ready");
+            for (int j = 0; j < Options.Iterations; ++j)
+            {
+                DateTime start = DateTime.Now;
+                send(Options.Pubs, "pub_start", "start"); // Start publishers
+                double pubrate = processRate(Options.Pubs, "pub_done");
+                double subrate = processRate(Options.Subs, "sub_done");
+                DateTime end = DateTime.Now;
+
+                double transfers = (Options.Pubs*Options.Count) + 
(Options.Subs*Options.SubQuota);
+                double time = end.Subtract(start).TotalSeconds;
+                double txrate = transfers/time;
+                double mbytes = (txrate*Options.Size) / (1024 * 1024) ;
+
+                Console.WriteLine("Total: " + transfers + " transfers of " + 
Options.Size + " bytes in "
+                                  + time + " seconds.\n" +
+                                  "Publish transfers/sec: " + pubrate * 1000 + 
"\n" +
+                                  "Subscribe transfers/sec:  " + subrate * 
1000 + "\n" +
+                                  "Total transfers/sec:      " + txrate + "\n" 
+
+                                  "Total Mbytes/sec:         " + mbytes);
+                Console.WriteLine("done");
+            }
+            
+        }
+    }
+
+
+    public class PerfTest
+    {
+        private static int Main(string[] args)
+        {
+            Options options = new Options();
+            CommandLineParser parser = new CommandLineParser(options);
+            parser.Parse();
+            if (parser.HasErrors)
+            {
+                Console.WriteLine(parser.UsageInfo.GetErrorsAsString(78));
+                return -1;
+            }
+            if (options.Help)
+            {
+                Console.WriteLine(parser.UsageInfo.GetOptionsAsString(78));
+                return 0;
+            }
+            bool singleProcess =
+                (!options.Setup && !options.Control && !options.Publish && 
!options.Subscribe);
+            if (singleProcess)
+            {
+                options.Setup = options.Control = options.Publish =  true;
+                options.Subscribe = true;
+            }
+                
+
+            string exchange = "amq.direct";
+            switch (options.Mode)
+            {
+                case "shared":
+                    options.SubQuota = 
(options.Pubs*options.Count)/options.Subs;
+                    break;
+                case "fanout":
+                    options.SubQuota = (options.Pubs*options.Count);
+                    exchange = "amq.fanout";
+                    break;
+                case "topic":
+                    options.SubQuota = (options.Pubs*options.Count);
+                    exchange = "amq.topic";
+                    break;
+            }
+
+            if (options.Setup)
+            {
+                SetupTest setup = new SetupTest(options);
+                setup.Start(); // Set up queues
+            }
+
+            Thread contT = null;
+            if ( options.Control)
+            {
+                Controller c = new Controller(options);
+                contT = new Thread(c.Start);
+                contT.Start();
+            }
+
+            Thread[] publishers = null;
+            Thread[] subscribers = null;
+
+            // Start pubs/subs for each queue/topic.
+            for (int i = 0; i < options.Queues; ++i)
+            {
+                string key = "perftest" + i; // Queue or topic name.
+                if (options.Publish)
+                {
+                    int n = singleProcess ? options.Pubs : 1;
+                    publishers = new Thread[n];
+                    for (int j = 0; j < n; ++j)
+                    {
+                        PublishThread pt = new PublishThread(options, key, 
exchange);
+                        publishers[i] = new Thread(pt.Start);
+                        publishers[i].Start();
+                    }
+                }
+                if ( options.Subscribe)
+                {
+                    int n = singleProcess ? options.Subs : 1;
+                    subscribers = new Thread[n];
+                    for (int j = 0; j < n; ++j)
+                    {
+                        SubscribeThread st;
+                        if (options.Mode.Equals("shared"))
+                            st = new SubscribeThread(options, key);
+                        else
+                            st = new SubscribeThread(options, key, exchange);
+                        subscribers[i] = new Thread(st.Start);
+                        subscribers[i].Start();
+                    }
+                }
+            }
+
+            if (options.Control)
+            {
+                contT.Join();
+            }
+
+
+            // Wait for started threads.
+            if (options.Publish)
+            {
+                foreach (Thread t in publishers)
+                {
+                    t.Join();
+                }
+            }
+
+            if (options.Subscribe)
+            {
+                foreach (Thread t in subscribers)
+                {
+                    t.Join();
+                }
+            }
+
+
+            return 0;
+        }
+    }
+}

Added: 
incubator/qpid/trunk/qpid/dotnet/client-010/perftest/Properties/AssemblyInfo.cs
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/perftest/Properties/AssemblyInfo.cs?rev=703430&view=auto
==============================================================================
--- 
incubator/qpid/trunk/qpid/dotnet/client-010/perftest/Properties/AssemblyInfo.cs 
(added)
+++ 
incubator/qpid/trunk/qpid/dotnet/client-010/perftest/Properties/AssemblyInfo.cs 
Fri Oct 10 05:06:07 2008
@@ -0,0 +1,33 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("perftest")]
+[assembly: AssemblyDescription("Built from svn revision number: ")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Apache Software Foundation")]
+[assembly: AssemblyProduct("perftest")]
+[assembly: AssemblyCopyright("Apache Software Foundation")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed 
to COM
+[assembly: Guid("11b542db-0d57-4a67-8b92-24ac1d4ed4cf")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("0.10.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

Added: incubator/qpid/trunk/qpid/dotnet/client-010/perftest/README.txt
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/perftest/README.txt?rev=703430&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/client-010/perftest/README.txt (added)
+++ incubator/qpid/trunk/qpid/dotnet/client-010/perftest/README.txt Fri Oct 10 
05:06:07 2008
@@ -0,0 +1,38 @@
+There are two ways to use perftest: 
+- single process:
+If none of the -Setup, -Publish, -Subscribe or -Control options are given 
perftest will run a single-process test.
+- multi-process: 
+For a  multi-process test first run:
+Perftest.exe -Setup <other options>
+and wait for it to complete. The remaining process should run concurrently:
+Run -Pubs times: Perftest.exe -Publish  <other options>
+Run -Subs times: Perftest.exe -Subscribe <other options>
+Run once:        Perftest.exe -Control <other options>
+Note the <other options> must be identical for all processes.
+
+Options:
+   -Broker             Specifies the broler name
+   -Confirm            Publisher use confirm-mode.
+   -Control            Run test, print report.
+   -Count              Each publisher sends N messages.
+   -Durable            Publish messages as durable.
+   -Help               Displays this help text
+   -IntervalPub        >=0 delay between msg publish.
+   -IntervalSub        >=0 delay between msg consume
+   -Iterations         Desired number of iterations of the test.
+   -Mode               Test mode: [shared|fanout|topic]
+   -Port               Specifies the port name
+   -Publish            Publish messages.
+   -Pubs               Create N publishers.
+   -QueueDurable       Make queue durable (implied if durable set.
+   -QueueMaxCount      Queue policy: count to trigger 'flow to disk'
+   -QueueMaxSize       Queue policy: accumulated size to trigger 'flow to disk'
+   -Queues             Create N queues.
+   -Setup              Create shared queues.
+   -Size               Size of messages in bytes.
+   -SubAck             N>0: Subscriber acks batches of N. N==0: Subscriber 
uses unconfirmed mode
+   -Subs               Create N subscribers.
+   -Subscribe          Subscribe for messages.
+   -SyncPub            Wait for confirmation of each message before sending 
the next one.
+   -Tx                 If non-zero, the transaction batch size.
+   -UniqueData         Make data for each message unique.
\ No newline at end of file

Added: incubator/qpid/trunk/qpid/dotnet/client-010/perftest/default.build
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/perftest/default.build?rev=703430&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/client-010/perftest/default.build (added)
+++ incubator/qpid/trunk/qpid/dotnet/client-010/perftest/default.build Fri Oct 
10 05:06:07 2008
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<project name="perftest" default="build">
+    <!--
+               Properties that come from master build file
+               - build.dir: root directory for build
+               - build.debug: true if building debug release
+               - build.defines: variables to define during build
+    -->
+
+    <target name="build">
+        <csc target="exe" 
+                               define="${build.defines}" 
+                               debug="${build.debug}" 
+                               
output="${build.dir}/${project::get-name()}.exe">
+                       
+                       <sources>
+                          <include name="**/*.cs" />
+         </sources>
+         <references>
+            <include name="${build.dir}/log4net.dll" />                    
+            <include name="${build.dir}/qpid.client.dll" />                    
              
+            <include name="${build.dir}/C5.dll" />     
+            <include name="${build.dir}/Plossum CommandLine.dll" />    
+         </references>
+        </csc>
+    </target>
+        
+</project>
+

Added: incubator/qpid/trunk/qpid/dotnet/client-010/perftest/perftest.csproj
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/dotnet/client-010/perftest/perftest.csproj?rev=703430&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/dotnet/client-010/perftest/perftest.csproj (added)
+++ incubator/qpid/trunk/qpid/dotnet/client-010/perftest/perftest.csproj Fri 
Oct 10 05:06:07 2008
@@ -0,0 +1,61 @@
+<Project DefaultTargets="Build" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{7F7E8DE7-FDF2-4A52-A4CE-D3756B05273C}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>perftest</RootNamespace>
+    <AssemblyName>perftest</AssemblyName>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' 
">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 
'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="C5, Version=1.0.2.0, Culture=neutral, 
PublicKeyToken=06a1b38866503b69, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\lib\plossum\C5.dll</HintPath>
+    </Reference>
+    <Reference Include="Plossum CommandLine, Version=0.3.0.14, 
Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\lib\plossum\Plossum CommandLine.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="PerfTest.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\client\Client.csproj">
+      <Project>{B911FFD7-754F-4735-A188-218D5065BE79}</Project>
+      <Name>Client</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets 
below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file


Reply via email to