net-spider-rpl-cli 0.1.1.1 → 0.1.2.0
raw patch · 5 files changed
+42/−17 lines, 5 filesdep ~net-spider-cliPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: net-spider-cli
API changes (from Hackage documentation)
- NetSpider.RPL.CLI: CmdCIS :: InputParams -> Query IPv6ID () () () -> Cmd
+ NetSpider.RPL.CLI: CmdCIS :: InputParams -> CLISnapshotQuery IPv6ID -> Cmd
- NetSpider.RPL.CLI: CmdSnapshot :: Query IPv6ID () () () -> Cmd
+ NetSpider.RPL.CLI: CmdSnapshot :: CLISnapshotQuery IPv6ID -> Cmd
Files
- ChangeLog.md +5/−0
- README.md +1/−1
- net-spider-rpl-cli.cabal +4/−4
- src/NetSpider/RPL/CLI.hs +27/−9
- test/NetSpider/RPL/CLISpec.hs +5/−3
ChangeLog.md view
@@ -1,5 +1,10 @@ # Revision history for net-spider-rpl-cli +## 0.1.2.0 -- 2019-10-13++* Add `--duration` option, thanks to `net-spider-cli-0.2.0.0`.+* Enable `-threaded` to build the executable.+ ## 0.1.1.1 -- 2019-10-04 * Confirm test with `net-spider-rpl-0.3.0.0`, `ip-1.5.1` and `ip-1.6.0`.
README.md view
@@ -16,7 +16,7 @@ 3. Input logs about RPL networks. - $ ./run-net-spider.sh input < syslog+ $ ./run-net-spider.sh input - < syslog 4. Get a snapshot graph of the RPL network in GraphML format.
net-spider-rpl-cli.cabal view
@@ -1,5 +1,5 @@ name: net-spider-rpl-cli-version: 0.1.1.1+version: 0.1.2.0 author: Toshio Ito <debug.ito@gmail.com> maintainer: Toshio Ito <debug.ito@gmail.com> license: BSD3@@ -29,7 +29,7 @@ build-depends: base >=4.11.1.0 && <4.13, net-spider >=0.3.2.0 && <0.4, net-spider-rpl >=0.2.2.0 && <0.4,- net-spider-cli >=0.1.0.1 && <0.2,+ net-spider-cli >=0.2.0.0 && <0.3, text >=1.2.2.2 && <1.3, unordered-containers >=0.2.8 && <0.3, greskell >=0.2.3 && <0.3,@@ -45,7 +45,7 @@ default-language: Haskell2010 hs-source-dirs: app main-is: Main.hs- ghc-options: -Wall -fno-warn-unused-imports+ ghc-options: -Wall -fno-warn-unused-imports -threaded -- other-modules: -- default-extensions: -- other-extensions: @@ -62,7 +62,7 @@ -- default-extensions: -- other-extensions: other-modules: NetSpider.RPL.CLISpec- build-depends: base, net-spider-rpl-cli, net-spider, net-spider-rpl, optparse-applicative, + build-depends: base, net-spider-rpl-cli, net-spider, net-spider-rpl, optparse-applicative, net-spider-cli, hspec >=2.5.5, ip >=1.3.0 && <1.7
src/NetSpider/RPL/CLI.hs view
@@ -28,6 +28,7 @@ import Data.Time (getZonedTime, ZonedTime(zonedTimeToLocalTime), LocalTime(localDay), toGregorian) import NetSpider.GraphML.Writer (writeGraphML) import qualified NetSpider.CLI.Snapshot as CLIS+import NetSpider.CLI.Snapshot (CLISnapshotQuery) import NetSpider.CLI.Spider (SpiderConfig, parserSpiderConfig) import NetSpider.Input ( defConfig, logThreshold,@@ -63,9 +64,7 @@ main :: IO () main = do- cli_conf <- Opt.execParser $ Opt.info (Opt.helper <*> optionParser) $ mconcat $- [ Opt.progDesc "net-spider front-end for RPL data model."- ]+ cli_conf <- Opt.execParser optionParserInfo let sconf = cliSpiderConfig cli_conf cmd = cliCmd cli_conf case cmd of@@ -100,7 +99,13 @@ putNodes (castSpiderConfig sconf) dao_nodes return (dio_nodes, dao_nodes) - doSnapshot sconf query = do+ makeQuery cli_query = do+ let base_q :: Query IPv6ID () () ()+ base_q = defQuery []+ returnWithHelp $ CLIS.makeSnapshotQuery base_q cli_query++ doSnapshot sconf cli_query = doSnapshot' sconf =<< makeQuery cli_query+ doSnapshot' sconf query = do let start_node_num = length $ startsFrom query hPutStrLn stderr ("---- Query starts from " ++ (show start_node_num) ++ " nodes") when (start_node_num == 0) $ do@@ -121,7 +126,8 @@ hPutStrLn stderr ("---- Format DIO+DAO SnapshotGraph into GraphML") TLIO.putStr $ writeGraphML com_graph - doCIS sconf input_params query_base = do+ doCIS sconf input_params cli_query = do+ query_base <- makeQuery cli_query doClear sconf (dio_nodes, dao_nodes) <- doInput sconf input_params -- Make a query from the FoundNodes just loaded.@@ -129,7 +135,7 @@ ++ (map (ipv6Only . subjectNode) dio_nodes) q = query_base { startsFrom = starts }- doSnapshot sconf q+ doSnapshot' sconf q isVerboseDebug sconf = logThreshold sconf <= LevelDebug @@ -166,9 +172,22 @@ -- | CLI subcommands and their arguments. data Cmd = CmdClear -- ^ Clear the entire database. | CmdInput InputParams -- ^ Input FoundNodes to the database- | CmdSnapshot (Query IPv6ID () () ()) -- ^ Get a snapshot graph.- | CmdCIS InputParams (Query IPv6ID () () ()) -- ^ Clear + Input + Snapshot+ | CmdSnapshot (CLISnapshotQuery IPv6ID) -- ^ Get a snapshot graph.+ | CmdCIS InputParams (CLISnapshotQuery IPv6ID) -- ^ Clear + Input + Snapshot +returnWithHelp :: Either String a -> IO a+returnWithHelp (Right a) = return a+returnWithHelp (Left e) = do+ hPutStrLn stderr ("Error: " <> e)+ void $ Opt.handleParseResult $ Opt.execParserPure Opt.defaultPrefs optionParserInfo ["--help"]+ error "This should not happen."++optionParserInfo :: Opt.ParserInfo (CLIConfig n na fla)+optionParserInfo =+ Opt.info (Opt.helper <*> optionParser) $ mconcat $+ [ Opt.progDesc "net-spider front-end for RPL data model."+ ]+ optionParser :: Opt.Parser (CLIConfig n na fla) optionParser = CLIConfig <$> parserSpiderConfig <*> parserCommands where@@ -195,7 +214,6 @@ CLIS.parserSnapshotQuery $ CLIS.SnapshotConfig { CLIS.nodeIDReader = ipv6Reader,- CLIS.basisSnapshotQuery = defQuery [], CLIS.startsFromAsArguments = parse_arg } parserFilter = Opt.option readerFilter $ mconcat
test/NetSpider/RPL/CLISpec.hs view
@@ -3,7 +3,8 @@ import Data.Monoid (mempty) import qualified Options.Applicative as Opt import Net.IPv6 (ipv6)-import NetSpider.Query (startsFrom)+import NetSpider.CLI.Snapshot (makeSnapshotQuery)+import NetSpider.Query (startsFrom, defQuery) import NetSpider.RPL.FindingID (IPv6ID(..)) import Test.Hspec @@ -27,8 +28,9 @@ specify "--starts-from" $ do let parse_result = runParser optionParser ["snapshot", "-s", "fd00::212:4b00:13a4:c554"] case parse_result of- Right (CLIConfig _ (CmdSnapshot got_q)) ->- startsFrom got_q `shouldBe` [IPv6ID $ ipv6 0xfd00 0 0 0 0x0212 0x4b00 0x13a4 0xc554]+ Right (CLIConfig _ (CmdSnapshot got_cq)) -> do+ let got_s = fmap startsFrom $ makeSnapshotQuery (defQuery []) got_cq+ got_s `shouldBe` Right [IPv6ID $ ipv6 0xfd00 0 0 0 0x0212 0x4b00 0x13a4 0xc554] Right _ -> expectationFailure ("Unexpected CLIConfig obtained.") Left err ->