diff options
author | Andrew Tridgell <tridge@samba.org> | 2007-02-07 07:10:23 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:44:47 -0500 |
commit | d9bd4dad5036f1460a74f49e5288ceca26ec1b66 (patch) | |
tree | c54e7a279803ef9e0b7e2c45b84b6cf7accc56fb | |
parent | 667cff3699a37510a69f682407bdda6316ba4402 (diff) | |
download | samba-d9bd4dad5036f1460a74f49e5288ceca26ec1b66.tar.gz samba-d9bd4dad5036f1460a74f49e5288ceca26ec1b66.tar.bz2 samba-d9bd4dad5036f1460a74f49e5288ceca26ec1b66.zip |
r21215: extend the RAW-MUX test to test cancelling a async lock request using
a SMBexit
(This used to be commit 753a85eff6a19af2c7b0884f705e9f66b5f605fe)
-rw-r--r-- | source4/torture/raw/mux.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/source4/torture/raw/mux.c b/source4/torture/raw/mux.c index a5fd0ed3f0..66fed156b3 100644 --- a/source4/torture/raw/mux.c +++ b/source4/torture/raw/mux.c @@ -290,10 +290,13 @@ static BOOL test_mux_lock(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) /* cancel the blocking lock */ smb_raw_ntcancel(req); + printf("sending 2nd cancel\n"); /* the 2nd cancel is totally harmless, but tests the server trying to cancel an already cancelled request */ smb_raw_ntcancel(req); + printf("sent 2nd cancel\n"); + lock[0].pid = 1; io.lockx.in.ulock_cnt = 1; io.lockx.in.lock_cnt = 0; @@ -304,7 +307,32 @@ static BOOL test_mux_lock(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) status = smbcli_request_simple_recv(req); CHECK_STATUS(status, NT_STATUS_FILE_LOCK_CONFLICT); - smbcli_close(cli->tree, fnum); + printf("cancel a lock using exit to close file\n"); + lock[0].pid = 1; + io.lockx.in.ulock_cnt = 0; + io.lockx.in.lock_cnt = 1; + io.lockx.in.timeout = 1000; + + status = smb_raw_lock(cli->tree, &io); + CHECK_STATUS(status, NT_STATUS_OK); + + t = timeval_current(); + lock[0].pid = 2; + req = smb_raw_lock_send(cli->tree, &io); + + smb_raw_exit(cli->session); + smb_raw_exit(cli->session); + smb_raw_exit(cli->session); + smb_raw_exit(cli->session); + + printf("recv the async reply\n"); + status = smbcli_request_simple_recv(req); + CHECK_STATUS(status, NT_STATUS_RANGE_NOT_LOCKED); + printf("async lock exit took %.2f msec\n", timeval_elapsed(&t) * 1000); + if (timeval_elapsed(&t) > 0.1) { + printf("failed to trigger early lock failure\n"); + return False; + } done: return ret; |