checkQueryResults :: ConfigData -> Query -> String
-> [[ResultEntry]] -> Property
checkQueryResults cfg qr descr expected = monadicIO $ do
- result <- run (query cfg qr) >>= resultProp
+ result <- run (query cfg False qr) >>= resultProp
stop $ printTestCase ("Inconsistent results in " ++ descr)
(qresData result ==? expected)
-- | Checks if a given operation failed.
expectBadQuery :: ConfigData -> Query -> String -> Property
expectBadQuery cfg qr descr = monadicIO $ do
- result <- run (query cfg qr)
+ result <- run (query cfg False qr)
case result of
Bad _ -> return ()
Ok a -> stop . failTest $ "Expected failure in " ++ descr ++
forAll (choose (0, maxNodes) >>= genEmptyCluster) $ \cluster ->
forAll (elements (Map.keys nodeFieldsMap)) $ \field -> monadicIO $ do
QueryResult fdefs fdata <-
- run (query cluster (Query QRNode [field] EmptyFilter)) >>= resultProp
+ run (query cluster False (Query QRNode [field] EmptyFilter)) >>= resultProp
QueryFieldsResult fdefs' <-
resultProp $ queryFields (QueryFields QRNode [field])
stop $ printTestCase ("Got unknown fields via query (" ++ show fdefs ++ ")")
forAll (arbitrary `suchThat` (`notElem` Map.keys nodeFieldsMap))
$ \field -> monadicIO $ do
QueryResult fdefs fdata <-
- run (query cluster (Query QRNode [field] EmptyFilter)) >>= resultProp
+ run (query cluster False (Query QRNode [field] EmptyFilter)) >>= resultProp
QueryFieldsResult fdefs' <-
resultProp $ queryFields (QueryFields QRNode [field])
stop $ printTestCase ("Got known fields via query (" ++ show fdefs ++ ")")
forAll (genEmptyCluster numnodes) $ \cfg ->
forAll (elements (Map.keys nodeFieldsMap)) $ \field -> monadicIO $ do
QueryResult fdefs fdata <-
- run (query cfg (Query QRNode [field] EmptyFilter)) >>= resultProp
+ run (query cfg False (Query QRNode [field] EmptyFilter)) >>= resultProp
stop $ printTestCase ("Inconsistent result entries (" ++ show fdata ++ ")")
(conjoin $ map (conjoin . zipWith checkResultType fdefs) fdata) .&&.
printTestCase "Wrong field definitions length"
forAll (choose (0, maxNodes) >>= genEmptyCluster) $ \cluster ->
forAll (elements (Map.keys groupFieldsMap)) $ \field -> monadicIO $ do
QueryResult fdefs fdata <-
- run (query cluster (Query QRGroup [field] EmptyFilter)) >>= resultProp
+ run (query cluster False (Query QRGroup [field] EmptyFilter)) >>= resultProp
QueryFieldsResult fdefs' <-
resultProp $ queryFields (QueryFields QRGroup [field])
stop $ printTestCase ("Got unknown fields via query (" ++ show fdefs ++ ")")
forAll (arbitrary `suchThat` (`notElem` Map.keys groupFieldsMap))
$ \field -> monadicIO $ do
QueryResult fdefs fdata <-
- run (query cluster (Query QRGroup [field] EmptyFilter)) >>= resultProp
+ run (query cluster False (Query QRGroup [field] EmptyFilter)) >>= resultProp
QueryFieldsResult fdefs' <-
resultProp $ queryFields (QueryFields QRGroup [field])
stop $ printTestCase ("Got known fields via query (" ++ show fdefs ++ ")")
forAll (genEmptyCluster numnodes) $ \cfg ->
forAll (elements (Map.keys groupFieldsMap)) $ \field -> monadicIO $ do
QueryResult fdefs fdata <-
- run (query cfg (Query QRGroup [field] EmptyFilter)) >>= resultProp
+ run (query cfg False (Query QRGroup [field] EmptyFilter)) >>= resultProp
stop $ printTestCase ("Inconsistent result entries (" ++ show fdata ++ ")")
(conjoin $ map (conjoin . zipWith checkResultType fdefs) fdata) .&&.
printTestCase "Wrong field definitions length"
-- | Main query execution function.
query :: ConfigData -- ^ The current configuration
+ -> Bool -- ^ Whether to collect live data
-> Query -- ^ The query (item, fields, filter)
-> IO (Result QueryResult) -- ^ Result
-query cfg (Query QRNode fields qfilter) = return $ do
+query cfg _ (Query QRNode fields qfilter) = return $ do
cfilter <- compileFilter nodeFieldsMap qfilter
let selected = getSelectedFields nodeFieldsMap fields
(fdefs, fgetters) = unzip selected
fnodes
return QueryResult { qresFields = fdefs, qresData = fdata }
-query cfg (Query QRGroup fields qfilter) = return $ do
+query cfg _ (Query QRGroup fields qfilter) = return $ do
-- FIXME: want_diskparams is defaulted to false and not taken as parameter
-- This is because the type for DiskParams is right now too generic for merges
-- (or else I cannot see how to do this with curent implementation)
map (execGetter cfg GroupRuntime node) fgetters) fgroups
return QueryResult {qresFields = fdefs, qresData = fdata }
-query _ (Query qkind _ _) =
+query _ _ (Query qkind _ _) =
return . Bad $ "Query '" ++ show qkind ++ "' not supported"
-- | Query fields call.