summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oeqa/runtime/cases/logrotate.py62
1 files changed, 44 insertions, 18 deletions
diff --git a/meta/lib/oeqa/runtime/cases/logrotate.py b/meta/lib/oeqa/runtime/cases/logrotate.py
index bfa57c534a..3938e91993 100644
--- a/meta/lib/oeqa/runtime/cases/logrotate.py
+++ b/meta/lib/oeqa/runtime/cases/logrotate.py
@@ -18,32 +18,58 @@ class LogrotateTest(OERuntimeTestCase):
18 @classmethod 18 @classmethod
19 def tearDownClass(cls): 19 def tearDownClass(cls):
20 cls.tc.target.run('mv -f $HOME/wtmp.oeqabak /etc/logrotate.d/wtmp && rm -rf $HOME/logrotate_dir') 20 cls.tc.target.run('mv -f $HOME/wtmp.oeqabak /etc/logrotate.d/wtmp && rm -rf $HOME/logrotate_dir')
21 cls.tc.target.run('rm -rf /var/log/logrotate_testfile && rm -rf /etc/logrotate.d/logrotate_testfile')
21 22
22 @OETestDepends(['ssh.SSHTest.test_ssh']) 23 @OETestDepends(['ssh.SSHTest.test_ssh'])
23 @OEHasPackage(['logrotate']) 24 @OEHasPackage(['logrotate'])
24 def test_1_logrotate_setup(self): 25 def test_logrotate_wtmp(self):
26
27 # /var/log/wtmp may not always exist initially, so use touch to ensure it is present
28 status, output = self.target.run('touch /var/log/wtmp')
29 msg = ('Could not create/update /var/log/wtmp with touch')
30 self.assertEqual(status, 0, msg = msg)
31
25 status, output = self.target.run('mkdir $HOME/logrotate_dir') 32 status, output = self.target.run('mkdir $HOME/logrotate_dir')
26 msg = 'Could not create logrotate_dir. Output: %s' % output 33 msg = ('Could not create logrotate_dir. Output: %s' % output)
34 self.assertEqual(status, 0, msg = msg)
35
36 status, output = self.target.run('echo "create \n olddir $HOME/logrotate_dir \n include /etc/logrotate.d/wtmp" > /tmp/logrotate-test.conf')
37 msg = ('Could not write to /tmp/logrotate-test.conf')
38 self.assertEqual(status, 0, msg = msg)
39
40 status, output = self.target.run('echo "/var/log/logrotate_test {\\n missingok \\n monthly \\n rotate 1" > /etc/logrotate.d/logrotate_test')
41 msg = ('Could not write to /etc/logrotate.d/logrotate_test')
42 self.assertEqual(status, 0, msg = msg)
43
44 # If logrotate fails to rotate the log, view the verbose output of logrotate to see what prevented it
45 _, logrotate_output = self.target.run('logrotate -vf /tmp/logrotate-test.conf')
46 status, _ = self.target.run('find $HOME/logrotate_dir -type f | grep wtmp.1')
47 msg = ("logrotate did not successfully rotate the wtmp log. Output from logrotate -vf: \n%s" % (logrotate_output))
48 self.assertEqual(status, 0, msg = msg)
49
50 @OETestDepends(['logrotate.LogrotateTest.test_logrotate_wtmp'])
51 def test_logrotate_newlog(self):
52
53 status, output = self.target.run('echo "oeqa logrotate test file" > /var/log/logrotate_testfile')
54 msg = ('Could not create logrotate test file in /var/log')
55 self.assertEqual(status, 0, msg = msg)
56
57 status, output = self.target.run('echo "/var/log/logrotate_testfile {\n missingok \n monthly \n rotate 1" > /etc/logrotate.d/logrotate_testfile')
58 msg = ('Could not write to /etc/logrotate.d/logrotate_testfile')
27 self.assertEqual(status, 0, msg = msg) 59 self.assertEqual(status, 0, msg = msg)
28 60
29 cmd = ('sed -i "s#wtmp {#wtmp {\\n olddir $HOME/logrotate_dir#"' 61 status, output = self.target.run('echo "create \n olddir $HOME/logrotate_dir \n include /etc/logrotate.d/logrotate_testfile" > /tmp/logrotate-test2.conf')
30 ' /etc/logrotate.d/wtmp') 62 msg = ('Could not write to /tmp/logrotate_test2.conf')
31 status, output = self.target.run(cmd)
32 msg = ('Could not write to logrotate.d/wtmp file. Status and output: '
33 ' %s and %s' % (status, output))
34 self.assertEqual(status, 0, msg = msg) 63 self.assertEqual(status, 0, msg = msg)
35 64
36 @OETestDepends(['logrotate.LogrotateTest.test_1_logrotate_setup']) 65 status, output = self.target.run('find $HOME/logrotate_dir -type f | grep logrotate_testfile.1')
37 def test_2_logrotate(self): 66 msg = ('A rotated log for logrotate_testfile is already present in logrotate_dir')
38 status, output = self.target.run('echo "create \n include /etc/logrotate.d" > /tmp/logrotate-test.conf') 67 self.assertEqual(status, 1, msg = msg)
39 status, output = self.target.run('logrotate -f /tmp/logrotate-test.conf')
40 68
41 msg = ('logrotate service could not be reloaded. Status and output: ' 69 # If logrotate fails to rotate the log, view the verbose output of logrotate instead of just listing the files in olddir
42 '%s and %s' % (status, output)) 70 _, logrotate_output = self.target.run('logrotate -vf /tmp/logrotate-test2.conf')
71 status, _ = self.target.run('find $HOME/logrotate_dir -type f | grep logrotate_testfile.1')
72 msg = ('logrotate did not successfully rotate the logrotate_test log. Output from logrotate -vf: \n%s' % (logrotate_output))
43 self.assertEqual(status, 0, msg = msg) 73 self.assertEqual(status, 0, msg = msg)
44 74
45 _, output = self.target.run('ls -la $HOME/logrotate_dir/ | wc -l') 75
46 msg = ('new logfile could not be created. List of files within log '
47 'directory: %s' % (
48 self.target.run('ls -la $HOME/logrotate_dir')[1]))
49 self.assertTrue(int(output)>=3, msg = msg)