import Data.Monoid
import Test.Hspec
import Test.Hspec.Server
import Test.Hspec.Contrib.Retry
import Control.Monad.IO.Class
import Control.Monad.Trans.Reader
main :: IO ()
main = hspec $ do
describe "hoge" $ with localhost $ do
it "check os" $ do
os <- getServerOS
liftIO $ os `shouldBe` (Just $ Ubuntu "12.04")
it "process test" $ do
process "java" @>= running
process "hoge" @>= none
it "package test" $ do
package "zookeeper" @>= installed
liftIO $ do
runReaderT (package "zookeeper-hoge") localhost `shouldThrow` anyException -- Handling exception is not good. Should change
it "port test" $ do
port 2181 @>= listening
port 2180 @>= none
it "service test" $ do
service "zookeeper" @>= running
liftIO $ do
runReaderT (service "zookeeper-hoge") localhost `shouldThrow` anyException -- Handling exception is not good. Should change
it "command test" $ do
command "bash" ["-c","exit 2"] [] @>= exit 2
command "echo" ["hoge"] [] @>= exit 0 <> stdout "hoge\n"
v <- command "echo" ["hoge"] []
v `includes'` (exit 0 <> stdout "hoge\n")
liftIO $ getStdout v `shouldBe` Just "hoge\n"
liftIO $ getStderr v `shouldBe` Just ""
it "retry test" $ do
retryWith 10 $
command "ls" [] [] @>= exit 0
it "network" $ do
host "localhost" @>= reachable
host "localhost" @== reachable
hostWithPort "localhost" 2181 @>= reachable
host "hogehoge" @>= none
hostWithPort "hogehoge" 2181 @>= none