mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
s4:torture: add a durable-open-disconnect test (suite)
this opens a durable, disconnects it and exits Signed-off-by: Michael Adam <obnox@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
This commit is contained in:
parent
f0e6a9be00
commit
42bf98d54c
@ -41,6 +41,7 @@
|
||||
^samba3.*raw.qfsinfo
|
||||
^samba3.*raw.sfileinfo.base
|
||||
^samba3.smb2.hold-oplock # Not a test, but a way to block other clients for a test
|
||||
^samba3.smb2.durable-open-disconnect # Not a test, but a way to create a disconnected durable
|
||||
^samba3.smb2.scan # No tests
|
||||
^samba4.base.iometer
|
||||
^samba4.base.casetable
|
||||
|
@ -1784,6 +1784,54 @@ done:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* durable open with oplock, disconnect, exit
|
||||
*/
|
||||
static bool test_durable_open_oplock_disconnect(struct torture_context *tctx,
|
||||
struct smb2_tree *tree)
|
||||
{
|
||||
TALLOC_CTX *mem_ctx = talloc_new(tctx);
|
||||
struct smb2_create io;
|
||||
struct smb2_handle _h;
|
||||
struct smb2_handle *h = NULL;
|
||||
NTSTATUS status;
|
||||
char fname[256];
|
||||
bool ret = true;
|
||||
|
||||
snprintf(fname, 256, "durable_open_oplock_disconnect_%s.dat",
|
||||
generate_random_str(tctx, 8));
|
||||
|
||||
smb2_util_unlink(tree, fname);
|
||||
|
||||
smb2_oplock_create(&io, fname, SMB2_OPLOCK_LEVEL_BATCH);
|
||||
io.in.durable_open = true;
|
||||
|
||||
status = smb2_create(tree, mem_ctx, &io);
|
||||
CHECK_STATUS(status, NT_STATUS_OK);
|
||||
|
||||
_h = io.out.file.handle;
|
||||
h = &_h;
|
||||
|
||||
CHECK_CREATED(&io, CREATED, FILE_ATTRIBUTE_ARCHIVE);
|
||||
CHECK_VAL(io.out.durable_open, true);
|
||||
CHECK_VAL(io.out.oplock_level, SMB2_OPLOCK_LEVEL_BATCH);
|
||||
|
||||
/* disconnect */
|
||||
talloc_free(tree);
|
||||
tree = NULL;
|
||||
|
||||
done:
|
||||
if (tree != NULL) {
|
||||
if (h != NULL) {
|
||||
smb2_util_close(tree, *h);
|
||||
}
|
||||
smb2_util_unlink(tree, fname);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
struct torture_suite *torture_smb2_durable_open_init(void)
|
||||
{
|
||||
struct torture_suite *suite =
|
||||
@ -1819,3 +1867,18 @@ struct torture_suite *torture_smb2_durable_open_init(void)
|
||||
|
||||
return suite;
|
||||
}
|
||||
|
||||
struct torture_suite *torture_smb2_durable_open_disconnect_init(void)
|
||||
{
|
||||
struct torture_suite *suite =
|
||||
torture_suite_create(talloc_autofree_context(),
|
||||
"durable-open-disconnect");
|
||||
|
||||
torture_suite_add_1smb2_test(suite, "open-oplock-disconnect",
|
||||
test_durable_open_oplock_disconnect);
|
||||
|
||||
suite->description = talloc_strdup(suite,
|
||||
"SMB2-DURABLE-OPEN-DISCONNECT tests");
|
||||
|
||||
return suite;
|
||||
}
|
||||
|
@ -156,6 +156,7 @@ NTSTATUS torture_smb2_init(void)
|
||||
torture_suite_add_suite(suite, torture_smb2_acls_init());
|
||||
torture_suite_add_suite(suite, torture_smb2_notify_init());
|
||||
torture_suite_add_suite(suite, torture_smb2_durable_open_init());
|
||||
torture_suite_add_suite(suite, torture_smb2_durable_open_disconnect_init());
|
||||
torture_suite_add_suite(suite, torture_smb2_durable_v2_open_init());
|
||||
torture_suite_add_suite(suite, torture_smb2_dir_init());
|
||||
torture_suite_add_suite(suite, torture_smb2_lease_init());
|
||||
|
Loading…
Reference in New Issue
Block a user