Test to read XML logs
authorArjen Baart <arjen@andromeda.nl>
Fri, 25 Sep 2020 17:12:57 +0000 (19:12 +0200)
committerArjen Baart <arjen@andromeda.nl>
Fri, 25 Sep 2020 17:12:57 +0000 (19:12 +0200)
test/log.xml [new file with mode: 0644]
test/log_bad.xml [new file with mode: 0644]
test/read_xml_log [new file with mode: 0755]

diff --git a/test/log.xml b/test/log.xml
new file mode 100644 (file)
index 0000000..23e66a9
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+  <gcmt:message xmlns:gcmt='http://gnucomo.org/transport/'>
+     <gcmt:header>
+        <gcmt:messagetype>system log</gcmt:messagetype>
+        <gcmt:hostname>kithira.andromeda.nl</gcmt:hostname>
+        <gcmt:time>2003-04-17 14:40:46.312895+01:00</gcmt:time>
+     </gcmt:header>
+     <gcmt:data>
+       <gcmt:log>
+        <gcmt:raw>Apr 13 04:31:03 schiza kernel: attempt to access beyond end of device</gcmt:raw>
+        <gcmt:cooked>
+           <timestamp>2003-04-13 04:31:03+02:00</timestamp>
+           <gcmt:hostname>schiza</gcmt:hostname>
+           <gcmt:service>kernel</gcmt:service>
+           <raw>Apr 13 04:31:03 schiza kernel: 03:05: rw=0, want=1061109568, limit=2522173</raw>
+        </gcmt:cooked>
+        <gcmt:cooked>
+           <timestamp>2003-04-13 16:57:15+02:00</timestamp>
+           <gcmt:hostname>kithira</gcmt:hostname>
+           <gcmt:service>sshd</gcmt:service>
+           <gcmt:raw>Apr 13 16:57:15 kithira sshd(pam_unix)[11816]: session opened for user arjen by (uid=0)</gcmt:raw>
+        </gcmt:cooked>
+       </gcmt:log>
+     </gcmt:data>
+  </gcmt:message>
+
diff --git a/test/log_bad.xml b/test/log_bad.xml
new file mode 100644 (file)
index 0000000..7c9c0cf
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version='1.0'?>
+  <gcmt:message xmlns:gcmt='http://gnucomo.org/transport/'>
+     <gcmt:header>
+        <gcmt:messagetype>system log</gcmt:messagetype>
+        <gcmt:hostname>kithira.andromeda.nl</gcmt:hostname>
+        <gcmt:time>2003-04-17 14:40:46.312895+01:00</gcmt:time>
+     </gcmt:header>
+     <gcmt:data>
+       <gcmt:log>
+        <gcmt:raw>Apr 13 04:31:03 schiza kernel: attempt to access beyond end of device</gcmt:raw>
+        <gcmt:cooked>
+           <timestamp>2003-04-13 04:31:03+02:00</timestamp>
+           <gcmt:hostname>schiza</gcmt:hostname>
+           <gcmt:service>kernel</gcmt:service>
+           <raw>Apr 13 04:31:03 schiza kernel: 03:05: rw=0, want=1061109568, limit=2522173</raw>
+        </gcmt:cooked>
+        <gcmt:cooked>
+           <timestamp>2003-04-13 16:57:15+02:00</timestamp>
+           <gcmt:hostname>kithira</gcmt:hostname>
+           <gcmt:service>sshd</gcmt:service>
+           <gcmt:raw>Apr 13 16:57:15 kithira sshd(pam_unix)[11816]: session opened for user arjen by (uid=0)</gcmt:raw>
+        </gcmt:cooked>
+<!-- test for XML parse error
+       </gcmt:log>
+-->
+     </gcmt:data>
+  </gcmt:message>
+
diff --git a/test/read_xml_log b/test/read_xml_log
new file mode 100755 (executable)
index 0000000..94dedbb
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+#
+#  Create an object 'kithira.andromeda.nl' in the database and
+#  parse a piece of a XML file.
+
+rm -f gcm_input.log
+
+createdb gnucomo_test
+result=1
+
+if psql gnucomo_test -q <../src/database/create.sql >/dev/null
+then
+   psql gnucomo_test -q -c "insert into object (objectname) values ('kithira.andromeda.nl')"
+
+   # read logs from an XML file. 2 log entries are expected
+   echo "Read a good XML file"
+   ../src/gcm_input/gcm_input -v -c gnucomo_test <log.xml
+   NR_LOGS=`psql gnucomo_test -q -t -c "select count(*) from log"`
+   echo $NR_LOGS log entries in the datebase
+
+   # read a bad XML file, resulting in a parse error
+   psql gnucomo_test -q -t -c "delete from log"
+   echo "Read a bad XML file"
+   ../src/gcm_input/gcm_input -v -c gnucomo_test <log_bad.xml
+   result=$?
+   echo "gcm_input returned $result"
+
+   if [[ $result -eq 1 ]]
+   then
+      # check if nothing was stored in the (existing) database
+      NR_LOGS=`psql gnucomo_test -q -t -c "select count(*) from log"`
+      if [[ $NR_LOGS -eq 0 ]]
+      then
+         echo "No log entries in database"
+         result=0
+      fi
+      # check if the saved XML file exists
+      SAVEDFILE=`grep 'XML content stored' gcm_input.log |cut -d ' ' -f 12`
+      echo "Saved file is $SAVEDFILE"
+      if [[ ! -e $SAVEDFILE ]]
+      then
+         echo $SAVEDFILE does not exist.
+         result=2
+      fi
+      rm $SAVEDFILE   # cleanup
+   else
+      echo "gcm_input did not return an error"
+      result=1
+   fi
+
+   psql gnucomo_test -f ../src/database/destroy.sql -q
+else
+   echo Can not create test database
+   result=1
+fi
+
+dropdb gnucomo_test
+exit $result