cloudchor-0.1.0.0: bench/Main.hs
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE ImpredicativeTypes #-}
module Main where
import System.Environment(getArgs)
import System.Exit(exitFailure)
import Benchmark
import Choreos.Bookseller
import Choreos.CleanRoom
import Choreos.Kvs
main :: IO ()
main = getArgs >>= \case
[backend, cond, "bookseller"] -> benchmarkChoreography backend cond ["buyer", "seller"] bookseller'
[backend, cond, "kvs"] -> benchmarkChoreography backend cond ["client", "primary", "backup"] kvs'
[backend, cond, "clean-room", read -> numClients, read -> numFailures] ->
let locs = cleanRoomLocs numClients
in benchmarkChoreography backend cond locs $ mkCleanRoom numFailures locs
_ -> putStrLn "Invalid args" *> exitFailure