Update the LoadTesting framework.

Permit use of Git while still supporting Subversion. Improve the script structure and reduce dependence on hard-coded paths.
This commit is contained in:
j2blake 2013-10-21 15:21:54 -04:00
parent f382ec0468
commit 4f085bcdfe
20 changed files with 120 additions and 70 deletions

View file

@ -10,19 +10,17 @@ directory, for possible inspection later.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
require File.expand_path('subscripts/common', File.dirname(__FILE__))
require 'date' require 'date'
require "#{File.dirname(__FILE__)}/subscripts/loadParms"
def figure_time_stamp() def figure_time_stamp()
return DateTime.now.strftime("%Y-%m-%d_%H-%M-%S") return DateTime.now.strftime("%Y-%m-%d_%H-%M-%S")
end end
Dir.chdir("/home/jeb228/LoadTesting/versions/#{@version_name}") do |path| @tomcat_logs_dir = version_file('tomcatLogs')
@tomcat_logs_dir = "#{path}/tomcatLogs"
if (! File.directory?(@tomcat_logs_dir)) if (! File.directory?(@tomcat_logs_dir))
Dir.mkdir(@tomcat_logs_dir) Dir.mkdir(@tomcat_logs_dir)
end end
end
Dir.chdir(@tomcat_logs_dir) do |path| Dir.chdir(@tomcat_logs_dir) do |path|
@this_logs_dir = "#{path}/#{figure_time_stamp()}" @this_logs_dir = "#{path}/#{figure_time_stamp()}"
@ -30,6 +28,6 @@ Dir.chdir(@tomcat_logs_dir) do |path|
end end
Dir.chdir(@this_logs_dir) do |path| Dir.chdir(@this_logs_dir) do |path|
system('cp ~/LoadTesting/tomcat/logs/* .') system("cp #{@home}/tomcat/logs/* .")
end end

View file

@ -9,4 +9,6 @@ Remove any Tomcat logs.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
puts system("rm ~/LoadTesting/tomcat/logs/*") require File.expand_path('subscripts/common', File.dirname(__FILE__))
puts system("rm #{@home}/tomcat/logs/*")

View file

@ -13,12 +13,12 @@ template. Then run the build script.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
require "#{File.dirname(__FILE__)}/subscripts/loadParms" require File.expand_path('subscripts/common', File.dirname(__FILE__))
require 'erb' require 'erb'
def build_deploy_properties def process_template_file(source, target)
File.open(@deploy_properties_source) do |source_file| File.open(source) do |source_file|
File.open(@deploy_properties_target, 'w') do |target_file| File.open(target, 'w') do |target_file|
raw = source_file.read() raw = source_file.read()
cooked = ERB.new(raw).result cooked = ERB.new(raw).result
target_file.write(cooked) target_file.write(cooked)
@ -26,14 +26,18 @@ def build_deploy_properties
end end
end end
puts system("rm -r ~/LoadTesting/tomcat/webapps/vivo*") puts system("rm -r #{@home}/tomcat/webapps/vivo*")
puts system("rm -r ~/LoadTesting/tomcat/conf/Catalina/localhost/vivo*") puts system("rm -r #{@home}/tomcat/conf/Catalina/localhost/vivo*")
puts system("rm -r #{@home}/tomcat/work/Catalina/localhost/vivo*")
@deploy_properties_source = "/home/jeb228/LoadTesting/distros/#{@distro_name}/deploy.properties.template" if (@is_git)
@deploy_properties_target = "/home/jeb228/LoadTesting/distros/#{@distro_name}/vivo/deploy.properties" process_template_file(distro_file("build.properties.template"), distro_file("VIVO/build.properties"))
build_deploy_properties() process_template_file(distro_file("runtime.properties.template"), version_file("data/runtime.properties"))
Dir.chdir(distro_file("VIVO")) { |path| system "ant clean deploy" }
Dir.chdir("/home/jeb228/LoadTesting/distros/#{@distro_name}/vivo") do |path| else
system "ant clean deploy" process_template_file(distro_file("deploy.properties.template"), distro_file("vivo/deploy.properties"))
Dir.chdir(distro_file("vivo")) { |path| system "ant clean deploy" }
end end

View file

@ -13,14 +13,14 @@ the data model.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
require "#{File.dirname(__FILE__)}/subscripts/loadParms" require File.expand_path('subscripts/common', File.dirname(__FILE__))
require "#{File.dirname(__FILE__)}/subscripts/upload_file_faker" require "subscripts/upload_file_faker"
properties = {} properties = {}
properties["uploads_directory"] = "/home/jeb228/LoadTesting/versions/#{@version_name}/data/uploads" properties["uploads_directory"] = version_file('data/uploads')
properties["file_info_file"] = "/home/jeb228/LoadTesting/modelData/#{@site_name}/imageFileInfo.csv" properties["file_info_file"] = "#{@home}/modelData/#{@site_name}/imageFileInfo.csv"
properties["template_file"] = "#{File.dirname(__FILE__)}/subscripts/dummy_image_file.jpg" properties["template_file"] = "#{@home}/scripts/subscripts/dummy_image_file.jpg"
if ARGV.length == 1 && ARGV[0] == "doit" if ARGV.length == 1 && ARGV[0] == "doit"
properties["scan_only"] = "false" properties["scan_only"] = "false"

