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
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "includes.h"
#include "lib/events/events.h"
#include "libcli/raw/libcliraw.h"
#include "libcli/libcli.h"
+#include "libcli/security/security.h"
#include "libcli/composite/composite.h"
#include "libcli/smb_composite/smb_composite.h"
+#include "librpc/gen_ndr/ndr_misc.h"
#include "lib/cmdline/popt_common.h"
-#include "librpc/gen_ndr/ndr_security.h"
+#include "torture/util.h"
+#include "param/param.h"
#define BASEDIR "\\composite"
status = smb_composite_savefile(cli->tree, &io1);
if (!NT_STATUS_IS_OK(status)) {
- printf("savefile failed: %s\n", nt_errstr(status));
+ printf("(%s) savefile failed: %s\n", __location__,nt_errstr(status));
return False;
}
printf("waiting for completion\n");
while (*count != num_ops) {
event_loop_once(cli->transport->socket->event.ctx);
- printf("count=%d\r", *count);
- fflush(stdout);
+ if (lp_parm_bool(NULL, "torture", "progress", true)) {
+ printf("(%s) count=%d\r", __location__, *count);
+ fflush(stdout);
+ }
}
printf("count=%d\n", *count);
for (i=0;i<num_ops;i++) {
status = smb_composite_loadfile_recv(c[i], mem_ctx);
if (!NT_STATUS_IS_OK(status)) {
- printf("loadfile[%d] failed - %s\n", i, nt_errstr(status));
+ printf("(%s) loadfile[%d] failed - %s\n", __location__, i, nt_errstr(status));
return False;
}
if (io2.out.size != len) {
- printf("wrong length in returned data - %d should be %d\n",
+ printf("(%s) wrong length in returned data - %d should be %d\n",__location__,
io2.out.size, (int)len);
return False;
}
if (memcmp(io2.out.data, data, len) != 0) {
- printf("wrong data in loadfile!\n");
+ printf("(%s) wrong data in loadfile!\n",__location__);
return False;
}
}
status = smb_composite_savefile(cli->tree, &io1);
if (!NT_STATUS_IS_OK(status)) {
- printf("savefile failed: %s\n", nt_errstr(status));
+ printf("(%s) savefile failed: %s\n",__location__, nt_errstr(status));
return False;
}
- io2.in.dest_host = lp_parm_string(-1, "torture", "host");
+ io2.in.dest_host = lp_parm_string(NULL, "torture", "host");
io2.in.port = 0;
- io2.in.called_name = lp_parm_string(-1, "torture", "host");
- io2.in.service = lp_parm_string(-1, "torture", "share");
+ io2.in.called_name = lp_parm_string(NULL, "torture", "host");
+ io2.in.service = lp_parm_string(NULL, "torture", "share");
io2.in.service_type = "A:";
io2.in.credentials = cmdline_credentials;
- io2.in.workgroup = lp_workgroup();
+ io2.in.workgroup = lp_workgroup(global_loadparm);
io2.in.filename = fname;
printf("testing parallel fetchfile with %d ops\n", torture_numops);
- event_ctx = event_context_init(mem_ctx);
+ event_ctx = cli->transport->socket->event.ctx;
c = talloc_array(mem_ctx, struct composite_context *, torture_numops);
for (i=0; i<torture_numops; i++) {
while (*count != torture_numops) {
event_loop_once(event_ctx);
- printf("count=%d\r", *count);
- fflush(stdout);
+ if (lp_parm_bool(NULL, "torture", "progress", true)) {
+ printf("(%s) count=%d\r", __location__, *count);
+ fflush(stdout);
+ }
}
printf("count=%d\n", *count);
for (i=0;i<torture_numops;i++) {
status = smb_composite_fetchfile_recv(c[i], mem_ctx);
if (!NT_STATUS_IS_OK(status)) {
- printf("loadfile[%d] failed - %s\n", i,
+ printf("(%s) loadfile[%d] failed - %s\n", __location__, i,
nt_errstr(status));
ret = False;
continue;
}
if (io2.out.size != len) {
- printf("wrong length in returned data - %d "
- "should be %d\n",
+ printf("(%s) wrong length in returned data - %d "
+ "should be %d\n", __location__,
io2.out.size, (int)len);
ret = False;
continue;
}
if (memcmp(io2.out.data, data, len) != 0) {
- printf("wrong data in loadfile!\n");
+ printf("(%s) wrong data in loadfile!\n", __location__);
ret = False;
continue;
}
status = smb_composite_savefile(cli->tree, &io1);
if (!NT_STATUS_IS_OK(status)) {
- printf("savefile failed: %s\n", nt_errstr(status));
+ printf("(%s) savefile failed: %s\n", __location__, nt_errstr(status));
return False;
}
io_orig[i]->in.sd = security_descriptor_initialise(io_orig[i]);
status = smb_composite_appendacl(cli->tree, io_orig[i], io_orig[i]);
if (!NT_STATUS_IS_OK(status)) {
- printf("appendacl failed: %s\n", nt_errstr(status));
+ printf("(%s) appendacl failed: %s\n", __location__, nt_errstr(status));
return False;
}
}
status = security_descriptor_dacl_add(test_sd, ace);
if (!NT_STATUS_IS_OK(status)) {
- printf("appendacl failed: %s\n", nt_errstr(status));
+ printf("(%s) appendacl failed: %s\n", __location__, nt_errstr(status));
return False;
}
printf("waiting for completion\n");
while (*count != num_ops) {
event_loop_once(event_ctx);
- printf("count=%d\r", *count);
- fflush(stdout);
+ if (lp_parm_bool(NULL, "torture", "progress", true)) {
+ printf("(%s) count=%d\r", __location__, *count);
+ fflush(stdout);
+ }
}
printf("count=%d\n", *count);
for (i=0; i < num_ops; i++) {
status = smb_composite_appendacl_recv(c[i], io[i]);
if (!NT_STATUS_IS_OK(status)) {
- printf("appendacl[%d] failed - %s\n", i, nt_errstr(status));
+ printf("(%s) appendacl[%d] failed - %s\n", __location__, i, nt_errstr(status));
return False;
}
security_descriptor_dacl_add(io_orig[i]->out.sd, ace);
if (!security_acl_equal(io_orig[i]->out.sd->dacl, io[i]->out.sd->dacl)) {
- printf("appendacl[%d] failed - needed acl isn't set\n", i);
+ printf("(%s) appendacl[%d] failed - needed acl isn't set\n", __location__, i);
return False;
}
}
int *count = talloc_zero(mem_ctx, int);
BOOL ret = True;
- io1.in.dest_host = lp_parm_string(-1, "torture", "host");
+ io1.in.dest_host = lp_parm_string(NULL, "torture", "host");
io1.in.port = 0;
- io1.in.called_name = lp_parm_string(-1, "torture", "host");
- io1.in.service = lp_parm_string(-1, "torture", "share");
+ io1.in.called_name = lp_parm_string(NULL, "torture", "host");
+ io1.in.service = lp_parm_string(NULL, "torture", "share");
io1.in.service_type = "A:";
io1.in.credentials = cmdline_credentials;
- io1.in.workgroup = lp_workgroup();
+ io1.in.workgroup = lp_workgroup(global_loadparm);
io1.in.level = RAW_QFS_OBJECTID_INFORMATION;
printf("testing parallel queryfsinfo [Object ID] with %d ops\n", torture_numops);
while (*count < torture_numops) {
event_loop_once(event_ctx);
- printf("count=%d\r", *count);
- fflush(stdout);
+ if (lp_parm_bool(NULL, "torture", "progress", true)) {
+ printf("(%s) count=%d\r", __location__, *count);
+ fflush(stdout);
+ }
}
printf("count=%d\n", *count);
for (i=0;i<torture_numops;i++) {
status = smb_composite_fsinfo_recv(c[i], mem_ctx);
if (!NT_STATUS_IS_OK(status)) {
- printf("fsinfo[%d] failed - %s\n", i, nt_errstr(status));
+ printf("(%s) fsinfo[%d] failed - %s\n", __location__, i, nt_errstr(status));
ret = False;
continue;
}
if (io1.out.fsinfo->generic.level != RAW_QFS_OBJECTID_INFORMATION) {
- printf("wrong level in returned info - %d "
- "should be %d\n",
+ printf("(%s) wrong level in returned info - %d "
+ "should be %d\n", __location__,
io1.out.fsinfo->generic.level, RAW_QFS_OBJECTID_INFORMATION);
ret = False;
continue;
/*
basic testing of libcli composite calls
*/
-BOOL torture_raw_composite(void)
+bool torture_raw_composite(struct torture_context *tctx,
+ struct smbcli_state *cli)
{
- struct smbcli_state *cli;
- BOOL ret = True;
- TALLOC_CTX *mem_ctx;
-
- if (!torture_open_connection(&cli)) {
- return False;
- }
-
- mem_ctx = talloc_init("torture_raw_composite");
+ bool ret = true;
if (!torture_setup_dir(cli, BASEDIR)) {
return False;
}
- ret &= test_fetchfile(cli, mem_ctx);
- ret &= test_loadfile(cli, mem_ctx);
- ret &= test_appendacl(cli, mem_ctx);
- ret &= test_fsinfo(cli, mem_ctx);
+ ret &= test_fetchfile(cli, tctx);
+ ret &= test_loadfile(cli, tctx);
+ ret &= test_appendacl(cli, tctx);
+ ret &= test_fsinfo(cli, tctx);
smb_raw_exit(cli->session);
smbcli_deltree(cli->tree, BASEDIR);
- torture_close_connection(cli);
- talloc_free(mem_ctx);
return ret;
}