summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
Diffstat (limited to 'source4')
-rw-r--r--source4/torture/raw/offline.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/source4/torture/raw/offline.c b/source4/torture/raw/offline.c
index 234b962147..4b7d108b0f 100644
--- a/source4/torture/raw/offline.c
+++ b/source4/torture/raw/offline.c
@@ -57,6 +57,8 @@ struct offline_state {
uint32_t count;
uint32_t lastcount;
uint32_t fnumber;
+ uint32_t offline_count;
+ uint32_t online_count;
char *fname;
struct smb_composite_loadfile *loadfile;
struct smb_composite_savefile *savefile;
@@ -176,7 +178,7 @@ static void getoffline_callback(struct smbcli_request *req)
NTSTATUS status;
union smb_fileinfo io;
- io.standard.level = RAW_FILEINFO_GETATTR;
+ io.getattr.level = RAW_FILEINFO_GETATTR;
status = smb_raw_pathinfo_recv(req, state->mem_ctx, &io);
if (!NT_STATUS_IS_OK(status)) {
@@ -185,6 +187,12 @@ static void getoffline_callback(struct smbcli_request *req)
test_failed++;
}
+ if (io.getattr.out.attrib & FILE_ATTRIBUTE_OFFLINE) {
+ state->offline_count++;
+ } else {
+ state->online_count++;
+ }
+
state->req = NULL;
state->count++;
@@ -265,8 +273,8 @@ static void test_offline(struct offline_state *state)
case OP_GETOFFLINE: {
union smb_fileinfo io;
ZERO_STRUCT(io);
- io.standard.level = RAW_FILEINFO_GETATTR;
- io.standard.in.file.path = state->fname;
+ io.getattr.level = RAW_FILEINFO_GETATTR;
+ io.getattr.in.file.path = state->fname;
state->req = smb_raw_pathinfo_send(state->tree, &io);
if (state->req == NULL) {
@@ -308,11 +316,13 @@ static void report_rate(struct event_context *ev, struct timed_event *te,
struct offline_state *state = talloc_get_type(private_data,
struct offline_state);
int i;
+ uint32_t total=0;
for (i=0;i<numstates;i++) {
- printf("%5u ", (unsigned)(state[i].count - state[i].lastcount));
- state[i].lastcount = state[i].count;
+ total += state[i].count - state[i].lastcount;
+ state[i].lastcount = state[i].count;
}
- printf("\r");
+ printf("ops=%6u offline_count=%6u online_count=%6u\r",
+ total, state->offline_count, state->online_count);
fflush(stdout);
event_add_timed(ev, state, timeval_current_ofs(1, 0), report_rate, state);
@@ -347,7 +357,6 @@ bool torture_test_offline(struct torture_context *torture)
struct timeval tv;
struct event_context *ev = event_context_find(mem_ctx);
struct offline_state *state;
- int total = 0;
struct smbcli_state *cli;
bool progress;
progress = torture_setting_bool(torture, "progress", true);
@@ -432,9 +441,7 @@ bool torture_test_offline(struct torture_context *torture)
}
}
- printf("%.2f ops/second\n", total/timeval_elapsed(&tv));
-
- printf("Waiting for completion\n");
+ printf("\nWaiting for completion\n");
test_finished = true;
for (i=0;i<numstates;i++) {
while (state[i].loadfile ||