hnormalise 0.4.1.0 → 0.4.1.1
raw patch · 4 files changed
+14/−12 lines, 4 files
Files
- hnormalise.cabal +1/−1
- src/HNormalise/Torque/Parser.hs +7/−5
- test/HNormalise/ParserSpec.hs +1/−1
- test/HNormalise/Torque/ParserSpec.hs +5/−5
hnormalise.cabal view
@@ -1,5 +1,5 @@ name: hnormalise-version: 0.4.1.0+version: 0.4.1.1 synopsis: Log message normalisation tool producing structured JSON messages description: Log message normalisation tool producing structured JSON messages homepage: https://github.com/itkovian/hnormalise#readme
src/HNormalise/Torque/Parser.hs view
@@ -192,11 +192,13 @@ -- | 'parseTorqueHostList' parses a '+' separated list of hostname/coreranges -- A core range can be of the form 1,3,5-7,9 parseTorqueHostList :: Parser [TorqueExecHost]-parseTorqueHostList = flip sepBy (char '+') $ do- fqdn <- Data.Attoparsec.Text.takeWhile (/= '/')- char '/'- cores <- parseCores- return $ TorqueExecHost { name = fqdn, cores = cores}+parseTorqueHostList = do+ string "exec_host="+ flip sepBy (char '+') $ do+ fqdn <- Data.Attoparsec.Text.takeWhile (/= '/')+ char '/'+ cores <- parseCores+ return $ TorqueExecHost { name = fqdn, cores = cores} where parseCores :: Parser [Int] parseCores = do cores <- flip sepBy1' (char ',') $ try parseRange <|> parseSingle
test/HNormalise/ParserSpec.hs view
@@ -64,7 +64,7 @@ it "imfile torque input" $ do let s = "<133>1 2017-05-24T18:01:53.367275+02:00 test2802 torque - torque: 01/25/2017 15:04:10;E;0.master23.banette.gent.vsc;user=vsc40075 group=vsc40075 jobname=STDIN queue=short ctime=1485350399 qtime=1485350399 etime=1485350399 start=1485350407 owner=vsc40075@gligar03.gligar.gent.vsc exec_host=node2801.banette.gent.vsc/0 Resource_List.walltime=01:00:00 Resource_List.vmem=4224531456b Resource_List.nodect=1 Resource_List.nodes=1 Resource_List.neednodes=1 Resource_List.nice=0 session=22598 total_execution_slots=1 unique_node_count=1 end=1485353050 Exit_status=265 resources_used.cput=0 resources_used.energy_used=0 resources_used.mem=31032kb resources_used.vmem=1541612kb resources_used.walltime=00:44:04" :: Text- s ~> (parseRsyslogLogstashString Nothing) `shouldParse` "{\"message\":\"torque: 01/25/2017 15:04:10;E;0.master23.banette.gent.vsc;user=vsc40075 group=vsc40075 jobname=STDIN queue=short ctime=1485350399 qtime=1485350399 etime=1485350399 start=1485350407 owner=vsc40075@gligar03.gligar.gent.vsc exec_host=node2801.banette.gent.vsc/0 Resource_List.walltime=01:00:00 Resource_List.vmem=4224531456b Resource_List.nodect=1 Resource_List.nodes=1 Resource_List.neednodes=1 Resource_List.nice=0 session=22598 total_execution_slots=1 unique_node_count=1 end=1485353050 Exit_status=265 resources_used.cput=0 resources_used.energy_used=0 resources_used.mem=31032kb resources_used.vmem=1541612kb resources_used.walltime=00:44:04\",\"syslog_abspri\":133,\"syslog_version\":1,\"program\":\"torque\",\"@source_host\":\"test2802\",\"torque\":{\"name\":{\"number\":0,\"array_id\":null,\"master\":\"master23\",\"cluster\":\"banette\"},\"user\":\"vsc40075\",\"group\":\"vsc40075\",\"jobname\":\"STDIN\",\"queue\":\"short\",\"startCount\":null,\"owner\":\"vsc40075@gligar03.gligar.gent.vsc\",\"session\":22598,\"times\":{\"ctime\":1485350399,\"qtime\":1485350399,\"etime\":1485350399,\"startTime\":1485350407,\"endTime\":1485353050},\"execHost\":[{\"name\":\"exec_host=node2801.banette.gent.vsc\",\"cores\":[0]}],\"resourceRequest\":{\"mem\":null,\"advres\":null,\"naccesspolicy\":null,\"ncpus\":null,\"neednodes\":{\"number\":1,\"ppn\":null},\"nice\":0,\"nodeCount\":1,\"nodes\":{\"number\":1,\"ppn\":null},\"select\":null,\"qos\":null,\"pmem\":null,\"vmem\":4224531456,\"pvmem\":null,\"walltime\":3600},\"resourceUsage\":{\"cputime\":0,\"energy\":0,\"mem\":31776768,\"vmem\":1578610688,\"walltime\":2644},\"totalExecutionSlots\":1,\"uniqueNodeCount\":1,\"exitStatus\":265}}"+ s ~> (parseRsyslogLogstashString Nothing) `shouldParse` "{\"message\":\"torque: 01/25/2017 15:04:10;E;0.master23.banette.gent.vsc;user=vsc40075 group=vsc40075 jobname=STDIN queue=short ctime=1485350399 qtime=1485350399 etime=1485350399 start=1485350407 owner=vsc40075@gligar03.gligar.gent.vsc exec_host=node2801.banette.gent.vsc/0 Resource_List.walltime=01:00:00 Resource_List.vmem=4224531456b Resource_List.nodect=1 Resource_List.nodes=1 Resource_List.neednodes=1 Resource_List.nice=0 session=22598 total_execution_slots=1 unique_node_count=1 end=1485353050 Exit_status=265 resources_used.cput=0 resources_used.energy_used=0 resources_used.mem=31032kb resources_used.vmem=1541612kb resources_used.walltime=00:44:04\",\"syslog_abspri\":133,\"syslog_version\":1,\"program\":\"torque\",\"@source_host\":\"test2802\",\"torque\":{\"name\":{\"number\":0,\"array_id\":null,\"master\":\"master23\",\"cluster\":\"banette\"},\"user\":\"vsc40075\",\"group\":\"vsc40075\",\"jobname\":\"STDIN\",\"queue\":\"short\",\"startCount\":null,\"owner\":\"vsc40075@gligar03.gligar.gent.vsc\",\"session\":22598,\"times\":{\"ctime\":1485350399,\"qtime\":1485350399,\"etime\":1485350399,\"startTime\":1485350407,\"endTime\":1485353050},\"execHost\":[{\"name\":\"node2801.banette.gent.vsc\",\"cores\":[0]}],\"resourceRequest\":{\"mem\":null,\"advres\":null,\"naccesspolicy\":null,\"ncpus\":null,\"neednodes\":{\"number\":1,\"ppn\":null},\"nice\":0,\"nodeCount\":1,\"nodes\":{\"number\":1,\"ppn\":null},\"select\":null,\"qos\":null,\"pmem\":null,\"vmem\":4224531456,\"pvmem\":null,\"walltime\":3600},\"resourceUsage\":{\"cputime\":0,\"energy\":0,\"mem\":31776768,\"vmem\":1578610688,\"walltime\":2644},\"totalExecutionSlots\":1,\"uniqueNodeCount\":1,\"exitStatus\":265}}" it "snoopy with process ID" $ do let s = "<86>1 2017-05-29T16:40:48.275334+02:00 master23 snoopy[28949]: - snoopy[28949]:: [uid:992 username:nrpe sid:11542 tty:(none) cwd:/ filename:/usr/bin/which]: which python" :: Text
test/HNormalise/Torque/ParserSpec.hs view
@@ -236,25 +236,25 @@ describe "parseTorqueHostList" $ do it "parse comma separated list of single cores" $ do- let s = "node1001.mycluster.mydomain/1,3,5,7" :: Text+ let s = "exec_host=node1001.mycluster.mydomain/1,3,5,7" :: Text s ~> parseTorqueHostList `shouldParse` [ TorqueExecHost { name = "node1001.mycluster.mydomain" , cores = [1,3,5,7] }] it "parse comma separated list of core rangess" $ do- let s = "node1001.mycluster.mydomain/1-3,5-7" :: Text+ let s = "exec_host=node1001.mycluster.mydomain/1-3,5-7" :: Text s ~> parseTorqueHostList `shouldParse` [ TorqueExecHost { name = "node1001.mycluster.mydomain" , cores = [1,2,3,5,6,7] }] it "parse comma separated list of single cores and core ranges" $ do- let s = "node1001.mycluster.mydomain/1,3,5-7,9,12-14" :: Text+ let s = "exec_host=node1001.mycluster.mydomain/1,3,5-7,9,12-14" :: Text s ~> parseTorqueHostList `shouldParse` [ TorqueExecHost { name = "node1001.mycluster.mydomain" , cores = [1,3,5,6,7,9,12,13,14] }] it "parse multiple nodes with one comma separated list of single cores and one core range" $ do- let s = "node1001.mycluster.mydomain/1,3,5,7+node1002.mycluster.mydomain/4-6" :: Text+ let s = "exec_host=node1001.mycluster.mydomain/1,3,5,7+node1002.mycluster.mydomain/4-6" :: Text s ~> parseTorqueHostList `shouldParse` [ TorqueExecHost { name = "node1001.mycluster.mydomain"@@ -287,7 +287,7 @@ } , execHost = [ TorqueExecHost- { name = "exec_host=node2801.banette.gent.vsc"+ { name = "node2801.banette.gent.vsc" , cores = [0,1] } , TorqueExecHost