packages feed

task-distribution-0.1.0.0: test/NodeMatchingTests.hs

import Data.List.Split (splitOn)
import Test.Hspec

import Control.Distributed.Task.Distribution.DataLocality (nodeMatcher)

main :: IO ()
main = hspec $ do
  describe "ClusterComputing.DataLocality" $ do
        context "Node/Host matching" $ do
            it "does not match everything" $ do
              nodeMatcher [] "nid://node:44441:0" "host" `shouldBe` False
            it "extracts host from nodeId string" $ do
              (dropWhile (=='/') . head . drop 1 . splitOn ":") "nid://localhost:44441:0" `shouldBe` "localhost"
            it "extracts host from host string" $ do
              (head . splitOn ":") "localhost:50010" `shouldBe` "localhost"
            it "matches same host" $ do
              nodeMatcher [] "nid://localhost:44441:0" "localhost:50010" `shouldBe` True
            it "matches special hdfs host" $ do
              nodeMatcher [("127.0.0.1", "localhost")] "nid://localhost:44441:0" "127.0.0.1:50010" `shouldBe` True
            it "matches special node host" $ do
              nodeMatcher [("127.0.0.1", "localhost")] "nid://127.0.0.1:44441:0" "localhost:50010" `shouldBe` True