1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-27 22:50:26 +03:00

s4-smbtorture: add netsessiongetinfo() test.

Guenther

Autobuild-User: Günther Deschner <gd@samba.org>
Autobuild-Date: Fri Mar 18 02:11:38 CET 2011 on sn-devel-104
This commit is contained in:
Günther Deschner 2011-03-18 01:23:53 +01:00
parent 26ddcd3da1
commit de5cec48a4
3 changed files with 62 additions and 0 deletions

View File

@ -11,3 +11,4 @@ samba3.smbtorture_s3.*OPLOCK4 # fails sometimes on sn-devel
samba3.posix_s3.nbt.dgram.*netlogon2
samba3.*rap.sam.*.useradd # Not provided by Samba 3
samba3.*rap.sam.*.userdelete # Not provided by Samba 3
samba3.*rap.basic.*.netsessiongetinfo # Not provided by Samba 3

View File

@ -40,6 +40,7 @@ samba4.base.charset.*.Testing partial surrogate
.*net.api.delshare.* # DelShare isn't implemented yet
samba4.rap.*netservergetinfo
samba4.rap.*netsessionenum
samba4.rap.*netsessiongetinfo
samba4.smb2.persistent.handles1
samba4.winbind.struct.*.show_sequence # Not yet working in winbind
samba4.winbind.struct.*.getpwent # Not yet working in winbind

View File

@ -149,6 +149,64 @@ static bool test_netsessionenum(struct torture_context *tctx,
return true;
}
static bool test_netsessiongetinfo_bysession(struct torture_context *tctx,
struct smbcli_state *cli,
const char *session)
{
struct rap_NetSessionGetInfo r;
int i;
uint16_t levels[] = { 2 };
if (session && session[0] == '\\' && session[1] == '\\') {
r.in.SessionName = session;
} else {
r.in.SessionName = talloc_asprintf(tctx, "\\\\%s", session);
}
r.in.bufsize = 0xffff;
for (i=0; i < ARRAY_SIZE(levels); i++) {
r.in.level = levels[i];
torture_assert_ntstatus_ok(tctx,
smbcli_rap_netsessiongetinfo(cli->tree, tctx, &r),
"rap_netsessiongetinfo failed");
torture_assert_werr_ok(tctx, W_ERROR(r.out.status),
"rap_netsessiongetinfo failed");
}
return true;
}
static bool test_netsessiongetinfo(struct torture_context *tctx,
struct smbcli_state *cli)
{
struct rap_NetSessionEnum r;
int i,n;
uint16_t levels[] = { 2 };
for (i=0; i < ARRAY_SIZE(levels); i++) {
r.in.level = levels[i];
r.in.bufsize = 8192;
torture_assert_ntstatus_ok(tctx,
smbcli_rap_netsessionenum(cli->tree, tctx, &r),
"smbcli_rap_netsessionenum failed");
torture_assert_werr_ok(tctx, W_ERROR(r.out.status),
"smbcli_rap_netsessionenum failed");
for (n=0; n < r.out.count; n++) {
torture_assert(tctx,
test_netsessiongetinfo_bysession(tctx, cli, r.out.info[n].info2.ComputerName),
"failed to query sessioninfo");
}
}
return true;
}
bool torture_rap_scan(struct torture_context *torture, struct smbcli_state *cli)
{
int callno;
@ -186,6 +244,8 @@ NTSTATUS torture_rap_init(void)
test_netservergetinfo);
torture_suite_add_1smb_test(suite_basic, "netsessionenum",
test_netsessionenum);
torture_suite_add_1smb_test(suite_basic, "netsessiongetinfo",
test_netsessiongetinfo);
torture_suite_add_1smb_test(suite, "scan", torture_rap_scan);