[test] fixes to decodeUtf8 and ne_nre rewrite

parent 3e8de491
Pipeline #5442 canceled with stages
in 59 seconds
...@@ -22,6 +22,7 @@ import Control.Category ((>>>)) ...@@ -22,6 +22,7 @@ import Control.Category ((>>>))
import Control.Lens (makeLenses, makePrisms, Iso', iso, from, (.~), (.=), (?=), (#), to, folded, {-withIndex, ifolded,-} view, use, (^.), (^?), (%~), (.~), (%=), at, _Just, Each(..), itraverse_, both, forOf_, (?~), over) import Control.Lens (makeLenses, makePrisms, Iso', iso, from, (.~), (.=), (?=), (#), to, folded, {-withIndex, ifolded,-} view, use, (^.), (^?), (%~), (.~), (%=), at, _Just, Each(..), itraverse_, both, forOf_, (?~), over)
import Control.Monad.State import Control.Monad.State
import Data.Aeson hiding ((.=)) import Data.Aeson hiding ((.=))
import Data.Aeson qualified as Aeson
import Data.Aeson.TH (deriveJSON) import Data.Aeson.TH (deriveJSON)
import Data.Foldable import Data.Foldable
import Data.HashMap.Strict.InsOrd qualified as InsOrdHashMap import Data.HashMap.Strict.InsOrd qualified as InsOrdHashMap
...@@ -175,10 +176,34 @@ data NgramsElement = ...@@ -175,10 +176,34 @@ data NgramsElement =
, _ne_nre :: NgramsRepoElement , _ne_nre :: NgramsRepoElement
} }
deriving (Ord, Eq, Show, Generic) deriving (Ord, Eq, Show, Generic)
deriveJSON (unPrefix "_ne_") ''NgramsElement -- deriveJSON (unPrefix "_ne_") ''NgramsElement
makeLenses ''NgramsElement makeLenses ''NgramsElement
instance ToJSON NgramsElement where
toJSON ne = object [
"ngrams" Aeson..= toJSON (ne ^. ne_ngrams)
, "occurrences" Aeson..= toJSON (ne ^. ne_occurrences)
, "size" Aeson..= toJSON (ne ^. ne_nre . nre_size)
, "list" Aeson..= toJSON (ne ^. ne_nre . nre_list)
, "root" Aeson..= toJSON (ne ^. ne_nre . nre_root)
, "parent" Aeson..= toJSON (ne ^. ne_nre . nre_parent)
, "children" Aeson..= toJSON (ne ^. ne_nre . nre_children)
]
instance FromJSON NgramsElement where
parseJSON = withObject "NgramsElement" $ \ne -> do
_ne_ngrams <- ne .: "ngrams"
_ne_occurrences <- ne .: "occurrences"
_nre_size <- ne .: "size"
_nre_list <- ne .: "list"
_nre_root <- ne .:? "root"
_nre_parent <- ne .:? "parent"
_nre_children <- ne .: "children"
let _ne_nre = NgramsRepoElement { .. }
pure NgramsElement { .. }
mkNgramsElement :: NgramsTerm mkNgramsElement :: NgramsTerm
-> ListType -> ListType
-> Maybe RootParent -> Maybe RootParent
......
...@@ -83,7 +83,7 @@ pollUntilFinished :: HasCallStack ...@@ -83,7 +83,7 @@ pollUntilFinished :: HasCallStack
pollUntilFinished tkn port mkUrlPiece = go 60 pollUntilFinished tkn port mkUrlPiece = go 60
where where
go :: Int -> JobPollHandle -> WaiSession () JobPollHandle go :: Int -> JobPollHandle -> WaiSession () JobPollHandle
go 0 h = panicTrace $ "pollUntilFinished exhausted attempts. Last found JobPollHandle: " <> decodeUtf8 (JSON.encode h) go 0 h = panicTrace $ "pollUntilFinished exhausted attempts. Last found JobPollHandle: " <> (T.decodeUtf8 $ BL.toStrict $ JSON.encode h)
go n h = case _jph_status h == "IsPending" || _jph_status h == "IsRunning" of go n h = case _jph_status h == "IsPending" || _jph_status h == "IsRunning" of
True -> do True -> do
liftIO $ threadDelay 1_000_000 liftIO $ threadDelay 1_000_000
...@@ -91,7 +91,7 @@ pollUntilFinished tkn port mkUrlPiece = go 60 ...@@ -91,7 +91,7 @@ pollUntilFinished tkn port mkUrlPiece = go 60
go (n-1) h' go (n-1) h'
False False
| _jph_status h == "IsFailure" | _jph_status h == "IsFailure"
-> panicTrace $ "JobPollHandle contains a failure: " <> decodeUtf8 (JSON.encode h) -> panicTrace $ "JobPollHandle contains a failure: " <> T.decodeUtf8 (BL.toStrict $ JSON.encode h)
| otherwise | otherwise
-> pure h -> pure h
...@@ -132,7 +132,8 @@ tests = sequential $ aroundAll withTestDBAndPort $ do ...@@ -132,7 +132,8 @@ tests = sequential $ aroundAll withTestDBAndPort $ do
"size": 2, "size": 2,
"list": "MapTerm", "list": "MapTerm",
"occurrences": [], "occurrences": [],
"children": [] "children": [],
"root": null
} }
] ]
} |] } |]
...@@ -173,7 +174,9 @@ tests = sequential $ aroundAll withTestDBAndPort $ do ...@@ -173,7 +174,9 @@ tests = sequential $ aroundAll withTestDBAndPort $ do
{"ngrams":"abelian group" {"ngrams":"abelian group"
,"size":1 ,"size":1
,"list":"MapTerm" ,"list":"MapTerm"
,"occurrences":[],"children":[]} ,"occurrences":[]
,"children":[]
,"root": null}
] ]
} |] } |]
let getStopUrl = "/node/" +| listId |+ "/ngrams?ngramsType=Terms&listType=StopTerm&list="+| listId |+"&limit=50" let getStopUrl = "/node/" +| listId |+ "/ngrams?ngramsType=Terms&listType=StopTerm&list="+| listId |+"&limit=50"
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
{-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeApplications #-}
module Test.Ngrams.Query (tests) where module Test.Ngrams.Query (tests) where
import Control.Lens
import Control.Monad import Control.Monad
import Data.Coerce import Data.Coerce
import Data.Map.Strict qualified as Map import Data.Map.Strict qualified as Map
...@@ -269,7 +270,8 @@ test_paginationQuantum = do ...@@ -269,7 +270,8 @@ test_paginationQuantum = do
let elems = coerce @NgramsTable @[NgramsElement] $ _vc_data res let elems = coerce @NgramsTable @[NgramsElement] $ _vc_data res
length elems @?= 10 length elems @?= 10
forM_ elems $ \term -> forM_ elems $ \term ->
assertBool ("found " <> show (_ne_list term) <> " in: " <> show elems) (_ne_list term == MapTerm) assertBool ("found " <> show (term ^. ne_nre . nre_list) <> " in: " <> show elems)
(term ^. ne_nre . nre_list == MapTerm)
where where
searchQuery = NgramsSearchQuery { searchQuery = NgramsSearchQuery {
_nsq_limit = Limit 10 _nsq_limit = Limit 10
......
...@@ -20,111 +20,113 @@ import Paths_gargantext ...@@ -20,111 +20,113 @@ import Paths_gargantext
implementationElem :: NgramsElement implementationElem :: NgramsElement
implementationElem = NgramsElement { implementationElem = NgramsElement {
_ne_ngrams = "implementation" _ne_ngrams = "implementation"
, _ne_size = 1
, _ne_list = MapTerm
, _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3, 4, 5 ] , _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3, 4, 5 ]
, _ne_root = Nothing , _ne_nre = NgramsRepoElement { _nre_size = 1
, _ne_parent = Nothing , _nre_list = MapTerm
, _ne_children = mSetFromList [ "code", "functions", "language", "programs" ] , _nre_root = Nothing
, _nre_parent = Nothing
, _nre_children = mSetFromList [ "code", "functions", "language", "programs" ]
}
} }
languagesElem :: NgramsElement languagesElem :: NgramsElement
languagesElem = NgramsElement { languagesElem = NgramsElement {
_ne_ngrams = NgramsTerm {unNgramsTerm = "languages"} _ne_ngrams = NgramsTerm {unNgramsTerm = "languages"}
, _ne_size = 1
, _ne_list = MapTerm
, _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2 , 3 , 4 ] , _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2 , 3 , 4 ]
, _ne_root = Nothing , _ne_nre = NgramsRepoElement { _nre_size = 1
, _ne_parent = Nothing , _nre_list = MapTerm
, _ne_children = mSetFromList [ "approach", "use" ] , _nre_root = Nothing
, _nre_parent = Nothing
, _nre_children = mSetFromList [ "approach", "use" ]
}
} }
termsElem :: NgramsElement termsElem :: NgramsElement
termsElem = NgramsElement { termsElem = NgramsElement {
_ne_ngrams = NgramsTerm {unNgramsTerm = "terms"} _ne_ngrams = NgramsTerm {unNgramsTerm = "terms"}
, _ne_size = 1
, _ne_list = MapTerm
, _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2 , 3 ] , _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2 , 3 ]
, _ne_root = Nothing , _ne_nre = NgramsRepoElement { _nre_size = 1
, _ne_parent = Nothing , _nre_list = MapTerm
, _ne_children = mSetFromList [ "algorithm", "evaluation", "monad", "programmers" ] , _nre_root = Nothing
, _nre_parent = Nothing
, _nre_children = mSetFromList [ "algorithm", "evaluation", "monad", "programmers" ] }
} }
proofElem :: NgramsElement proofElem :: NgramsElement
proofElem = NgramsElement { proofElem = NgramsElement {
_ne_ngrams = NgramsTerm {unNgramsTerm = "proof"} _ne_ngrams = NgramsTerm {unNgramsTerm = "proof"}
, _ne_size = 1
, _ne_list = MapTerm
, _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2 ] , _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2 ]
, _ne_root = Nothing , _ne_nre = NgramsRepoElement { _nre_size = 1
, _ne_parent = Nothing , _nre_list = MapTerm
, _ne_children = mSetFromList [ "proofs" ] , _nre_root = Nothing
, _nre_parent = Nothing
, _nre_children = mSetFromList [ "proofs" ] }
} }
sideEffectsElem :: NgramsElement sideEffectsElem :: NgramsElement
sideEffectsElem = NgramsElement { sideEffectsElem = NgramsElement {
_ne_ngrams = NgramsTerm {unNgramsTerm = "side effects"} _ne_ngrams = NgramsTerm {unNgramsTerm = "side effects"}
, _ne_size = 1
, _ne_list = StopTerm
, _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3, 4, 5, 6 ] , _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3, 4, 5, 6 ]
, _ne_root = Nothing , _ne_nre = NgramsRepoElement { _nre_size = 1
, _ne_parent = Nothing , _nre_list = StopTerm
, _ne_children = mSetFromList [ ] , _nre_root = Nothing
, _nre_parent = Nothing
, _nre_children = mSetFromList [ ] }
} }
ooElem :: NgramsElement ooElem :: NgramsElement
ooElem = NgramsElement { ooElem = NgramsElement {
_ne_ngrams = NgramsTerm {unNgramsTerm = "object oriented"} _ne_ngrams = NgramsTerm {unNgramsTerm = "object oriented"}
, _ne_size = 1
, _ne_list = StopTerm
, _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3, 4, 5 ] , _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3, 4, 5 ]
, _ne_root = Nothing , _ne_nre = NgramsRepoElement { _nre_size = 1
, _ne_parent = Nothing , _nre_list = StopTerm
, _ne_children = mSetFromList [ "null pointer exception" ] , _nre_root = Nothing
, _nre_parent = Nothing
, _nre_children = mSetFromList [ "null pointer exception" ] }
} }
javaElem :: NgramsElement javaElem :: NgramsElement
javaElem = NgramsElement { javaElem = NgramsElement {
_ne_ngrams = NgramsTerm {unNgramsTerm = "java"} _ne_ngrams = NgramsTerm {unNgramsTerm = "java"}
, _ne_size = 1
, _ne_list = StopTerm
, _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3 ] , _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3 ]
, _ne_root = Nothing , _ne_nre = NgramsRepoElement { _nre_size = 1
, _ne_parent = Nothing , _nre_list = StopTerm
, _ne_children = mSetFromList [ "JVM" ] , _nre_root = Nothing
, _nre_parent = Nothing
, _nre_children = mSetFromList [ "JVM" ] }
} }
pascalElem :: NgramsElement pascalElem :: NgramsElement
pascalElem = NgramsElement { pascalElem = NgramsElement {
_ne_ngrams = NgramsTerm {unNgramsTerm = "pascal"} _ne_ngrams = NgramsTerm {unNgramsTerm = "pascal"}
, _ne_size = 1
, _ne_list = StopTerm
, _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2 ] , _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2 ]
, _ne_root = Nothing , _ne_nre = NgramsRepoElement { _nre_size = 1
, _ne_parent = Nothing , _nre_list = StopTerm
, _ne_children = mSetFromList [ "turbo", "borland" ] , _nre_root = Nothing
, _nre_parent = Nothing
, _nre_children = mSetFromList [ "turbo", "borland" ] }
} }
haskellElem :: NgramsElement haskellElem :: NgramsElement
haskellElem = NgramsElement { haskellElem = NgramsElement {
_ne_ngrams = NgramsTerm {unNgramsTerm = "haskell"} _ne_ngrams = NgramsTerm {unNgramsTerm = "haskell"}
, _ne_size = 1
, _ne_list = CandidateTerm
, _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3, 4, 5, 6, 7, 8 ] , _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3, 4, 5, 6, 7, 8 ]
, _ne_root = Nothing , _ne_nre = NgramsRepoElement { _nre_size = 1
, _ne_parent = Nothing , _nre_list = CandidateTerm
, _ne_children = mSetFromList [ ] , _nre_root = Nothing
, _nre_parent = Nothing
, _nre_children = mSetFromList [ ] }
} }
concHaskellElem :: NgramsElement concHaskellElem :: NgramsElement
concHaskellElem = NgramsElement { concHaskellElem = NgramsElement {
_ne_ngrams = NgramsTerm {unNgramsTerm = "concurrent haskell"} _ne_ngrams = NgramsTerm {unNgramsTerm = "concurrent haskell"}
, _ne_size = 1
, _ne_list = CandidateTerm
, _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3, 4, 5 ] , _ne_occurrences = Set.fromList $ map UnsafeMkContextId [ 1, 2, 3, 4, 5 ]
, _ne_root = Nothing , _ne_nre = NgramsRepoElement { _nre_size = 1
, _ne_parent = Nothing , _nre_list = CandidateTerm
, _ne_children = mSetFromList [ "Simon Marlow" ] , _nre_root = Nothing
, _nre_parent = Nothing
, _nre_children = mSetFromList [ "Simon Marlow" ] }
} }
-- | A big (for the sake of the tests anyway) corpus which has -- | A big (for the sake of the tests anyway) corpus which has
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment