From b99f9570acd4e84082ec4d46ba4bc8190cc777ad Mon Sep 17 00:00:00 2001 From: Erick Banks Date: Mon, 1 Apr 2019 13:16:47 -0700 Subject: [PATCH] (MODULES-6582) Add ability to test against sql server 2017 --- spec/acceptance/sqlserver_instance_spec.rb | 2 +- .../z_last_sqlserver_features_spec.rb | 4 ++-- spec/spec_helper_acceptance.rb | 7 +++++++ spec/sql_testing_helpers.rb | 17 +++++++++++++++-- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/spec/acceptance/sqlserver_instance_spec.rb b/spec/acceptance/sqlserver_instance_spec.rb index e910ef58..e73d82a6 100644 --- a/spec/acceptance/sqlserver_instance_spec.rb +++ b/spec/acceptance/sqlserver_instance_spec.rb @@ -123,7 +123,7 @@ def sql_query_is_user_sysadmin(username) ensure_sqlserver_instance(features, inst_name, 'absent') end - it "create #{inst_name} instance with only one RS feature", :tier_high => true do + it "create #{inst_name} instance with only one RS feature", :unless => version.to_i >= 2017, :tier_high => true do ensure_sqlserver_instance(features, inst_name) validate_sql_install(host, {:version => version}) do |r| diff --git a/spec/acceptance/z_last_sqlserver_features_spec.rb b/spec/acceptance/z_last_sqlserver_features_spec.rb index c3779f8d..f0b89301 100644 --- a/spec/acceptance/z_last_sqlserver_features_spec.rb +++ b/spec/acceptance/z_last_sqlserver_features_spec.rb @@ -121,8 +121,8 @@ def ensure_sql_features(features, ensure_val = 'present') end end - # TODO: Guard on SQL 2016 - it "'ADV_SSMS'", :unless => sql_version == '2016', :tier_low => true do + # TODO: Guard on SQL 2016 and 2017 + it "'ADV_SSMS'", :unless => sql_version.to_i >= 2016, :tier_low => true do ensure_sql_features(features - ['ADV_SSMS']) validate_sql_install(host, {:version => sql_version}) do |r| diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb index 11339aee..a5c2fc3c 100644 --- a/spec/spec_helper_acceptance.rb +++ b/spec/spec_helper_acceptance.rb @@ -12,6 +12,7 @@ WIN_2012R2_ISO = "en_windows_server_2012_r2_with_update_x64_dvd_6052708.iso" QA_RESOURCE_ROOT = "https://artifactory.delivery.puppetlabs.net/artifactory/generic__iso/iso/SQLServer" SQL_2019_ISO = "SQLServer2019CTP2.4-x64-ENU.iso" +SQL_2017_ISO = "SQLServer2017-x64-ENU.iso" SQL_2016_ISO = "en_sql_server_2016_enterprise_with_service_pack_1_x64_dvd_9542382.iso" SQL_2014_ISO = "SQLServer2014SP3-FullSlipstream-x64-ENU.iso" SQL_2012_ISO = "SQLServer2012SP1-FullSlipstream-ENU-x64.iso" @@ -24,6 +25,12 @@ c.before(:suite) do host = find_only_one('sql_host') base_install(host['sql_version']) + #Verify that the version in the host config file is indeed the version on the machine + execute_powershell_script_on(host, 'Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3') do |result| + if(!result.stdout.include?(host[:sql_version].to_s)) + raise "Version in host config #{host[:sql_version]} does not match SQL version #{result}" + end + end end end diff --git a/spec/sql_testing_helpers.rb b/spec/sql_testing_helpers.rb index dae2e521..2d276791 100644 --- a/spec/sql_testing_helpers.rb +++ b/spec/sql_testing_helpers.rb @@ -56,7 +56,9 @@ def run_sql_query(host, opts = {}, &block) $Env:Path +=\";C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\110\\Tools\\Binn;C:\\Program Files\\Microsoft SQL Server\\110\\Tools\\Binn\\" $Env:Path +=\";C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\120\\Tools\\Binn;C:\\Program Files\\Microsoft SQL Server\\120\\Tools\\Binn\\" $Env:Path +=\";C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\130\\Tools\\Binn;C:\\Program Files\\Microsoft SQL Server\\130\\Tools\\Binn\\" + $Env:Path +=\";C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\140\\Tools\\Binn;C:\\Program Files\\Microsoft SQL Server\\140\\Tools\\Binn\\" $Env:Path +=\";C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\150\\Tools\\Binn;C:\\Program Files\\Microsoft SQL Server\\150\\Tools\\Binn\\" + $Env:Path +=\";C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\170\\Tools\\Binn;C:\\Program Files\\Microsoft SQL Server\\170\\Tools\\Binn\\" sqlcmd.exe -S #{server}\\#{instance} -U #{sql_admin_user} -P #{sql_admin_pass} -Q \"#{query}\" EOS # sqlcmd has problem authenticate to sqlserver if the instance is the default one MSSQLSERVER @@ -104,6 +106,12 @@ def base_install(sql_version) :file => SQL_2016_ISO, :drive_letter => 'H' } + when 2017 + iso_opts = { + :folder => QA_RESOURCE_ROOT, + :file => SQL_2017_ISO, + :drive_letter => 'H' + } when 2019 iso_opts = { :folder => QA_RESOURCE_ROOT, @@ -153,12 +161,17 @@ def remove_sql_instances(host, opts = {}) end def get_install_paths(version) - vers = { '2012' => '110', '2014' => '120', '2016' => '130', '2019' => '150' } + vers = { '2012' => '110', '2014' => '120', '2016' => '130', '2017' => '140', '2019' => '150' } raise 'Valid version must be specified' if ! vers.keys.include?(version) dir = "%ProgramFiles%\\Microsoft SQL Server\\#{vers[version]}\\Setup Bootstrap" - [dir, "#{dir}\\SQLServer#{version}"] + sql_directory = "SQL" + if version != "2017" + sql_directory = sql_directory + "Server" + end + + [dir, "#{dir}\\#{sql_directory}#{version}"] end def install_pe_license(host)