]> git.sur5r.net Git - bacula/bacula/commitdiff
regress: add more functions for mssql
authorEric Bollengier <eric@eb.homelinux.org>
Tue, 30 Nov 2010 22:15:57 +0000 (23:15 +0100)
committerEric Bollengier <eric@eb.homelinux.org>
Wed, 1 Dec 2010 09:10:46 +0000 (10:10 +0100)
regress/scripts/regress-win32.pl

index ba05cdf0cd757139569c9df0015cbc9e87d1483f..9aebc34341c2815568caf303d72c25b022157188 100644 (file)
@@ -581,6 +581,7 @@ sub find_mssql
     }
 }    
 
+# Verify that we can use SQLCMD.exe
 sub check_mssql
 {
     my ($r) = shift;
@@ -608,6 +609,7 @@ sub check_mssql
     return "OK\n";
 }
 
+# Create simple DB, a table and some information in
 sub setup_mssql_db
 {
     my ($r) = shift;
@@ -634,6 +636,7 @@ sub setup_mssql_db
     return "OK\n";
 }
 
+# drop database
 sub cleanup_mssql_db
 {
     my ($r) = shift;
@@ -653,6 +656,7 @@ sub cleanup_mssql_db
     return "OK\n";
 }
 
+# truncate the table that is in database
 sub truncate_mssql_table
 {
     my ($r) = shift;
@@ -677,6 +681,7 @@ sub truncate_mssql_table
     return "OK\n";
 }
 
+# test that table1 contains some rows
 sub test_mssql_content
 {
     my ($r) = shift;
@@ -700,6 +705,51 @@ sub test_mssql_content
     return "OK\n";
 }
 
+my $mssql_mdf;
+my $mdf_to_find;
+sub find_mdf
+{
+    if ($_ =~ /$mdf_to_find/i) {
+        $mssql_mdf = $File::Find::dir;
+    }
+}
+
+# put a mdf online
+sub online_mssql_db
+{
+    my ($r) = shift;
+    if ($r->url !~ m!^/online_mssql_db\?db=([\w\d]+)$!) {
+        return "ERR\nIncorrect url\n";
+    }
+    my $db = $1;
+    $mdf_to_find = "$db.mdf";
+
+    find(\&find_mdf, 'c:/program files/microsoft sql server/');
+    $mssql_mdf =~ s:/:\\:g;
+
+    open(FP, ">c:/mssql.sql");
+    print FP "
+USE [master]
+GO
+CREATE DATABASE [$db] ON 
+( FILENAME = N'$mssql_mdf\\$db.mdf' ),
+( FILENAME = N'$mssql_mdf\\${db}_log.LDF' )
+ FOR ATTACH
+GO
+USE [$db]
+GO
+SELECT 'OK' FROM table1
+GO
+";
+    close(FP);
+    my $res = `"$mssql_bin" -U $mssql_user -P $mssql_pass -i c:\\mssql.sql`;
+    #unlink("c:/mssql.sql");
+    if ($res !~ /OK/) {
+        print "no content\n";
+        return "ERR\n";
+    }
+    return "OK\n";
+}
 
 # When adding an action, fill this hash with the right function
 my %action_list = (
@@ -720,11 +770,13 @@ my %action_list = (
     set_service => \&set_service,
     get_service => \&get_service,
     set_auto_logon => \&set_auto_logon,
+
     check_mssql => \&check_mssql,
     setup_mssql_db => \&setup_mssql_db,
     cleanup_mssql_db => \&cleanup_mssql_db,
     truncate_mssql_table => \&truncate_mssql_table,
     test_mssql_content => \&test_mssql_content,
+    online_mssql_db => \&online_mssql_db,
     );
 
 # handle client request