Severity level
This commit is contained in:
@@ -25,7 +25,7 @@ import HomeAssistant.Runtime.Bus
|
|||||||
import HomeAssistant.Runtime.Connection (readerAction, writerAction)
|
import HomeAssistant.Runtime.Connection (readerAction, writerAction)
|
||||||
import HomeAssistant.Runtime.Supervisor (defaultBackoff, supervised)
|
import HomeAssistant.Runtime.Supervisor (defaultBackoff, supervised)
|
||||||
import Network.Socket (withSocketsDo)
|
import Network.Socket (withSocketsDo)
|
||||||
import System.Environment (getEnv)
|
import System.Environment (getEnv, lookupEnv)
|
||||||
import HomeAssistant.Controller.Bedroom (bedroomPresenceController, bedroomButtonController, bedroomDrawerController)
|
import HomeAssistant.Controller.Bedroom (bedroomPresenceController, bedroomButtonController, bedroomDrawerController)
|
||||||
import Data.UUID (UUID, toText)
|
import Data.UUID (UUID, toText)
|
||||||
import qualified Data.UUID.V4 as UUID.V4
|
import qualified Data.UUID.V4 as UUID.V4
|
||||||
@@ -63,16 +63,18 @@ runController bus (Controller name machine _enabled) = do
|
|||||||
go inbound f'
|
go inbound f'
|
||||||
|
|
||||||
defaultMain :: IO ()
|
defaultMain :: IO ()
|
||||||
defaultMain = withSocketsDo $ withBus $ \bus -> do
|
defaultMain = withSocketsDo $ do
|
||||||
token <- getEnv "HA_TOKEN"
|
severity <- maybe DebugS (const InfoS) <$> lookupEnv "HA_DEBUG"
|
||||||
host <- getEnv "HA_HOST"
|
withBus severity $ \bus -> do
|
||||||
let workers =
|
token <- getEnv "HA_TOKEN"
|
||||||
[ ("reader", readerAction host 8123 token bus)
|
host <- getEnv "HA_HOST"
|
||||||
, ("writer", writerAction bus)
|
let workers =
|
||||||
] ++ [ (name, runController bus c) | c@(Controller name _ True) <- controllers ]
|
[ ("reader", readerAction host 8123 token bus)
|
||||||
as <- mapM (\(name, act) -> async (supervised name defaultBackoff act)) workers
|
, ("writer", writerAction bus)
|
||||||
(_, v) <- waitAny as
|
] ++ [ (name, runController bus c) | c@(Controller name _ True) <- controllers ]
|
||||||
absurd v
|
as <- mapM (\(name, act) -> async (supervised name defaultBackoff act)) workers
|
||||||
|
(_, v) <- waitAny as
|
||||||
|
absurd v
|
||||||
|
|
||||||
dryRunHassEval :: Namespace -> Bus -> HASSEff a -> IO a
|
dryRunHassEval :: Namespace -> Bus -> HASSEff a -> IO a
|
||||||
dryRunHassEval ns bus = \case
|
dryRunHassEval ns bus = \case
|
||||||
|
|||||||
@@ -40,9 +40,9 @@ data Bus = Bus
|
|||||||
, busLogEnv :: LogEnv
|
, busLogEnv :: LogEnv
|
||||||
}
|
}
|
||||||
|
|
||||||
withBus :: (Bus -> IO a) -> IO a
|
withBus :: Severity -> (Bus -> IO a) -> IO a
|
||||||
withBus callback = do
|
withBus severity callback = do
|
||||||
handleScribe <- mkHandleScribe ColorIfTerminal stdout (permitItem DebugS) V2
|
handleScribe <- mkHandleScribe ColorIfTerminal stdout (permitItem severity) V2
|
||||||
let makeLogEnv = registerScribe "stdout" handleScribe defaultScribeSettings =<< initLogEnv "hass-controller" "production"
|
let makeLogEnv = registerScribe "stdout" handleScribe defaultScribeSettings =<< initLogEnv "hass-controller" "production"
|
||||||
-- closeScribes will stop accepting new logs, flush existing ones and clean up resources
|
-- closeScribes will stop accepting new logs, flush existing ones and clean up resources
|
||||||
bracket makeLogEnv closeScribes $ \le -> do
|
bracket makeLogEnv closeScribes $ \le -> do
|
||||||
|
|||||||
+3
-3
@@ -14,12 +14,12 @@ import Data.Time (UTCTime (..))
|
|||||||
import Data.UUID (nil)
|
import Data.UUID (nil)
|
||||||
import HomeAssistant.Controller (HASSEff (..), Service (..), Target(..))
|
import HomeAssistant.Controller (HASSEff (..), Service (..), Target(..))
|
||||||
import HomeAssistant.Runtime.Bus
|
import HomeAssistant.Runtime.Bus
|
||||||
import Katip (Namespace (Namespace), runKatipContextT)
|
import Katip (Namespace (Namespace), runKatipContextT, Severity (..))
|
||||||
import Test.Hspec
|
import Test.Hspec
|
||||||
|
|
||||||
spec :: Spec
|
spec :: Spec
|
||||||
spec = describe "Bus" $ do
|
spec = describe "Bus" $ do
|
||||||
it "broadcasts inbound messages to every dup'd channel in order" $ withBus $ \bus -> do
|
it "broadcasts inbound messages to every dup'd channel in order" $ withBus InfoS $ \bus -> do
|
||||||
p1 <- atomically $ dupTChan (busInbound bus)
|
p1 <- atomically $ dupTChan (busInbound bus)
|
||||||
p2 <- atomically $ dupTChan (busInbound bus)
|
p2 <- atomically $ dupTChan (busInbound bus)
|
||||||
atomically $ writeTChan (busInbound bus) (Number 1)
|
atomically $ writeTChan (busInbound bus) (Number 1)
|
||||||
@@ -29,7 +29,7 @@ spec = describe "Bus" $ do
|
|||||||
r1 `shouldBe` (Number 1, Number 2)
|
r1 `shouldBe` (Number 1, Number 2)
|
||||||
r2 `shouldBe` (Number 1, Number 2)
|
r2 `shouldBe` (Number 1, Number 2)
|
||||||
|
|
||||||
it "channelHassEval writes CallService to the outbound channel" $ withBus $ \bus -> do
|
it "channelHassEval writes CallService to the outbound channel" $ withBus InfoS $ \bus -> do
|
||||||
let req = Request (UTCTime (toEnum 0) 0) nil
|
let req = Request (UTCTime (toEnum 0) 0) nil
|
||||||
svc = Service "light" "turn_on" Nothing [EntityId "light.bedroom_masse"]
|
svc = Service "light" "turn_on" Nothing [EntityId "light.bedroom_masse"]
|
||||||
runKatipContextT (busLogEnv bus) () (Namespace ["test"]) $
|
runKatipContextT (busLogEnv bus) () (Namespace ["test"]) $
|
||||||
|
|||||||
+2
-1
@@ -10,10 +10,11 @@ import HomeAssistant.Controller (light, lightController, Target (..))
|
|||||||
import HomeAssistant.Runtime (Controller (..), runController)
|
import HomeAssistant.Runtime (Controller (..), runController)
|
||||||
import HomeAssistant.Runtime.Bus
|
import HomeAssistant.Runtime.Bus
|
||||||
import Test.Hspec
|
import Test.Hspec
|
||||||
|
import Katip (Severity(..))
|
||||||
|
|
||||||
spec :: Spec
|
spec :: Spec
|
||||||
spec = describe "runController" $ do
|
spec = describe "runController" $ do
|
||||||
it "feeds inbound events through the machine and forwards service calls" $ withBus $ \bus -> do
|
it "feeds inbound events through the machine and forwards service calls" $ withBus InfoS $ \bus -> do
|
||||||
_ <- async (runController bus (Controller "test" lightController True))
|
_ <- async (runController bus (Controller "test" lightController True))
|
||||||
putStrLn "Before the delay"
|
putStrLn "Before the delay"
|
||||||
threadDelay 100000 -- let the controller dup its inbound channel
|
threadDelay 100000 -- let the controller dup its inbound channel
|
||||||
|
|||||||
Reference in New Issue
Block a user