graceful 0.1.0.0 → 0.1.1.0
raw patch · 3 files changed
+14/−4 lines, 3 filesdep +filepath
Dependencies added: filepath
Files
graceful.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: graceful-version: 0.1.0.0+version: 0.1.1.0 synopsis: Library to write graceful shutdown / upgrade service. description: Library to write graceful shutdown / upgrade service. license: BSD3@@ -51,3 +51,4 @@ , unix , stm , directory+ , filepath
src/System/Posix/Graceful.hs view
@@ -23,6 +23,7 @@ , send, recv, sendFd, recvFd, fdSocket, SocketStatus(..) , Family(..), SocketType(..), SockAddr(..) ) import System.Directory ( doesFileExist, removeFile, renameFile )+import System.Environment ( getArgs ) import System.Posix.IO ( dup ) import System.Posix.Process ( getProcessID, forkProcess, executeFile, getProcessStatus ) import System.Posix.Signals ( blockSignals, unblockSignals, fullSignalSet )@@ -93,7 +94,8 @@ bracket (socket AF_UNIX Stream 0) close $ \uds -> do bindSocket uds $ SockAddrUnix sockFile listen uds 1- pid <- forkProcess $ executeFile binary False [] Nothing+ args <- getArgs+ pid <- forkProcess $ executeFile binary False args Nothing bracket (accept uds) (close . fst) $ \(s, _) -> sendSock s sock void $ getProcessStatus True False pid
test/System/Posix/GracefulSpec.hs view
@@ -10,6 +10,8 @@ import System.Cmd import System.Directory import System.Exit+import System.FilePath+import System.Posix.Files import System.Posix.Signals import System.Posix.Types import System.Process@@ -106,7 +108,6 @@ connect sock $ SockAddrInet 8080 addr action sock - packageOption :: String #if __GLASGOW_HASKELL__ < 706 packageOption = "-package-conf"@@ -117,12 +118,18 @@ buildAsEchoServer :: FilePath -> IO () buildAsEchoServer file = do removeFileIfExist "/tmp/echo-server"+ confDistDir <- getConfDistDir (code, _out, _err) <- readProcessWithExitCode "ghc" [ "--make", file , "-o", "/tmp/echo-server"- , packageOption, "dist/package.conf.inplace"+ , packageOption, confDistDir ++ "/package.conf.inplace" ] "" code `shouldBe` ExitSuccess++getConfDistDir :: IO FilePath+getConfDistDir = fmap (dirname . dirname . dirname) getModuleFile where+ dirname = takeDirectory+ getModuleFile = readSymbolicLink "/proc/self/exe" ps :: IO [ProcessID] ps = do