git.iko.soy/typeable/bloodhound
on 1632068 help sign in
78 lines 3.1 kB history raw
1{-# LANGUAGE OverloadedStrings #-}
3module Test.Indices where
5import Test.Common
6import Test.Import
8import qualified Data.List as L
9import qualified Data.List.NonEmpty as NE
11spec :: Spec
12spec = do
13 describe "Index create/delete API" $ do
14 it "creates and then deletes the requested index" $ withTestEnv $ do
15 -- priming state.
16 _ <- deleteExampleIndex
17 resp <- createExampleIndex
18 deleteResp <- deleteExampleIndex
19 liftIO $ do
20 validateStatus resp 200
21 validateStatus deleteResp 200
23 describe "Index aliases" $ do
24 let aname = IndexAliasName (IndexName "bloodhound-tests-twitter-1-alias")
25 let alias = IndexAlias (testIndex) aname
26 let create = IndexAliasCreate Nothing Nothing
27 let action = AddAlias alias create
28 it "handles the simple case of aliasing an existing index" $ do
29 withTestEnv $ do
30 resetIndex
31 resp <- updateIndexAliases (action :| [])
32 liftIO $ validateStatus resp 200
33 let cleanup = withTestEnv (updateIndexAliases (RemoveAlias alias :| []))
34 (do aliases <- withTestEnv getIndexAliases
35 let expected = IndexAliasSummary alias create
36 case aliases of
37 Right (IndexAliasesSummary summs) ->
38 L.find ((== alias) . indexAliasSummaryAlias) summs `shouldBe` Just expected
39 Left e -> expectationFailure ("Expected an IndexAliasesSummary but got " <> show e)) `finally` cleanup
41 describe "Index Listing" $ do
42 it "returns a list of index names" $ withTestEnv $ do
43 _ <- createExampleIndex
44 ixns <- listIndices
45 liftIO (ixns `shouldContain` [testIndex])
47 describe "Index Settings" $ do
48 it "persists settings" $ withTestEnv $ do
49 _ <- deleteExampleIndex
50 _ <- createExampleIndex
51 let updates = BlocksWrite False :| []
52 updateResp <- updateIndexSettings updates testIndex
53 liftIO $ validateStatus updateResp 200
54 getResp <- getIndexSettings testIndex
55 liftIO $
56 getResp `shouldBe` Right (IndexSettingsSummary
57 testIndex
58 (IndexSettings (ShardCount 1) (ReplicaCount 0))
59 (NE.toList updates))
61 it "allows total fields to be set" $ when' (atleast es50) $ withTestEnv $ do
62 _ <- deleteExampleIndex
63 _ <- createExampleIndex
64 let updates = FailOnMergeFailure True :| []
65 updateResp <- updateIndexSettings updates testIndex
66 liftIO $ validateStatus updateResp 200
67 getResp <- getIndexSettings testIndex
68 liftIO $
69 getResp `shouldBe` Right (IndexSettingsSummary
70 testIndex
71 (IndexSettings (ShardCount 1) (ReplicaCount 0))
72 (NE.toList updates))
74 describe "Index Optimization" $ do
75 it "returns a successful response upon completion" $ withTestEnv $ do
76 _ <- createExampleIndex
77 resp <- optimizeIndex (IndexList (testIndex :| [])) defaultIndexOptimizationSettings
78 liftIO $ validateStatus resp 200