int SyntheticClient::run()
{
run_start = g_clock.gettimepair();
+ run_until = timepair_t(0,0);
for (list<int>::iterator it = modes.begin();
it != modes.end();
{
int iarg1 = iargs.front();
iargs.pop_front();
- dout(2) << "until " << iarg1 << endl;
- timepair_t dur(iarg1,0);
- run_until = run_start + dur;
+ if (iarg1) {
+ dout(2) << "until " << iarg1 << endl;
+ timepair_t dur(iarg1,0);
+ run_until = run_start + dur;
+ } else {
+ dout(2) << "until " << iarg1 << " (no limit)" << endl;
+ run_until = timepair_t(0,0);
+ }
}
break;
case SYNCLIENT_MODE_RANDOMWALK:
int SyntheticClient::full_walk(string& basedir)
{
- if (g_clock.gettimepair() > run_until) return 0;
+ if (run_until.first && g_clock.gettimepair() > run_until) return 0;
// read dir
map<string, inode_t*> contents;
int SyntheticClient::make_dirs(const char *basedir, int dirs, int files, int depth)
{
- if (g_clock.gettimepair() > run_until) return 0;
+ if (run_until.first && g_clock.gettimepair() > run_until) return 0;
// make sure base dir exists
int r = client->mkdir(basedir, 0755);
if (fd < 0) return fd;
for (int i=0; i<chunks; i++) {
- if (g_clock.gettimepair() > run_until) break;
+ if (run_until.first && g_clock.gettimepair() > run_until) break;
dout(2) << "writing block " << i << "/" << chunks << endl;
client->write(fd, buf, wrsize, i*wrsize);
}
if (fd < 0) return fd;
for (int i=0; i<chunks; i++) {
- if (g_clock.gettimepair() > run_until) break;
+ if (run_until.first && g_clock.gettimepair() > run_until) break;
dout(2) << "reading block " << i << "/" << chunks << endl;
client->read(fd, buf, rdsize, i*rdsize);
}
while (left > 0) {
left--;
- if (g_clock.gettimepair() > run_until) break;
+ if (run_until.first && g_clock.gettimepair() > run_until) break;
// ascend?
if (cwd.depth() && roll_die(.05)) {