#! /bin/bash lnav_test="${top_builddir}/src/lnav-test" run_test ${lnav_test} -n \ -c ';select log_time from access_log where log_line > 100000' \ -c ':switch-to-view db' \ ${test_dir}/logfile_access_log.0 check_output "out-of-range query failed?" < -100000' \ ${test_dir}/logfile_access_log.0 check_output "out-of-range query failed?" < -10000' \ ${test_dir}/logfile_access_log.0 check_output "out-of-range query failed?" <= 0' \ -c ':switch-to-view db' \ ${test_dir}/logfile_access_log.0 check_output "range query failed?" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,middle,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,middle,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ";update access_log set log_part = 'middle' where log_line = 1" \ -c ";update access_log set log_part = NULL where log_line = 1" \ -c ';select * from access_log' \ -c ':write-csv-to -' \ ${test_dir}/logfile_access_log.0 check_output "setting log_part is not working" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ";update access_log set log_part = 'middle' where log_line = 1" \ -c ";update access_log set log_part = NULL where log_line = 2" \ -c ';select * from access_log' \ -c ':write-csv-to -' \ ${test_dir}/logfile_access_log.0 check_output "setting log_part is not working" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,middle,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,middle,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -I "${top_srcdir}/test" \ -c ";select * from web_status" \ -c ':write-csv-to -' \ ${test_dir}/logfile_access_log.0 check_output "access_log table is not working" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ";select * from access_log where log_level >= 'warning'" \ -c ':write-csv-to -' \ ${test_dir}/logfile_access_log.0 check_output "loglevel collator is not working" <,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 EOF # XXX The timestamp on the file is used to determine the year for syslog files. touch -t 201311030923 ${test_dir}/logfile_syslog.0 run_test ${lnav_test} -n \ -c ";select * from syslog_log" \ -c ':write-csv-to -' \ ${test_dir}/logfile_syslog.0 check_output "syslog_log table is not working" <,2013-11-03 09:23:38.000,0,error,0,veridian,7998,automount 1,,2013-11-03 09:23:38.000,0,info,0,veridian,16442,automount 2,,2013-11-03 09:23:38.000,0,error,0,veridian,7999,automount 3,,2013-11-03 09:47:02.000,1404000,info,0,veridian,,sudo EOF run_test ${lnav_test} -n \ -c ";select * from syslog_log where log_time >= datetime('2013-11-03T09:47:02.000')" \ -c ':write-csv-to -' \ ${test_dir}/logfile_syslog.0 check_output "log_time collation is wrong" <,2013-11-03 09:47:02.000,1404000,info,0,veridian,,sudo EOF run_test ${lnav_test} -n \ -c ':filter-in sudo' \ -c ";select * from logline" \ -c ':write-csv-to -' \ ${test_dir}/logfile_syslog.0 check_output "logline table is not working" <,2013-11-03 09:47:02.000,0,info,0,veridian,,sudo,0,timstack,pts/6,/auto/wstimstack/rpms/lbuild/test,root,/usr/bin/tail /var/log/messages EOF run_test ${lnav_test} -n \ -c ':goto 1' \ -c ";select * from logline" \ -c ':write-csv-to -' \ ${test_dir}/logfile_syslog.1 check_output "logline table is not working" <,2006-12-03 09:23:38.000,0,info,0,veridian,16442,automount,0,/auto/opt EOF run_test ${lnav_test} -n \ -c ";update access_log set log_mark = 1 where sc_bytes > 60000" \ -c ':write-to -' \ ${test_dir}/logfile_access_log.0 check_output "setting log_mark is not working" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,middle,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,middle,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ":goto 1" \ -c ":partition-name middle" \ -c ":clear-partition" \ -c ";select * from access_log" \ -c ":write-csv-to -" \ ${test_dir}/logfile_access_log.0 check_output "clear-partition does not work" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ":goto 1" \ -c ":partition-name middle" \ -c ":goto 2" \ -c ":clear-partition" \ -c ";select * from access_log" \ -c ":write-csv-to -" \ ${test_dir}/logfile_access_log.0 check_output "clear-partition does not work when in the middle of a part" <,2009-07-20 22:59:26.000,0,info,0,192.168.202.254,GET,-,,/vmw/cgi/tramp,gPXE/0.9.7,-,HTTP/1.0,134,200 1,,2009-07-20 22:59:29.000,3000,error,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkboot.gz,gPXE/0.9.7,-,HTTP/1.0,46210,404 2,,2009-07-20 22:59:29.000,0,info,0,192.168.202.254,GET,-,,/vmw/vSphere/default/vmkernel.gz,gPXE/0.9.7,-,HTTP/1.0,78929,200 EOF run_test ${lnav_test} -n \ -c ";SELECT * FROM openam_log" \ -c ":write-json-to -" \ ${test_dir}/logfile_openam.0 check_output "" <http://openam.vagrant.dev/openam\\\\n\\\\n\\\\n\\\\nhttp://openam.vagrant.dev/openam\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n4uSmVzjovUdQd3px/RcnoxQBsqE=\\\\n\\\\n\\\\n\\\\nhm/grge36uA6j1OWif2bTcvVTwESjmuJa27NxepW0AiV5YlcsHDl7RAIk6k/CjsSero3bxGbm56m\\\\nYncOEi9F1Tu7dS0bfx+vhm/kKTPgwZctf4GWn4qQwP+KeoZywbNj9ShsYJ+zPKzXwN4xBSuPjMxP\\\\nNf5szzjEWpOndQO/uDs=\\\\n\\\\n\\\\n\\\\n\\\\nMIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh\\\\nbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w\\\\nZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw\\\\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK\\\\nBgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B\\\\nAQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of+\\\\nRkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY\\\\nJs0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U\\\\nQzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA\\\\ncGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC\\\\n/FfwWigmrW0Y0Q==\\\\n\\\\n\\\\n\\\\n\\\\nuser@example.com\\\\n\\\\n\\\\n\\\\nhttp://localhost:8086\\\\n\\\\n\\\\nurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", "domain": "dc=openam", "hostname": "192.168.33.1\t", "ipaddr": "Not Available", "loggedby": "cn=dsameuser,ou=DSAME Users,dc=openam", "loginid": "id=openamuser,ou=user,dc=openam", "messageid": "SAML2-37", "modulename": "SAML2.access", "nameid": "user@example.com" }, { "log_line": 1, "log_part": null, "log_time": "2014-06-15 01:04:52.000", "log_idle_msecs": 0, "log_level": "trace", "log_mark": 0, "contextid": "ec5708a7f199678a01", "data": "vagrant|/", "domain": "dc=openam", "hostname": "127.0.1.1\t", "ipaddr": "Not Available", "loggedby": "cn=dsameuser,ou=DSAME Users,dc=openam", "loginid": "cn=dsameuser,ou=DSAME Users,dc=openam", "messageid": "COT-22", "modulename": "COT.access", "nameid": "Not Available" } ] EOF run_test ${lnav_test} -d "/tmp/lnav.err" -n \ -c ";select log_line, log_msg_instance, col_0 from logline" \ ${test_dir}/logfile_for_join.0 check_output "log msg instance is not working" < 4" \ ${test_dir}/logfile_for_join.0 check_output "log msg instance is not working" < 2016-11-03 09:23:38.000 0 error 0 veridian 7998 automount 1 2016-11-03 09:23:38.000 0 info 0 veridian 16442 automount 2 2016-11-03 09:23:38.000 0 error 0 veridian 7999 automount EOF cat ${test_dir}/logfile_syslog.0 | run_test ${lnav_test} -n \ -c ";select * from syslog_log where log_procname = 'sudo'" check_output "single result is not working?" < 2016-11-03 09:47:02.000 1404000 info 0 veridian sudo EOF # Create a dummy database for the next couple of tests to consume. touch empty run_test ${lnav_test} -n \ -c ";ATTACH DATABASE 'simple-db.db' as 'db'" \ -c ";CREATE TABLE IF NOT EXISTS db.person ( id integer PRIMARY KEY, first_name text, last_name, age integer )" \ -c ";INSERT INTO db.person(id, first_name, last_name, age) VALUES (0, 'Phil', 'Myman', 30)" \ -c ";INSERT INTO db.person(id, first_name, last_name, age) VALUES (1, 'Lem', 'Hewitt', 35)" \ -c ";DETACH DATABASE 'db'" \ empty check_output "Could not create db?" <,2015-03-24 14:02:50.000,6927348000,info,0,127.0.0.1,GET,,,/includes/js/combined-javascript.js,,-,HTTP/1.1,65508,200 EOF run_test ${lnav_test} -n \ -c ";select log_text from generic_log" \ -c ":write-json-to -" \ ${test_dir}/logfile_multiline.0 check_output "multiline data is not right?" < 0" \ -c ":write-csv-to -" \ ${test_dir}/logfile_multiline.0 check_output "create-search-table is not working with where clause?" <\w+), World!" \ -c ";select word, typeof(word) from search_test1" \ -c ":write-csv-to -" \ ${test_dir}/logfile_multiline.0 check_output "create-search-table is not working?" <\d+)" \ -c ";select typeof(ethnum) from search_test1" \ -c ":write-csv-to -" \ ${test_dir}/logfile_syslog.2 check_output "regex type guessing is not working?" < EOF