diff options
| author | Volker Lendecke <vl@samba.org> | 2014-07-04 13:27:17 +0000 |
|---|---|---|
| committer | Volker Lendecke <vl@samba.org> | 2014-07-07 18:36:37 +0200 |
| commit | 21d09dc7b85b57bcfe7cd4f57f7173eb9b3601d4 (patch) | |
| tree | f11ce5538991f91d32be6254ed094f945c551d58 /source4 | |
| parent | 8b9f96e83b304e291b3f2b7095e9bd9ea2a90981 (diff) | |
torture4: Add trivial epoch test
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(master): Volker Lendecke <vl@samba.org>
Autobuild-Date(master): Mon Jul 7 18:36:37 CEST 2014 on sn-devel-104
Diffstat (limited to 'source4')
| -rw-r--r-- | source4/torture/smb2/lease.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/source4/torture/smb2/lease.c b/source4/torture/smb2/lease.c index 7557640da5..4326958266 100644 --- a/source4/torture/smb2/lease.c +++ b/source4/torture/smb2/lease.c @@ -1417,6 +1417,59 @@ static bool test_lease_v2_request(struct torture_context *tctx, return ret; } +static bool test_lease_v2_epoch1(struct torture_context *tctx, + struct smb2_tree *tree) +{ + TALLOC_CTX *mem_ctx = talloc_new(tctx); + struct smb2_create io; + struct smb2_lease ls; + struct smb2_handle h; + const char *fname = "lease.dat"; + bool ret = true; + NTSTATUS status; + + smb2_util_unlink(tree, fname); + + tree->session->transport->lease.handler = torture_lease_handler; + tree->session->transport->lease.private_data = tree; + tree->session->transport->oplock.handler = torture_oplock_handler; + tree->session->transport->oplock.private_data = tree; + + ZERO_STRUCT(break_info); + + ZERO_STRUCT(io); + smb2_lease_v2_create_share(&io, &ls, false, fname, + smb2_util_share_access("RWD"), + LEASE1, NULL, + smb2_util_lease_state("RHW"), + 0); + ls.lease_epoch = 0x4711; + + status = smb2_create(tree, mem_ctx, &io); + CHECK_STATUS(status, NT_STATUS_OK); + h = io.out.file.handle; + CHECK_CREATED(&io, CREATED, FILE_ATTRIBUTE_ARCHIVE); + CHECK_LEASE_V2(&io, "RHW", true, LEASE1, 0, 0); + CHECK_VAL(io.out.lease_response_v2.lease_epoch, ls.lease_epoch + 1); + smb2_util_close(tree, h); + smb2_util_unlink(tree, fname); + + ls.lease_state = smb2_util_lease_state("RH"); + + status = smb2_create(tree, mem_ctx, &io); + CHECK_STATUS(status, NT_STATUS_OK); + h = io.out.file.handle; + CHECK_CREATED(&io, CREATED, FILE_ATTRIBUTE_ARCHIVE); + CHECK_LEASE_V2(&io, "RH", true, LEASE1, 0, 0); + CHECK_VAL(io.out.lease_response_v2.lease_epoch, ls.lease_epoch + 1); + smb2_util_close(tree, h); + +done: + smb2_util_unlink(tree, fname); + talloc_free(mem_ctx); + return ret; +} + struct torture_suite *torture_smb2_lease_init(void) { struct torture_suite *suite = @@ -1436,6 +1489,7 @@ struct torture_suite *torture_smb2_lease_init(void) torture_suite_add_1smb2_test(suite, "v2_request_parent", test_lease_v2_request_parent); torture_suite_add_1smb2_test(suite, "v2_request", test_lease_v2_request); + torture_suite_add_1smb2_test(suite, "v2_epoch1", test_lease_v2_epoch1); suite->description = talloc_strdup(suite, "SMB2-LEASE tests"); |
