public void testThreadWorker(int thread_num)
{
Random rnd = new Random(thread_num);
Thread.Sleep(rnd.Next(1000)); // sleep a random amount of time
// add a set of data values
System.Console.WriteLine("startwrites.. " + thread_num);
// add the values
for (int i = 0; i < datavalues.Length; i++) {
string data = datavalues[i].ToString();
string key = this.composeKey(thread_num, data);
db.setValueParsed(key, data);
Interlocked.Increment(ref num_additions);
if (i % 100 == 0) {
Console.WriteLine(" ..thread {0} : {1}", thread_num, i);
}
}
System.Console.WriteLine("endwrites, startread " + thread_num);
// read the values
for (int i = 0; i < datavalues.Length; i++) {
RecordData rdata;
string data = datavalues[i].ToString();
string key = this.composeKey(thread_num, data);
if (db.getRecord(new RecordKey().appendParsedKey(key), out rdata) == GetStatus.PRESENT) {
if (datavalues[i].ToString() == rdata.ReadDataAsString()) {
Interlocked.Increment(ref num_retrievals);
} else {
System.Console.WriteLine("-- ERR: record data didn't match for key({0}). expected {1} != got {2}",
key, datavalues[i].ToString(), rdata.ReadDataAsString());
}
} else {
System.Console.WriteLine("-- ERR: missing record, thread({0}), key({1})",
thread_num, key);
return;
}
}
System.Console.WriteLine("endreads, startremove " + thread_num);
// remove the values
for (int i = 0; i < datavalues.Length; i++) {
string data = datavalues[i].ToString();
string key = this.composeKey(thread_num, data);
db.setValue(new RecordKey().appendParsedKey(key), RecordUpdate.DeletionTombstone());
Interlocked.Increment(ref num_removals);
}
}