Skip to content

Commit

Permalink
Print time taken for static analysis
Browse files Browse the repository at this point in the history
  • Loading branch information
palas committed Apr 6, 2021
1 parent 229355c commit d1e1381
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 0 deletions.
2 changes: 2 additions & 0 deletions marlowe-symbolic/marlowe-symbolic.cabal
Expand Up @@ -17,7 +17,9 @@ library
default-language: Haskell2010
build-depends: aeson -any,
base >=4.9,
clock,
deriving-aeson -any,
formatting,
http-client,
http-client-tls,
marlowe,
Expand Down
9 changes: 9 additions & 0 deletions marlowe-symbolic/src/Marlowe/Symbolic/Server.hs
Expand Up @@ -11,19 +11,23 @@

module Marlowe.Symbolic.Server where

import Control.Exception (evaluate)
import Control.Monad.IO.Class (MonadIO, liftIO)
import qualified Data.Aeson as JSON
import Data.Bifunctor (first)
import Data.ByteString.Lazy.UTF8 as BSU
import Data.Maybe (fromMaybe)
import Data.Proxy (Proxy (Proxy))
import Formatting (fprintLn, (%))
import Formatting.Clock (timeSpecs)
import Language.Marlowe (Contract, Slot (Slot), State, TransactionInput,
TransactionWarning)
import Language.Marlowe.Analysis.FSSemantics (warningsTraceCustom)
import Marlowe.Symbolic.Types.Request (Request (..))
import Marlowe.Symbolic.Types.Response (Result (..))
import Servant (Application, Handler (Handler), JSON, Post, ReqBody, Server,
ServerError, hoistServer, serve, (:<|>) ((:<|>)), (:>))
import System.Clock (Clock (Monotonic), getTime)
import System.Process (system)
import Text.PrettyPrint.Leijen (displayS, renderCompact)

Expand All @@ -46,11 +50,16 @@ makeResponse (Right res) =
handlers :: Server API
handlers Request {..} =
liftIO $ do
start <- getTime Monotonic
evRes <- warningsTraceCustom onlyAssertions contract (Just state)
evaluate evRes
end <- getTime Monotonic
let resp = makeResponse (first show evRes)
putStrLn $ BSU.toString $ JSON.encode resp
fprintLn ("Static analysis took " % timeSpecs) start end
pure resp


app :: Application
app = serve (Proxy @API) handlers

Expand Down
Expand Up @@ -35,7 +35,9 @@
depends = [
(hsPkgs."aeson" or (errorHandler.buildDepError "aeson"))
(hsPkgs."base" or (errorHandler.buildDepError "base"))
(hsPkgs."clock" or (errorHandler.buildDepError "clock"))
(hsPkgs."deriving-aeson" or (errorHandler.buildDepError "deriving-aeson"))
(hsPkgs."formatting" or (errorHandler.buildDepError "formatting"))
(hsPkgs."http-client" or (errorHandler.buildDepError "http-client"))
(hsPkgs."http-client-tls" or (errorHandler.buildDepError "http-client-tls"))
(hsPkgs."marlowe" or (errorHandler.buildDepError "marlowe"))
Expand Down

0 comments on commit d1e1381

Please sign in to comment.