You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by ks...@apache.org on 2010/01/09 19:28:58 UTC

svn commit: r897513 [12/14] - in /webservices/juddi/trunk/qa: ./ juddi-xlt/ juddi-xlt/config/ juddi-xlt/config/data/ juddi-xlt/config/data/default/ juddi-xlt/lib/ juddi-xlt/src/ juddi-xlt/src/org/ juddi-xlt/src/org/apache/ juddi-xlt/src/org/apache/judd...

Added: webservices/juddi/trunk/qa/juddi-xlt/config/default.properties
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/config/default.properties?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/config/default.properties (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/config/default.properties Sat Jan  9 18:28:54 2010
@@ -0,0 +1,158 @@
+#####################################################################
+#
+# General Settings
+#
+#####################################################################
+
+## Whether to put SSL into easy mode which allows to use invalid/self-signed
+## certificates.
+com.xceptance.xlt.ssl.easyMode = true
+
+## HTTP proxy settings. Specify host and port of the proxy server and 
+## whether it should be used at all. You may also configure a list of hosts
+## that can be used directly, thus bypassing the proxy. Note that the host 
+## definitions are interpreted as regular expressions so ensure proper use of
+## escape characters.
+com.xceptance.xlt.proxy = false
+com.xceptance.xlt.proxy.host = 127.0.0.1
+com.xceptance.xlt.proxy.port = 51966
+#com.xceptance.xlt.proxy.bypassForHosts = localhost 127\\.0\\.0\\.1 ^192[.]168
+
+## The connection timeout [ms] on sockets and establishing the connection. This
+## value is used therefore twice. So a value of 30000 will set a timeout of 
+## 30 seconds to establish the connection and 30 seconds on waiting for data.
+## Default value is 100000 ms, if not set.
+com.xceptance.xlt.timeout = 30000
+
+## Whether to use keep-alive HTTP connections.
+com.xceptance.xlt.http.keepAlive = true
+
+## Whether to check for stale connections if keep-alive connections are used.
+com.xceptance.xlt.http.keepAlive.staleConnectionCheck = true
+
+## Shall we request compressed content delivery? This will increase the cpu
+## usage on the load test machines. Additionally the system under test must
+## support it, otherwise the content will be downloaded normally.
+com.xceptance.xlt.http.gzip = true
+
+## The URLs that should (not) be loaded. Useful for excluding external resources
+## from being loaded during a load test. Specify one or more URLs as regular 
+## expressions separated by comma. Usually, either the "include" or the 
+## "exclude" setting is used, whichever is easier to define. If both settings 
+## are used at the same time, the "exclude" patterns take precedence. A
+## non-existing or empty property means that any URL is included and none is 
+## excluded, respectively. 
+com.xceptance.xlt.http.filter.include =
+com.xceptance.xlt.http.filter.exclude =
+
+## Indicates the browser to simulate. Possible values are:
+## - "FF" .... Firefox 2 (default) 
+## - "FF2" ... Firefox 2 
+## - "FF3" ... Firefox 3 
+## - "IE" .... Internet Explorer 7 
+## - "IE6" ... Internet Explorer 6 
+## - "IE7" ... Internet Explorer 7 
+## This setting is important for the user agent string and for the JavaScript 
+## simulation, if activated. 
+com.xceptance.xlt.browser = FF
+
+## The user agent string that will be sent to the server. By default, the user
+## agent string is derived from the configured browser, but can be overridden 
+## with this setting.
+#com.xceptance.xlt.browser.userAgent =
+
+## Whether JavaScript is enabled.
+com.xceptance.xlt.javaScriptEnabled = true
+
+## The size of the cache for compiled JavaScript artifacts. This cache is 
+## shared by all browser instances.
+com.xceptance.xlt.js.cache.size = 100
+
+## The default time (in ms) to wait for JavaScript background jobs to finish. 
+## Default value is 0, if not set. 
+#com.xceptance.xlt.js.backgroundActivity.waitingTime = 10000
+
+## Whether CSS files are evaluated.
+com.xceptance.xlt.cssEnabled = true
+
+## The size of the cache for compiled CSS artifacts. This cache is 
+## shared by all browser instances.
+com.xceptance.xlt.css.cache.size = 100
+
+## Shall we load images and other static content?
+com.xceptance.xlt.loadStaticContent = true
+
+## The number of threads which load static resources asynchronously.
+com.xceptance.xlt.staticContent.downloadThreads = 4
+
+## Shall we simulate caching of static content?
+com.xceptance.xlt.staticContentCache = true
+
+## How many different static URLs do we want to cache per browser instance (web client)?
+com.xceptance.xlt.staticContentCache.size = 1000
+
+## Directory with all the dictionary files for data generation including
+## a valid search phrase list.  
+com.xceptance.xlt.data.directory = ./config/data
+
+## The think time between two subsequent actions/transactions (in milliseconds).
+## If a random think time is needed, set the deviation to a value greater than 0.
+## It specifies the maximum deviation from think time in milliseconds. The 
+## respective value added/subtracted from think time is generated with a
+## pseudo-random, uniform distribution. 
+com.xceptance.xlt.thinktime.action = 100
+com.xceptance.xlt.thinktime.action.deviation = 50
+com.xceptance.xlt.thinktime.transaction = 0
+com.xceptance.xlt.thinktime.transaction.deviation = 0
+
+## Enables page output to disk. Possible values are:
+## - never ... pages are never logged
+## - onError ... pages are logged only if the transaction had errors
+## - always ... pages are logged always 
+com.xceptance.xlt.output2disk = onError 
+
+## The amount of the pages kept in memory for onError operations.
+## The always operations is not affected, because all data will be
+## immediately written to disk.
+com.xceptance.xlt.output2disk.size = 3
+
+## The directory where the results will be stored. 
+com.xceptance.xlt.result-dir = ./results
+
+## Initialization value for the central random number generator.
+## If not set, the system time is used.
+#com.xceptance.xlt.random.initValue = 0
+
+## Whether the framework should abort a transaction if an HTTP error occurred
+## while loading a page.
+com.xceptance.xlt.stopTestOnHttpErrors.page = true
+
+## Whether the framework should abort a transaction if an HTTP error occurred
+## while loading a resource that is embedded in a page.
+com.xceptance.xlt.stopTestOnHttpErrors.embedded = false
+
+## Whether the framework should abort a transaction if a JavaScript error 
+## occurred.
+com.xceptance.xlt.stopTestOnJavaScriptErrors = false
+
+## The maximum number of errors allowed before an agent terminates.
+## Useful in case of severe server errors, etc.  
+com.xceptance.xlt.maxErrors = 1000
+
+## Whether the agent will use either the master controller's time or the local 
+## system time when generating time stamps. Using the master controller's time 
+## is only useful if the system clocks on the agent machines diverge 
+## significantly. Note that using an NTP client instead is a more reliable and 
+## the recommended solution.     
+#com.xceptance.xlt.useMasterControllerTime = false
+
+## External switch to deactivate all XHTMLValidator checks during the tests.
+## This is useful for large scale load tests to lower the load in the machines
+## and suppress unwanted error messages.
+##
+## This validator should only be used for regression and small load test because
+## it needs some resources to validate the data.
+com.xceptance.xlt.api.validators.XHTMLValidator.enabled = true
+
+## The XPath engine to use. Valid values are "jaxen" (default) and "apache". 
+#com.xceptance.xlt.xpath.engine = jaxen

Added: webservices/juddi/trunk/qa/juddi-xlt/config/dev-log4j.properties
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/config/dev-log4j.properties?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/config/dev-log4j.properties (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/config/dev-log4j.properties Sat Jan  9 18:28:54 2010
@@ -0,0 +1,37 @@
+#############################################################################
+#
+# log4j Settings - Development Mode 
+#
+# The log4j configuration used by XLT when running the web tests from inside 
+# your IDE during development.
+#
+#############################################################################
+
+### Logger definitions ###
+
+log4j.rootLogger = debug, console, file
+
+log4j.logger.runtime = debug, console, file
+log4j.additivity.runtime = false
+
+log4j.logger.com.xceptance = debug, console, file
+log4j.additivity.com.xceptance = false
+
+log4j.logger.com.gargoylesoftware.htmlunit = warn, console, file
+log4j.additivity.com.gargoylesoftware.htmlunit = false
+
+
+### Appender definitions ###
+
+## console
+log4j.appender.console = org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout = org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern = [%d{HH:mm:ss,SSS}] %-5p [%t] - %m%n
+
+## log file
+log4j.appender.file = org.apache.log4j.RollingFileAppender
+log4j.appender.file.File = ./results/xlt.log
+log4j.appender.file.MaxFileSize = 10MB
+log4j.appender.file.MaxBackupIndex = 10
+log4j.appender.file.layout = org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern = [%d{yyyy/MM/dd-HH:mm:ss,SSS}] %-5p [%t] %c - %m%n

Added: webservices/juddi/trunk/qa/juddi-xlt/config/dev.properties
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/config/dev.properties?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/config/dev.properties (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/config/dev.properties Sat Jan  9 18:28:54 2010
@@ -0,0 +1,24 @@
+################################################################################
+# 
+# Development Mode Settings
+#
+# Use this file to modify the configuration such that it better suits your needs 
+# during development of test cases, i.e. when you create and test the test cases 
+# from within your IDE. 
+#
+# This file is read in development mode only, but not during load testing. Any 
+# setting defined here will overwrite the corresponding setting from the other
+# properties files: "default.properties", "project.properties", and the test run
+# specific properties file, e.g. "test.properties".
+#
+################################################################################
+
+## Shall we load images and other static content?
+com.xceptance.xlt.loadStaticContent = true
+
+## Enables page output to disk. Possible values are:
+## - never ... pages are never logged
+## - onError ... pages are logged only if the transaction had errors
+## - always ... pages are logged always 
+com.xceptance.xlt.output2disk = always
+   
\ No newline at end of file

Added: webservices/juddi/trunk/qa/juddi-xlt/config/jvmargs.cfg
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/config/jvmargs.cfg?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/config/jvmargs.cfg (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/config/jvmargs.cfg Sat Jan  9 18:28:54 2010
@@ -0,0 +1,24 @@
+#############################################################################
+#
+# Agent JVM Configuration
+#
+# List additional JVM command-line arguments, one by line. These arguments
+# will be appended to the default JVM command line for all agents.  
+#
+#############################################################################
+
+#-showversion
+#-Dfoo=bar
+
+## enable GC log (for Sun JVMs)
+#-Xloggc:results/gc.log
+#-XX:+PrintGCDetails
+
+# Enable concurrent GC to avoid sudden long pauses
+-XX:+UseConcMarkSweepGC
+
+# Set minimum memory to use
+-Xms256m
+
+# Set maximum permitted memory
+-Xmx512m

Added: webservices/juddi/trunk/qa/juddi-xlt/config/log4j.properties
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/config/log4j.properties?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/config/log4j.properties (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/config/log4j.properties Sat Jan  9 18:28:54 2010
@@ -0,0 +1,36 @@
+#############################################################################
+#
+# log4j Settings - Load Test Mode 
+#
+# The log4j configuration used by XLT when running the tests as a load test.
+#
+#############################################################################
+
+### Logger definitions ###
+
+log4j.rootLogger = warn, file
+
+log4j.logger.runtime = warn, file
+log4j.additivity.runtime = false
+
+log4j.logger.com.xceptance = warn, file
+log4j.additivity.com.xceptance = false
+
+log4j.logger.com.gargoylesoftware.htmlunit = warn, file
+log4j.additivity.com.gargoylesoftware.htmlunit = false
+
+
+### Appender definitions ###
+
+## console (typically not used)
+log4j.appender.console = org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout = org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern = [%d{HH:mm:ss,SSS}] %-5p [%t] - %m%n
+
+## log file
+log4j.appender.file = org.apache.log4j.RollingFileAppender
+log4j.appender.file.File = ${com.xceptance.xlt.agent.home}/results/agent.log
+log4j.appender.file.MaxFileSize = 10MB
+log4j.appender.file.MaxBackupIndex = 10
+log4j.appender.file.layout = org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern = [%d{yyyy/MM/dd-HH:mm:ss,SSS}] %-5p [%t] %c - %m%n

Added: webservices/juddi/trunk/qa/juddi-xlt/config/project.properties
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/config/project.properties?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/config/project.properties (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/config/project.properties Sat Jan  9 18:28:54 2010
@@ -0,0 +1,243 @@
+################################################################################
+#
+# Test Run Specific Settings
+#
+# Use this section to configure an (optional) file which contains the settings
+# specific to a certain load test run. This is useful to externalize the
+# definition of a certain load profile or a set of test conditions. This way,
+# many of these configurations can be defined and prepared in advance and used
+# as needed. For example, to switch to another load profile, just name the
+# respective properties file.
+#
+################################################################################
+
+## The file with test run specific settings.
+com.xceptance.xlt.testPropertiesFile = test.properties
+
+################################################################################
+#
+# Test Case Mapping
+#
+# Maps the test case class onto a load test name. The load test name will be
+# referenced later in the load test configuration. You can map the same class
+# to multiple load test names if needed.
+#
+################################################################################
+
+## Test case specific configuration.
+### Test cases
+com.xceptance.xlt.loadtests.TDeleteService.class = org.apache.juddi.xlt.test.TDeleteService
+com.xceptance.xlt.loadtests.TFindServiceByName.class = org.apache.juddi.xlt.test.TFindServiceByName
+com.xceptance.xlt.loadtests.TGetAuthToken.class = org.apache.juddi.xlt.test.TGetAuthToken
+com.xceptance.xlt.loadtests.TPublishSingleService.class = org.apache.juddi.xlt.test.TPublishSingleService
+com.xceptance.xlt.loadtests.TRegisterBusinessWithServices.class = org.apache.juddi.xlt.test.TRegisterBusinessWithServices
+com.xceptance.xlt.loadtests.TSubscription.class = org.apache.juddi.xlt.test.TSubscription
+com.xceptance.xlt.loadtests.TViewNode.class = org.apache.juddi.xlt.test.TViewNode
+
+### Benchmark test cases
+com.xceptance.xlt.loadtests.TFindBusinessBM.class = org.apache.juddi.xlt.test.benchmark.TFindBusinessBM
+com.xceptance.xlt.loadtests.TRegisterBusinessBM.class = org.apache.juddi.xlt.test.benchmark.TRegisterBusinessBM
+com.xceptance.xlt.loadtests.TSearchableLimitBM.class = org.apache.juddi.xlt.test.benchmark.TSearchableLimitBM
+com.xceptance.xlt.loadtests.TSearchableLimitStaticAuthTokenBM.class = org.apache.juddi.xlt.test.benchmark.TSearchableLimitStaticAuthTokenBM
+
+### Preformance test cases
+com.xceptance.xlt.loadtests.TDeleteBusinessPT.class = org.apache.juddi.xlt.test.performance.TDeleteBusinessPT
+com.xceptance.xlt.loadtests.TFindBusinessPT.class = org.apache.juddi.xlt.test.performance.TFindBusinessPT
+com.xceptance.xlt.loadtests.TRegisterBusinessPT.class = org.apache.juddi.xlt.test.performance.TRegisterBusinessPT
+
+###HTTP test cases
+com.xceptance.xlt.loadtests.TBrowse.class = org.apache.juddi.xlt.test.TBrowse
+
+################################################################################
+#
+# Test Specific Settings
+#
+# Prefix test case specific settings with the test class name.
+#
+################################################################################
+
+##### General Settings (we refer to them by full path) #####
+
+## The URL of Pluto's home page.
+url = http://localhost:8080/pluto/portal
+
+username = root
+password = root
+
+
+##### TVisitor Options #####
+
+## How many articles do we want to read? It might happen that we read the same one again
+## and again if we do not have enough articles available.
+com.xceptance.xlt.samples.tests.TVisitor.article-read-count = 2
+
+## How often should we page before we read articles?
+com.xceptance.xlt.samples.tests.TVisitor.paging-count = 2
+
+## Randomize
+com.xceptance.xlt.samples.tests.TVisitor.randomize = false
+
+
+##### TJSVisitor Options #####
+
+## How many articles do we want to read? It might happen that we read the same one again
+## and again if we do not have enough articles available.
+com.xceptance.xlt.samples.tests.TJSVisitor.article-read-count = 2
+
+## How often should we page before we read articles?
+com.xceptance.xlt.samples.tests.TJSVisitor.paging-count = 2
+
+## Randomize
+com.xceptance.xlt.samples.tests.TJSVisitor.randomize = false
+
+
+##### TLWVisitor Options #####
+
+## How many articles do we want to read? It might happen that we read the same one again
+## and again if we do not have enough articles available.
+com.xceptance.xlt.samples.tests.TLWVisitor.article-read-count = 3
+
+## How often should we page before we read articles?
+com.xceptance.xlt.samples.tests.TLWVisitor.paging-count = 2
+
+## Randomize
+com.xceptance.xlt.samples.tests.TLWVisitor.randomize = true
+
+
+##### TAuthor Options #####
+
+## Our user name and password to log on.
+com.xceptance.xlt.samples.tests.TAuthor.username = username
+com.xceptance.xlt.samples.tests.TAuthor.password = password
+
+## How many articles do we want to write?
+com.xceptance.xlt.samples.tests.TAuthor.write-count = 2
+
+
+##### TTagVisitor Options #####
+
+## How many articles do we want to read? It might happen that we read the same one again
+## and again if we do not have enough articles available.
+com.xceptance.xlt.samples.tests.TTagVisitor.article-read-count = 3
+
+## How often should we page before we read articles?
+com.xceptance.xlt.samples.tests.TTagVisitor.paging-count = 2
+
+## Randomize
+com.xceptance.xlt.samples.tests.TTagVisitor.randomize = true
+
+
+##### TDateVisitor Options #####
+
+## How many articles do we want to read? It might happen that we read the same one again
+## and again if we do not have enough articles available.
+com.xceptance.xlt.samples.tests.TDateVisitor.article-read-count = 3
+
+## Randomize
+com.xceptance.xlt.samples.tests.TDateVisitor.randomize = true
+
+
+##### TSearchVisitor Options #####
+
+## How many articles do we want to search for?
+com.xceptance.xlt.samples.tests.TSearchVisitor.searches = 3
+
+## How often should we page before we read articles?
+com.xceptance.xlt.samples.tests.TSearchVisitor.paging-count = 2
+
+## Randomize
+com.xceptance.xlt.samples.tests.TSearchVisitor.randomize = true
+
+##### TUnpublish Options #####
+
+## Our user name and password to log on.
+com.xceptance.xlt.samples.tests.TUnpublish.username = username
+com.xceptance.xlt.samples.tests.TUnpublish.password = password
+
+## How many articles do we want to unpublish?
+com.xceptance.xlt.samples.tests.TUnpublish.unpublish-count = 1
+
+##### TDeleteService Options #####
+
+org.apache.juddi.xlt.test.TDeleteService.name = Xceptance XLT UDDI - Sample Service
+
+##### TRegisterBusiness #####
+
+org.apache.juddi.xlt.test.TRegisterBusinessWithServices.businessName = Xceptance - Sample Business
+org.apache.juddi.xlt.test.TRegisterBusinessWithServices.businessUrl = http://www.xceptance.de
+
+##### TRegisterBusinessWithServices #####
+
+org.apache.juddi.xlt.test.TRegisterBusinessWithServices.maxNumberOfBusinessServices = 7
+
+##### TRegisterBusiness #####
+
+org.apache.juddi.xlt.test.performance.TRegisterBusinessPT.maxNumberOfBusinessServices = 3
+
+##### TBrowseBusinessByName
+
+org.apache.juddi.xlt.test.TBrowseBusinessByName.businessToSearch = %Xceptance - Sample Business%
+
+##### TFindBusiness #####
+
+org.apache.juddi.xlt.test.performance.TFindBusinessPT.maxNumberOfBusinessServices = 3
+
+##### TDeleteBusiness #####
+
+org.apache.juddi.xlt.test.performance.TDeleteBusinessPT.maxNumberOfBusinessServices = 3
+
+################################################################################
+#
+# Project-Specific Report Generator Settings
+#
+# In order to reduce the list of requests in the report, the values of different
+# requests can be merged together. You may specify one or more merge rules as
+# outlined below:
+#
+#   com.xceptance.xlt.reportgenerator.requestMergeRules.<num>.<param> = <value>
+#
+# The rules are sorted numerically based on <num> and are applied in ascending
+# order.
+#
+# The supported values for "<param>" are:
+#
+#   newName .............. the new request name (required)
+#   namePattern .......... the reg-ex defining a matching request name
+#   contentTypePattern ... the reg-ex defining a matching response content type
+#   urlPattern ........... the reg-ex defining a matching request URL
+#   stopOnMatch........... whether or not to process the next rule even if the 
+#                          current rule applied (defaults to true)
+#
+# At least one of namePattern, contentTypePattern, or urlPattern must be
+# specified. If more than one pattern is given, all given patterns must
+# match.
+#
+# Note that "newName" may contain placeholders, which are replaced with the 
+# specified capturing group from the respective pattern. The placeholder  
+# format is as follows: {<category>:<capturingGroupIndex>}, where <category> is 
+# one of "n" (for namePattern), "c" (for contentTypePattern), "s" (for 
+# statusCodePattern), or "u" (for urlPattern) and <capturingGroupIndex> denotes 
+# the respective capturing group in the selected pattern. 
+#
+################################################################################
+
+#com.xceptance.xlt.reportgenerator.requestMergeRules.0.newName = {n:0} CSS Files
+#com.xceptance.xlt.reportgenerator.requestMergeRules.0.namePattern = [^.]+
+#com.xceptance.xlt.reportgenerator.requestMergeRules.0.contentTypePattern =
+#com.xceptance.xlt.reportgenerator.requestMergeRules.0.statusCodePattern =
+#com.xceptance.xlt.reportgenerator.requestMergeRules.0.urlPattern = \\.css$
+#com.xceptance.xlt.reportgenerator.requestMergeRules.0.stopOnMatch = true
+
+#com.xceptance.xlt.reportgenerator.requestMergeRules.1.newName = {n:0} JavaScript Files
+#com.xceptance.xlt.reportgenerator.requestMergeRules.1.namePattern = [^.]+
+#com.xceptance.xlt.reportgenerator.requestMergeRules.1.contentTypePattern =
+#com.xceptance.xlt.reportgenerator.requestMergeRules.1.statusCodePattern =
+#com.xceptance.xlt.reportgenerator.requestMergeRules.1.urlPattern = \\.js$
+#com.xceptance.xlt.reportgenerator.requestMergeRules.1.stopOnMatch = true
+
+#com.xceptance.xlt.reportgenerator.requestMergeRules.2.newName = {n:0} Image Files  
+#com.xceptance.xlt.reportgenerator.requestMergeRules.2.namePattern = [^.]+
+#com.xceptance.xlt.reportgenerator.requestMergeRules.2.contentTypePattern = image  
+#com.xceptance.xlt.reportgenerator.requestMergeRules.2.statusCodePattern =
+#com.xceptance.xlt.reportgenerator.requestMergeRules.2.urlPattern = 
+#com.xceptance.xlt.reportgenerator.requestMergeRules.2.stopOnMatch = true

Added: webservices/juddi/trunk/qa/juddi-xlt/config/test.properties
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/config/test.properties?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/config/test.properties (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/config/test.properties Sat Jan  9 18:28:54 2010
@@ -0,0 +1,97 @@
+email################################################################################
+#
+# Load Test Profile Configuration
+#
+# Define the load test cases to be run in parallel per XLT agent.
+#
+# Format:
+#
+#   com.xceptance.xlt.loadtests.<testID>.<setting> = <value>
+#
+# For "<testID>" use any proper name. The supported values for "<setting>" are:
+#
+#   class ............... the test class name
+#   users ............... the number of threads that run the test in parallel (REQUIRED)
+#   iterations .......... the number of iterations per thread
+#   arrivalRate ......... the number of transactions per hour
+#   initialDelay ........ the number of seconds to wait at the beginning
+#   warmUpPeriod ........ the number of seconds to run without performing measurements
+#   measurementPeriod ... the number of seconds to perform measurements (REQUIRED)
+#   shutdownPeriod ...... the number of seconds to continue without performing measurements
+#   rampUpPeriod ........ the number of seconds to steadily increase the user count
+#   rampUpStepSize ...... the number of users to step-wise increase the load during ramp-up
+#
+# The "arrivalRate" value influences the way the load is generated. If omitted,
+# the system generates a constant load based on the number of concurrent users.
+# If specified, the system generates load with a cluster-wide constant arrival
+# rate. In the latter case, the maximum load is limited by the number of
+# concurrent users. Note that an arrival rate is only supported for
+# non-iteration based load tests.
+#
+# The following figure shows the relationship between the various settings:
+#
+#     : initialDelay :   warmUpPeriod   : measurementPeriod : shutdownPeriod :	
+#     :              :                  :                   :                :
+#     /\             :                  :                   :                :
+#   L |              :                  :                   :                :
+#   o |              :                  :                   :                :
+#   a |              :                **************************************** 
+#   d |              :            ****:
+#     |              :        ****    :
+#     |              :    ****        :
+#     |              :****            :
+#     +--------------*----------------------------------------------------------->
+#     :              :                :                                      Time
+#     : initialDelay :  rampUpPeriod  :
+#
+# The "warmUpPeriod" is the time we will give the load to level out before
+# taking measurements, and starts directly after the "initialDelay". This is
+# done to minimize discrepancies that could be caused by applications and other
+# systems starting up and not yet operating at an optimal level. Once this time
+# has elapsed, the stable load will be measured during the "measurementPeriod".
+# To ensure a constant load until the very end of the measurement period, a
+# "shutdownPeriod" can be set in which the users will continue to run before
+# stopping abruptly. The "rampUpPeriod" setting is independent of the 
+# "warmUpPeriod", "measurementPeriod", "shutdownPeriod" settings and dictates
+# the time that it will take for the load to increase to 100% after the initial
+# delay. 
+#
+# All time period values can be specified in one of the following formats:
+#   - total number of seconds
+#     examples: '1234s' or '1234'
+#   - natural style
+#     examples: '0h 12m 0s', '0h 12m', '12m 0s' or '12m'
+#   - digit style
+#     examples: '1:23', '01:23', '0:1:23' or '0:01:23' 
+#
+################################################################################
+
+## The list of active test cases.
+#com.xceptance.xlt.loadtests = TRegisterBusiness
+#com.xceptance.xlt.loadtests = TFindBusinessByName
+#com.xceptance.xlt.loadtests = TSearchableLimit
+#com.xceptance.xlt.loadtests = TSearchableLimitStaticAuthToken
+com.xceptance.xlt.loadtests = TRegisterBusinessPT TFindBusinessPT TDeleteBusinessPT
+
+## The default load test settings for all test cases. These global settings may
+## be overridden by test case specific values. See below.
+#com.xceptance.xlt.loadtests.default.users = 50
+#com.xceptance.xlt.loadtests.default.iterations = 2000
+#com.xceptance.xlt.loadtests.default.arrivalRate = 28125
+com.xceptance.xlt.loadtests.default.rampUpPeriod = 120s
+#com.xceptance.xlt.loadtests.default.rampUpStepSize = 1
+#com.xceptance.xlt.loadtests.default.initialDelay = 0
+com.xceptance.xlt.loadtests.default.warmUpPeriod = 130s
+com.xceptance.xlt.loadtests.default.measurementPeriod = 45m
+com.xceptance.xlt.loadtests.default.shutdownPeriod = 30s
+
+
+## Test case specific configuration.
+com.xceptance.xlt.loadtests.TRegisterBusinessPT.users = 10
+com.xceptance.xlt.loadtests.TRegisterBusinessPT.arrivalRate = 2000
+
+com.xceptance.xlt.loadtests.TFindBusinessPT.users = 10
+com.xceptance.xlt.loadtests.TFindBusinessPT.arrivalRate = 2000
+
+com.xceptance.xlt.loadtests.TDeleteBusinessPT.users = 10
+com.xceptance.xlt.loadtests.TDeleteBusinessPT.arrivalRate = 2000

Added: webservices/juddi/trunk/qa/juddi-xlt/lib/commons-configuration-1.5.jar
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/lib/commons-configuration-1.5.jar?rev=897513&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/juddi/trunk/qa/juddi-xlt/lib/commons-configuration-1.5.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/juddi/trunk/qa/juddi-xlt/lib/uddi-client-3.0.0.20090723.201033-6.jar
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/lib/uddi-client-3.0.0.20090723.201033-6.jar?rev=897513&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/juddi/trunk/qa/juddi-xlt/lib/uddi-client-3.0.0.20090723.201033-6.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/juddi/trunk/qa/juddi-xlt/lib/uddi-tck-3.0.0.beta.jar
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/lib/uddi-tck-3.0.0.beta.jar?rev=897513&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/juddi/trunk/qa/juddi-xlt/lib/uddi-tck-3.0.0.beta.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/juddi/trunk/qa/juddi-xlt/lib/uddi-ws-3.0.0.20090723.192310-12.jar
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/lib/uddi-ws-3.0.0.20090723.192310-12.jar?rev=897513&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/juddi/trunk/qa/juddi-xlt/lib/uddi-ws-3.0.0.20090723.192310-12.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/juddi/trunk/qa/juddi-xlt/readme.txt
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/readme.txt?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/readme.txt (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/readme.txt Sat Jan  9 18:28:54 2010
@@ -0,0 +1,59 @@
+-=READ ME=-
+
+This is some clarification on what is included in the jUDDI XLT test suite and how to use it to run load tests.
+
+-Packages in this test suite (under src/)-
+
+When scripting started, the idea was to do all jUDDI manipulations through the Pluto Portal web interface. The packages org.apache.juddi.xlt.action.http, org.apache.juddi.xlt.validators and org.apachejuddi.xlt.test.http represent what was written for this purpose before it was decided that we would access jUDDI with uddi_client during testing instead.
+
+-org.apache.juddi.xlt.action.http: includes actions that access the juddi pluto portal. 
+
+-org.apache.juddi.xlt.validators: a few easily reusable validators for the http actions. 
+
+-org.apache.juddi.xlt.test.http: single test (so far) that just browses the juddi node through the pluto portal.
+
+All other packages have to do with testing jUDDI by accessing it through SOAP messages with the help of uddi_client.
+
+-org.apache.juddi.xlt.action.SOAP: includes actions that query the juddi node trough an exchange of SOAP massages. 
+
+-org.apache.juddi.xlt.test: include general purpose test ( i.e. TViewNode, prints all businesses and services to standard ouput) and test that are not done yet (i.e. TSubscription).
+
+-org.apache.juddi.xlt.test.benchmark: includes test that were used to benchmarck a certain jUDDI setup. Basically measures how many results can be found in a search, how quickly businesses can be published, and the rate at which searches can be executed. All these test should be run on there own.
+	
+	TRegisterBusinessBM: Publishes a business with a unique name and some services under it, 
+	then prints out the name of the business to file (BusinessNames.txt). Can be used to measure 
+	how fast businesses can be published to a node.
+
+	TFindBusinessBM: Finds a business in a preloaded node. This test can read in a file 
+	containing the names of the businesses already published to the node (such as BusinessNames.txt
+ 	generated by TRegisterBusiness) and then search for those businesses. Can be used to measure 
+	the maximum rate at which search requests can be returned. When the BusinessNames.txt file is
+	used the result is always a lone business since the search is for a name and the names are 
+	all unique. 
+
+	TSearchableLimitBM: Publishes a business and searches for all businesses. This test should be 
+	run with only one user starting with an empty database. It will eventually find how many 
+	business results can be returned for a single search, by incrementally adding a business to the
+ 	node and then searching for the wild-card character (%). This does not include returning a SOAP 
+	message with all the businesses (max results returned is set to 5).
+
+	TSearchableLimitStaticAuthTokenBM: This does the same thing as TSearchableLimitBM but using 
+	the same AuthToken troughout.
+
+-org.apache.juddi.xlt.test.performance: three self sustaining test (no preload needed)that register, search for and delete businesses. They can be run in parallel and provide a certain amount of load to the node. Although there is only one of these test called TRegisterBusiness, all three test actually publish businesses. The two other test do so to generate a pool of existing businesses that can be searched for or deleted.
+
+	TRegisterBusinessPT: This works in the same way TRegisterBusinessBM does but without writing 
+	published business names to a file.
+
+	TFindBusinessPT: This test case either publishes a business to the jUDDI node or finds one. 
+	When it publishes, it retains the returned BusinessEntity object from the save_business operation
+ 	in a data pool. The data pool is in turn queried for a BusinessEntity when the test searches for 
+	a business. This adds some randomness to the searches and makes it so that the node doesn't have 
+	to be preloaded with data.
+
+	TDeleteBusinessPT: This test case either publishes a business to the jUDDI node or deletes one. 
+	When it publishes, it retains the returned BusinessEntity object from the save_business operation 
+	in a data pool. The data pool is in turn queried for a BusinessEntity when the test deletes a business
+	from the node. 
+
+-org.apache.juddi.xlt.flow: Flows are usually a collection of actions that are often run in the same order in a test suite. The RegisterBusinessFlow publishes a business to a node and also publishes services under it. This facilitates the reuse of this sequence of actions.                    

Added: webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/AbstractJUDDIAction.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/AbstractJUDDIAction.java?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/AbstractJUDDIAction.java (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/AbstractJUDDIAction.java Sat Jan  9 18:28:54 2010
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.xlt.action.SOAP;
+
+import javax.xml.ws.BindingProvider;
+
+import com.xceptance.xlt.api.actions.AbstractAction;
+
+/**
+ * An abstract class for jUDDI test actions.
+ *
+ */
+public abstract class AbstractJUDDIAction extends AbstractAction 
+{
+
+	public AbstractJUDDIAction(String timerName) 
+	{
+		super(null, timerName);
+	}
+
+	protected void setHttpSessionManagementEnabled(BindingProvider bindingProvider, boolean state) 
+	{
+		bindingProvider.getRequestContext().put(
+				BindingProvider.SESSION_MAINTAIN_PROPERTY,
+				Boolean.valueOf(state));
+	}
+}

Added: webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/FindBusinessByName.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/FindBusinessByName.java?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/FindBusinessByName.java (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/FindBusinessByName.java Sat Jan  9 18:28:54 2010
@@ -0,0 +1,161 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.xlt.action.SOAP;
+
+import org.apache.juddi.xlt.util.JUDDIServiceProvider;
+import org.junit.Assert;
+import org.uddi.api_v3.AuthToken;
+import org.uddi.api_v3.BusinessInfo;
+import org.uddi.api_v3.BusinessInfos;
+import org.uddi.api_v3.BusinessList;
+import org.uddi.api_v3.FindBusiness;
+import org.uddi.api_v3.FindQualifiers;
+import org.uddi.api_v3.Name;
+import org.uddi.v3_service.UDDIInquiryPortType;
+
+/**
+ * This action will try to find a business on the jUDDI node given a certain name.
+ * 
+ */
+public class FindBusinessByName extends AbstractJUDDIAction {
+
+	private UDDIInquiryPortType inquiryService;
+
+	private AuthToken authenticationToken;
+
+	private BusinessInfo businessInfo;
+
+	private BusinessInfos businessInfos;
+	
+	private String businessName = "%";
+
+	/**
+	 * Constructor. Using only the Auth Token as argument will run a search for 
+	 * all businesses.
+	 * 
+	 * @param authenticationToken
+	 */
+	public FindBusinessByName(AuthToken authenticationToken) {
+		super(null);
+		this.authenticationToken = authenticationToken;
+	}
+	/**
+	 * Constructor. using the Auth Token and a business name as arguments 
+	 * will run a search for the specific business name.
+	 * 
+	 * @param authenticationToken
+	 * @param businessName
+	 */
+	public FindBusinessByName(AuthToken authenticationToken, String businessName) {
+		super(null);
+		this.authenticationToken = authenticationToken;
+		this.businessName = businessName;
+	}
+
+	/**
+	 * The preValidate method ensures that all necessary elements
+	 * are present to execute the action. Here we insure that the 
+	 * inquiry service is available.
+	 */
+	@Override
+	public void preValidate() throws Exception {
+		inquiryService = JUDDIServiceProvider.getInquiryService();
+		Assert.assertNotNull("Inquiry service is missing");
+	}
+
+	/**
+	 * The execute method will send the SOAP message to jUDDI. Here, we create a 
+	 * FindBusiness object with the parameters we wish to search for, the business
+	 * name. The object is then sent to the jUDDI node, unmarshalled, and a 
+	 * BusinessList is returned. The list hold info on all matching businesses.
+	 */
+	@Override
+	protected void execute() throws Exception {
+
+		//Name of business were looking for in English.
+		int max = 5;
+		Name q = new Name();
+		q.setLang("en");
+		q.setValue(businessName);
+
+		//Optional qualifiers that will modify the search.
+		FindQualifiers findQualifiers = new FindQualifiers();
+		findQualifiers.getFindQualifier().add("sortByNameDesc");
+		findQualifiers.getFindQualifier().add("approximateMatch");
+
+		//The FindBusiness object that is submitted via the inquiry service. 
+		FindBusiness findBusiness = new FindBusiness();
+		findBusiness.setAuthInfo(authenticationToken.getAuthInfo());
+		findBusiness.getName().add(q);
+		findBusiness.setFindQualifiers(findQualifiers);
+		findBusiness.setMaxRows(max);
+
+		BusinessList businessList = inquiryService.findBusiness(findBusiness);
+		businessInfos = businessList.getBusinessInfos();
+
+		//Print out the names of the returned businesses
+		for (BusinessInfo bi : businessInfos.getBusinessInfo()) {
+			if (businessInfo == null) {
+				businessInfo = bi;
+			}
+			Name _name = bi.getName().get(0);
+			System.out.println("BusinessInfo: " + _name.getValue());
+		}
+
+		
+	}
+
+	/**
+	 * The postValidate ensure that the correct conditions exists after the 
+	 * action has been executed. Here, we ensure that there is indeed a 
+	 * returned BusinessInfo object (in the BusinessList) and that it contains 
+	 * the business name we were looking for.
+	 */
+	@Override
+	protected void postValidate() throws Exception 
+	{
+		
+		Assert.assertNotNull("No business found", businessInfos);
+		
+		// Check all returned businesses to ensure they contain the search business name
+		if(!businessName.contains("%"))
+		{
+			for (BusinessInfo bi : businessInfos.getBusinessInfo()) 
+			{
+				Assert.assertTrue("Wrong business name was returned:" + bi.getName().get(0).getValue()  + " - got instead: " + businessName, bi.getName().get(0).getValue().toLowerCase().equals(businessName.toLowerCase()));
+			}
+		}
+	}
+
+	/**
+	 * Return the first BusinessInfo in the list.
+	 * 
+	 * @return
+	 */
+	public BusinessInfo getBusinessInfo() {
+		return businessInfo;
+	}
+	
+	/**
+	 * Return the BusinessInfos object.
+	 * 
+	 * @return
+	 */
+	public BusinessInfos getBusinessInfos() {
+		return businessInfos;
+	}
+}

Added: webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/FindServices.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/FindServices.java?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/FindServices.java (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/FindServices.java Sat Jan  9 18:28:54 2010
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.xlt.action.SOAP;
+
+import org.apache.juddi.xlt.util.JUDDIServiceProvider;
+import org.junit.Assert;
+import org.uddi.api_v3.AuthToken;
+import org.uddi.api_v3.FindQualifiers;
+import org.uddi.api_v3.FindService;
+import org.uddi.api_v3.Name;
+import org.uddi.api_v3.ServiceInfo;
+import org.uddi.api_v3.ServiceInfos;
+import org.uddi.api_v3.ServiceList;
+import org.uddi.v3_service.UDDIInquiryPortType;
+
+import com.xceptance.xlt.api.data.GeneralDataProvider;
+/**
+ * Search for services on the Juddi node.
+ * @author Jeremi
+ *
+ */
+public class FindServices extends AbstractJUDDIAction
+{
+	private UDDIInquiryPortType inquiryService;
+
+	private AuthToken authenticationToken;
+
+	private ServiceInfo serviceInfo;
+	
+	private ServiceInfos serviceInfos;
+	
+	private String serviceToFind;
+	
+	/**
+	 * Constructor. If only the authentication token is passed, the action 
+	 * will look for all services on the node by submitting the string "%" as
+	 * the name of the service.
+	 *  
+	 * @param authenticationToken
+	 */
+	public FindServices(AuthToken authenticationToken) 
+	{
+		super(null);
+		this.authenticationToken = authenticationToken;
+		this.serviceToFind = "%";
+	}
+	
+	/**
+	 * Constructor. If a string is passed with the AuthToken, that string will 
+	 * be submitted plus wild cards on each end to search for services with 
+	 * names containing the passed string.
+	 * 
+	 * @param authenticationToken
+	 * @param serviceToFind
+	 */
+	public FindServices(AuthToken authenticationToken, String serviceToFind) 
+	{
+		super(null);
+		this.authenticationToken = authenticationToken;
+		this.serviceToFind = "%" + serviceToFind + "%";
+	}
+	
+	@Override
+	public void preValidate() throws Exception 
+	{
+		inquiryService = JUDDIServiceProvider.getInquiryService();
+		Assert.assertNotNull("Inquiry service is missing");
+	}
+
+	@Override
+	protected void execute() throws Exception 
+	{		
+		FindQualifiers findQualifiers = new FindQualifiers();
+		findQualifiers.getFindQualifier().add("sortByNameDesc");
+		findQualifiers.getFindQualifier().add("approximateMatch");
+
+		int maxServ = 0;
+		Name r = new Name();
+		r.setLang("en");
+		r.setValue(serviceToFind);
+		
+		FindService findService = new FindService();
+		findService.setAuthInfo(authenticationToken.getAuthInfo());
+		findService.getName().add(r);
+		findService.setFindQualifiers(findQualifiers);
+		findService.setMaxRows(maxServ);
+		
+		ServiceList serviceList = inquiryService.findService(findService);
+		serviceInfos = serviceList.getServiceInfos();
+		
+		//ServiceInfo serviceInfo = null;
+		
+		//serviceInfo becomes the first service found?
+		for (ServiceInfo si : serviceInfos.getServiceInfo()) 
+		{
+			if (serviceInfo == null)
+			{
+				serviceInfo = si;
+			}
+			
+			Name _name = si.getName().get(0);
+			System.out.println("ServiceInfo #: " + _name.getValue());
+		}
+
+		
+	}
+
+	@Override
+	protected void postValidate() throws Exception 
+	{
+		Assert.assertNotNull("No service found", serviceInfo);
+	}
+
+	public ServiceInfo getServiceInfo(int index) 
+	{
+		return serviceInfos.getServiceInfo().get(index);
+	}
+	
+	public ServiceInfo getServiceInfo(String nameOrServiceKey) throws Exception
+	{
+		serviceInfo = null;
+		
+		for (ServiceInfo si : serviceInfos.getServiceInfo())
+		{
+			for (Name n : si.getName())
+			{
+				if (n.getValue().equals(nameOrServiceKey))
+				{
+					serviceInfo = si;
+				}
+			}
+			if (si.getServiceKey().equals(nameOrServiceKey))
+			{
+				serviceInfo = si;
+			}
+		}
+		
+		return serviceInfo;	
+	}
+	
+	public ServiceInfos getServiceInfos() 
+	{
+		return serviceInfos;
+	}
+}

Added: webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/GetAuthenticationToken.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/GetAuthenticationToken.java?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/GetAuthenticationToken.java (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/GetAuthenticationToken.java Sat Jan  9 18:28:54 2010
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.xlt.action.SOAP;
+
+import org.apache.juddi.xlt.util.JUDDIServiceProvider;
+import org.junit.Assert;
+import org.uddi.api_v3.AuthToken;
+import org.uddi.api_v3.GetAuthToken;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * This action will get an authentication token from the jUDDI node. 
+ * 
+ */
+public class GetAuthenticationToken extends AbstractJUDDIAction {
+
+	private UDDISecurityPortType securityService;
+
+	private AuthToken authenticationToken;
+
+	/**
+	 * Constructor. 
+	 */
+	public GetAuthenticationToken() {
+		super(null);
+	}
+
+	/**
+	 * The preValidate method ensures that all necessary elements
+	 * are present to execute the action. In this case, the Security 
+	 * Service from the JUDDIServiceProvider must be available.
+	 */
+	@Override
+	public void preValidate() throws Exception {
+		securityService = JUDDIServiceProvider.getSecurityService();
+		Assert.assertNotNull("Security service is missing");
+	}
+	
+	/**
+	 * The execute method will send the SOAP message to jUDDI. Here, we
+	 * are requesting an AuthToken for user "root".
+	 */
+	@Override
+	protected void execute() throws Exception {
+
+		GetAuthToken getAuthToken = new GetAuthToken();
+		getAuthToken.setUserID("root");
+		getAuthToken.setCred("root");
+
+		authenticationToken = securityService.getAuthToken(getAuthToken);
+		
+	}
+	
+	/**
+	 * The postValidate ensure that the correct conditions exists after the 
+	 * action has been executed. In this case, we verify that there was indeed
+	 * a AuthToken returned.
+	 */
+	@Override
+	protected void postValidate() throws Exception 
+	{
+		Assert.assertNotNull("AuthToken must not be null", authenticationToken);
+	}
+
+	/**
+	 * Returns the AuthToken for use in subsequent actions.
+	 * @return
+	 */
+	public AuthToken getAuthenticationToken() {
+		return authenticationToken;
+	}
+}

Added: webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/GetStaticAuthToken.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/GetStaticAuthToken.java?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/GetStaticAuthToken.java (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/GetStaticAuthToken.java Sat Jan  9 18:28:54 2010
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.xlt.action.SOAP;
+
+import org.apache.juddi.xlt.util.JUDDIServiceProvider;
+import org.junit.Assert;
+import org.uddi.api_v3.AuthToken;
+import org.uddi.api_v3.GetAuthToken;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * This action will get a static authentication token from the jUDDI node 
+ * so that it can be used several times by the same JVM. Presently, it is 
+ * not synchronized and may cause problems if called by several users at 
+ * once. 
+ * 
+ */
+public class GetStaticAuthToken extends AbstractJUDDIAction {
+
+	private UDDISecurityPortType securityService;
+
+	private static AuthToken authenticationToken;
+
+	/**
+	 * Constructor. 
+	 */
+	public GetStaticAuthToken() {
+		super(null);
+	}
+
+	/**
+	 * The preValidate method ensures that all necessary elements
+	 * are present to execute the action. In this case, the Security 
+	 * Service from the JUDDIServiceProvider must be available.
+	 */
+	@Override
+	public void preValidate() throws Exception {
+		securityService = JUDDIServiceProvider.getSecurityService();
+		Assert.assertNotNull("Security service is missing");
+	}
+	
+	/**
+	 * The execute method will send the SOAP message to jUDDI if there isn't 
+	 * already a static AuthToken. Here, we are requesting an AuthToken for 
+	 * user "root".
+	 */
+	@Override
+	protected void execute() throws Exception {
+
+		if (authenticationToken == null)
+		{
+			GetAuthToken getAuthToken = new GetAuthToken();
+			getAuthToken.setUserID("root");
+			getAuthToken.setCred("root");
+	
+			authenticationToken = securityService.getAuthToken(getAuthToken);
+		}
+		
+	}
+	
+	/**
+	 * The postValidate ensure that the correct conditions exists after the 
+	 * action has been executed. In this case, we verify that there was indeed
+	 * an AuthToken returned or that it is still there if an AuthToken was already 
+	 * present.
+	 */
+	@Override
+	protected void postValidate() throws Exception 
+	{
+		Assert.assertNotNull("AuthToken must not be null", authenticationToken);
+	}
+
+	/**
+	 * Returns the AuthToken for use in subsequent actions.
+	 * @return
+	 */
+	public AuthToken getAuthenticationToken() {
+		return authenticationToken;
+	}
+}

Added: webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/RegisterBusiness.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/RegisterBusiness.java?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/RegisterBusiness.java (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/RegisterBusiness.java Sat Jan  9 18:28:54 2010
@@ -0,0 +1,221 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.xlt.action.SOAP;
+
+import javax.xml.bind.JAXBElement;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.juddi.xlt.util.JUDDIServiceProvider;
+import org.junit.Assert;
+import org.uddi.api_v3.Address;
+import org.uddi.api_v3.AddressLine;
+import org.uddi.api_v3.AuthToken;
+import org.uddi.api_v3.BusinessDetail;
+import org.uddi.api_v3.BusinessEntity;
+import org.uddi.api_v3.BusinessService;
+import org.uddi.api_v3.BusinessServices;
+import org.uddi.api_v3.CategoryBag;
+import org.uddi.api_v3.Contact;
+import org.uddi.api_v3.Contacts;
+import org.uddi.api_v3.Description;
+import org.uddi.api_v3.DiscoveryURL;
+import org.uddi.api_v3.KeyedReference;
+import org.uddi.api_v3.Name;
+import org.uddi.api_v3.DiscoveryURLs;
+import org.uddi.api_v3.PersonName;
+import org.uddi.api_v3.Phone;
+import org.uddi.api_v3.SaveBusiness;
+import org.uddi.v3_service.UDDIPublicationPortType;
+
+import com.sun.org.apache.xerces.internal.xni.QName;
+import com.xceptance.xlt.api.data.GeneralDataProvider;
+
+/**
+ * Publishes a business to the jUDDI node.
+ * @author jeremi
+ *
+ */
+public class RegisterBusiness extends AbstractJUDDIAction
+{
+	private UDDIPublicationPortType publishService;
+	private AuthToken authenticationToken;
+	private BusinessDetail businessDetail;
+	private String businessName; 
+	private GeneralDataProvider data = GeneralDataProvider.getInstance();
+	
+	/**
+	 * Constructor. Only the AuthToken is given here as argument meaning that 
+	 * most values for this business will be randomly generated.
+	 * @param authenticationToken
+	 * @param businessName
+	 */
+	public RegisterBusiness(AuthToken authenticationToken)
+	{
+		super(null);
+		this.authenticationToken = authenticationToken;
+		this.businessName = data.getCompany(false);;
+	}
+	
+	/**
+	 * Constructor. The AuthToken and the name of the business name are given as
+	 * arguments. Other values for the business will be determined randomly.
+	 * @param authenticationToken
+	 */
+	public RegisterBusiness(AuthToken authenticationToken, String businessName)
+	{
+		super(null);
+		this.authenticationToken = authenticationToken;
+		this.businessName = businessName;
+	}
+	
+	/**
+	 * The preValidate method ensures that all necessary elements
+	 * are present to execute the action. Here we insure that the 
+	 * publishing service is available.
+	 */
+	@Override
+	public void preValidate() throws Exception
+	{
+		publishService = JUDDIServiceProvider.getPublishService();
+		Assert.assertNotNull("Publish service is missing", publishService);
+		
+	/**
+	 * The execute method will send the SOAP message to jUDDI. In this case, 
+	 * we create a BusinessEntity and fill the different values with random
+	 * information. The BusinessEntity is then given to a SaveBusiness object
+	 * and published to the jUDDI node.
+	 */
+	}
+	@Override
+	protected void execute() throws Exception
+	{	
+		//Business name in English.
+		Name name = new Name();
+		name.setLang("en");
+		name.setValue(businessName);
+		
+		//Business description in English.
+		Description description = new Description();
+		description.setLang("en");
+		description.setValue(data.getText(2, 5, false));
+		
+		//Business URL.
+		DiscoveryURL discoveryURL = new DiscoveryURL();
+		discoveryURL.setUseType("General Description");
+		discoveryURL.setValue("http://www." + StringUtils.deleteWhitespace(businessName) + ".com");
+		
+		//All business URLs if many (here we only give one).
+		DiscoveryURLs discoveryURLs = new DiscoveryURLs();
+		discoveryURLs.getDiscoveryURL().add(discoveryURL);
+		
+		//Contact info:
+		//Name of contact in English.
+		PersonName personName = new PersonName();
+		personName.setLang("en");
+		personName.setValue(data.getFirstName(true) + data.getLastName(true));
+		
+		//Address lines for contact.
+		AddressLine addressLineOne = new AddressLine();
+		addressLineOne.setKeyName("street");
+		addressLineOne.setKeyValue("street");
+		addressLineOne.setValue(data.getStreet(false));
+		
+		AddressLine addressLineTwo = new AddressLine();
+		addressLineTwo.setKeyName("town");
+		addressLineTwo.setKeyValue("town");
+		addressLineTwo.setValue(data.getTown(false));
+		
+		AddressLine addressLineThree = new AddressLine();
+		addressLineThree.setKeyName("zip");
+		addressLineThree.setKeyValue("zip");
+		addressLineThree.setValue(data.getZip(5));
+		
+		//One address for the contact. Can be more but only one here.
+		Address address = new Address();
+		address.setLang("en");
+		address.setSortCode("1");
+		address.setTModelKey("uddi:tmodelKey:address");
+		address.setUseType("HQ");
+		address.getAddressLine().add(addressLineOne);
+		address.getAddressLine().add(addressLineTwo);
+		address.getAddressLine().add(addressLineThree);
+		
+		//Contacts phone number details
+		Phone phone = new Phone();
+		phone.setUseType("Hotline");
+		phone.setValue(data.getUSPhoneNumber());
+		
+		//Contact object
+		Contact contact = new Contact();
+		contact.setUseType("CEO");
+		contact.getPersonName().add(personName);
+		contact.getAddress().add(address);
+		contact.getPhone().add(phone);
+		
+		//All contact for the business. Here only one is generated.
+		Contacts contacts = new Contacts();
+		contacts.getContact().add(contact);
+		
+		//Pass info to business entity.
+		BusinessEntity businessEntity = new BusinessEntity();
+		businessEntity.setDiscoveryURLs(discoveryURLs);
+		businessEntity.getName().add(name);
+		businessEntity.getDescription().add(description);
+		businessEntity.setContacts(contacts);
+				
+		//Pass Entity to SaveBussiness object and publish.
+		SaveBusiness saveBusiness = new SaveBusiness();
+		saveBusiness.setAuthInfo(authenticationToken.getAuthInfo());
+		saveBusiness.getBusinessEntity().add(businessEntity);
+		
+		//Business Details are returned.
+		businessDetail = publishService.saveBusiness(saveBusiness);
+		
+	}
+
+	/**
+	 * The postValidate ensure that the correct conditions exists after the 
+	 * action has been executed. Here, we ensure that there is indeed a 
+	 * returned BussinessDetail object and that it contains a business key
+	 * and the proper business name.
+	 */
+	@Override
+	protected void postValidate() throws Exception
+	{
+		Assert.assertNotNull("No business details were returned", businessDetail);
+		String returnedName = businessDetail.getBusinessEntity().get(0).getName().get(0).getValue();
+		String returnedKey = businessDetail.getBusinessEntity().get(0).getBusinessKey();
+		Assert.assertNotNull("No business key was returned. Value of key: " + returnedKey, returnedKey);
+		Assert.assertTrue("Business was not saved under the right name. '" 
+				+ businessName + "' was expected but '" + returnedName + "' was returned.",
+				returnedName.equals(businessName));
+		
+	}
+	
+	/**
+	 * Returns the BusinessDetail object.
+	 * @return
+	 */
+	public BusinessDetail getBusinessDetail()
+	{
+		return businessDetail;
+	}
+
+	
+	
+
+}

Added: webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/RegisterService.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/RegisterService.java?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/RegisterService.java (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/RegisterService.java Sat Jan  9 18:28:54 2010
@@ -0,0 +1,182 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.xlt.action.SOAP;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.juddi.xlt.util.JUDDIServiceProvider;
+import org.junit.Assert;
+import org.uddi.api_v3.AccessPoint;
+import org.uddi.api_v3.AuthToken;
+import org.uddi.api_v3.BindingTemplate;
+import org.uddi.api_v3.BindingTemplates;
+import org.uddi.api_v3.BusinessInfo;
+import org.uddi.api_v3.BusinessService;
+import org.uddi.api_v3.Description;
+import org.uddi.api_v3.Name;
+import org.uddi.api_v3.SaveService;
+import org.uddi.api_v3.ServiceDetail;
+import org.uddi.v3_service.UDDIPublicationPortType;
+
+import com.xceptance.xlt.api.data.GeneralDataProvider;
+
+/**
+ * Publishes a service to the jUDDI node under a certain business.
+ * @author jeremi
+ *
+ */
+public class RegisterService extends AbstractJUDDIAction {
+
+	private UDDIPublicationPortType publishService;
+	private AuthToken authenticationToken;
+	private String businessKey;
+	private String businessName;
+	private String serviceName;
+	
+	private ServiceDetail serviceDetail;
+
+	/**
+	 * Constructor. The AuthToken and the business key are given as arguments
+	 * so that the service can be published under the certain business. The
+	 * business name is also given but is only used to generate data for 
+	 * certain values in the BusinessService object.
+	 * 
+	 * @param authenticationToken
+	 * @param businessKey
+	 * @param businessName
+	 */
+	public RegisterService(AuthToken authenticationToken, String businessKey, String businessName) 
+	{
+		super(null);
+		this.authenticationToken = authenticationToken;
+		this.businessKey = businessKey;
+		this.businessName = businessName;
+	}
+	
+	/**
+	 * Constructor. Here a BusinessInfo object is given instead of the name and key.
+	 * The object contains said values and are extracted instead
+	 * 
+	 * @param authentificationToken
+	 * @param businessInfo
+	 */
+	public RegisterService(AuthToken authentificationToken, BusinessInfo businessInfo)
+	{
+		super(null);
+		this.authenticationToken = authentificationToken;
+		this.businessKey = businessInfo.getBusinessKey();
+		this.businessName = businessInfo.getName().get(0).getValue();
+	}
+
+	/**
+	 * The preValidate method ensures that all necessary elements
+	 * are present to execute the action. Here we insure that the 
+	 * publishing service is available.
+	 */
+	@Override
+	public void preValidate() throws Exception 
+	{
+		publishService = JUDDIServiceProvider.getPublishService();
+		Assert.assertNotNull("Publish service is missing");
+	}
+	
+	/**
+	 * The execute method will send the SOAP message to jUDDI. Here, we create a 
+	 * BusinessService object and fill the different values with random
+	 * information. The BusinessService is then given to a SaveService object
+	 * and published to the jUDDI node.
+	 */
+	@Override
+	protected void execute() throws Exception 
+	{
+		GeneralDataProvider data = GeneralDataProvider.getInstance();
+		serviceName = data.getCountry(false);// retrieves random service name from country file
+		
+		//Name of the service in English.
+		Name name = new Name();
+		name.setLang("en");
+		name.setValue(serviceName);
+
+		//Description of the service in English.
+		Description description = new Description();
+		description.setLang("en");
+		description.setValue(data.getText(1, false));
+
+		//Access Point details.
+		AccessPoint accessPoint = new AccessPoint();
+		accessPoint.setUseType("endPoint");
+		accessPoint.setValue("http://www." + StringUtils.deleteWhitespace(businessName) + ".com:8080/uddi/services/" + StringUtils.deleteWhitespace(serviceName) + "?wsdl");
+
+		//Description of the Access Point, in English.
+		Description accessPointDescription = new Description();
+		accessPointDescription.setLang("en");
+		accessPointDescription
+				.setValue(data.getText(1, 3, false));
+
+		//Pass binging info to binding template.
+		BindingTemplate bindingTemplate = new BindingTemplate();
+		bindingTemplate.setAccessPoint(accessPoint);
+		bindingTemplate.getDescription().add(accessPointDescription);
+		
+		//There can be several binding templates. Here only one is passed.
+		BindingTemplates bindingTemplates = new BindingTemplates();
+		bindingTemplates.getBindingTemplate().add(bindingTemplate);
+
+		//Pass all info to BusinessService object.
+		BusinessService businessService = new BusinessService();
+		businessService.setBusinessKey(businessKey);
+		businessService.setBindingTemplates(bindingTemplates);
+		businessService.getName().add(name);
+		businessService.getDescription().add(description);
+
+		//Pass service to the SaveService object and publish
+		SaveService saveService = new SaveService();
+		saveService.setAuthInfo(authenticationToken.getAuthInfo());
+		saveService.getBusinessService().add(businessService);
+
+		// execute the SaveService operation and get back the ServiceDetail
+		serviceDetail = publishService.saveService(saveService);
+
+		
+	}
+
+	/**
+	 * The postValidate ensure that the correct conditions exists after the 
+	 * action has been executed. Here, we ensure that there is indeed a 
+	 * returned ServiceDetail object and that it contains a service key
+	 * and the proper service name.
+	 */
+	@Override
+	protected void postValidate() throws Exception 
+	{
+		Assert.assertNotNull("No service detail retrieved", serviceDetail);
+		String returnedKey = serviceDetail.getBusinessService().get(0).getServiceKey();
+		String returnedName = serviceDetail.getBusinessService().get(0).getName().get(0).getValue();
+		Assert.assertNotNull("Returned details have no service key.", returnedKey);
+		Assert.assertTrue("Service was not saved under the right name. '" 
+				+ serviceName + "' was expected but '" + returnedName + "' was returned.",
+				returnedName.equals(serviceName));
+	}
+	
+	/**
+	 * Returns the service details.
+	 * @return
+	 */
+	public ServiceDetail getServiceDetail()
+	{
+		return serviceDetail;
+	}
+}

Added: webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/Subscribe.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/Subscribe.java?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/Subscribe.java (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/Subscribe.java Sat Jan  9 18:28:54 2010
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.xlt.action.SOAP;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+import javax.xml.datatype.Duration;
+import javax.xml.datatype.DatatypeConstants.Field;
+import javax.xml.ws.Holder;
+
+import junit.framework.Assert;
+
+import org.apache.juddi.xlt.util.JUDDIServiceProvider;
+import org.uddi.api_v3.AuthToken;
+import org.uddi.api_v3.GetBusinessDetail;
+import org.uddi.sub_v3.SaveSubscription;
+import org.uddi.sub_v3.Subscription;
+import org.uddi.sub_v3.SubscriptionFilter;
+import org.uddi.v3_service.UDDISubscriptionPortType;
+
+/**
+ * NOT YET FUNCTIONAL. 
+ * 
+ * @author Jeremi Thebeau
+ *
+ */
+public class Subscribe extends AbstractJUDDIAction 
+{
+	//GeneralDataProvider
+	private UDDISubscriptionPortType subscriptionService;
+	private AuthToken authenticationToken;
+	private String businessKey;
+	private String subscriptionKey;
+	
+	public Subscribe (AuthToken authenticationToken, String businessKey)
+	{
+		super(null);
+		this.authenticationToken = authenticationToken;
+		this.businessKey = businessKey;
+	}
+	
+	@Override
+	public void preValidate() throws Exception 
+	{
+		subscriptionService = JUDDIServiceProvider.getSubscriptionService();
+		Assert.assertNotNull("Publish service is missing");
+		Assert.assertNotNull("No AuthToken was passed", authenticationToken);
+	}
+	
+	@Override
+	protected void execute() throws Exception 
+	{
+		//FindBusiness findBusiness = new FindBusiness();
+		//findBusiness.setAuthInfo(authenticationToken.getAuthInfo());
+		//findBusiness.get;
+		
+		GetBusinessDetail getBusinessDetail = new GetBusinessDetail();
+		getBusinessDetail.setAuthInfo(authenticationToken.getAuthInfo());
+		getBusinessDetail.getBusinessKey().add(businessKey);
+		
+		SubscriptionFilter subFil = new SubscriptionFilter();
+		subFil.setGetBusinessDetail(getBusinessDetail);
+		
+		//Duration duration = new Duration(); 
+		//duration.
+		
+		Subscription sub = new Subscription();
+		sub.setSubscriptionFilter(subFil);
+		sub.setBindingKey("bindingKeyOfTheClientsNotifySubscriptionListenerService");
+		//sub.setNotificationInterval(duration);
+		
+		
+		//SaveSubscription saveSub = new SaveSubscription();
+		//saveSub.getSubscription().add(sub);
+		//saveSub.setAuthInfo(authenticationToken.getAuthInfo());
+		
+		List<Subscription> subs = new ArrayList<Subscription>();
+		subs.add(sub);
+		Holder<List<Subscription>> subHolder = new Holder<List<Subscription>>();
+		subHolder.value = subs;
+		
+		Assert.assertNotNull("Holder is Null", subHolder);
+		Assert.assertNotNull("AuthToken is Null", authenticationToken.getAuthInfo());
+		
+		subscriptionService.saveSubscription(authenticationToken.getAuthInfo(), subHolder);
+		
+	}
+
+	@Override
+	protected void postValidate() throws Exception 
+	{
+		List<Subscription> subList = subscriptionService.getSubscriptions(authenticationToken.getAuthInfo());
+		subscriptionKey = subList.get(0).getSubscriptionKey();
+		Assert.assertNotNull("No Subscription key was returned", subscriptionKey);
+	}
+	
+	public String getSubscriptionKey ()
+	{
+		return subscriptionKey;
+	}
+
+	
+
+	
+}

Added: webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/UnregisterBusiness.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/UnregisterBusiness.java?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/UnregisterBusiness.java (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/UnregisterBusiness.java Sat Jan  9 18:28:54 2010
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.xlt.action.SOAP;
+
+import org.apache.juddi.xlt.util.JUDDIServiceProvider;
+import org.junit.Assert;
+import org.uddi.api_v3.AuthToken;
+import org.uddi.api_v3.BusinessEntity;
+import org.uddi.api_v3.BusinessInfo;
+import org.uddi.api_v3.BusinessList;
+import org.uddi.api_v3.DeleteBusiness;
+import org.uddi.api_v3.FindBusiness;
+import org.uddi.api_v3.Name;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+
+/**
+ * This jUDDI action deletes a business and it's services from a jUDDI node.
+ *
+ */
+public class UnregisterBusiness extends AbstractJUDDIAction
+{
+	private UDDIPublicationPortType publishService;
+	private UDDIInquiryPortType inqueryService;
+	private AuthToken authenticationToken;
+	private BusinessEntity businessEntity;
+	
+	/**
+	 * Constructor. The AuthToken and a business key of the business being
+	 * deleted are given as arguments. 
+	 * 
+	 * @param authenticationToken
+	 * @param businessKey
+	 */
+	public UnregisterBusiness(AuthToken authenticationToken,
+			BusinessEntity businessEntity)
+	{
+		super(null);
+		this.authenticationToken = authenticationToken;
+		this.businessEntity = businessEntity;
+	}
+
+	/**
+	 * The preValidate method ensures that all necessary elements
+	 * are present to execute the action. Here we insure that the 
+	 * publishing service is available. 
+	 */
+	@Override
+	public void preValidate() throws Exception 
+	{
+		publishService = JUDDIServiceProvider.getPublishService();
+		Assert.assertNotNull("Publish service is missing", publishService);
+	}
+
+	/**
+	 * The execute method will send the SOAP message to jUDDI. In this case, 
+	 * the business key is then given to a DeleteBusiness object
+	 * and sent to the jUDDI node.
+	 */
+	@Override
+	protected void execute() throws Exception 
+	{
+		
+		DeleteBusiness deleteBusiness = new DeleteBusiness();
+		deleteBusiness.setAuthInfo(authenticationToken.getAuthInfo());
+		deleteBusiness.getBusinessKey().add(businessEntity.getBusinessKey());
+		
+		// execute the DeleteService operation.
+		publishService.deleteBusiness(deleteBusiness);
+	}
+
+	/**
+	 * Verifies that the deleted business can no longer be found. If a business list
+	 * with business infos is returned, verifies that each returned business key is 
+	 * different from the deleted business key.
+	 */
+	@Override
+	protected void postValidate() throws Exception 
+	{
+		BusinessList businessList;
+		
+		Name name = new Name();
+		name.setValue(businessEntity.getName().get(0).getValue());
+		name.setLang(businessEntity.getName().get(0).getLang());
+		
+		FindBusiness findBusiness = new FindBusiness();
+		findBusiness.getName().add(name);
+		
+		inqueryService = JUDDIServiceProvider.getInquiryService();
+		businessList = inqueryService.findBusiness(findBusiness);
+		try
+		{
+			Assert.assertNull("A non-null BusinessInfos object was retured in a search for the name of a " +
+					"bussiness item that should previously have been deleted", businessList.getBusinessInfos());
+		}
+		catch(AssertionError e)
+		{
+			for (BusinessInfo bi: businessList.getBusinessInfos().getBusinessInfo())
+			{
+				Assert.assertFalse("A business with the same name and business key of the business that should " +
+					"have been deleted has been found", bi.getBusinessKey()	.equals(businessEntity.getBusinessKey()));
+			}
+			
+		}
+		
+	}
+}

Added: webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/UnregisterService.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/UnregisterService.java?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/UnregisterService.java (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/SOAP/UnregisterService.java Sat Jan  9 18:28:54 2010
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.xlt.action.SOAP;
+
+import org.apache.juddi.xlt.util.JUDDIServiceProvider;
+import org.junit.Assert;
+import org.uddi.api_v3.AuthToken;
+import org.uddi.api_v3.DeleteService;
+import org.uddi.api_v3.FindService;
+import org.uddi.api_v3.Name;
+import org.uddi.api_v3.ServiceInfo;
+import org.uddi.api_v3.ServiceList;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+
+/**
+ * This jUDDI action deletes a service from a business in a jUDDI node.
+ * 
+ * @author jeremi
+ *
+ */
+public class UnregisterService extends AbstractJUDDIAction
+{
+	private UDDIPublicationPortType publishService;
+	private AuthToken authenticationToken;
+	private ServiceInfo serviceInfo;
+	private UDDIInquiryPortType inqueryService;
+	
+	/**
+	 * Constructor. The AuthToken and a ServiceInfo of the service being
+	 * deleted are given as arguments. 
+	 * 
+	 * @param authenticationToken
+	 * @param serviceInfo
+	 */
+	public UnregisterService(AuthToken authenticationToken,
+			ServiceInfo serviceInfo)
+	{
+		super(null);
+		this.authenticationToken = authenticationToken;
+		this.serviceInfo = serviceInfo;	
+	}
+
+	/**
+	 * The preValidate method ensures that all necessary elements
+	 * are present to execute the action. Here we insure that the 
+	 * publishing service is available. 
+	 */
+	@Override
+	public void preValidate() throws Exception 
+	{
+		publishService = JUDDIServiceProvider.getPublishService();
+		Assert.assertNotNull("Publish service is missing");
+	}
+
+	/**
+	 * The execute method will send the SOAP message to jUDDI. In this case, 
+	 * the service key is then given to a DeleteService object
+	 * and sent to the jUDDI node.
+	 */
+	@Override
+	protected void execute() throws Exception 
+	{
+		
+		DeleteService deleteService = new DeleteService();
+		deleteService.setAuthInfo(authenticationToken.getAuthInfo());
+		deleteService.getServiceKey().add(serviceInfo.getServiceKey());
+		
+		// execute the DeleteService operation.
+		publishService.deleteService(deleteService);
+	}
+
+	/**
+	 * Verifies that the deleted business can no longer be found. If a business list
+	 * with business infos is returned, verifies that each returned business key is 
+	 * different from the deleted business key.
+	 */
+	@Override
+	protected void postValidate() throws Exception 
+	{	
+		Name name = serviceInfo.getName().get(0);
+		String businessKey = serviceInfo.getBusinessKey();
+		String serviceKey = serviceInfo.getServiceKey();
+		
+		FindService findService = new FindService();
+		findService.getName().add(name);
+		findService.setBusinessKey(businessKey);
+		
+		inqueryService = JUDDIServiceProvider.getInquiryService();
+		ServiceList serviceList = inqueryService.findService(findService);
+		
+		try
+		{
+			Assert.assertNull("A non-null ServiceInfos object was retured in a search for the name of a " +
+					"service item that should previously have been deleted", serviceList.getServiceInfos());
+		}
+		catch(AssertionError e)
+		{
+			for (ServiceInfo si: serviceList.getServiceInfos().getServiceInfo())
+			{
+				Assert.assertFalse("A service with the same name and service key of the service that should " +
+					"have been deleted has been found", si.getServiceKey().equals(serviceKey));
+			}
+			
+		}
+	}
+}

Added: webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/http/BrowseJuddiNode.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/http/BrowseJuddiNode.java?rev=897513&view=auto
==============================================================================
--- webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/http/BrowseJuddiNode.java (added)
+++ webservices/juddi/trunk/qa/juddi-xlt/src/org/apache/juddi/xlt/action/http/BrowseJuddiNode.java Sat Jan  9 18:28:54 2010
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.xlt.action.http;
+
+import org.junit.Assert;
+
+import com.gargoylesoftware.htmlunit.html.ClickableElement;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.xceptance.xlt.api.actions.AbstractHtmlPageAction;
+import com.xceptance.xlt.api.util.HtmlPageUtils;
+
+/**
+ * Click on 'An Apache jUDDI node' to browse it. 
+ */
+@SuppressWarnings("deprecation")
+public class BrowseJuddiNode extends AbstractHtmlPageAction
+{
+    HtmlElement clickable;
+
+    /**
+     * The action's constructor.
+     *
+     * @param previousAction the previous action
+     */
+    public BrowseJuddiNode(AbstractHtmlPageAction previousAction)
+    {
+        super(previousAction, null);
+    }
+
+    /* (non-Javadoc)
+     * @see com.xceptance.xlt.api.actions.AbstractAction#preValidate()
+     */
+    @Override
+    public void preValidate() throws Exception
+    {
+        HtmlPage page = getPreviousAction().getHtmlPage();
+
+        String clickableXPath = "id('browser')/table/tbody/tr[2]/td[1]/div/div[2]/table/tbody/tr/td[1]";
+        clickable = HtmlPageUtils.findSingleHtmlElementByXPath(page, clickableXPath);
+
+    }
+
+    /* (non-Javadoc)
+     * @see com.xceptance.xlt.api.actions.AbstractAction#execute()
+     */
+    @Override
+    public void execute() throws Exception
+    {
+        loadPageByClick(clickable, 10000);
+    }
+
+    /* (non-Javadoc)
+     * @see com.xceptance.xlt.api.actions.AbstractAction#postValidate()
+     */
+    @Override
+    public void postValidate() throws Exception
+    {
+        HtmlPage page = getHtmlPage();
+
+        String xpathToNodeDescription = "id('gwt-uid-2')";
+        HtmlElement txtElement0 = HtmlPageUtils.findSingleHtmlElementByXPath(page, xpathToNodeDescription);
+        Assert.assertTrue("Element does not contain text 'Services owned by this business'", txtElement0.asText().contains("An Apache jUDDI Node"));
+
+        
+    }
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: juddi-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: juddi-cvs-help@ws.apache.org