///|
/// Runs a deterministic put/get workload for the repository benchmark scripts.
fn main {
let argv = @env.args()
if argv.length() < 3 {
println("Usage: moon run --target native cmd/bench -- ")
return
}
let dir = argv[1]
let records = parse_count(argv[2])
if records <= 0 {
println("records must be greater than zero")
return
}
try {
let db = @moonkv.DB::open(dir, 64 * 1024 * 1024)
for i in 0.. println("IO error: \{message}")
@moonkv.MoonKVError::KeyNotFound(key) => println("missing key: \{key}")
@moonkv.MoonKVError::CorruptedDatabase(message) =>
println("corrupted database: \{message}")
@moonkv.MoonKVError::InvalidRecord(message) =>
println("invalid record: \{message}")
}
}
///|
fn parse_count(s : String) -> Int {
let mut value = 0
for ch in s {
if ch < '0' || ch > '9' {
return 0
}
value = value * 10 + ch.to_int() - '0'.to_int()
}
value
}