A re-worked version of the performance testing framework.
This commit is contained in:
parent
031dc3e004
commit
a009f582f3
52 changed files with 7017 additions and 0 deletions
19
utilities/LoadTesting/distros/README.txt
Normal file
19
utilities/LoadTesting/distros/README.txt
Normal file
|
@ -0,0 +1,19 @@
|
|||
The distros directory contains subdirectories, each with a VIVO distribution, as checked out from Subversion.
|
||||
These can be read-only checkouts. Examples of such directories might be release1.3, release1.4, trunk, etc.
|
||||
|
||||
Each distro directory contains:
|
||||
The vivo and vitro workspace areas, as checked out from Subversion
|
||||
deploy_properties.template
|
||||
This is a deploy properties file suitable for building the distrbution.
|
||||
Some property values are placeholders that will be set when the _deploy script is run.
|
||||
Examples of placeholders include:
|
||||
Vitro.defaultNamespace = <%= @default_namespace %>
|
||||
vitro.home.directory = /home/jeb228/LoadTesting/versions/<%= @version_name %>/data
|
||||
This means that when _deploy is run, it must have values for the variables
|
||||
@default_namespace and @version_name, which it will substitute into the template.
|
||||
distro_properties.rb
|
||||
A ruby source file which defines some values which apply to the distribution.
|
||||
Currently, the only value is @test_suffix.
|
||||
For example, release1.4 uses @test_suffix = "-1-4", so if we select "TestA",
|
||||
the _runTest script will look for a file called TestA-1-4.jtl, and run that.
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
# -----------------------------------------------------------------------------
|
||||
#
|
||||
# VIVO deployment properties
|
||||
#
|
||||
# This file is provided as example.deploy.properties.
|
||||
#
|
||||
# Save a copy of this file as deploy.properties, and edit the properties as
|
||||
# needed for your deployment.
|
||||
#
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
#
|
||||
# This namespace will be used when generating URIs for objects created in the
|
||||
# editor. Change it to reflect your own domain. For example, Cornell's
|
||||
# namespace is http://vivo.cornell.edu/individual/
|
||||
#
|
||||
# Note: it is essential that this namespace end with a trailing slash.
|
||||
#
|
||||
Vitro.defaultNamespace = <%= @default_namespace %>
|
||||
|
||||
#
|
||||
# Where is the Vitro core directory?
|
||||
# In most deployments, this is set to ./vitro-core (It is not uncommon for this
|
||||
# setting to point elsewhere in development environments).
|
||||
# Examples:
|
||||
# vitro.core.dir = ./vitro-core
|
||||
# vitro.core.dir = ../vitro
|
||||
# vitro.core.dir = /usr/local/vitro/trunk
|
||||
vitro.core.dir = ../vitro
|
||||
|
||||
#
|
||||
# The base install directory for your Tomcat server. The VIVO application
|
||||
# will be deployed in the /webapps directory below this base.
|
||||
#
|
||||
tomcat.home = /home/jeb228/LoadTesting/tomcat
|
||||
|
||||
#
|
||||
# The name of the VIVO application. This will be used as the name of the
|
||||
# subdirectory within your Tomcat server's /webapps directory. It also appears
|
||||
# in the URL for the application. For example, http://my.vivo.server/vivo
|
||||
#
|
||||
webapp.name = vivo
|
||||
|
||||
#
|
||||
# URL of Solr context used in local VIVO search. This will usually consist of:
|
||||
# scheme + server_name + port + vivo_webapp_name + "solr"
|
||||
# In the standard installation, the Solr context will be on the same server as VIVO,
|
||||
# and in the same Tomcat instance. The path will be the VIVO webapp.name (specified
|
||||
# above) + "solr"
|
||||
# Example:
|
||||
# vitro.local.solr.url = http://localhost:8080/vivosolr
|
||||
vitro.local.solr.url = http://localhost:6080/vivosolr
|
||||
|
||||
#
|
||||
# Restricts access to the Solr search platform. One or more regular expressions,
|
||||
# separated by commas. When a request is made to Solr, the IP address of the
|
||||
# requestor must match one of the patterns, or the request will be rejected.
|
||||
# Examples:
|
||||
# vitro.local.solr.ipaddress.mask = 127\.0\.0\.1
|
||||
# vitro.local.solr.ipaddress.mask = 127\.0\.0\.1,0:0:0:0:0:0:0:1
|
||||
# vitro.local.solr.ipaddress.mask = 169.254.*
|
||||
vitro.local.solr.ipaddress.mask = 127\.0\.0\.1,0:0:0:0:0:0:0:1
|
||||
|
||||
#
|
||||
# The location where the VIVO application will store the data that it creates.
|
||||
# This includes uploaded files (usually images) and the search index.
|
||||
#
|
||||
vitro.home.directory = /home/jeb228/LoadTesting/versions/<%= @version_name %>/data
|
||||
|
||||
#
|
||||
# SMTP host which the "Contact Us" form can use to send mail. If this is left
|
||||
# empty, the "Contact Us" form will be disabled.
|
||||
#
|
||||
Vitro.smtpHost =
|
||||
|
||||
#
|
||||
# The basic parameters for a database connection. Change the end of the
|
||||
# URL to reflect your database name (if it is not "vitro"). Change the username
|
||||
# and password to match the authorized database user you created. Increase the
|
||||
# maximum size of the database connection pool if you need to serve a greater
|
||||
# number of concurrent page requests.
|
||||
#
|
||||
VitroConnection.DataSource.url = jdbc:mysql://localhost/<%= @database_name %>
|
||||
VitroConnection.DataSource.username = loadUser
|
||||
VitroConnection.DataSource.password = loadPass
|
||||
|
||||
#
|
||||
# The maximum number of active connections in the database connection pool.
|
||||
# Increase this value to support a greater number of concurrent page requests
|
||||
# with SDB. It is not necessary to adjust this value when using the
|
||||
# RDB configuration.
|
||||
#
|
||||
VitroConnection.DataSource.pool.maxActive = 40
|
||||
|
||||
#
|
||||
# The maximum number of database connections that will be allowed
|
||||
# to remain idle in the connection pool. Default is 25%
|
||||
# of the maximum number of active connections.
|
||||
#
|
||||
VitroConnection.DataSource.pool.maxIdle = 10
|
||||
|
||||
#
|
||||
# Parameters to change in order to use VIVO with a database other than
|
||||
# MySQL.
|
||||
#
|
||||
VitroConnection.DataSource.dbtype = MySQL
|
||||
VitroConnection.DataSource.driver = com.mysql.jdbc.Driver
|
||||
VitroConnection.DataSource.validationQuery = SELECT 1
|
||||
|
||||
#
|
||||
# The email address of the root user for the VIVO application. The password
|
||||
# for this user is initially set to "rootPassword", but you will be asked to
|
||||
# change the password the first time you log in.
|
||||
#
|
||||
rootUser.emailAddress = <%= @root_user %>
|
||||
|
||||
#
|
||||
# How is a logged-in user associated with a particular Individual? One way is
|
||||
# for the Individual to have a property whose value is the username of the user.
|
||||
# This value should be the URI for that property.
|
||||
#
|
||||
selfEditing.idMatchingProperty = http://vivoweb.org/ontology/core#scopusId
|
||||
|
||||
#
|
||||
# If an external authentication system like Shibboleth or CUWebAuth is to be
|
||||
# used, these properties say how the login button should be labeled, and which
|
||||
# HTTP header will contain the user ID from the authentication system. If such
|
||||
# a system is not to be used, leave these commented out. Consult the
|
||||
# installation instructions for more details.
|
||||
#
|
||||
#externalAuth.buttonText = Log in using BearCat Shibboleth
|
||||
#externalAuth.netIdHeaderName = remote_userID
|
||||
|
||||
#
|
||||
# The temporal graph visualization can require extensive machine resources.
|
||||
# This can have a particularly noticable impact on memory usage if
|
||||
# - VIVO is configured to use Jena SDB,
|
||||
# - The organization tree is deep,
|
||||
# - The number of grants and publications is large.
|
||||
# VIVO release 1.2 guards against this impact by disabling the temporal graph
|
||||
# visualization unless the "visualization.temporal" flag is set to "enabled".
|
||||
#
|
||||
# visualization.temporal = enabled
|
||||
|
||||
#
|
||||
# The temporal graph visualization is used to compare different organizations/people
|
||||
# within an organization on parameters like number of publications or grants.
|
||||
# By default, the app will attempt to make its best guess at the top level
|
||||
# organization in your instance. If you're unhappy with this selection, uncomment out
|
||||
# the property below and set it to the URI of the organization individual you want to
|
||||
# identify as the top level organization. It will be used as the default whenever the
|
||||
# temporal graph visualization is rendered without being passed an explicit org.
|
||||
# For example, to use "Ponce School of Medicine" as the top organization:
|
||||
# visualization.topLevelOrg = http://vivo.psm.edu/individual/n2862
|
||||
#
|
||||
# visualization.topLevelOrg = http://vivo.mydomain.edu/individual/topLevelOrgURI
|
||||
|
||||
#
|
||||
# Default type(s) for Google Refine Reconciliation Service
|
||||
# The format for this property is id, name; id1, name1; id2, name2 etc.
|
||||
# See Service Metadata from this page http://code.google.com/p/google-refine/wiki/ReconciliationServiceApi
|
||||
# for more information.
|
||||
Vitro.reconcile.defaultTypeList = http://vivoweb.org/ontology/core#Course, Course; http://vivoweb.org/ontology/core#Grant, Grant; http://aims.fao.org/aos/geopolitical.owl, Location; http://xmlns.com/foaf/0.1/Organization, Organization; http://xmlns.com/foaf/0.1/Person, Person; http://purl.org/ontology/bibo/Article, Publication
|
|
@ -0,0 +1,2 @@
|
|||
# properties for this distribution
|
||||
@test_suffix = '-1-3'
|
|
@ -0,0 +1,179 @@
|
|||
# -----------------------------------------------------------------------------
|
||||
#
|
||||
# VIVO deployment properties
|
||||
#
|
||||
# This file is provided as example.deploy.properties.
|
||||
#
|
||||
# Save a copy of this file as deploy.properties, and edit the properties as
|
||||
# needed for your deployment.
|
||||
#
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
#
|
||||
# This namespace will be used when generating URIs for objects created in the
|
||||
# editor. In order to serve linked data, the default namespace must be composed
|
||||
# as follows (optional elements in parentheses):
|
||||
#
|
||||
# scheme + server_name (+ port) (+ servlet_context) + "/individual/"
|
||||
#
|
||||
# For example, Cornell's default namespace is:
|
||||
#
|
||||
# http://vivo.cornell.edu/individual/
|
||||
#
|
||||
Vitro.defaultNamespace = <%= @default_namespace %>
|
||||
|
||||
#
|
||||
# Where is the Vitro core directory?
|
||||
# In most deployments, this is set to ./vitro-core (It is not uncommon for this
|
||||
# setting to point elsewhere in development environments).
|
||||
# Examples:
|
||||
# vitro.core.dir = ./vitro-core
|
||||
# vitro.core.dir = ../vitro
|
||||
# vitro.core.dir = /usr/local/vitro/trunk
|
||||
vitro.core.dir = ../vitro
|
||||
|
||||
#
|
||||
# The base install directory for your Tomcat server. The VIVO application
|
||||
# will be deployed in the /webapps directory below this base.
|
||||
#
|
||||
tomcat.home = /home/jeb228/LoadTesting/tomcat
|
||||
|
||||
#
|
||||
# The name of the VIVO application. This will be used as the name of the
|
||||
# subdirectory within your Tomcat server's /webapps directory. It also appears
|
||||
# in the URL for the application. For example, http://my.vivo.server/vivo
|
||||
#
|
||||
webapp.name = vivo
|
||||
|
||||
#
|
||||
# URL of Solr context used in local VIVO search. This will usually consist of:
|
||||
# scheme + server_name + port + vivo_webapp_name + "solr"
|
||||
# In the standard installation, the Solr context will be on the same server as VIVO,
|
||||
# and in the same Tomcat instance. The path will be the VIVO webapp.name (specified
|
||||
# above) + "solr"
|
||||
# Example:
|
||||
# vitro.local.solr.url = http://localhost:8080/vivosolr
|
||||
vitro.local.solr.url = http://localhost:6080/vivosolr
|
||||
|
||||
#
|
||||
# Restricts access to the Solr search platform. One or more regular expressions,
|
||||
# separated by commas. When a request is made to Solr, the IP address of the
|
||||
# requestor must match one of the patterns, or the request will be rejected.
|
||||
# Examples:
|
||||
# vitro.local.solr.ipaddress.mask = 127\.0\.0\.1
|
||||
# vitro.local.solr.ipaddress.mask = 127\.0\.0\.1,0:0:0:0:0:0:0:1
|
||||
# vitro.local.solr.ipaddress.mask = 169.254.*
|
||||
# If this expression doesn't match the IP address, you will see SolrExceptions
|
||||
# in the log.
|
||||
vitro.local.solr.ipaddress.mask = 127\.0\.0\.1,[0:]+:1[^:]*,
|
||||
|
||||
#
|
||||
# The location where the VIVO application will store the data that it creates.
|
||||
# This includes uploaded files (usually images) and the search index.
|
||||
#
|
||||
vitro.home.directory = /home/jeb228/LoadTesting/versions/<%= @version_name %>/data
|
||||
|
||||
#
|
||||
# Email parameters which VIVO can use to send mail. If these are left empty,
|
||||
# the "Contact Us" form will be disabled and users will not be notified of
|
||||
# changes to their accounts.
|
||||
#
|
||||
email.smtpHost =
|
||||
email.replyTo = vivoAdmin@mydomain.edu
|
||||
|
||||
#
|
||||
# The basic parameters for a database connection. Change the end of the
|
||||
# URL to reflect your database name (if it is not "vitrodb"). Change the username
|
||||
# and password to match the authorized database user you created.
|
||||
#
|
||||
VitroConnection.DataSource.url = jdbc:mysql://localhost/<%= @database_name %>
|
||||
VitroConnection.DataSource.username = loadUser
|
||||
VitroConnection.DataSource.password = loadPass
|
||||
|
||||
#
|
||||
# The maximum number of active connections in the database connection pool.
|
||||
# Increase this value to support a greater number of concurrent page requests.
|
||||
#
|
||||
VitroConnection.DataSource.pool.maxActive = 40
|
||||
|
||||
#
|
||||
# The maximum number of database connections that will be allowed
|
||||
# to remain idle in the connection pool. Default is 25%
|
||||
# of the maximum number of active connections.
|
||||
#
|
||||
VitroConnection.DataSource.pool.maxIdle = 10
|
||||
|
||||
#
|
||||
# Parameters to change in order to use VIVO with a database other than
|
||||
# MySQL.
|
||||
#
|
||||
VitroConnection.DataSource.dbtype = MySQL
|
||||
VitroConnection.DataSource.driver = com.mysql.jdbc.Driver
|
||||
VitroConnection.DataSource.validationQuery = SELECT 1
|
||||
|
||||
#
|
||||
# The email address of the root user for the VIVO application. The password
|
||||
# for this user is initially set to "rootPassword", but you will be asked to
|
||||
# change the password the first time you log in.
|
||||
#
|
||||
rootUser.emailAddress = <%= @root_user %>
|
||||
|
||||
#
|
||||
# How is a logged-in user associated with a particular Individual? One way is
|
||||
# for the Individual to have a property whose value is the username of the user.
|
||||
# This value should be the URI for that property.
|
||||
#
|
||||
selfEditing.idMatchingProperty = http://vivoweb.org/ontology/core#scopusId
|
||||
|
||||
#
|
||||
# If an external authentication system like Shibboleth or CUWebAuth is to be
|
||||
# used, these properties say how the login button should be labeled, and which
|
||||
# HTTP header will contain the user ID from the authentication system. If such
|
||||
# a system is not to be used, leave these commented out. Consult the
|
||||
# installation instructions for more details.
|
||||
#
|
||||
#externalAuth.buttonText = Log in using BearCat Shibboleth
|
||||
#externalAuth.netIdHeaderName = remote_userID
|
||||
|
||||
#
|
||||
# The temporal graph visualization can require extensive machine resources.
|
||||
# This can have a particularly noticeable impact on memory usage if
|
||||
# - The organization tree is deep,
|
||||
# - The number of grants and publications is large.
|
||||
# VIVO 1.3 release mitigates this problem by the way of a caching mechanism &
|
||||
# hence we can safely set this to be enabled by default.
|
||||
#
|
||||
visualization.temporal = enabled
|
||||
|
||||
#
|
||||
# The temporal graph visualization is used to compare different organizations/people
|
||||
# within an organization on parameters like number of publications or grants.
|
||||
# By default, the app will attempt to make its best guess at the top level
|
||||
# organization in your instance. If you're unhappy with this selection, uncomment out
|
||||
# the property below and set it to the URI of the organization individual you want to
|
||||
# identify as the top level organization. It will be used as the default whenever the
|
||||
# temporal graph visualization is rendered without being passed an explicit org.
|
||||
# For example, to use "Ponce School of Medicine" as the top organization:
|
||||
# visualization.topLevelOrg = http://vivo.psm.edu/individual/n2862
|
||||
#
|
||||
# visualization.topLevelOrg = http://vivo.mydomain.edu/individual/topLevelOrgURI
|
||||
|
||||
#
|
||||
# Absolute path on the server of the Harvester root directory.
|
||||
# You must include the final slash.
|
||||
# Setting a value for harvester.location indicates that the Harvester is installed at
|
||||
# this path. This will enable the Harvester functions in the Ingest Tools page.
|
||||
#
|
||||
# harvester.location = /usr/local/vivo/harvester/
|
||||
|
||||
#
|
||||
# Default type(s) for Google Refine Reconciliation Service
|
||||
# The format for this property is id, name; id1, name1; id2, name2 etc.
|
||||
# See Service Metadata from this page http://code.google.com/p/google-refine/wiki/ReconciliationServiceApi
|
||||
# for more information.
|
||||
Vitro.reconcile.defaultTypeList = http://vivoweb.org/ontology/core#Role, core:Role; http://vivoweb.org/ontology/core#AcademicDegree, core:Academic Degree; http://purl.org/NET/c4dm/event.owl#Event, event:Event; http://vivoweb.org/ontology/core#Agreement, core:Agreement; http://vivoweb.org/ontology/core#Location, core:Location; http://xmlns.com/foaf/0.1/Organization, foaf:Organization; http://xmlns.com/foaf/0.1/Person, foaf:Person; http://vivoweb.org/ontology/core#InformationResource, core:Information Resource
|
||||
|
||||
#
|
||||
# Types of individual for which we can create proxy editors.
|
||||
# If this is omitted, defaults to http://www.w3.org/2002/07/owl#Thing
|
||||
proxy.eligibleTypeList = http://xmlns.com/foaf/0.1/Person, http://xmlns.com/foaf/0.1/Organization
|
|
@ -0,0 +1,2 @@
|
|||
# properties for this distribution
|
||||
@test_suffix = '-1-4'
|
6
utilities/LoadTesting/jmeter/README.txt
Normal file
6
utilities/LoadTesting/jmeter/README.txt
Normal file
|
@ -0,0 +1,6 @@
|
|||
Contains a distribution of JMeter. The _runTest script looks here to find
|
||||
the executable of JMeter, and also to find the XSL stylesheet used to convert *.jtl files to *.html files.
|
||||
|
||||
Currently, we're using JMeter 2.4, so the directory contains jakarta-jmeter-2.4.zip and
|
||||
an unpacked version in the directory jakarta-jmeter-2.4
|
||||
|
BIN
utilities/LoadTesting/jmeter/jakarta-jmeter-2.4.zip
Normal file
BIN
utilities/LoadTesting/jmeter/jakarta-jmeter-2.4.zip
Normal file
Binary file not shown.
16
utilities/LoadTesting/modelData/README.txt
Normal file
16
utilities/LoadTesting/modelData/README.txt
Normal file
|
@ -0,0 +1,16 @@
|
|||
Contains all sorts of data that is particular to each site.
|
||||
|
||||
MySQL dumps.
|
||||
The ones we got from the drop box, and anything that we derived from them
|
||||
that was worth capturing instead of rebuilding.
|
||||
|
||||
Zip of upload directory
|
||||
Either obtained from the drop box, or what we created using UploadImageFaker
|
||||
|
||||
CSV files containing test data
|
||||
We create CSV files that contina URIs of Persons, InfoResources, and Authors.
|
||||
The tests use these files when deciding which pages to fetch. These are site
|
||||
dependent.
|
||||
|
||||
Also contains the _patches_and_queries directory, which contains its own readme file.
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
Contains:
|
||||
|
||||
Patches - used to modify the model to make it ready for testing.
|
||||
userAccountsPatch.n3
|
||||
Ingest this into the user-accounts model. It contains RDF for testAdmin@mydomain.edu
|
||||
and selfEditor@mydomain.edu. Each has logged in previously, and each has the
|
||||
password of "Password".
|
||||
|
||||
Queries - used to extract data from the model, for the tests to use.
|
||||
get_info_resource_uris.sparql
|
||||
Execute this SPARQL query and get the results in CSV. Remove any
|
||||
URIs that are not in the default namespace, and then remove the default namespace
|
||||
from each remaining URI. save as infoResourceUris.csv in the
|
||||
modelData/[sitename] directory.
|
||||
get_person_uris.sparql
|
||||
Like the previous, but saved as personUris.csv
|
||||
image_file_query.sparql
|
||||
Save the results without alteration as modelData/[sitename]/imageFileInfo.csv, to
|
||||
be processed by the _fakeUploadedFiles script.
|
|
@ -0,0 +1,9 @@
|
|||
PREFIX core: <http://vivoweb.org/ontology/core#>
|
||||
|
||||
SELECT ?uri
|
||||
WHERE
|
||||
{
|
||||
?uri a core:InformationResource .
|
||||
}
|
||||
limit 300
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX core: <http://vivoweb.org/ontology/core#>
|
||||
|
||||
SELECT ?uri
|
||||
WHERE
|
||||
{
|
||||
?uri a foaf:Person ;
|
||||
}
|
||||
limit 300
|
|
@ -0,0 +1,17 @@
|
|||
#
|
||||
# Run this sparql query and format the output as CSV to find a list of
|
||||
# everywhere that VIVO expects to find an image file.
|
||||
#
|
||||
# Process the result file with ????? to insert dummy images in all of
|
||||
# those locations.
|
||||
#
|
||||
|
||||
PREFIX p.1: <http://vitro.mannlib.cornell.edu/ns/vitro/public#>
|
||||
|
||||
SELECT ?bytestreamUri ?filename
|
||||
WHERE
|
||||
{
|
||||
?fileUri p.1:downloadLocation ?bytestreamUri;
|
||||
p.1:filename ?filename.
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
||||
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
||||
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
||||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
||||
|
||||
<http://vivo.scripps.edu/individual/uSelf>
|
||||
a <http://vitro.mannlib.cornell.edu/ns/vitro/authorization#UserAccount> ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#emailAddress>
|
||||
"selfEditor@mydomain.edu"^^xsd:string ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#externalAuthId>
|
||||
"seditor"^^xsd:string ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#firstName>
|
||||
"self"^^xsd:string ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#hasPermissionSet>
|
||||
<http://permissionSet-1> ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#lastLoginTime>
|
||||
"1322673007960"^^xsd:long ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#lastName>
|
||||
"editor"^^xsd:string ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#loginCount>
|
||||
"2"^^xsd:int ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#md5password>
|
||||
"DC647EB65E6711E155375218212B3964"^^xsd:string ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#passwordLinkExpires>
|
||||
"0"^^xsd:long ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#status>
|
||||
"ACTIVE"^^xsd:string .
|
||||
|
||||
<http://vivo.scripps.edu/individual/uAdmin>
|
||||
a <http://vitro.mannlib.cornell.edu/ns/vitro/authorization#UserAccount> ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#emailAddress>
|
||||
"testAdmin@mydomain.edu"^^xsd:string ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#externalAuthId>
|
||||
"tadmin"^^xsd:string ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#firstName>
|
||||
"test"^^xsd:string ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#hasPermissionSet>
|
||||
<http://permissionSet-50> ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#lastLoginTime>
|
||||
"1322673030151"^^xsd:long ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#lastName>
|
||||
"admin"^^xsd:string ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#loginCount>
|
||||
"3"^^xsd:int ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#md5password>
|
||||
"DC647EB65E6711E155375218212B3964"^^xsd:string ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#passwordLinkExpires>
|
||||
"0"^^xsd:long ;
|
||||
<http://vitro.mannlib.cornell.edu/ns/vitro/authorization#status>
|
||||
"ACTIVE"^^xsd:string .
|
35
utilities/LoadTesting/scripts/_captureTomcatLogs
Executable file
35
utilities/LoadTesting/scripts/_captureTomcatLogs
Executable file
|
@ -0,0 +1,35 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Copy the Tomcat logs into a time-stamped directory in the current "version"
|
||||
directory, for possible inspection later.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
require 'date'
|
||||
require "#{File.dirname(__FILE__)}/subscripts/loadParms"
|
||||
|
||||
def figure_time_stamp()
|
||||
return DateTime.now.strftime("%Y-%m-%d_%H-%M-%S")
|
||||
end
|
||||
|
||||
Dir.chdir("/home/jeb228/LoadTesting/versions/#{@version_name}") do |path|
|
||||
@tomcat_logs_dir = "#{path}/tomcatLogs"
|
||||
if (! File.directory?(@tomcat_logs_dir))
|
||||
Dir.mkdir(@tomcat_logs_dir)
|
||||
end
|
||||
end
|
||||
|
||||
Dir.chdir(@tomcat_logs_dir) do |path|
|
||||
@this_logs_dir = "#{path}/#{figure_time_stamp()}"
|
||||
Dir.mkdir(@this_logs_dir)
|
||||
end
|
||||
|
||||
Dir.chdir(@this_logs_dir) do |path|
|
||||
system('cp ~/LoadTesting/tomcat/logs/* .')
|
||||
end
|
||||
|
13
utilities/LoadTesting/scripts/_checkTomcat
Executable file
13
utilities/LoadTesting/scripts/_checkTomcat
Executable file
|
@ -0,0 +1,13 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
See whether our Tomcat is running (not the Tomcat that runs the national index).
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
puts system("ps -ef | grep tomcat | grep -v usr/local/tomcat")
|
||||
|
12
utilities/LoadTesting/scripts/_clearTomcatLogs
Executable file
12
utilities/LoadTesting/scripts/_clearTomcatLogs
Executable file
|
@ -0,0 +1,12 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Remove any Tomcat logs.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
puts system("rm ~/LoadTesting/tomcat/logs/*")
|
39
utilities/LoadTesting/scripts/_deploy
Executable file
39
utilities/LoadTesting/scripts/_deploy
Executable file
|
@ -0,0 +1,39 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Build and deploy the currently selected version of VIVO.
|
||||
|
||||
Remove vivo from Tomcat, so we know we start with clean slate.
|
||||
Create the deploy.properties file by substituting current values into the
|
||||
template. Then run the build script.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
require "#{File.dirname(__FILE__)}/subscripts/loadParms"
|
||||
require 'erb'
|
||||
|
||||
def build_deploy_properties
|
||||
File.open(@deploy_properties_source) do |source_file|
|
||||
File.open(@deploy_properties_target, 'w') do |target_file|
|
||||
raw = source_file.read()
|
||||
cooked = ERB.new(raw).result
|
||||
target_file.write(cooked)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
puts system("rm -r ~/LoadTesting/tomcat/webapps/vivo*")
|
||||
puts system("rm -r ~/LoadTesting/tomcat/conf/Catalina/localhost/vivo*")
|
||||
|
||||
@deploy_properties_source = "/home/jeb228/LoadTesting/distros/#{@distro_name}/deploy.properties.template"
|
||||
@deploy_properties_target = "/home/jeb228/LoadTesting/distros/#{@distro_name}/vivo/deploy.properties"
|
||||
build_deploy_properties()
|
||||
|
||||
Dir.chdir("/home/jeb228/LoadTesting/distros/#{@distro_name}/vivo") do |path|
|
||||
system "ant clean deploy"
|
||||
end
|
||||
|
36
utilities/LoadTesting/scripts/_fakeUploadedFiles
Executable file
36
utilities/LoadTesting/scripts/_fakeUploadedFiles
Executable file
|
@ -0,0 +1,36 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Look through the uploads directory in the currently selected version, and insure
|
||||
that an image file exists wherever the data model expects one.
|
||||
|
||||
This requires an imageFileInfo.csv, which was produced by a SPARQL query against
|
||||
the data model.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
require "#{File.dirname(__FILE__)}/subscripts/loadParms"
|
||||
require "#{File.dirname(__FILE__)}/subscripts/upload_file_faker"
|
||||
|
||||
properties = {}
|
||||
|
||||
properties["uploads_directory"] = "/home/jeb228/LoadTesting/versions/#{@version_name}/data/uploads"
|
||||
properties["file_info_file"] = "/home/jeb228/LoadTesting/modelData/#{@site_name}/imageFileInfo.csv"
|
||||
properties["template_file"] = "#{File.dirname(__FILE__)}/subscripts/dummy_image_file.jpg"
|
||||
|
||||
if ARGV.length == 1 && ARGV[0] == "doit"
|
||||
properties["scan_only"] = "false"
|
||||
else
|
||||
puts "Just scanning unless you say: \"doit\""
|
||||
properties["scan_only"] = "true"
|
||||
end
|
||||
|
||||
uff = UploadFileFaker.new(properties)
|
||||
uff.process
|
||||
|
||||
puts "UploadFileFaker was successful."
|
||||
|
12
utilities/LoadTesting/scripts/_lessVivoLog
Executable file
12
utilities/LoadTesting/scripts/_lessVivoLog
Executable file
|
@ -0,0 +1,12 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
View the VIVO log in Tomcat.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
puts system("less ~/LoadTesting/tomcat/logs/vivo.all.log")
|
42
utilities/LoadTesting/scripts/_mergeTestResults
Executable file
42
utilities/LoadTesting/scripts/_mergeTestResults
Executable file
|
@ -0,0 +1,42 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Look through the test results for the currently-selected version, and merge them
|
||||
into an HTML file so we can easily compare them.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
require "#{File.dirname(__FILE__)}/subscripts/loadParms"
|
||||
require "#{File.dirname(__FILE__)}/subscripts/test_result_merger"
|
||||
|
||||
properties = {}
|
||||
|
||||
source_dir = "/home/jeb228/LoadTesting/testinfo/results/#{@site_name}"
|
||||
properties["source_directory"] = source_dir
|
||||
properties["target_directory"] = "/var/www/html/loadTesting/"
|
||||
properties["site_name"] = "#{@site_name}"
|
||||
|
||||
suggestions = []
|
||||
if File.directory?(source_dir)
|
||||
Dir.chdir(source_dir) do |dir|
|
||||
if File.file?("fileOrderSuggestions.txt")
|
||||
File.open("fileOrderSuggestions.txt") do |f|
|
||||
f.each_line() do |line|
|
||||
suggestions.push(line.strip())
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
properties["file_order_suggestions"] = suggestions
|
||||
|
||||
trm = TestResultMerger.new(properties)
|
||||
trm.merge
|
||||
|
||||
puts "TestResultMerger was successful."
|
||||
|
||||
|
96
utilities/LoadTesting/scripts/_runTest
Executable file
96
utilities/LoadTesting/scripts/_runTest
Executable file
|
@ -0,0 +1,96 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Try to connect to the webapp. If we can't connect, then give up.
|
||||
|
||||
Run the JMeter test with appropriate parameters.
|
||||
|
||||
Use XSL to create an HTML version of the results.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
require "#{File.dirname(__FILE__)}/subscripts/loadParms"
|
||||
|
||||
def locate_files()
|
||||
test_full_name = "#{@test_name}#{@test_suffix}"
|
||||
test_source_dir = "/home/jeb228/LoadTesting/testinfo/tests/#{@test_name}"
|
||||
@test_jmx_file = "#{test_source_dir}/#{test_full_name}.jmx"
|
||||
raise "Test file doesn't exist: '#{@test_jmx_file}'." unless File.file?(@test_jmx_file)
|
||||
|
||||
result_dir = "/home/jeb228/LoadTesting/testinfo/results/#{@site_name}"
|
||||
Dir.mkdir(result_dir) unless File.directory?(result_dir)
|
||||
|
||||
@test_jtl_file = "#{result_dir}/#{test_full_name}.jtl"
|
||||
File.delete(@test_jtl_file) if File.file?(@test_jtl_file)
|
||||
|
||||
@test_log_file = "#{result_dir}/#{test_full_name}.log"
|
||||
File.delete(@test_log_file) if File.file?(@test_log_file)
|
||||
|
||||
@test_html_file = "#{result_dir}/#{test_full_name}.html"
|
||||
File.delete(@test_html_file) if File.file?(@test_html_file)
|
||||
|
||||
data_dir = "/home/jeb228/LoadTesting/modelData/#{@site_name}"
|
||||
@person_uris_file = "#{data_dir}/personUris.csv"
|
||||
raise "Person URIs file doesn't exist: '#{@person_uris_file}'" unless File.file?(@person_uris_file)
|
||||
@infoResource_uris_file = "#{data_dir}/infoResourceUris.csv"
|
||||
raise "InfoResource URIs file doesn't exist: '#{@infoResource_uris_file}'" unless File.file?(@infoResource_uris_file)
|
||||
@author_uris_file = "#{data_dir}/authorUris.csv"
|
||||
raise "Author URIs file doesn't exist: '#{@author_uris_file}'" unless File.file?(@author_uris_file)
|
||||
|
||||
@xsl_stylesheet_file = "/home/jeb228/LoadTesting/jmeter/jakarta-jmeter-2.4/extras/jmeter-results-report_21.xsl"
|
||||
end
|
||||
|
||||
def prepare_jmeter_properties()
|
||||
props = {}
|
||||
|
||||
# set parameters for the tests
|
||||
props["webapp.host"] = "localhost"
|
||||
props["webapp.port"] = "6080"
|
||||
props["webapp.name"] = "vivo"
|
||||
|
||||
props["iterations"] = @test_iterations
|
||||
props["threads"] = @test_threads
|
||||
|
||||
props["file.person.uris"] = @person_uris_file
|
||||
props["file.infoResource.uris"] = @infoResource_uris_file
|
||||
props["file.author.uris"] = @author_uris_file
|
||||
props["default.namespace"] = @default_namespace
|
||||
|
||||
# set parameters for the output
|
||||
props["jmeter.save.saveservice.output_format"] = "xml"
|
||||
props["jmeter.save.saveservice.response_data.on_error"] = "true"
|
||||
props["jmeter.save.saveservice.url"] = "true"
|
||||
props["jmeter.save.saveservice.bytes"] = "true"
|
||||
|
||||
# show a summary line periodically, so we know it's running. -->
|
||||
props["summariser.name"] = "summary"
|
||||
props["summariser.out"] = "true"
|
||||
props["summariser.log"] = "true"
|
||||
props["summariser.interval"] = "10"
|
||||
|
||||
|
||||
@jmeter_properties = ""
|
||||
props.each() do |key, value|
|
||||
@jmeter_properties << "-J#{key}=#{value} "
|
||||
end
|
||||
end
|
||||
|
||||
def test_the_webapp()
|
||||
puts "BOGUS test_the_webapp()"
|
||||
end
|
||||
|
||||
locate_files()
|
||||
prepare_jmeter_properties()
|
||||
test_the_webapp()
|
||||
|
||||
Dir.chdir("/home/jeb228/LoadTesting/jmeter/jakarta-jmeter-2.4/bin") do |path|
|
||||
puts "RUNNING TESTS"
|
||||
system "./jmeter -n -t #{@test_jmx_file} -l #{@test_jtl_file} -j #{@test_log_file} #{@jmeter_properties}"
|
||||
puts "CONVERTING TO HTML"
|
||||
system "xsltproc -o #{@test_html_file} #{@xsl_stylesheet_file} #{@test_jtl_file}"
|
||||
end
|
||||
|
58
utilities/LoadTesting/scripts/_setTest
Executable file
58
utilities/LoadTesting/scripts/_setTest
Executable file
|
@ -0,0 +1,58 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Select the name of the test that we will be running, based on the directories
|
||||
in testinfo/tests directory.
|
||||
|
||||
Record that selection, along with the desired number of iterations and threads.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
@test_parms_file = "#{File.dirname(__FILE__)}/subscripts/_current_test.rb"
|
||||
|
||||
# Find out what tests we have available
|
||||
def build_test_list()
|
||||
@test_names = []
|
||||
Dir.foreach("/home/jeb228/LoadTesting/testinfo/tests") do |filename|
|
||||
@test_names.push(filename) unless filename[0,1] == "."
|
||||
end
|
||||
@test_names.sort!
|
||||
raise "Found no test directories." if @test_names.length == 0
|
||||
end
|
||||
|
||||
# Write the current version to the file
|
||||
def write_current_test(name, threads, iterations)
|
||||
File.open(@test_parms_file, "w") do |file|
|
||||
file.puts "# what is the current test, and how many times will it run?"
|
||||
file.puts "@test_name = '#{name}'"
|
||||
file.puts "@test_threads = '#{threads}'"
|
||||
file.puts "@test_iterations = '#{iterations}'"
|
||||
end
|
||||
puts "test set to #{name}, #{threads} threads, #{iterations} iterations."
|
||||
end
|
||||
|
||||
#
|
||||
# ---------------------------------------------------------
|
||||
# MAIN ROUTINE
|
||||
# ---------------------------------------------------------
|
||||
#
|
||||
|
||||
build_test_list()
|
||||
|
||||
puts "Enter test number: "
|
||||
@test_names.each_index do |index|
|
||||
puts " #{index+1} = #{@test_names[index]}"
|
||||
end
|
||||
number = STDIN.gets.chomp.to_i
|
||||
|
||||
if number <= 0 || number > @test_names.length
|
||||
puts "UNRECOGNIZED TEST."
|
||||
exit
|
||||
end
|
||||
|
||||
write_current_test(@test_names[number - 1], 1, 1)
|
||||
|
54
utilities/LoadTesting/scripts/_setVersion
Executable file
54
utilities/LoadTesting/scripts/_setVersion
Executable file
|
@ -0,0 +1,54 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Choose a version from among the subdirectories in the versions directory and
|
||||
record that choice.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
@version_parms_file = "#{File.dirname(__FILE__)}/subscripts/_current_version.rb"
|
||||
|
||||
# Find out what versions we have available
|
||||
def build_version_list()
|
||||
@version_names = []
|
||||
Dir.foreach("/home/jeb228/LoadTesting/versions") do |filename|
|
||||
@version_names.push(filename) unless (filename[0,1] == "_") || (filename[0,1] == ".")
|
||||
end
|
||||
@version_names.sort!
|
||||
raise "Found no version directories." unless @version_names.length > 0
|
||||
end
|
||||
|
||||
# Write the current version to the file
|
||||
def write_current_version(name)
|
||||
File.open(@version_parms_file, "w") do |file|
|
||||
file.puts "# what is the current version under test?"
|
||||
file.puts "@version_name = '#{name}'"
|
||||
end
|
||||
puts "version set to #{name}"
|
||||
end
|
||||
|
||||
#
|
||||
# ---------------------------------------------------------
|
||||
# MAIN ROUTINE
|
||||
# ---------------------------------------------------------
|
||||
#
|
||||
|
||||
build_version_list()
|
||||
|
||||
puts "Enter version number: "
|
||||
@version_names.each_index do |index|
|
||||
puts " #{index+1} = #{@version_names[index]}"
|
||||
end
|
||||
number = STDIN.gets.chomp.to_i
|
||||
|
||||
if number <= 0 || number > @version_names.length
|
||||
puts "UNRECOGNIZED VERSION."
|
||||
exit
|
||||
end
|
||||
|
||||
write_current_version(@version_names[number - 1])
|
||||
|
12
utilities/LoadTesting/scripts/_startTomcat
Executable file
12
utilities/LoadTesting/scripts/_startTomcat
Executable file
|
@ -0,0 +1,12 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Duh
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
puts system("~/LoadTesting/tomcat/bin/startup.sh")
|
||||
|
20
utilities/LoadTesting/scripts/_status
Executable file
20
utilities/LoadTesting/scripts/_status
Executable file
|
@ -0,0 +1,20 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Show the SVN status of the currently-selected distro, both VIVO and Vitro.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
require "#{File.dirname(__FILE__)}/subscripts/loadParms"
|
||||
|
||||
Dir.chdir("/home/jeb228/LoadTesting/distros/#{@distro_name}/vitro") do |path|
|
||||
system "svn status -u"
|
||||
end
|
||||
|
||||
Dir.chdir("/home/jeb228/LoadTesting/distros/#{@distro_name}/vivo") do |path|
|
||||
system "svn status -u"
|
||||
end
|
||||
|
13
utilities/LoadTesting/scripts/_stopTomcat
Executable file
13
utilities/LoadTesting/scripts/_stopTomcat
Executable file
|
@ -0,0 +1,13 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Duh
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
puts system("~/LoadTesting/tomcat/bin/shutdown.sh")
|
||||
|
12
utilities/LoadTesting/scripts/_tailTomcatLogs
Executable file
12
utilities/LoadTesting/scripts/_tailTomcatLogs
Executable file
|
@ -0,0 +1,12 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Start following the tails of all of the logs in Tomcat.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
puts system("tail -f ~/LoadTesting/tomcat/logs/*")
|
21
utilities/LoadTesting/scripts/_update
Executable file
21
utilities/LoadTesting/scripts/_update
Executable file
|
@ -0,0 +1,21 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Use SVN to get the latest revisions to the currently-selected distro.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
require "#{File.dirname(__FILE__)}/subscripts/loadParms"
|
||||
|
||||
Dir.chdir("/home/jeb228/LoadTesting/distros/#{@distro_name}/vitro") do |path|
|
||||
system "svn update"
|
||||
end
|
||||
|
||||
Dir.chdir("/home/jeb228/LoadTesting/distros/#{@distro_name}/vivo") do |path|
|
||||
system "svn update"
|
||||
end
|
||||
|
15
utilities/LoadTesting/scripts/_whichTest
Executable file
15
utilities/LoadTesting/scripts/_whichTest
Executable file
|
@ -0,0 +1,15 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
What is the currently-selected test?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
require "#{File.dirname(__FILE__)}/subscripts/loadParms"
|
||||
|
||||
puts "Current test is #{@test_name}, #{@test_threads} threads, #{@test_iterations} iterations"
|
||||
|
15
utilities/LoadTesting/scripts/_whichVersion
Executable file
15
utilities/LoadTesting/scripts/_whichVersion
Executable file
|
@ -0,0 +1,15 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
What is the currently-selected version?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
require "#{File.dirname(__FILE__)}/subscripts/loadParms"
|
||||
|
||||
puts "Current version is #{@version_name}"
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# what is the current test, and how many times will it run?
|
||||
@test_name = 'SimpleTests'
|
||||
@test_threads = '1'
|
||||
@test_iterations = '40'
|
|
@ -0,0 +1,2 @@
|
|||
# what is the current version under test?
|
||||
@version_name = 'cornell1.4'
|
BIN
utilities/LoadTesting/scripts/subscripts/dummy_image_file.jpg
Normal file
BIN
utilities/LoadTesting/scripts/subscripts/dummy_image_file.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
6
utilities/LoadTesting/scripts/subscripts/loadParms.rb
Executable file
6
utilities/LoadTesting/scripts/subscripts/loadParms.rb
Executable file
|
@ -0,0 +1,6 @@
|
|||
require "#{File.dirname(__FILE__)}/_current_version"
|
||||
require "#{File.dirname(__FILE__)}/_current_test"
|
||||
require "/home/jeb228/LoadTesting/versions/#{@version_name}/version_properties"
|
||||
require "/home/jeb228/LoadTesting/distros/#{@distro_name}/distro_properties"
|
||||
require "/home/jeb228/LoadTesting/sites/#{@site_name}/site_properties"
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
A utility class that reads a properties file and returns a hash containing the
|
||||
properties.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
class PropertyFileReader
|
||||
# Read a properties file and return a hash.
|
||||
#
|
||||
# Parameters: the path to the properties file
|
||||
#
|
||||
# The hash includes the special property "properties_file_path", which holds
|
||||
# the path to the properties file.
|
||||
#
|
||||
def self.read(file_path)
|
||||
properties = {}
|
||||
properties["properties_file_path"] = File.expand_path(file_path)
|
||||
|
||||
File.open(file_path) do |file|
|
||||
file.each_line do |line|
|
||||
line.strip!
|
||||
if line.length == 0 || line[0] == ?# || line[0] == ?!
|
||||
# ignore blank lines, and lines starting with '#' or '!'.
|
||||
elsif line =~ /(.*?)\s*[=:]\s*(.*)/
|
||||
# key and value are separated by '=' or ':' and optional whitespace.
|
||||
properties[$1.strip] = $2
|
||||
else
|
||||
# No '=' or ':' means that the value is empty.
|
||||
properties[line] = ''
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return properties
|
||||
end
|
||||
end
|
102
utilities/LoadTesting/scripts/subscripts/test_result_file.rb
Normal file
102
utilities/LoadTesting/scripts/subscripts/test_result_file.rb
Normal file
|
@ -0,0 +1,102 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Parse a file of JMeter test results (*./jtl), summarize the times for each test,
|
||||
and make the summaries easily available.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
require "rexml/document"
|
||||
|
||||
include REXML
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# TestResultSummary class
|
||||
# ------------------------------------------------------------------------------------
|
||||
|
||||
class TestResultSummary
|
||||
attr_reader :label
|
||||
attr_reader :how_many
|
||||
attr_reader :failures
|
||||
attr_reader :min_time
|
||||
attr_reader :max_time
|
||||
attr_reader :avg_time
|
||||
def addResult(result_element)
|
||||
@how_many += 1
|
||||
@failures += 1 unless result_element.attributes["s"] == "true"
|
||||
|
||||
time = result_element.attributes["t"].to_i
|
||||
@total_time += time
|
||||
@min_time = [@min_time, time].min
|
||||
@max_time = [@max_time, time].max
|
||||
|
||||
@avg_time = @total_time / how_many
|
||||
end
|
||||
|
||||
def initialize(result_element)
|
||||
@label = result_element.attributes["lb"]
|
||||
@how_many = 0
|
||||
@failures = 0
|
||||
@min_time = 100000000
|
||||
@max_time = 0
|
||||
@total_time = 0
|
||||
|
||||
addResult(result_element)
|
||||
end
|
||||
end
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# TestResultFile class
|
||||
# ------------------------------------------------------------------------------------
|
||||
|
||||
class TestResultFile
|
||||
attr_reader :filename
|
||||
attr_reader :timestamp
|
||||
attr_reader :summaries
|
||||
attr_reader :version
|
||||
def parse_result_file()
|
||||
@summaries = {}
|
||||
@version = "_"
|
||||
|
||||
file = File.new( @file_path )
|
||||
doc = Document.new file
|
||||
XPath.each(doc, "/testResults/httpSample") do | result |
|
||||
test_label = result.attributes["lb"]
|
||||
if @summaries[test_label] == nil
|
||||
@summaries[test_label] = TestResultSummary.new(result)
|
||||
else
|
||||
@summaries[test_label].addResult(result)
|
||||
end
|
||||
end
|
||||
|
||||
XPath.each(doc, "version") do | version |
|
||||
@version = version.attributes["name"]
|
||||
end
|
||||
end
|
||||
|
||||
def initialize(filename, source_directory)
|
||||
raise("filename must not be nil") if filename == nil
|
||||
raise("source_directory must not be nil") if source_directory == nil
|
||||
|
||||
@filename = filename
|
||||
@source_directory = source_directory
|
||||
|
||||
if !File.directory?(@source_directory)
|
||||
raise "Directory does not exist: '#{@source_directory}'."
|
||||
end
|
||||
|
||||
@file_path = File.expand_path(filename + ".jtl", @source_directory)
|
||||
|
||||
if !File.file?(@file_path)
|
||||
raise "File doesn't exist: '#{@file_path}'."
|
||||
end
|
||||
|
||||
@timestamp = File.mtime(@file_path)
|
||||
|
||||
parse_result_file()
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Parse a file of JMeter test results (*./jtl), summarize the times for each test,
|
||||
and make the summaries easily available.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# TestResultMarshaller class
|
||||
# ------------------------------------------------------------------------------------
|
||||
|
||||
class TestResultMarshaller
|
||||
def marshall()
|
||||
File.open(@output_filename, 'w') do | out |
|
||||
write_html_header(out)
|
||||
write_table_header(out)
|
||||
write_table_lines(out)
|
||||
write_table_footer(out)
|
||||
write_html_footer(out)
|
||||
end
|
||||
end
|
||||
|
||||
def write_html_header(out)
|
||||
out.puts <<"EOF"
|
||||
<html>
|
||||
<head>
|
||||
<link REL='STYLESHEET' TYPE='text/css' HREF='./mergedResults.css'>
|
||||
<title>Performance tests for #{@site_name}</title>
|
||||
</head>
|
||||
<body>
|
||||
EOF
|
||||
end
|
||||
|
||||
def write_table_header(out)
|
||||
top_cells = ['<th> </th>']
|
||||
@test_results.each do | test |
|
||||
top_cells.push("<th colspan='3'>#{test.version}<br/>#{test.filename}<br/>#{test.timestamp.strftime('%Y-%m-%d %H:%M:%S')}</th>")
|
||||
end
|
||||
|
||||
bottom_cells = ['<th>Test Name</th>']
|
||||
@test_results.each do | test |
|
||||
bottom_cells.push('<th>Iterations</th>')
|
||||
bottom_cells.push('<th>time<br/>(min/max)</th>')
|
||||
bottom_cells.push("<th>compare</th>")
|
||||
end
|
||||
|
||||
out.puts <<"EOF"
|
||||
<table class='testData' cellspacing='0'>
|
||||
<tr>
|
||||
#{top_cells.join("\n ")}
|
||||
</tr>
|
||||
<tr>
|
||||
#{bottom_cells.join("\n ")}
|
||||
</tr>
|
||||
EOF
|
||||
end
|
||||
|
||||
def write_table_lines(out)
|
||||
all_test_names().each do | test_name |
|
||||
out.puts <<"EOF"
|
||||
<tr>
|
||||
<td class='left'>#{test_name}</td>
|
||||
#{format_test_results(test_name)}
|
||||
</tr>
|
||||
EOF
|
||||
end
|
||||
end
|
||||
|
||||
def all_test_names
|
||||
names = []
|
||||
@test_results.each do | test |
|
||||
names.concat(test.summaries.keys)
|
||||
end
|
||||
names.uniq.sort
|
||||
end
|
||||
|
||||
def format_test_results(test_name)
|
||||
results = []
|
||||
@test_results.each do | test |
|
||||
results.push(format_test_result(test_name, test))
|
||||
end
|
||||
results.join("\n ")
|
||||
end
|
||||
|
||||
def format_test_result(test_name, test)
|
||||
s = test.summaries[test_name]
|
||||
if s
|
||||
<<"EOF"
|
||||
<td class='open'>#{s.how_many}</td>
|
||||
<td>
|
||||
<table class='oneResult close' cellspacing='0'>
|
||||
<tr>
|
||||
<td rowspan='2'>#{format_millis(s.avg_time)}</td>
|
||||
<td class='minmax'>#{format_millis(s.min_time)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='minmax'>#{format_millis(s.max_time)}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td>#{performance_ratio(test_name, s.avg_time)}</td>
|
||||
EOF
|
||||
else
|
||||
<<"EOF"
|
||||
<td class='open'> </td>
|
||||
<td>
|
||||
<table class='oneResult close' cellspacing='0'>
|
||||
<tr>
|
||||
<td rowspan='2'> </td>
|
||||
<td class='minmax'> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='minmax'> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td> </td>
|
||||
EOF
|
||||
end
|
||||
end
|
||||
|
||||
def format_millis(millis)
|
||||
"%.3f" % [millis.to_f / 1000]
|
||||
end
|
||||
|
||||
def performance_ratio(test_name, time)
|
||||
return " " if @test_results.empty?
|
||||
return " " unless @test_results[0].summaries.key?(test_name)
|
||||
|
||||
s = @test_results[0].summaries[test_name]
|
||||
reference = s.avg_time
|
||||
return " " if reference == 0
|
||||
|
||||
return "#{"%.0f" % [time * 100 / reference]}%"
|
||||
end
|
||||
|
||||
def write_table_footer(out)
|
||||
out.puts "</table>"
|
||||
end
|
||||
|
||||
def write_html_footer(out)
|
||||
out.puts <<"EOF"
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
end
|
||||
|
||||
def initialize(target_directory, site_name, test_results)
|
||||
@target_directory = target_directory
|
||||
@site_name = site_name
|
||||
@test_results = test_results
|
||||
|
||||
filename = "#{site_name}-merged_#{Time.now.strftime('%Y-%m-%d_%H-%M-%S')}"
|
||||
@output_filename = File.expand_path(filename, @target_directory)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Look through a directory of test results files (*.jtl), and produce an HTML file
|
||||
that summarizes, merges, and compares the information.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
$: << File.dirname(File.expand_path(__FILE__))
|
||||
require 'test_result_file'
|
||||
require 'test_result_marshaller'
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# TestResultMerger class
|
||||
# ------------------------------------------------------------------------------------
|
||||
|
||||
class TestResultMerger
|
||||
#
|
||||
# Do we have any chance of succeeding with these properties?
|
||||
#
|
||||
def sanity_checks_on_properties()
|
||||
raise("Properties must contain a value for 'source_directory'") if @source_directory == nil
|
||||
raise("Properties must contain a value for 'target_directory'") if @target_directory == nil
|
||||
raise("Properties must contain a value for 'site_name'") if @site_name == nil
|
||||
|
||||
if !File.directory?(@source_directory)
|
||||
raise "Not a directory: '#{@source_directory}'."
|
||||
end
|
||||
if !File.directory?(@target_directory)
|
||||
raise "Not a directory: '#{@target_directory}'."
|
||||
end
|
||||
end
|
||||
|
||||
def parse_files()
|
||||
test_result_files = build_file_list()
|
||||
|
||||
@test_results = []
|
||||
test_result_files.each() do | test_result_file |
|
||||
puts "Parsing #{test_result_file}"
|
||||
@test_results.push(TestResultFile.new(test_result_file, @source_directory))
|
||||
end
|
||||
end
|
||||
|
||||
def build_file_list
|
||||
existing_files = []
|
||||
Dir.foreach(@source_directory) do | filename |
|
||||
next unless File.extname(filename) == ".jtl"
|
||||
existing_files.push(File.basename(filename, ".jtl"))
|
||||
end
|
||||
puts "BOGUS existing files = [#{existing_files.join(', ')}]"
|
||||
|
||||
file_list = []
|
||||
@file_order_suggestions.each() do | suggestion|
|
||||
if existing_files.include?(suggestion)
|
||||
file_list.push(suggestion)
|
||||
existing_files.delete(suggestion)
|
||||
end
|
||||
end
|
||||
file_list.concat(existing_files)
|
||||
puts "BOGUS file list = [#{file_list.join(', ')}]"
|
||||
|
||||
return file_list
|
||||
end
|
||||
|
||||
def marshall()
|
||||
marshaller = TestResultMarshaller.new(@target_directory, @site_name, @test_results)
|
||||
marshaller.marshall()
|
||||
end
|
||||
|
||||
def initialize(properties)
|
||||
@source_directory = properties['source_directory']
|
||||
@target_directory = properties['target_directory']
|
||||
@site_name = properties['site_name']
|
||||
@file_order_suggestions = properties['file_order_suggestions']
|
||||
|
||||
puts "source_directory = #{@source_directory}"
|
||||
puts "target_directory = #{@target_directory}"
|
||||
puts "site_name = #{@site_name}"
|
||||
if (@file_order_suggestions == nil)
|
||||
puts "file_order_suggestions = nil"
|
||||
else
|
||||
puts "file_order_suggestions = [#{@file_order_suggestions.join(', ')}]"
|
||||
end
|
||||
|
||||
sanity_checks_on_properties
|
||||
end
|
||||
|
||||
def merge()
|
||||
parse_files()
|
||||
marshall()
|
||||
end
|
||||
end
|
||||
|
246
utilities/LoadTesting/scripts/subscripts/upload_file_faker.rb
Normal file
246
utilities/LoadTesting/scripts/subscripts/upload_file_faker.rb
Normal file
|
@ -0,0 +1,246 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Take a file that MySQL produced listing the URIs and filenames of all expected
|
||||
upload files. Scan through the uploads directory, creating such files wherever
|
||||
they are needed.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
$: << File.dirname(File.expand_path(__FILE__))
|
||||
require 'date'
|
||||
require 'fileutils'
|
||||
require 'property_file_reader'
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# FileInfoFile class
|
||||
# ------------------------------------------------------------------------------------
|
||||
|
||||
class FileInfoFile
|
||||
attr_reader :default_namespace
|
||||
attr_reader :data
|
||||
|
||||
def parse_info_line(line)
|
||||
# Lines are in this form: "URI","filename"
|
||||
match = line.match(/^"([^"]*)","([^"]*)"$/)
|
||||
raise "Can't parse this line: '#{line}'" if !match
|
||||
return match.captures[0], match.captures[1]
|
||||
end
|
||||
|
||||
def parse_default_namespace(uri)
|
||||
match = /^(.*)individual/.match(uri)
|
||||
raise "Can't find default namespace: '#{uri}'" if match == nil
|
||||
"#{match.captures[0]}individual/"
|
||||
end
|
||||
|
||||
public
|
||||
|
||||
def initialize(filepath)
|
||||
@data = []
|
||||
File.open(filepath) do |f|
|
||||
f.each() do |line|
|
||||
@data.push(parse_info_line(line))
|
||||
end
|
||||
end
|
||||
puts "parsed #{@data.length} lines."
|
||||
|
||||
@default_namespace = parse_default_namespace(@data[0][0])
|
||||
puts "default namespace is '#{@default_namespace}'"
|
||||
end
|
||||
end
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# NamespacesFile class
|
||||
#
|
||||
# Read, query, modify and write the namespace-prefixes file.
|
||||
# ------------------------------------------------------------------------------------
|
||||
|
||||
class NamespacesFile
|
||||
NAMESPACES_FILENAME = 'file_storage_namespaces.properties'
|
||||
|
||||
public
|
||||
|
||||
def initialize(uploads_directory, scan_only)
|
||||
@uploads_directory = uploads_directory
|
||||
@scan_only = scan_only
|
||||
|
||||
Dir.chdir(@uploads_directory) do |dir|
|
||||
@namespaces = {}
|
||||
if File.file?(NAMESPACES_FILENAME)
|
||||
@namespaces = PropertyFileReader.read(NAMESPACES_FILENAME)
|
||||
@namespaces.delete("properties_file_path")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def add_namespace(namespace)
|
||||
if @namespaces.has_value?(namespace)
|
||||
puts "found prefix for #{namespace}"
|
||||
return
|
||||
end
|
||||
|
||||
'abcdefghijklmnopqrstuvwxyz'.split("").each do |this_char|
|
||||
if (!@namespaces.has_key?(this_char))
|
||||
@namespaces[this_char] = namespace
|
||||
puts "assigned prefix = '#{this_char}'"
|
||||
return
|
||||
end
|
||||
end
|
||||
raise "all prefixes are used!"
|
||||
end
|
||||
|
||||
def prefix(namespace)
|
||||
@namespaces.each() do | key, value |
|
||||
return key if value == namespace
|
||||
end
|
||||
raise "no prefix for '#{namespace}'"
|
||||
end
|
||||
|
||||
def write()
|
||||
if @scan_only
|
||||
puts "Scan-only: not writing namespaces file"
|
||||
else
|
||||
Dir.chdir(@uploads_directory) do |dir|
|
||||
File.open(NAMESPACES_FILENAME, "w") do |f|
|
||||
@namespaces.each do |prefix, namespace|
|
||||
f.puts "#{prefix} = #{namespace}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Main class - UploadFileFaker
|
||||
# ------------------------------------------------------------------------------------
|
||||
|
||||
class UploadFileFaker
|
||||
#
|
||||
# Do we have any chance of succeeding with these properties?
|
||||
#
|
||||
def sanity_checks_on_properties()
|
||||
raise("Properties file must contain a value for 'uploads_directory'") if @uploads_directory == nil
|
||||
raise("Properties file must contain a value for 'file_info_file'") if @file_info_file == nil
|
||||
raise("Properties file must contain a value for 'template_file'") if @template_file == nil
|
||||
|
||||
if !File.directory?(@uploads_directory)
|
||||
raise "Not a directory: '#{@uploads_directory}'."
|
||||
end
|
||||
if !File.file?(@file_info_file)
|
||||
raise "File does not exist: '#{@file_info_file}'."
|
||||
end
|
||||
if !File.file?(@template_file)
|
||||
raise "File does not exist: '#{@template_file}'."
|
||||
end
|
||||
end
|
||||
|
||||
#
|
||||
# Check each location that should contain an image, and if we're not just
|
||||
# scanning, put one there.
|
||||
#
|
||||
def create_image_files_where_needed()
|
||||
@file_info.data.each do |line|
|
||||
uri, filename = line
|
||||
process_file_info(uri, filename)
|
||||
end
|
||||
end
|
||||
|
||||
def process_file_info(uri, filename)
|
||||
full_path = figure_full_path(uri, filename)
|
||||
|
||||
if File.file?(full_path)
|
||||
puts "File already exists at: '#{full_path}'"
|
||||
elsif @scan_only
|
||||
puts "Scan only - no file at: '#{full_path}'"
|
||||
else
|
||||
puts "Creating file at: '#{full_path}'"
|
||||
FileUtils.mkpath(File.dirname(full_path))
|
||||
FileUtils.cp(@template_file, full_path)
|
||||
end
|
||||
end
|
||||
|
||||
def figure_full_path(uri, filename)
|
||||
prefixed_uri = substitute_prefix_for_namespace(uri)
|
||||
construct_full_path(prefixed_uri, filename)
|
||||
end
|
||||
|
||||
def substitute_prefix_for_namespace(uri)
|
||||
if uri[0, @namespace.length] == @namespace
|
||||
uri.sub(@namespace, "#{@prefix}~")
|
||||
else
|
||||
raise "Doesn't start with default namespace: '#{uri}'"
|
||||
end
|
||||
end
|
||||
|
||||
def construct_full_path(prefixed_uri, filename)
|
||||
path = ""
|
||||
0.step(prefixed_uri.size - 1, 3) do |i|
|
||||
path = "#{path}/#{prefixed_uri[i, 3]}"
|
||||
end
|
||||
"#{@uploads_directory}/file_storage_root#{path}/#{filename}"
|
||||
end
|
||||
|
||||
public
|
||||
|
||||
#
|
||||
# Setup and get ready to process.
|
||||
#
|
||||
# properties is a map of keys to values, probably parsed from a properties file.
|
||||
#
|
||||
def initialize(properties)
|
||||
scan_only_string = properties['scan_only']
|
||||
@scan_only = 'false' != scan_only_string
|
||||
|
||||
@uploads_directory = properties['uploads_directory']
|
||||
@file_info_file = properties['file_info_file']
|
||||
@template_file = properties['template_file']
|
||||
|
||||
sanity_checks_on_properties()
|
||||
end
|
||||
|
||||
#
|
||||
# Start the scanning (and copying).
|
||||
#
|
||||
def process()
|
||||
@file_info = FileInfoFile.new(@file_info_file)
|
||||
@namespace = @file_info.default_namespace
|
||||
|
||||
namespaces_file = NamespacesFile.new(@uploads_directory, @scan_only)
|
||||
namespaces_file.add_namespace(@namespace)
|
||||
namespaces_file.write()
|
||||
@prefix = namespaces_file.prefix(@namespace)
|
||||
|
||||
create_image_files_where_needed()
|
||||
end
|
||||
end
|
||||
|
||||
#
|
||||
# ------------------------------------------------------------------------------------
|
||||
# Standalone calling.
|
||||
#
|
||||
# Do this if this program was called from the command line. That is, if the command
|
||||
# expands to the path of this file.
|
||||
# ------------------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
if File.expand_path($0) == File.expand_path(__FILE__)
|
||||
if ARGV.length == 0
|
||||
raise("No arguments - usage is: UploadFileFaker.rb <property_file>")
|
||||
end
|
||||
if !File.file?(ARGV[0])
|
||||
raise "File does not exist: '#{ARGV[0]}'."
|
||||
end
|
||||
|
||||
properties = PropertyFileReader.read(ARGV[0])
|
||||
|
||||
uff = UploadFileFaker.new(properties)
|
||||
uff.process
|
||||
|
||||
puts "UploadFileFaker was successful."
|
||||
end
|
||||
|
7
utilities/LoadTesting/sites/README.txt
Normal file
7
utilities/LoadTesting/sites/README.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
The sites directory contains sub-directories, one for each site whose data we are testing.
|
||||
|
||||
Each site directory (cornell, indiana, etc.) contains information specific to that site.
|
||||
|
||||
In particular, it contains a site_properties.rb file, which defines the default_namespace
|
||||
and the email address of the root user, for inclusion in the deploy.properties file
|
||||
by _deploy script.
|
4
utilities/LoadTesting/sites/cornell/site_properties.rb
Normal file
4
utilities/LoadTesting/sites/cornell/site_properties.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
# properties for this site
|
||||
@default_namespace = 'http://vivo.cornell.edu/individual/'
|
||||
@root_user = 'vivo_root@mydomain.edu'
|
||||
|
3
utilities/LoadTesting/sites/indiana/site_properties.rb
Normal file
3
utilities/LoadTesting/sites/indiana/site_properties.rb
Normal file
|
@ -0,0 +1,3 @@
|
|||
# properties for this site
|
||||
@default_namespace = 'http://vivo.iu.edu/individual/'
|
||||
@root_user = 'vivo@indiana.edu'
|
3
utilities/LoadTesting/sites/scripps/site_properties.rb
Normal file
3
utilities/LoadTesting/sites/scripps/site_properties.rb
Normal file
|
@ -0,0 +1,3 @@
|
|||
# properties for this site
|
||||
@default_namespace = 'http://vivo.scripps.edu/individual/'
|
||||
@root_user = 'samtest@scripps.edu'
|
15
utilities/LoadTesting/testinfo/README.txt
Normal file
15
utilities/LoadTesting/testinfo/README.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
Contains both the JMeter source files for the tests, and the results of the tests.
|
||||
|
||||
The source files are stored hierarchically, so we can have multiple sources for each set of tests.
|
||||
For example, the version of "SimpleTests" that is used with release 1.3 is stored in
|
||||
testinfo/tests/SimpleTests/SimpleTests-1-3.jmx
|
||||
|
||||
That way _selectTest can determine what sets we have by the names of the subdirectories in tests,
|
||||
and _runTest can use a distro-dependent version of the test set.
|
||||
|
||||
The results are stored in files that correspond the tests, and categorized by the site that
|
||||
they run against, so if we run SimpleTests against cornell data on distro of release 1.3,
|
||||
the results are stroed in
|
||||
results/cornell/SimpleTests-1-3.jtl
|
||||
results/cornell/SimpleTests-1-3.html
|
||||
results/cornell/SimpleTests-1-3.log
|
|
@ -0,0 +1,564 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<jmeterTestPlan version="1.2" properties="2.1">
|
||||
<hashTree>
|
||||
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
|
||||
<stringProp name="TestPlan.comments"></stringProp>
|
||||
<boolProp name="TestPlan.functional_mode">false</boolProp>
|
||||
<boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
|
||||
<elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="WEBAPP_HOST" elementType="Argument">
|
||||
<stringProp name="Argument.name">WEBAPP_HOST</stringProp>
|
||||
<stringProp name="Argument.value">${__property(webapp.host, , localhost)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="WEBAPP_PORT" elementType="Argument">
|
||||
<stringProp name="Argument.name">WEBAPP_PORT</stringProp>
|
||||
<stringProp name="Argument.value">${__property(webapp.port, , 8080)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="WEBAPP_NAME" elementType="Argument">
|
||||
<stringProp name="Argument.name">WEBAPP_NAME</stringProp>
|
||||
<stringProp name="Argument.value">${__property(webapp.name, , vivo)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="PERSON_URI_FILE" elementType="Argument">
|
||||
<stringProp name="Argument.name">PERSON_URI_FILE</stringProp>
|
||||
<stringProp name="Argument.value">${__property(file.person.uris, , PersonUris.csv)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="INFO_RESOURCE_URI_FILE" elementType="Argument">
|
||||
<stringProp name="Argument.name">INFO_RESOURCE_URI_FILE</stringProp>
|
||||
<stringProp name="Argument.value">${__property(file.infoResource.uris, , InfoResourceUris.csv)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="ITERATIONS" elementType="Argument">
|
||||
<stringProp name="Argument.name">ITERATIONS</stringProp>
|
||||
<stringProp name="Argument.value">${__property(iterations, , 10)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="DEFAULT_NAMESPACE" elementType="Argument">
|
||||
<stringProp name="Argument.name">DEFAULT_NAMESPACE</stringProp>
|
||||
<stringProp name="Argument.value">${__property(default.namespace, , http://vivo.mydomain.edu/individual/)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="THREADS" elementType="Argument">
|
||||
<stringProp name="Argument.name">THREADS</stringProp>
|
||||
<stringProp name="Argument.value">${__property(threads, , 1)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="TestPlan.user_define_classpath"></stringProp>
|
||||
</TestPlan>
|
||||
<hashTree>
|
||||
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Main Thread Group" enabled="true">
|
||||
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
|
||||
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
|
||||
<boolProp name="LoopController.continue_forever">false</boolProp>
|
||||
<stringProp name="LoopController.loops">${ITERATIONS}</stringProp>
|
||||
</elementProp>
|
||||
<stringProp name="ThreadGroup.num_threads">${THREADS}</stringProp>
|
||||
<stringProp name="ThreadGroup.ramp_time">${THREADS}</stringProp>
|
||||
<longProp name="ThreadGroup.start_time">1294759350000</longProp>
|
||||
<longProp name="ThreadGroup.end_time">1294759350000</longProp>
|
||||
<boolProp name="ThreadGroup.scheduler">false</boolProp>
|
||||
<stringProp name="ThreadGroup.duration"></stringProp>
|
||||
<stringProp name="ThreadGroup.delay"></stringProp>
|
||||
</ThreadGroup>
|
||||
<hashTree>
|
||||
<CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
|
||||
<collectionProp name="CookieManager.cookies"/>
|
||||
<boolProp name="CookieManager.clearEachIteration">false</boolProp>
|
||||
<stringProp name="CookieManager.policy">rfc2109</stringProp>
|
||||
</CookieManager>
|
||||
<hashTree/>
|
||||
<ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain">${WEBAPP_HOST}</stringProp>
|
||||
<stringProp name="HTTPSampler.port">${WEBAPP_PORT}</stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path"></stringProp>
|
||||
<boolProp name="HTTPSampler.image_parser">true</boolProp>
|
||||
</ConfigTestElement>
|
||||
<hashTree/>
|
||||
<GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Not logged in" enabled="true">
|
||||
<stringProp name="TestPlan.comments">These pages are run while the user is not logged in.</stringProp>
|
||||
</GenericController>
|
||||
<hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: Home page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: About page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/about</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: Person profile page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${PERSON_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: InfoResource Profile Page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${INFO_RESOURCE_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="InfoResource URIs from CSV" enabled="true">
|
||||
<stringProp name="filename">${INFO_RESOURCE_URI_FILE}</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="variableNames">INFO_RESOURCE_URI</stringProp>
|
||||
<stringProp name="delimiter"></stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
<GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Logged in as DBA" enabled="true"/>
|
||||
<hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Login, release 1.2" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="username" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">testAdmin</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">username</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="password" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">Password</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">password</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/programLogin</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Site Admin" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/siteAdmin</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Person profile page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${PERSON_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: InfoResource Profile Page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${INFO_RESOURCE_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="InfoResource URIs from CSV" enabled="true">
|
||||
<stringProp name="filename">${INFO_RESOURCE_URI_FILE}</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="variableNames">INFO_RESOURCE_URI</stringProp>
|
||||
<stringProp name="delimiter"></stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Auto-complete authorship" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="query" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">PREFIX core: <http://vivoweb.org/ontology/core#> SELECT ?pubUri WHERE {<${DEFAULT_NAMESPACE}${PERSON_URI}> core:authorInAuthorship ?authorshipUri . ?authorshipUri core:linkedInformationResource ?pubUri .}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">query</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/ajax/sparqlQuery</stringProp>
|
||||
<stringProp name="HTTPSampler.method">POST</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
|
||||
<collectionProp name="Asserion.test_strings">
|
||||
<stringProp name="-977445585">pubUri</stringProp>
|
||||
</collectionProp>
|
||||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||||
<intProp name="Assertion.test_type">2</intProp>
|
||||
</ResponseAssertion>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Auto-complete grant role" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="query" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">PREFIX core: <http://vivoweb.org/ontology/core#> SELECT ?grantUri WHERE {<${DEFAULT_NAMESPACE}${PERSON_URI}> <http://vivoweb.org/ontology/core#hasPrincipalInvestigatorRole> ?grantRole . ?grantRole core:roleIn ?grantUri .} </stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">query</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/ajax/sparqlQuery</stringProp>
|
||||
<stringProp name="HTTPSampler.method">POST</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
|
||||
<collectionProp name="Asserion.test_strings">
|
||||
<stringProp name="99198640">grantUri</stringProp>
|
||||
</collectionProp>
|
||||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||||
<intProp name="Assertion.test_type">2</intProp>
|
||||
</ResponseAssertion>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: logout" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/logout</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Logged in as SelfEditor" enabled="true"/>
|
||||
<hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: Login, release 1.2" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="username" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">dk15</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">username</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="password" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">Password</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">password</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/programLogin</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: Person profile page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${PERSON_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: InfoResource Profile Page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${INFO_RESOURCE_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="InfoResource URIs from CSV" enabled="true">
|
||||
<stringProp name="filename">${INFO_RESOURCE_URI_FILE}</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="variableNames">INFO_RESOURCE_URI</stringProp>
|
||||
<stringProp name="delimiter"></stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: logout" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/logout</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
</jmeterTestPlan>
|
|
@ -0,0 +1,564 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<jmeterTestPlan version="1.2" properties="2.1">
|
||||
<hashTree>
|
||||
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
|
||||
<stringProp name="TestPlan.comments"></stringProp>
|
||||
<boolProp name="TestPlan.functional_mode">false</boolProp>
|
||||
<boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
|
||||
<elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="WEBAPP_HOST" elementType="Argument">
|
||||
<stringProp name="Argument.name">WEBAPP_HOST</stringProp>
|
||||
<stringProp name="Argument.value">${__property(webapp.host, , localhost)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="WEBAPP_PORT" elementType="Argument">
|
||||
<stringProp name="Argument.name">WEBAPP_PORT</stringProp>
|
||||
<stringProp name="Argument.value">${__property(webapp.port, , 8080)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="WEBAPP_NAME" elementType="Argument">
|
||||
<stringProp name="Argument.name">WEBAPP_NAME</stringProp>
|
||||
<stringProp name="Argument.value">${__property(webapp.name, , vivo)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="PERSON_URI_FILE" elementType="Argument">
|
||||
<stringProp name="Argument.name">PERSON_URI_FILE</stringProp>
|
||||
<stringProp name="Argument.value">${__property(file.person.uris, , PersonUris.csv)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="INFO_RESOURCE_URI_FILE" elementType="Argument">
|
||||
<stringProp name="Argument.name">INFO_RESOURCE_URI_FILE</stringProp>
|
||||
<stringProp name="Argument.value">${__property(file.infoResource.uris, , InfoResourceUris.csv)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="ITERATIONS" elementType="Argument">
|
||||
<stringProp name="Argument.name">ITERATIONS</stringProp>
|
||||
<stringProp name="Argument.value">${__property(iterations, , 10)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="DEFAULT_NAMESPACE" elementType="Argument">
|
||||
<stringProp name="Argument.name">DEFAULT_NAMESPACE</stringProp>
|
||||
<stringProp name="Argument.value">${__property(default.namespace, , http://vivo.mydomain.edu/individual/)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="THREADS" elementType="Argument">
|
||||
<stringProp name="Argument.name">THREADS</stringProp>
|
||||
<stringProp name="Argument.value">${__property(threads, , 1)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="TestPlan.user_define_classpath"></stringProp>
|
||||
</TestPlan>
|
||||
<hashTree>
|
||||
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Main Thread Group" enabled="true">
|
||||
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
|
||||
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
|
||||
<boolProp name="LoopController.continue_forever">false</boolProp>
|
||||
<stringProp name="LoopController.loops">${ITERATIONS}</stringProp>
|
||||
</elementProp>
|
||||
<stringProp name="ThreadGroup.num_threads">${THREADS}</stringProp>
|
||||
<stringProp name="ThreadGroup.ramp_time">${THREADS}</stringProp>
|
||||
<longProp name="ThreadGroup.start_time">1294759350000</longProp>
|
||||
<longProp name="ThreadGroup.end_time">1294759350000</longProp>
|
||||
<boolProp name="ThreadGroup.scheduler">false</boolProp>
|
||||
<stringProp name="ThreadGroup.duration"></stringProp>
|
||||
<stringProp name="ThreadGroup.delay"></stringProp>
|
||||
</ThreadGroup>
|
||||
<hashTree>
|
||||
<CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
|
||||
<collectionProp name="CookieManager.cookies"/>
|
||||
<boolProp name="CookieManager.clearEachIteration">false</boolProp>
|
||||
<stringProp name="CookieManager.policy">rfc2109</stringProp>
|
||||
</CookieManager>
|
||||
<hashTree/>
|
||||
<ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain">${WEBAPP_HOST}</stringProp>
|
||||
<stringProp name="HTTPSampler.port">${WEBAPP_PORT}</stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path"></stringProp>
|
||||
<boolProp name="HTTPSampler.image_parser">true</boolProp>
|
||||
</ConfigTestElement>
|
||||
<hashTree/>
|
||||
<GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Not logged in" enabled="true">
|
||||
<stringProp name="TestPlan.comments">These pages are run while the user is not logged in.</stringProp>
|
||||
</GenericController>
|
||||
<hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: Home page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: About page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/about</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: Person profile page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${PERSON_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: InfoResource Profile Page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${INFO_RESOURCE_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="InfoResource URIs from CSV" enabled="true">
|
||||
<stringProp name="filename">${INFO_RESOURCE_URI_FILE}</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="variableNames">INFO_RESOURCE_URI</stringProp>
|
||||
<stringProp name="delimiter"></stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
<GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Logged in as DBA" enabled="true"/>
|
||||
<hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Login, release 1.2" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="username" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">testAdmin</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">username</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="password" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">Password</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">password</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/programLogin</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Site Admin" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/siteAdmin</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Person profile page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${PERSON_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: InfoResource Profile Page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${INFO_RESOURCE_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="InfoResource URIs from CSV" enabled="true">
|
||||
<stringProp name="filename">${INFO_RESOURCE_URI_FILE}</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="variableNames">INFO_RESOURCE_URI</stringProp>
|
||||
<stringProp name="delimiter"></stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Auto-complete authorship" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="query" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">PREFIX core: <http://vivoweb.org/ontology/core#> SELECT ?pubUri WHERE {<${DEFAULT_NAMESPACE}${PERSON_URI}> core:authorInAuthorship ?authorshipUri . ?authorshipUri core:linkedInformationResource ?pubUri .}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">query</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/ajax/sparqlQuery</stringProp>
|
||||
<stringProp name="HTTPSampler.method">POST</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
|
||||
<collectionProp name="Asserion.test_strings">
|
||||
<stringProp name="-977445585">pubUri</stringProp>
|
||||
</collectionProp>
|
||||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||||
<intProp name="Assertion.test_type">2</intProp>
|
||||
</ResponseAssertion>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Auto-complete grant role" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="query" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">PREFIX core: <http://vivoweb.org/ontology/core#> SELECT ?grantUri WHERE {<${DEFAULT_NAMESPACE}${PERSON_URI}> <http://vivoweb.org/ontology/core#hasPrincipalInvestigatorRole> ?grantRole . ?grantRole core:roleIn ?grantUri .} </stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">query</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/ajax/sparqlQuery</stringProp>
|
||||
<stringProp name="HTTPSampler.method">POST</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
|
||||
<collectionProp name="Asserion.test_strings">
|
||||
<stringProp name="99198640">grantUri</stringProp>
|
||||
</collectionProp>
|
||||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||||
<intProp name="Assertion.test_type">2</intProp>
|
||||
</ResponseAssertion>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: logout" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/logout</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Logged in as SelfEditor" enabled="true"/>
|
||||
<hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: Login, release 1.2" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="username" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">dk15</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">username</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="password" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">Password</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">password</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/programLogin</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: Person profile page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${PERSON_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: InfoResource Profile Page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${INFO_RESOURCE_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="InfoResource URIs from CSV" enabled="true">
|
||||
<stringProp name="filename">${INFO_RESOURCE_URI_FILE}</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="variableNames">INFO_RESOURCE_URI</stringProp>
|
||||
<stringProp name="delimiter"></stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: logout" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/logout</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
</jmeterTestPlan>
|
|
@ -0,0 +1,564 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<jmeterTestPlan version="1.2" properties="2.1">
|
||||
<hashTree>
|
||||
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
|
||||
<stringProp name="TestPlan.comments"></stringProp>
|
||||
<boolProp name="TestPlan.functional_mode">false</boolProp>
|
||||
<boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
|
||||
<elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="WEBAPP_HOST" elementType="Argument">
|
||||
<stringProp name="Argument.name">WEBAPP_HOST</stringProp>
|
||||
<stringProp name="Argument.value">${__property(webapp.host, , localhost)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="WEBAPP_PORT" elementType="Argument">
|
||||
<stringProp name="Argument.name">WEBAPP_PORT</stringProp>
|
||||
<stringProp name="Argument.value">${__property(webapp.port, , 8080)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="WEBAPP_NAME" elementType="Argument">
|
||||
<stringProp name="Argument.name">WEBAPP_NAME</stringProp>
|
||||
<stringProp name="Argument.value">${__property(webapp.name, , vivo)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="PERSON_URI_FILE" elementType="Argument">
|
||||
<stringProp name="Argument.name">PERSON_URI_FILE</stringProp>
|
||||
<stringProp name="Argument.value">${__property(file.person.uris, , PersonUris.csv)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="INFO_RESOURCE_URI_FILE" elementType="Argument">
|
||||
<stringProp name="Argument.name">INFO_RESOURCE_URI_FILE</stringProp>
|
||||
<stringProp name="Argument.value">${__property(file.infoResource.uris, , InfoResourceUris.csv)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="ITERATIONS" elementType="Argument">
|
||||
<stringProp name="Argument.name">ITERATIONS</stringProp>
|
||||
<stringProp name="Argument.value">${__property(iterations, , 10)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="DEFAULT_NAMESPACE" elementType="Argument">
|
||||
<stringProp name="Argument.name">DEFAULT_NAMESPACE</stringProp>
|
||||
<stringProp name="Argument.value">${__property(default.namespace, , http://vivo.mydomain.edu/individual/)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="THREADS" elementType="Argument">
|
||||
<stringProp name="Argument.name">THREADS</stringProp>
|
||||
<stringProp name="Argument.value">${__property(threads, , 1)}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="TestPlan.user_define_classpath"></stringProp>
|
||||
</TestPlan>
|
||||
<hashTree>
|
||||
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Main Thread Group" enabled="true">
|
||||
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
|
||||
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
|
||||
<boolProp name="LoopController.continue_forever">false</boolProp>
|
||||
<stringProp name="LoopController.loops">${ITERATIONS}</stringProp>
|
||||
</elementProp>
|
||||
<stringProp name="ThreadGroup.num_threads">${THREADS}</stringProp>
|
||||
<stringProp name="ThreadGroup.ramp_time">${THREADS}</stringProp>
|
||||
<longProp name="ThreadGroup.start_time">1294759350000</longProp>
|
||||
<longProp name="ThreadGroup.end_time">1294759350000</longProp>
|
||||
<boolProp name="ThreadGroup.scheduler">false</boolProp>
|
||||
<stringProp name="ThreadGroup.duration"></stringProp>
|
||||
<stringProp name="ThreadGroup.delay"></stringProp>
|
||||
</ThreadGroup>
|
||||
<hashTree>
|
||||
<CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
|
||||
<collectionProp name="CookieManager.cookies"/>
|
||||
<boolProp name="CookieManager.clearEachIteration">false</boolProp>
|
||||
<stringProp name="CookieManager.policy">rfc2109</stringProp>
|
||||
</CookieManager>
|
||||
<hashTree/>
|
||||
<ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain">${WEBAPP_HOST}</stringProp>
|
||||
<stringProp name="HTTPSampler.port">${WEBAPP_PORT}</stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path"></stringProp>
|
||||
<boolProp name="HTTPSampler.image_parser">true</boolProp>
|
||||
</ConfigTestElement>
|
||||
<hashTree/>
|
||||
<GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Not logged in" enabled="true">
|
||||
<stringProp name="TestPlan.comments">These pages are run while the user is not logged in.</stringProp>
|
||||
</GenericController>
|
||||
<hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: Home page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: About page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/about</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: Person profile page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${PERSON_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Nobody: InfoResource Profile Page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${INFO_RESOURCE_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="InfoResource URIs from CSV" enabled="true">
|
||||
<stringProp name="filename">${INFO_RESOURCE_URI_FILE}</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="variableNames">INFO_RESOURCE_URI</stringProp>
|
||||
<stringProp name="delimiter"></stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
<GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Logged in as DBA" enabled="true"/>
|
||||
<hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Login, release 1.2" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="username" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">testAdmin</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">username</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="password" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">Password</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">password</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/programLogin</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Site Admin" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/siteAdmin</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Person profile page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${PERSON_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: InfoResource Profile Page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${INFO_RESOURCE_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="InfoResource URIs from CSV" enabled="true">
|
||||
<stringProp name="filename">${INFO_RESOURCE_URI_FILE}</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="variableNames">INFO_RESOURCE_URI</stringProp>
|
||||
<stringProp name="delimiter"></stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Auto-complete authorship" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="query" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">PREFIX core: <http://vivoweb.org/ontology/core#> SELECT ?pubUri WHERE {<${DEFAULT_NAMESPACE}${PERSON_URI}> core:authorInAuthorship ?authorshipUri . ?authorshipUri core:linkedInformationResource ?pubUri .}</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">query</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/ajax/sparqlQuery</stringProp>
|
||||
<stringProp name="HTTPSampler.method">POST</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
|
||||
<collectionProp name="Asserion.test_strings">
|
||||
<stringProp name="-977445585">pubUri</stringProp>
|
||||
</collectionProp>
|
||||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||||
<intProp name="Assertion.test_type">2</intProp>
|
||||
</ResponseAssertion>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: Auto-complete grant role" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="query" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">PREFIX core: <http://vivoweb.org/ontology/core#> SELECT ?grantUri WHERE {<${DEFAULT_NAMESPACE}${PERSON_URI}> <http://vivoweb.org/ontology/core#hasPrincipalInvestigatorRole> ?grantRole . ?grantRole core:roleIn ?grantUri .} </stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">query</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/ajax/sparqlQuery</stringProp>
|
||||
<stringProp name="HTTPSampler.method">POST</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
|
||||
<collectionProp name="Asserion.test_strings">
|
||||
<stringProp name="99198640">grantUri</stringProp>
|
||||
</collectionProp>
|
||||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||||
<intProp name="Assertion.test_type">2</intProp>
|
||||
</ResponseAssertion>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="DBA: logout" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/logout</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Logged in as SelfEditor" enabled="true"/>
|
||||
<hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: Login, release 1.2" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments">
|
||||
<elementProp name="username" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">dk15</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">username</stringProp>
|
||||
</elementProp>
|
||||
<elementProp name="password" elementType="HTTPArgument">
|
||||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||||
<stringProp name="Argument.value">Password</stringProp>
|
||||
<stringProp name="Argument.metadata">=</stringProp>
|
||||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||||
<stringProp name="Argument.name">password</stringProp>
|
||||
</elementProp>
|
||||
</collectionProp>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/programLogin</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: Person profile page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${PERSON_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Person URIs from CSV" enabled="true">
|
||||
<stringProp name="delimiter">,</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="filename">${PERSON_URI_FILE}</stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="variableNames">PERSON_URI</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: InfoResource Profile Page" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/display/${INFO_RESOURCE_URI}</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree>
|
||||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="InfoResource URIs from CSV" enabled="true">
|
||||
<stringProp name="filename">${INFO_RESOURCE_URI_FILE}</stringProp>
|
||||
<stringProp name="fileEncoding">utf8</stringProp>
|
||||
<stringProp name="variableNames">INFO_RESOURCE_URI</stringProp>
|
||||
<stringProp name="delimiter"></stringProp>
|
||||
<boolProp name="quotedData">false</boolProp>
|
||||
<boolProp name="recycle">true</boolProp>
|
||||
<boolProp name="stopThread">false</boolProp>
|
||||
<stringProp name="shareMode">All threads</stringProp>
|
||||
</CSVDataSet>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
<HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="SelfEditor: logout" enabled="true">
|
||||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
||||
<collectionProp name="Arguments.arguments"/>
|
||||
</elementProp>
|
||||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||||
<stringProp name="HTTPSampler.port"></stringProp>
|
||||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||||
<stringProp name="HTTPSampler.path">${WEBAPP_NAME}/logout</stringProp>
|
||||
<stringProp name="HTTPSampler.method">GET</stringProp>
|
||||
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
||||
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
||||
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
||||
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
||||
<boolProp name="HTTPSampler.monitor">false</boolProp>
|
||||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||||
</HTTPSampler>
|
||||
<hashTree/>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
</hashTree>
|
||||
</jmeterTestPlan>
|
1209
utilities/LoadTesting/testinfo/tests/SimpleTests/SimpleTests-1-2.jmx
Normal file
1209
utilities/LoadTesting/testinfo/tests/SimpleTests/SimpleTests-1-2.jmx
Normal file
File diff suppressed because it is too large
Load diff
1209
utilities/LoadTesting/testinfo/tests/SimpleTests/SimpleTests-1-3.jmx
Normal file
1209
utilities/LoadTesting/testinfo/tests/SimpleTests/SimpleTests-1-3.jmx
Normal file
File diff suppressed because it is too large
Load diff
1209
utilities/LoadTesting/testinfo/tests/SimpleTests/SimpleTests-1-4.jmx
Normal file
1209
utilities/LoadTesting/testinfo/tests/SimpleTests/SimpleTests-1-4.jmx
Normal file
File diff suppressed because it is too large
Load diff
3
utilities/LoadTesting/tomcat/README.txt
Normal file
3
utilities/LoadTesting/tomcat/README.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Contains a standard Tomcat distribution. Currently we have no provision
|
||||
for testing on multiple versions of Tomcat.
|
||||
|
11
utilities/LoadTesting/versions/README.txt
Normal file
11
utilities/LoadTesting/versions/README.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
Contains data that is specific to both a particular site and a particular distribution of VIVO,
|
||||
so subdirectories might be named "scripps1.3" or "indiana1.4"
|
||||
|
||||
Each subdirectory contains a VIVO home directory called "data", and the file storage
|
||||
area should be populated with appropriate images so the tests won't throw errors if the
|
||||
data-model is expecting an image file.
|
||||
|
||||
Of course, the Solr index for each "version" will be stored in its home directory.
|
||||
|
||||
The version directory is also a place to capture the tomcat logs, so we can inspect them later.
|
||||
|
Loading…
Add table
Reference in a new issue