2006-06-17 02:20:39 +00:00
/*
Unix SMB / CIFS implementation .
SMB torture tester
Copyright ( C ) Jelmer Vernooij 2006
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-10 02:07:03 +00:00
the Free Software Foundation ; either version 3 of the License , or
2006-06-17 02:20:39 +00:00
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
2007-07-10 02:07:03 +00:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2006-06-17 02:20:39 +00:00
*/
# include "includes.h"
# include "libcli/smb2/smb2.h"
2006-06-20 07:02:19 +00:00
# include "libcli/smb2/smb2_calls.h"
# include "torture/torture.h"
2006-06-17 02:20:39 +00:00
# include "torture/smb2/proto.h"
2007-05-13 12:52:13 +00:00
# include "lib/util/dlinklist.h"
static bool wrap_simple_1smb2_test ( struct torture_context * torture_ctx ,
struct torture_tcase * tcase ,
struct torture_test * test )
{
bool ( * fn ) ( struct torture_context * , struct smb2_tree * ) ;
bool ret ;
struct smb2_tree * tree1 ;
if ( ! torture_smb2_connection ( torture_ctx , & tree1 ) )
return false ;
fn = test - > fn ;
ret = fn ( torture_ctx , tree1 ) ;
talloc_free ( tree1 ) ;
return ret ;
}
2008-04-02 04:53:27 +02:00
struct torture_test * torture_suite_add_1smb2_test ( struct torture_suite * suite ,
2008-04-16 15:15:57 +02:00
const char * name ,
bool ( * run ) ( struct torture_context * ,
struct smb2_tree * ) )
2007-05-13 12:52:13 +00:00
{
struct torture_test * test ;
struct torture_tcase * tcase ;
tcase = torture_suite_add_tcase ( suite , name ) ;
test = talloc ( tcase , struct torture_test ) ;
test - > name = talloc_strdup ( test , name ) ;
test - > description = NULL ;
test - > run = wrap_simple_1smb2_test ;
test - > fn = run ;
test - > dangerous = false ;
DLIST_ADD_END ( tcase - > tests , test , struct torture_test * ) ;
2008-04-16 15:16:56 +02:00
return test ;
}
static bool wrap_simple_2smb2_test ( struct torture_context * torture_ctx ,
struct torture_tcase * tcase ,
struct torture_test * test )
{
bool ( * fn ) ( struct torture_context * , struct smb2_tree * , struct smb2_tree * ) ;
bool ret ;
struct smb2_tree * tree1 ;
struct smb2_tree * tree2 ;
TALLOC_CTX * mem_ctx = talloc_new ( torture_ctx ) ;
if ( ! torture_smb2_connection ( torture_ctx , & tree1 ) | |
! torture_smb2_connection ( torture_ctx , & tree2 ) ) {
return false ;
}
talloc_steal ( mem_ctx , tree1 ) ;
talloc_steal ( mem_ctx , tree2 ) ;
fn = test - > fn ;
ret = fn ( torture_ctx , tree1 , tree2 ) ;
/* the test may already closed some of the connections */
talloc_free ( mem_ctx ) ;
return ret ;
}
_PUBLIC_ struct torture_test * torture_suite_add_2smb2_test ( struct torture_suite * suite ,
const char * name ,
bool ( * run ) ( struct torture_context * ,
struct smb2_tree * ,
struct smb2_tree * ) )
{
struct torture_test * test ;
struct torture_tcase * tcase ;
tcase = torture_suite_add_tcase ( suite , name ) ;
test = talloc ( tcase , struct torture_test ) ;
test - > name = talloc_strdup ( test , name ) ;
test - > description = NULL ;
test - > run = wrap_simple_2smb2_test ;
test - > fn = run ;
test - > dangerous = false ;
DLIST_ADD_END ( tcase - > tests , test , struct torture_test * ) ;
2007-05-13 12:52:13 +00:00
return test ;
}
2006-06-17 02:20:39 +00:00
NTSTATUS torture_smb2_init ( void )
{
2007-05-13 12:52:13 +00:00
struct torture_suite * suite = torture_suite_create ( talloc_autofree_context ( ) , " SMB2 " ) ;
2006-10-16 13:06:41 +00:00
torture_suite_add_simple_test ( suite , " CONNECT " , torture_smb2_connect ) ;
torture_suite_add_simple_test ( suite , " SCAN " , torture_smb2_scan ) ;
torture_suite_add_simple_test ( suite , " SCANGETINFO " , torture_smb2_getinfo_scan ) ;
torture_suite_add_simple_test ( suite , " SCANSETINFO " , torture_smb2_setinfo_scan ) ;
torture_suite_add_simple_test ( suite , " SCANFIND " , torture_smb2_find_scan ) ;
torture_suite_add_simple_test ( suite , " GETINFO " , torture_smb2_getinfo ) ;
torture_suite_add_simple_test ( suite , " SETINFO " , torture_smb2_setinfo ) ;
torture_suite_add_simple_test ( suite , " FIND " , torture_smb2_find ) ;
2007-05-13 12:52:13 +00:00
torture_suite_add_suite ( suite , torture_smb2_lock_init ( ) ) ;
2006-10-16 13:06:41 +00:00
torture_suite_add_simple_test ( suite , " NOTIFY " , torture_smb2_notify ) ;
2008-04-16 10:11:44 +02:00
torture_suite_add_2smb2_test ( suite , " PERSISTENT-HANDLES1 " , torture_smb2_persistent_handles1 ) ;
2008-04-19 00:13:42 +02:00
torture_suite_add_1smb2_test ( suite , " OPLOCK-BATCH1 " , torture_smb2_oplock_batch1 ) ;
2006-10-16 13:06:41 +00:00
2007-05-13 12:52:13 +00:00
suite - > description = talloc_strdup ( suite , " SMB2-specific tests " ) ;
2006-10-16 13:06:41 +00:00
torture_register_suite ( suite ) ;
2006-06-17 02:20:39 +00:00
return NT_STATUS_OK ;
}