View file

@ -9,4 +9,6 @@ View the VIVO log in Tomcat.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
puts system("less ~/LoadTesting/tomcat/logs/vivo.all.log") require File.expand_path('subscripts/common', File.dirname(__FILE__))
puts system("less #{@home}/tomcat/logs/vivo.all.log")

View file

@ -10,12 +10,12 @@ into an HTML file so we can easily compare them.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
require "#{File.dirname(__FILE__)}/subscripts/loadParms" require File.expand_path('subscripts/common', File.dirname(__FILE__))
require "#{File.dirname(__FILE__)}/subscripts/test_result_merger" require 'subscripts/test_result_merger'
properties = {} properties = {}
source_dir = "/home/jeb228/LoadTesting/testinfo/results/#{@site_name}" source_dir = "#{@home}/testinfo/results/#{@site_name}"
properties["source_directory"] = source_dir properties["source_directory"] = source_dir
properties["target_directory"] = "/var/www/html/loadTesting/" properties["target_directory"] = "/var/www/html/loadTesting/"
properties["site_name"] = "#{@site_name}" properties["site_name"] = "#{@site_name}"
@ -38,5 +38,3 @@ trm = TestResultMerger.new(properties)
trm.merge trm.merge
puts "TestResultMerger was successful." puts "TestResultMerger was successful."

View file

@ -13,15 +13,15 @@ Use XSL to create an HTML version of the results.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
require "#{File.dirname(__FILE__)}/subscripts/loadParms" require File.expand_path('subscripts/common', File.dirname(__FILE__))
def locate_files() def locate_files()
test_full_name = "#{@test_name}#{@test_suffix}" test_full_name = "#{@test_name}#{@test_suffix}"
test_source_dir = "/home/jeb228/LoadTesting/testinfo/tests/#{@test_name}" test_source_dir = test_file("tests/#{@test_name}")
@test_jmx_file = "#{test_source_dir}/#{test_full_name}.jmx" @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) raise "Test file doesn't exist: '#{@test_jmx_file}'." unless File.file?(@test_jmx_file)
result_dir = "/home/jeb228/LoadTesting/testinfo/results/#{@site_name}" result_dir = test_file("results/#{@site_name}")
Dir.mkdir(result_dir) unless File.directory?(result_dir) Dir.mkdir(result_dir) unless File.directory?(result_dir)
@test_jtl_file = "#{result_dir}/#{test_full_name}.jtl" @test_jtl_file = "#{result_dir}/#{test_full_name}.jtl"
@ -33,7 +33,7 @@ def locate_files()
@test_html_file = "#{result_dir}/#{test_full_name}.html" @test_html_file = "#{result_dir}/#{test_full_name}.html"
File.delete(@test_html_file) if File.file?(@test_html_file) File.delete(@test_html_file) if File.file?(@test_html_file)
data_dir = "/home/jeb228/LoadTesting/modelData/#{@site_name}" data_dir = "#{@home}/modelData/#{@site_name}"
@person_uris_file = "#{data_dir}/personUris.csv" @person_uris_file = "#{data_dir}/personUris.csv"
raise "Person URIs file doesn't exist: '#{@person_uris_file}'" unless File.file?(@person_uris_file) raise "Person URIs file doesn't exist: '#{@person_uris_file}'" unless File.file?(@person_uris_file)
@infoResource_uris_file = "#{data_dir}/infoResourceUris.csv" @infoResource_uris_file = "#{data_dir}/infoResourceUris.csv"

View file

@ -12,12 +12,18 @@ Record that selection, along with the desired number of iterations and threads.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
@test_parms_file = "#{File.dirname(__FILE__)}/subscripts/_current_test.rb" begin
require File.expand_path('subscripts/common', File.dirname(__FILE__))
rescue LoadError => e
puts e
end
@test_parms_file = "#{@home}/scripts/subscripts/_current_test.rb"
# Find out what tests we have available # Find out what tests we have available
def build_test_list() def build_test_list()
@test_names = [] @test_names = []
Dir.foreach("/home/jeb228/LoadTesting/testinfo/tests") do |filename| Dir.foreach(test_file('tests')) do |filename|
@test_names.push(filename) unless filename[0,1] == "." @test_names.push(filename) unless filename[0,1] == "."
end end
@test_names.sort! @test_names.sort!

View file

@ -10,12 +10,18 @@ record that choice.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
@version_parms_file = "#{File.dirname(__FILE__)}/subscripts/_current_version.rb" begin
require File.expand_path('subscripts/common', File.dirname(__FILE__))
rescue LoadError => e
puts e
end
@version_parms_file = "#{@home}/scripts/subscripts/_current_version.rb"
# Find out what versions we have available # Find out what versions we have available
def build_version_list() def build_version_list()
@version_names = [] @version_names = []
Dir.foreach("/home/jeb228/LoadTesting/versions") do |filename| Dir.foreach("#{@home}/versions") do |filename|
@version_names.push(filename) unless (filename[0,1] == "_") || (filename[0,1] == ".") @version_names.push(filename) unless (filename[0,1] == "_") || (filename[0,1] == ".")
end end
@version_names.sort! @version_names.sort!

