packages feed

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