summaryrefslogtreecommitdiff
path: root/content/xdocs/SourceHandling.xml
diff options
context:
space:
mode:
Diffstat (limited to 'content/xdocs/SourceHandling.xml')
-rwxr-xr-xcontent/xdocs/SourceHandling.xml852
1 files changed, 852 insertions, 0 deletions
diff --git a/content/xdocs/SourceHandling.xml b/content/xdocs/SourceHandling.xml
new file mode 100755
index 0000000000..75a445bd1a
--- /dev/null
+++ b/content/xdocs/SourceHandling.xml
@@ -0,0 +1,852 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD Simplified DocBook XML V1.0//EN"
+ "http://www.oasis-open.org/docbook/xml/simple/1.0/sdocbook.dtd">
+<article>
+ <title>Source Handling Process</title>
+ <section>
+ <title>Source handling</title>
+ <para>
+ The JPMC Qpid project involves a lot of code spread across a number of repositories. To safely manage the
+ code that we build internally we must take several steps to guarrantee its quality. This document details
+ the processes and procedures we have put in place to guarrantee the code is accurately stored and the binary
+ builds are repeatable.
+ </para>
+
+ <para>Currently our source tree is built using three source repositories:</para>
+ <itemizedlist>
+ <listitem>JPMC : http://subversion.ny.jpmorgan.com/svn/repos/IBTAMQ/</listitem>
+ <listitem>Apache : https://svn.apache.org/repos/asf/incubator/qpid/</listitem>
+ <listitem>JBoss : https://svn.jboss.org/repos/rhmessaging/store/</listitem>
+ </itemizedlist>
+ <para>
+ To alleviate the headache of checking out the source from the correct branch of each repository we have
+ created a number of svn-external structures on the JPMC reposititory that pull together all the code in a
+ single svn checkout command. This simplicity doesn't come without pit falls. It is important to remember
+ that the code is still from each of the individual repositories and that svn commands will only affect the
+ repository of the current directory. For example if you are in the bdbstore directory an _svn commit_ will
+ only commit the bdbdstore code. This is what you would expect as _svn commit_ does not progress up the
+ directory tree. However, if you are qpid root and perform any svn command the bdbdstore and the
+ JPMC-distribution directories will not be included as they are not part of the Apache repository. The only
+ command that will affect all code is performing an _update_ in the top directory as checked out from the
+ svn-external location. It would update all three repositories.
+ </para>
+
+ <para>
+ What now follows is a number of sections that cover source control process through the various development
+ phases. This docuement assumes that you are familar and have installed both a subversion client and maven.
+ Further details for these products can be found here:
+ Cygwin(LINK), Subversion(LINK), TortoiseSVN(LINK) and Maven(LINK)
+ </para>
+
+ <para>
+ All Developers should have a local copy of all release performed by the team for support duties. This copy
+ should be located on the root of your windows machine due to the extremely long path values that will cause
+ svn to fail on a windows file system.
+ </para>
+
+ <note>
+ <title>Checkout the release sources</title>
+ <programlisting>
+ <![CDATA[
+$cd /cygdrive/c/
+$svn co http://subversion.ny.jpmorgan.com/svn/repos/IBTAMQ/trunk/src
+]]>
+ </programlisting>
+ This will pull down the sources for all the releases we have performed. (Since 2.1.0.4) Prior to this point
+ we
+ did not store the full source code internaly.
+ </note>
+
+ </section>
+
+ <section>
+ <title>Getting the initial source checkout.</title>
+
+ <para>
+ The svn-external directories located in the JPMC NY subversion repsoitory:
+ <emphasis>http://subversion.ny.jpmorgan.com/svn/repos/IBTAMQ/trunk/svn-external/</emphasis>
+ </para>
+ <note>
+ <title>Available svn-external checkouts</title>
+ <itemizedlist>
+ <listitem>v2.1.x - Corresponds to the Apache M2 branch</listitem>
+ <listitem>v2.2.x - Corresponds to the Apache M2.1 branch</listitem>
+ <listitem>v3.x - Corresponds to the Apache trunk</listitem>
+ </itemizedlist>
+ </note>
+
+ <note>
+ <title>Perform the checkout</title>
+ <programlisting>
+ <![CDATA[
+$cd <your chosen development area>
+$svn co http://subversion.ny.jpmorgan.com/svn/repos/IBTAMQ/trunk/svn-external/v2.2.x
+]]>
+ </programlisting>
+ This will checkout the code from all three repositories with the cavet that you must login for the JBoss
+ repository
+ to get the BDBStore module.
+ <emphasis>You will need to have a JBoss account that has the correct permissions for the bdbstore component.
+ The rest of the code will still succeed if you don't.
+ </emphasis>
+ </note>
+ </section>
+
+ <section>
+ <title>Building and developing the product.</title>
+
+ <note>
+ Further details on developing and build process can be found here (LINK). But to validate your checkout you
+ should
+ can follow these steps:
+ <programlisting>
+ <![CDATA[
+$cd <your chosen development area>
+$cd v2.2.x
+$cd qpid/java
+$mvn
+]]>
+ </programlisting>
+ This will build the Apache java code base. When complete a final mvn will build the bdbstore:
+ <programlisting>
+ <![CDATA[
+$cd bdbstore
+$mvn
+]]>
+ </programlisting>
+ </note>
+ </section>
+
+
+ <section>
+ <title>Create UAT/Release repository</title>
+
+ <para>
+ The code
+ <emphasis>must</emphasis>
+ come from a clean source so the previous step for getting the source must be
+ carried out as a pre-requisite to this step.
+ </para>
+
+ <para>
+ This section explains the steps to bring the new release code into JPMC for UAT before release. If you are
+ peforming
+ a patch or additions to a previously released release then skip to the next section.
+ </para>
+
+ <para>
+ AS: We shouldn't use tortoise for any of this, needs to be followable on Linux.
+
+ I did:
+ <programlisting>
+ svn co http://subversion.ny.jpmorgan.com/svn/repos/IBTAMQ/trunk/svn-external/v2.2.x
+ rm -rf `find -name .svn -type d`
+ cd v2.2.x
+ svn co -N http://subversion.ny.jpmorgan.com/svn/repos/IBTAMQ/trunk/src
+ mv ApacheM2.1 src/2.2.1.0-rc1
+ cd src
+ svn add 2.2.1.0-rc1
+ svn commit -m 'Import 2.2.1.0-rc1 Source'
+ cd 2.2.1.0-rc1
+ svn copy http://subversion.ny.jpmorgan.com/svn/repos/IBTAMQ/trunk/src/2.1.0.7/java/JPMC-distribution/repos/2.1.0.7/ http://subversion.ny.jpmorgan.com/svn/repos/IBTAMQ/trunk/src/2.2.1.0-rc1/qpid/java/JPMC-distribution/repos/2.2.1.0-rc1
+ svn up
+ cd qpid/java/JPMC-distribution/DAM
+ ./build.sh 2.2.1.0-rc1
+ cd ../DAM-client-slf4j/
+ ./build.sh 2.2.1.0-rc1
+ cd ../../../../
+ svn commit -m # the POMS
+ cd qpid/java/JPMC-distribution/DAM
+ ./build.sh 2.2.1.0-rc1
+ cd ../DAM-client-slf4j/
+ ./build.sh 2.2.1.0-rc1
+ </programlisting>
+
+ </para>
+
+
+ <orderedlist>
+ <listitem>
+ Check out current dev tree svn-external. :
+ $svn co http://subversion.ny.jpmorgan.com/svn/repos/IBTAMQ/trunk/svn-external/v2.2.x
+ </listitem>
+ <listitem>Locate newly created checkout : $cd v2.2.x then $explorer .</listitem>
+ <listitem>
+ TortoiseSVN allows you to export this new repository so it can be added as a new source tree.
+ </listitem>
+ <listitem>
+ Right click and drag folder (ApacheM2.1) to your release src checkout the folder choosing 'SVN Export
+ All to
+ here'
+ This removes all .svn folders so it can be re-added to the NY SVN repository.
+ </listitem>
+ <listitem>Rename ApacheM2.1 to the next release number (2.2.1.0)</listitem>
+ <listitem>Right click on the new 2.2.1.0 source tree and select TortoiseSVN -> Add. This will add all the
+ new
+ files to svn.
+ </listitem>
+ <listitem>
+ Right click on the new 2.2.1.0 source tree and select Commit. Complete the commit log with the required
+ JIRA
+ ID.
+ This will commit the new files to the repository.
+ </listitem>
+ <listitem>
+ Open the repo directory src/2.2.1.0/qpid/java/JPMC-distribution/repos and the previous release
+ repo directory src/2.1.0.7/qpid/java/JPMC-distribution/repos.
+ </listitem>
+ <listitem>
+ Right click and drag the previous svn repository to the new release tree.
+ Select 'SVN Copy and rename versioned file here'. Enter the new release name '2.2.1.0'
+ </listitem>
+ <listitem>
+ Right click on the new 2.2.1.0 repo and select Commit. Complete the commit log with the required JIRA
+ ID.
+ This will commit the previous libraries to the repository. This ensures we can detect
+ <empahsis>ANY</empahsis>
+ library change between releases
+ </listitem>
+ <listitem>
+ The final step is to record the revision number of both the Apache and JBoss repositories.
+ </listitem>
+ </orderedlist>
+
+ <para>
+ These steps ensure that we have an accurate snapshot of the external code base. Incuding monitoring to
+ ensure
+ our
+ libraries have not changed. If you intend to create a build for testing you may skip the next section.
+ </para>
+ </section>
+
+ <section>
+ <title>Extending a release into a DEV stage.</title>
+ <para>
+ This section explains how to setup the source to perform a patch or addition on a previously released
+ release.
+ If you need to bring new code into JPMC for UAT before release then skip to the previous section.
+ </para>
+
+ <para>
+ When performing this you must ensure that you have a clean local copy the simplist way to do this is to
+ ensure the
+ output from a status is clean:$svn status
+ </para>
+
+ <orderedlist>
+ <listitem>
+ Using the TortoiseSVN repo-browser navigate to:
+ http://subversion.ny.jpmorgan.com/svn/repos/IBTAMQ/trunk/src
+ </listitem>
+ <listitem>Locate the source tree that will be used as the basis for this new release (2.1.0.7)</listitem>
+ <listitem>Right click on the source that forms the basis and select 'Copy to...'.</listitem>
+ <listitem>Enter the new revision number (2.1.0.8)</listitem>
+ <listitem>Provide the correctly formatted commit log including JIRA ID.</listitem>
+ <listitem>
+ Using the repo-browser again navigate to the repo directory
+ src/2.1.0.8/qpid/java/JPMC-distribution/repos
+ </listitem>
+ <listitem>
+ Right click on the old repo 2.1.0.7 and select Rename. Enter the new release name '2.1.0.8'
+ </listitem>
+ <listitem>Provide the correctly formatted commit log including JIRA ID.</listitem>
+ <listitem>
+ You can now check out this dev tree using :
+ $svn co http://subversion.ny.jpmorgan.com/svn/repos/IBTAMQ/trunk/src/2.1.0.8
+ </listitem>
+ </orderedlist>
+
+ <para>
+ These steps ensure that we have an accurate copy of a previously released code base. Incuding monitoring to
+ ensure
+ our
+ libraries have not changed. This DEV stage code solely located on the internal repository so there are no
+ concerns
+ about external code reviews or commiting code to a variety of repositories.
+ </para>
+ </section>
+
+ <section>
+ <title>Create a build candidate</title>
+ <para>
+ <emphasis>Requires tidying up based on discussion with Chris Hardy from DEI.</emphasis>
+ </para>
+ <para>Each 'code line' contains the 'JPMC Distribution' which we use to create the required targets. As maven is
+ used to perform these builds we must store all the jars that it uses to perform the build. This will ensure
+ that we can accurately repeat the build process.
+ </para>
+
+ <orderedlist>
+ <listitem>Use svn copy to copy take a copy of the previous svn-repository, ensure that the copy is has the
+ correct name<emphasis>&lt;version&gt;-RC&lt;number&gt;</emphasis>, if this is a new RC simply rename the
+ previous RC.
+ </listitem>
+ <listitem>Update the file
+ <emphasis>VERSION</emphasis>
+ in the 'JPMC Distribution' directory
+ </listitem>
+ <listitem>Run the build script ('build.sh') located in the required package.</listitem>
+ <listitem>When the build successfuly completes check in the new RC build repository to ensure it can be
+ recreated.
+ </listitem>
+ <listitem>Ensure your repository is up to date.</listitem>
+ <listitem>Run the rebuild script ('rebuild.sh') to generate the final release artifacts.</listitem>
+ </orderedlist>
+
+ <para>Build outputs for use in JPMC</para>
+ <variablelist>
+ <varlistentry>
+ <term>qpid-&lt;version&gt;.tgz</term>
+ <listitem>Server DAM package</listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>qpid-&lt;version&gt;-client-slf4j.tgz</term>
+ <listitem>Client DAM package</listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+
+
+ <section>
+ <title>Validate the build candidate</title>
+ <para>This is a vital step to ensure that valuable testing time is not lost. The newly built candiate should
+ have the following tests performed to validate the artifact created by the build process. The validate steps
+ vary depending on the artifact created.
+ </para>
+
+ <section>
+ <title>Validating a Server DAM Artifact</title>
+ <note>
+ <title>Copy package to unix server</title>
+ <programlisting>
+ <![CDATA[
+$scp qpid-<version>.tgz <username>@noc-qpiddev01.jpmorganchase.com:.
+]]>
+ </programlisting>
+ </note>
+ <note>
+ <title>Move to unix server</title>
+ <programlisting>
+ <![CDATA[
+$ssh -l username noc-qpiddev01.jpmorganchase.com
+]]>
+ </programlisting>
+ </note>
+ <note>
+ <title>Unpack artifact</title>
+ <programlisting>
+ <![CDATA[
+$ tar xzf qpid-<version>.tgz
+]]>
+ </programlisting>
+ </note>
+ <note>
+ <title>Validate contents of bin directory</title>
+
+ <para>
+ <emphasis>Validate all files bin files in bin directory are executable.</emphasis>
+ </para>
+
+ <para>Ensure bin directory contains qpid_env.sh and qpid_env.csh</para>
+ <programlisting>
+ <![CDATA[
+$ ls qpid-<version>/bin
+msTool.sh qpid_env.sh qpid-run qpid-server.bat qpid.start qpid.stopall run.bat
+qpid_env.csh qpid-passwd qpid-server qpid-server-bdb.bat qpid.stop runAll run.sh
+]]>
+ </programlisting>
+
+ <para>
+ <emphasis>Validate all files bin directory have unix line endings.</emphasis>
+ </para>
+
+ <para>A suitable grep will do the trick. Only .bat files should be listed.
+ </para>
+
+ <programlisting>
+ <![CDATA[
+$ grep -Pl '\r\n' bin/*
+]]>
+ </programlisting>
+
+ </note>
+
+ <note>
+ <title>Validate the build location was clean.</title>
+ <example>
+ <title>Check contents of SVNREV.txt</title>
+ <programlisting>
+ <![CDATA[
+$ cat SVNREV.txt
+#Fri Nov 16 14:56:15 GMT 2007
+qpid.version=qpid-2.1.0.4
+qpid.svnversion=717
+qpid.builtby=E151839
+qpid.name=Qpid DAM
+]]>
+ </programlisting>
+ <para>Note that the svnversion number is a single number.</para>
+ </example>
+ <example>
+ <title>Check contents of Qpid jars</title>
+ <programlisting>
+ <![CDATA[
+$ cd lib
+$ jar xf qpid-common-2.1.0.4.jar qpidversion.properties
+$ cat qpidversion.properties
+#Fri Nov 16 14:54:38 GMT 2007
+qpid.version=2.1.0.4
+qpid.svnversion=717
+qpid.name=Qpid Common Utilities
+]]>
+ </programlisting>
+ <para>Note again that the svnversion number is a single number. This should be repeated for all qpid
+ jars.
+ </para>
+ </example>
+ </note>
+ <note>
+ <title>Ensure the number of libs has not increased due to a dependency change.</title>
+ <programlisting>
+ <![CDATA[
+$ ls qpid-2.1.0.4/libs
+backport-util-concurrent-2.2.jar commons-logging-api-1.0.4.jar qpid-broker-2.1.0.4.jar
+berkeleydb-je-3.2.42.jar dom4j-1.4.jar qpid-common-2.1.0.4.jar
+commons-beanutils-1.6.jar isorelax-20020414.jar qpid-incubating.jar
+commons-beanutils-core-1.7.0.jar jaxen-1.0-FCS.jar relaxngDatatype-20020414.jar
+commons-cli-1.0.jar jmxremote_optional-1.0.1_04.jar saxpath-1.0-FCS.jar
+commons-codec-1.3.jar log4j-1.2.12.jar servlet-api-2.3.jar
+commons-collections-3.1.jar mina-core-1.0.0.jar slf4j-api-1.4.0.jar
+commons-configuration-1.2.jar mina-filter-ssl-1.0.0.jar slf4j-log4j12-1.4.0.jar
+commons-digester-1.6.jar mina-java5-1.0.0.jar xalan-2.7.0.jar
+commons-lang-2.1.jar msv-20020414.jar xercesImpl-2.2.1.jar
+commons-logging-1.0.jar qpid-bdbstore-2.1.0.4.jar xml-apis-1.0.b2.jar
+
+$ ls qpid-2.1.0.7/lib/
+backport-util-concurrent-2.2.jar commons-logging-api-1.0.4.jar qpid-mina-core-2.1.0.7.jar
+berkeleydb-je-3.2.42.jar jmxremote_optional-1.0.1_04.jar qpid-mina-filter-ssl-2.1.0.7.jar
+commons-cli-1.0.jar log4j-1.2.12.jar qpid-mina-java5-2.1.0.7.jar
+commons-codec-1.3.jar qpid-bdbstore-2.1.0.7.jar slf4j-api-1.4.0.jar
+commons-collections-3.1.jar qpid-broker-2.1.0.7.jar slf4j-log4j12-1.4.0.jar
+commons-configuration-1.2.jar qpid-common-2.1.0.7.jar xalan-2.7.0.jar
+commons-lang-2.1.jar qpid-incubating.jar
+]]>
+ </programlisting>
+ <para>If the number has changed then explain the change and update this document.</para>
+ <para>Count 33. (Version:2.1.0.4).</para>
+ <para>Count 20. (Version:2.1.0.7). Removed un-used transitive dependancies pulled in via maven.</para>
+ </note>
+
+ <note>
+ <title>Add new artifact location to softdefs</title>
+ <programlisting>
+ <![CDATA[
+$ cat >> .softdefs
+qpid:~:qpid-<version>
+<ctrl-d>
+$ cat .softdefs
+jdk:/home/release/pyrsyrel/TechRefresh/opt/jdk:1.5.0.08
+qpid:/home/pyramid/e151839/releases/:qpid-2.1.0.4
+]]>
+ </programlisting>
+ <para>Ensure that you only have one line starting<emphasis>qpid</emphasis>. You may have more entries
+ such as
+ <emphasis>jdk</emphasis>
+ here, these are not required.
+ </para>
+ </note>
+
+ <note>
+ <title>Attempt to load qpid</title>
+ <programlisting>
+ <![CDATA[
+$ load qpid
+$ echo $QPID_HOME
+<Path-To-Release-Dir>/qpid-<version>
+]]>
+ </programlisting>
+ <para>The echo should show the full path to the directory of the DAM artifact to test.</para>
+ </note>
+ <note>
+ <title>Test qpid.start</title>
+ <programlisting>
+ <![CDATA[
+$ qpid.start
+Setting QPID_WORK to /cygdrive/c/ritchiem/home as default
+System Properties set to -Damqj.logging.level=info -DQPID_HOME=c:\dev\svn-co\JPMC-NY-IBTAMQ\trunk\src\2.1.0.4\
+qpid\java\JPMC-distribution\DAM\target\qpid-2.1.0.4 -DQPID_WORK=c:\ritchiem\home
+Using QPID_CLASSPATH /cygdrive/c/ritchiem/home/dev/svn-co/JPMC-NY-IBTAMQ/trunk/src/2.1.0.4/qpid/java/JPMC-dist
+ribution/DAM/target/qpid-2.1.0.4/lib/qpid-incubating.jar:/cygdrive/c/ritchiem/home/dev/svn-co/JPMC-NY-IBTAMQ/t
+runk/src/2.1.0.4/qpid/java/JPMC-distribution/DAM/target/qpid-2.1.0.4/lib/bdbstore-launch.jar
+Info: QPID_JAVA_GC not set. Defaulting to JAVA_GC -XX:-UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError
+Info: QPID_JAVA_MEM not set. Defaulting to JAVA_MEM -Xmx1024m
+Using configuration file c:\dev\svn-co\JPMC-NY-IBTAMQ\trunk\src\2.1.0.4\qpid\java\JPMC-distribution\DAM\target\qpid-2.1.0.4\etc\config.xml
+Configuring logger using configuration file
+ c:\dev\svn-co\JPMC-NY-IBTAMQ\trunk\src\2.1.0.4\qpid\java\JPMC-distribution\DAM\target\qpid-2.1.0.4\etc\log4j.xml
+2007-11-19 11:22:07,890 WARN [main] access.AMQUserManagementMBean (AMQUserManagementMBean.java:386) -
+ Access rights contains user 'admin' but there is no authentication data for that user
+2007-11-19 11:22:07,890 WARN [main] access.AMQUserManagementMBean (AMQUserManagementMBean.java:386) -
+ Access rights contains user 'user' but there is no authentication data for that user
+2007-11-19 11:22:08,078 WARN [main] management.JMXManagedObjectRegistry (JMXManagedObjectRegistry.java:153) -
+ JMX: Started JMXConnector server on port '8999' with security disabled
+2007-11-19 11:22:08,250 WARN [main] manager.PrincipalDatabaseAuthenticationManager (PrincipalDatabaseAuthenticationManager.java:114) -
+ Unable to set order of providers.
+2007-11-19 11:22:08,281 WARN [main] manager.PrincipalDatabaseAuthenticationManager (PrincipalDatabaseAuthenticationManager.java:87) -
+ No authentication specified for 'virtualhosts.virtualhost.development'. Using Default authentication manager
+2007-11-19 11:22:08,281 WARN [main] access.AccessManagerImpl (AccessManagerImpl.java:51) - No access control specified.
+ Using default access controls for VirtualHost:'development'
+2007-11-19 11:22:08,296 WARN [main] manager.PrincipalDatabaseAuthenticationManager (PrincipalDatabaseAuthenticationManager.java:87) -
+ No authentication specified for 'virtualhosts.virtualhost.test'. Using Default authentication manager
+2007-11-19 11:22:08,296 WARN [main] access.AccessManagerImpl (AccessManagerImpl.java:51) - No access control specified.
+ Using default access controls for VirtualHost:'test'
+2007-11-19 11:22:08,296 INFO [main] server.Main (Main.java:266) - Starting Qpid Broker 2.1.0.4 build: 717
+2007-11-19 11:22:08,593 INFO [main] server.Main (Main.java:419) - Qpid.AMQP listening on non-SSL address 0.0.0.0/0.0.0.0:5672
+2007-11-19 11:22:08,593 INFO [main] server.Main (Main.java:440) - Qpid Broker Ready :2.1.0.4 build: 717
+]]>
+ </programlisting>
+ <para>Background this process (ctrl-z, $ bg) and test the stop methods.</para>
+ </note>
+ <note>
+ <title>Test qpid.stop</title>
+ <programlisting>
+ <![CDATA[
+$ qpid.stop
+Killing All Qpid Brokers for user: 'e151839'
+Attempting to kill: java -server -Xmx1024m -Damqj.logging.level=info -DQPID_HOME=/home/pyramid/pyrsyrel/qpid/qpid-2.0.4.1
+ -DQPID_WORK=/home/pyramid/e151839 org.apache.qpid.server.Main
+Waiting 1 second for 30211 to exit
+Waiting 1 second for 30211 to exit
+Done
+All Qpid brokers successfully quit
+]]>
+ </programlisting>
+ <para>Restart the broker for the stopall test</para>
+ </note>
+ <note>
+ <title>Test qpid.stopall</title>
+ <programlisting>
+ <![CDATA[
+$ qpid.stopall
+Attempting to kill: java -server -Xmx1024m -Damqj.logging.level=info -DQPID_HOME=/home/pyramid/pyrsyrel/qpid/qpid-2.0.4.1
+ -DQPID_WORK=/home/pyramid/e151839 org.apache.qpid.server.Main
+Waiting 1 second for 30651 to exit
+2007-11-19 16:38:28,017 INFO [Thread-0] registry.ApplicationRegistry$ShutdownService (ApplicationRegistry.java:61) -
+ Shutting down application registries...
+2007-11-19 16:38:28,017 INFO [Thread-0] registry.ApplicationRegistry$ShutdownService (ApplicationRegistry.java:61) -
+ Shutting down application registries...
+Process quit
+All Qpid brokers successfully quit
+]]>
+ </programlisting>
+ </note>
+
+
+ <note>
+ <title>Test start broker directly works</title>
+
+ <programlisting>
+ <![CDATA[
+$ cd $QPID_HOME/bin
+$ ./qpid-server
+Setting QPID_WORK to /cygdrive/c/ritchiem/home as default
+System Properties set to -Damqj.logging.level=info -DQPID_HOME=c:\dev\svn-co\JPMC-NY-IBTAMQ\trunk\src\2.1.0.4\
+qpid\java\JPMC-distribution\DAM\target\qpid-2.1.0.4 -DQPID_WORK=c:\ritchiem\home
+Using QPID_CLASSPATH /cygdrive/c/ritchiem/home/dev/svn-co/JPMC-NY-IBTAMQ/trunk/src/2.1.0.4/qpid/java/JPMC-dist
+ribution/DAM/target/qpid-2.1.0.4/lib/qpid-incubating.jar:/cygdrive/c/ritchiem/home/dev/svn-co/JPMC-NY-IBTAMQ/t
+runk/src/2.1.0.4/qpid/java/JPMC-distribution/DAM/target/qpid-2.1.0.4/lib/bdbstore-launch.jar
+Info: QPID_JAVA_GC not set. Defaulting to JAVA_GC -XX:-UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError
+Info: QPID_JAVA_MEM not set. Defaulting to JAVA_MEM -Xmx1024m
+Using configuration file c:\dev\svn-co\JPMC-NY-IBTAMQ\trunk\src\2.1.0.4\qpid\java\JPMC-distribution\DAM\target\qpid-2.1.0.4\etc\config.xml
+Configuring logger using configuration file
+ c:\dev\svn-co\JPMC-NY-IBTAMQ\trunk\src\2.1.0.4\qpid\java\JPMC-distribution\DAM\target\qpid-2.1.0.4\etc\log4j.xml
+2007-11-19 11:22:07,890 WARN [main] access.AMQUserManagementMBean (AMQUserManagementMBean.java:386) -
+ Access rights contains user 'admin' but there is no authentication data for that user
+2007-11-19 11:22:07,890 WARN [main] access.AMQUserManagementMBean (AMQUserManagementMBean.java:386) -
+ Access rights contains user 'user' but there is no authentication data for that user
+2007-11-19 11:22:08,078 WARN [main] management.JMXManagedObjectRegistry (JMXManagedObjectRegistry.java:153) -
+ JMX: Started JMXConnector server on port '8999' with security disabled
+2007-11-19 11:22:08,250 WARN [main] manager.PrincipalDatabaseAuthenticationManager (PrincipalDatabaseAuthenticationManager.java:114) -
+ Unable to set order of providers.
+2007-11-19 11:22:08,281 WARN [main] manager.PrincipalDatabaseAuthenticationManager (PrincipalDatabaseAuthenticationManager.java:87) -
+ No authentication specified for 'virtualhosts.virtualhost.development'. Using Default authentication manager
+2007-11-19 11:22:08,281 WARN [main] access.AccessManagerImpl (AccessManagerImpl.java:51) - No access control specified.
+ Using default access controls for VirtualHost:'development'
+2007-11-19 11:22:08,296 WARN [main] manager.PrincipalDatabaseAuthenticationManager (PrincipalDatabaseAuthenticationManager.java:87) -
+ No authentication specified for 'virtualhosts.virtualhost.test'. Using Default authentication manager
+2007-11-19 11:22:08,296 WARN [main] access.AccessManagerImpl (AccessManagerImpl.java:51) - No access control specified.
+ Using default access controls for VirtualHost:'test'
+2007-11-19 11:22:08,296 INFO [main] server.Main (Main.java:266) - Starting Qpid Broker 2.1.0.4 build: 717
+2007-11-19 11:22:08,593 INFO [main] server.Main (Main.java:419) - Qpid.AMQP listening on non-SSL address 0.0.0.0/0.0.0.0:5672
+2007-11-19 11:22:08,593 INFO [main] server.Main (Main.java:440) - Qpid Broker Ready :2.1.0.4 build: 717
+]]>
+ </programlisting>
+ <para>The broker should start up with no errors and report that it is ready.</para>
+ </note>
+
+ <note>
+ <title>Ensure broker will start with delivered config files.</title>
+ <itemizedlist>
+ <listitem>$ ./qpid-server -c ../etc/transient_config.xml</listitem>
+ <listitem>$ ./qpid-server -c ../etc/persistent_config.xml</listitem>
+ </itemizedlist>
+ <para>The output should not report any errors and as with the default config should report the broker is
+ Ready.
+ </para>
+ </note>
+
+ </section>
+
+ <section>
+ <title>Validate Management</title>
+
+ <note>
+ <title>Unpack JMX Management console</title>
+ <para>On a local windows machine unpack qpid-management-&lt;version&gt;.zip</para>
+ </note>
+
+ <note>
+ <title>Validate JMX management console connects</title>
+ <itemizedlist>
+ <listitem>Start remote broker with the default configuration (./qpid-server)</listitem>
+ <listitem>Launch application qpidmc/bin/qpidmc.bat</listitem>
+ <listitem>
+ <para>Create a new connection. Click:</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="add.gif" format="GIF"/>
+ </imageobject>
+ <textobject>
+ <phrase>Green plus(+) symbol</phrase>
+ </textobject>
+ </mediaobject>
+ </listitem>
+ <listitem>Enter server details for remote linux broker from above tests, log in as guest(guest)
+ </listitem>
+ <listitem>
+ <para>Ensure that the following items are available and browseable.</para>
+ <orderedlist>
+ <listitem>org.apache.qpid : UserManagement</listitem>
+ <listitem>org.apache.qpid : Virtualhosts</listitem>
+ </orderedlist>
+ </listitem>
+ </itemizedlist>
+
+ </note>
+
+ <note>
+ <title>Validate Secure JMX management console connects</title>
+ <itemizedlist>
+ <listitem>Start remote broker with the persistent configuration (./qpid-server -
+ ../etc/persistent-config.xml)
+ </listitem>
+ <listitem>Unpack qpid-management-&lt;version&gt;.zip</listitem>
+ <listitem>Launch application qpidmc/bin/qpidmc-secure.bat</listitem>
+ <listitem>
+ <para>Create a new connection. Click:</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="add.gif" format="GIF"/>
+ </imageobject>
+ <textobject>
+ <phrase>Green plus(+) symbol</phrase>
+ </textobject>
+ </mediaobject>
+ <para>or use reconnect :</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="reconnect.gif" format="GIF"/>
+ </imageobject>
+ <textobject>
+ <phrase>Yellow arrow(->) symbol</phrase>
+ </textobject>
+ </mediaobject>
+ </listitem>
+ <listitem>Enter server details for remote linux broker from above tests, log in as admin(admin)
+ </listitem>
+ <listitem>
+ <para>Ensure that the following items are available and browseable.</para>
+ <orderedlist>
+ <listitem>org.apache.qpid : UserManagement</listitem>
+ <listitem>org.apache.qpid : Virtualhosts</listitem>
+ </orderedlist>
+ </listitem>
+ <listitem>Reconnect to the server with the linux broker from above tests, with log in as
+ guest(guest)
+ </listitem>
+ <listitem>Ensure that 'org.apache.qpid : Virtualhosts' is available and browseable.</listitem>
+ <listitem>Ensure that 'org.apache.qpid : UserManagement' is not accessable.</listitem>
+ </itemizedlist>
+ </note>
+
+ <note>
+ <title>Validate jconsole connects</title>
+ <itemizedlist>
+ <listitem>Start remote broker with the default configuration (./qpid-server)</listitem>
+ <listitem>Launch Jconsole from your local JDK installation</listitem>
+ <listitem>Use the remote host option and fill in details server as before and user guest(guest)
+ </listitem>
+ <listitem>
+ <para>Ensure that the following MBeans are available and browseable.</para>
+ <orderedlist>
+ <listitem>org.apache.qpid : UserManagement</listitem>
+ <listitem>org.apache.qpid : Virtualhost.Exchange</listitem>
+ <listitem>org.apache.qpid : Virtualhost.Queue</listitem>
+ <listitem>org.apache.qpid : Virtualhost.VirtualHostManger</listitem>
+ </orderedlist>
+ </listitem>
+ </itemizedlist>
+
+ </note>
+
+ </section>
+
+ <section>
+ <title>Validate the client DAM candidate</title>
+ <note>
+ <title>Copy package to unix server</title>
+ <programlisting>
+ <![CDATA[
+$scp qpid-<version>-client-bin.tgz <username>@noc-qpiddev01.jpmorganchase.com:.
+]]>
+ </programlisting>
+ </note>
+ <note>
+ <title>Move to unix server</title>
+ <programlisting>
+ <![CDATA[
+$ssh -l username noc-qpiddev01.jpmorganchase.com
+]]>
+ </programlisting>
+ </note>
+ <note>
+ <title>Unpack artifact</title>
+ <programlisting>
+ <![CDATA[
+$ tar xzf qpid-<version>-client-bin.tgz
+]]>
+ </programlisting>
+ </note>
+ <note>
+ <title>Validate contents of bin directory</title>
+
+ <para>
+ <emphasis>Validate all files bin files in bin directory are executable.</emphasis>
+ </para>
+
+ <para>Ensure bin directory contains qpid_env.sh and qpid_env.csh</para>
+ <programlisting>
+ <![CDATA[
+$ ls qpid-<version>-client/bin
+qpid_env.csh qpid_env.sh
+]]>
+ </programlisting>
+
+ <para>
+ <emphasis>Validate all files bin directory have unix line endings.</emphasis>
+ </para>
+
+ <para>A suitable grep will do the trick. Only .bat files should be listed.
+ </para>
+
+ <programlisting>
+ <![CDATA[
+$ grep -Pl '\r\n' bin/*
+]]>
+ </programlisting>
+
+ </note>
+
+ <note>
+ <title>Validate the build location was clean.</title>
+ <example>
+ <title>Check contents of SVNREV.txt</title>
+ <programlisting>
+ <![CDATA[
+$ cat SVNREV.txt
+#Fri Jan 25 17:22:49 GMT 2008
+qpid.version=qpid-2.1.0.7-client-slf4j
+qpid.svnversion=762
+qpid.builtby=F065199
+qpid.name=Qpid DAM Client
+]]>
+ </programlisting>
+ <para>Note that the svnversion number is a single number.</para>
+ </example>
+ <example>
+ <title>Check contents of Qpid jars</title>
+ <programlisting>
+ <![CDATA[
+$ cd lib
+$ jar xf qpid-common-2.1.0.7.jar qpidversion.properties
+$ cat qpidversion.properties
+#Fri Jan 25 17:21:18 GMT 2008
+qpid.version=2.1.0.7
+qpid.svnversion=762
+qpid.name=Qpid Common Utilities
+]]>
+ </programlisting>
+ <para>Note again that the svnversion number is a single number. This should be repeated for all qpid
+ jars.
+ </para>
+ </example>
+ </note>
+ <note>
+ <title>Ensure the number of libs has not increased due to a dependency change.</title>
+ <programlisting>
+ <![CDATA[
+$ ls qpid-2.1.0.7-client-slf4j/lib
+backport-util-concurrent-2.2.jar qpid-client-2.1.0.7.jar qpid-mina-filter-ssl-2.1.0.7.jar
+commons-collections-3.2.jar qpid-common-2.1.0.7.jar qpid-mina-java5-2.1.0.7.jar
+commons-lang-2.1.jar qpid-incubating.jar slf4j-api-1.4.0.jar
+geronimo-jms_1.1_spec-1.0.jar qpid-mina-core-2.1.0.7.jar
+]]>
+ </programlisting>
+ <para>If the number has changed then explain the change and update this document.</para>
+ <para>Count 11. (Version:2.1.0.7).</para>
+ </note>
+ <note>
+ <title>Run Pub / Sub example</title>
+ <para>
+ <emphasis>This should be updated with the 2.2.1.0 to use the simple examples. The example package
+ should also ship with slf4j-simple.jar
+ </emphasis>
+ </para>
+ <itemizedlist>
+
+ <listitem>Start remote broker with the default configuration (./qpid-server)</listitem>
+ <listitem>Run the Subscriber</listitem>
+ <listitem>Run the Publisher</listitem>
+ <listitem>The publisher should then send message numbers 0-99 and the subscriber should receive
+ 0-99. Both clients quit when their task is complete.
+ </listitem>
+ </itemizedlist>
+ <programlisting>
+ <![CDATA[
+$ java -cp ../lib/qpid-incubating.jar:slf4j-simple-1.4.3.jar:examples.jar org.apache.qpid.example.pubsub.Subscriber
+$ java -cp ../lib/qpid-incubating.jar:slf4j-simple-1.4.3.jar:examples.jar org.apache.qpid.example.pubsub.Publisher
+]]>
+ </programlisting>
+ </note>
+ <note>
+ <title>Run Point to Point example</title>
+ <itemizedlist>
+
+ <listitem>Start remote broker with the default configuration (./qpid-server)</listitem>
+ <listitem>Run the Simple Test</listitem>
+ <listitem>The will send and receive a message.</listitem>
+ </itemizedlist>
+
+ <programlisting>
+ <![CDATA[
+$ java -cp ../lib/qpid-incubating.jar:slf4j-simple-1.4.3.jar:examples.jar org.apache.qpid.example.simple.point2point.Simple
+Recieved message:Sample Message.
+]]>
+
+ </programlisting>
+ </note>
+ </section>
+
+ </section>
+</article>
+
+