View file

@ -8,5 +8,8 @@ Duh
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
puts system("~/LoadTesting/tomcat/bin/startup.sh")
require File.expand_path('subscripts/common', File.dirname(__FILE__))
puts system("#{@home}/tomcat/bin/startup.sh")

View file

@ -8,13 +8,14 @@ Show the SVN status of the currently-selected distro, both VIVO and Vitro.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
require "#{File.dirname(__FILE__)}/subscripts/loadParms"
Dir.chdir("/home/jeb228/LoadTesting/distros/#{@distro_name}/vitro") do |path| require File.expand_path('subscripts/common', File.dirname(__FILE__))
system "svn status -u"
end if (@is_git)
Dir.chdir(distro_file('Vitro')) { |path| system "svn status -u" }
Dir.chdir("/home/jeb228/LoadTesting/distros/#{@distro_name}/vivo") do |path| Dir.chdir(distro_file('VIVO')) { |path| system "svn status -u" }
system "svn status -u" else
Dir.chdir(distro_file('vitro')) { |path| system "svn status -u" }
Dir.chdir(distro_file('vivo')) { |path| system "svn status -u" }
end end

View file

@ -9,5 +9,7 @@ Duh
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
puts system("~/LoadTesting/tomcat/bin/shutdown.sh") require File.expand_path('subscripts/common', File.dirname(__FILE__))
puts system("#{@home}/tomcat/bin/shutdown.sh")

View file

@ -9,4 +9,6 @@ Start following the tails of all of the logs in Tomcat.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
puts system("tail -f ~/LoadTesting/tomcat/logs/*") require File.expand_path('subscripts/common', File.dirname(__FILE__))
puts system("tail -f #{@home}/tomcat/logs/*")

View file

@ -9,13 +9,12 @@ Use SVN to get the latest revisions to the currently-selected distro.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
require "#{File.dirname(__FILE__)}/subscripts/loadParms" require File.expand_path('subscripts/common', File.dirname(__FILE__))
Dir.chdir("/home/jeb228/LoadTesting/distros/#{@distro_name}/vitro") do |path| if (@is_git)
system "svn update" Dir.chdir(distro_file('Vitro')) { |path| system "git pull" }
Dir.chdir(distro_file('VIVO')) { |path| system "git pull" }
else
Dir.chdir(distro_file('vitro')) { |path| system "svn update" }
Dir.chdir(distro_file('vivo')) { |path| system "svn update" }
end end
Dir.chdir("/home/jeb228/LoadTesting/distros/#{@distro_name}/vivo") do |path|
system "svn update"
end

View file

@ -9,7 +9,7 @@ What is the currently-selected test?
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
require "#{File.dirname(__FILE__)}/subscripts/loadParms" require File.expand_path('subscripts/common', File.dirname(__FILE__))
puts "Current test is #{@test_name}, #{@test_threads} threads, #{@test_iterations} iterations" puts "Current test is #{@test_name}, #{@test_threads} threads, #{@test_iterations} iterations"

View file

@ -9,7 +9,7 @@ What is the currently-selected version?
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
=end =end
require "#{File.dirname(__FILE__)}/subscripts/loadParms" require File.expand_path('subscripts/common', File.dirname(__FILE__))
puts "Current version is #{@version_name}" puts "Current version is #{@version_name}"

View file

@ -1,4 +0,0 @@
# what is the current test, and how many times will it run?
@test_name = 'SimpleTests'
@test_threads = '1'
@test_iterations = '40'

View file

@ -1,2 +0,0 @@
# what is the current version under test?
@version_name = 'cornell1.4'

View file

@ -0,0 +1,33 @@
#
# The path to the LoadTesting directory. Everything is based on this
#
@home = File.expand_path("../..", File.dirname(__FILE__))
#
# 'require' should look in the scripts directory
#
$: << File.expand_path('scripts', @home)
#
# convenience methods to access files
#
def version_file(path)
"#{@home}/versions/#{@version_name}/#{path}"
end
def distro_file(path)
"#{@home}/distros/#{@distro_name}/#{path}"
end
def site_file(path)
"#{@home}/sites/#{@site_name}/#{path}"
end
def test_file(path)
"#{@home}/testinfo/#{path}"
end
#
# All of the scripts need to load these parms. (Except _setVersion and _setTest)
#
require 'subscripts/loadParms'

View file

@ -1,6 +1,6 @@
require "#{File.dirname(__FILE__)}/_current_version" require 'subscripts/_current_version'
require "#{File.dirname(__FILE__)}/_current_test" require 'subscripts/_current_test'
require "/home/jeb228/LoadTesting/versions/#{@version_name}/version_properties" require version_file('version_properties')
require "/home/jeb228/LoadTesting/distros/#{@distro_name}/distro_properties" require distro_file('distro_properties')
require "/home/jeb228/LoadTesting/sites/#{@site_name}/site_properties" require site_file('site_properties')