summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oeqa/runtime/cases/oe_syslog.py68
1 files changed, 59 insertions, 9 deletions
diff --git a/meta/lib/oeqa/runtime/cases/oe_syslog.py b/meta/lib/oeqa/runtime/cases/oe_syslog.py
index 0f5f9f43ca..0f79e5a0f3 100644
--- a/meta/lib/oeqa/runtime/cases/oe_syslog.py
+++ b/meta/lib/oeqa/runtime/cases/oe_syslog.py
@@ -6,6 +6,7 @@ from oeqa.runtime.case import OERuntimeTestCase
6from oeqa.core.decorator.depends import OETestDepends 6from oeqa.core.decorator.depends import OETestDepends
7from oeqa.core.decorator.data import skipIfDataVar 7from oeqa.core.decorator.data import skipIfDataVar
8from oeqa.runtime.decorator.package import OEHasPackage 8from oeqa.runtime.decorator.package import OEHasPackage
9import time
9 10
10class SyslogTest(OERuntimeTestCase): 11class SyslogTest(OERuntimeTestCase):
11 12
@@ -21,6 +22,53 @@ class SyslogTest(OERuntimeTestCase):
21 22
22class SyslogTestConfig(OERuntimeTestCase): 23class SyslogTestConfig(OERuntimeTestCase):
23 24
25 def verif_not_running(self, pids):
26 for pid in pids:
27 status, err_output = self.target.run('kill -0 %s' %pid)
28 if not status:
29 self.logger.debug("previous %s is still running" %pid)
30 return 1
31
32 def verify_running(self, names):
33 pids = []
34 for name in names:
35 status, pid = self.target.run('pidof %s' %name)
36 if status:
37 self.logger.debug("%s is not running" %name)
38 return 1, pids
39 pids.append(pid)
40 return 0, pids
41
42
43 def restart_sanity(self, names, restart_cmd):
44 status, original_pids = self.verify_running(names)
45 if status:
46 return 1
47
48 status, output = self.target.run(restart_cmd)
49
50 # Always check for an error, most likely a race between shutting down and starting up
51 timeout = time.time() + 30
52
53 while time.time() < timeout:
54 # Verify the previous ones are no longer running
55 status = self.verif_not_running(original_pids)
56 if status:
57 continue
58
59 status, pids = self.verify_running(names)
60 if status:
61 continue
62
63 # Everything is fine now, so exit to continue the test
64 status = 0
65 break
66
67 msg = ('Could not restart %s service. Status and output: %s and %s'
68 %(names, status, output))
69 self.assertEqual(status, 0, msg)
70
71
24 @OETestDepends(['oe_syslog.SyslogTest.test_syslog_running']) 72 @OETestDepends(['oe_syslog.SyslogTest.test_syslog_running'])
25 def test_syslog_logger(self): 73 def test_syslog_logger(self):
26 status, output = self.target.run('logger foobar') 74 status, output = self.target.run('logger foobar')
@@ -37,12 +85,16 @@ class SyslogTestConfig(OERuntimeTestCase):
37 ' Output: %s ' % output) 85 ' Output: %s ' % output)
38 self.assertEqual(status, 0, msg=msg) 86 self.assertEqual(status, 0, msg=msg)
39 87
88
40 @OETestDepends(['oe_syslog.SyslogTest.test_syslog_running']) 89 @OETestDepends(['oe_syslog.SyslogTest.test_syslog_running'])
41 def test_syslog_restart(self): 90 def test_syslog_restart(self):
42 if "systemd" != self.tc.td.get("VIRTUAL-RUNTIME_init_manager", ""): 91 status = self.restart_sanity(['systemd-journald'], 'systemctl restart syslog.service')
43 (_, _) = self.target.run('/etc/init.d/syslog restart') 92 if status:
44 else: 93 status = self.restart_sanity(['rsyslogd'], '/etc/init.d/rsyslog restart')
45 (_, _) = self.target.run('systemctl restart syslog.service') 94 if status:
95 status = self.restart_sanity(['syslogd', 'klogd'], '/etc/init.d/syslog restart')
96 else:
97 self.logger.info("No syslog found to restart, ignoring")
46 98
47 99
48 @OETestDepends(['oe_syslog.SyslogTestConfig.test_syslog_logger']) 100 @OETestDepends(['oe_syslog.SyslogTestConfig.test_syslog_logger'])
@@ -52,10 +104,8 @@ class SyslogTestConfig(OERuntimeTestCase):
52 def test_syslog_startup_config(self): 104 def test_syslog_startup_config(self):
53 cmd = 'echo "LOGFILE=/var/log/test" >> /etc/syslog-startup.conf' 105 cmd = 'echo "LOGFILE=/var/log/test" >> /etc/syslog-startup.conf'
54 self.target.run(cmd) 106 self.target.run(cmd)
55 status, output = self.target.run('/etc/init.d/syslog restart') 107
56 msg = ('Could not restart syslog service. Status and output:' 108 self.test_syslog_restart()
57 ' %s and %s' % (status,output))
58 self.assertEqual(status, 0, msg)
59 109
60 cmd = 'logger foobar && grep foobar /var/log/test' 110 cmd = 'logger foobar && grep foobar /var/log/test'
61 status,output = self.target.run(cmd) 111 status,output = self.target.run(cmd)
@@ -64,4 +114,4 @@ class SyslogTestConfig(OERuntimeTestCase):
64 114
65 cmd = "sed -i 's#LOGFILE=/var/log/test##' /etc/syslog-startup.conf" 115 cmd = "sed -i 's#LOGFILE=/var/log/test##' /etc/syslog-startup.conf"
66 self.target.run(cmd) 116 self.target.run(cmd)
67 self.target.run('/etc/init.d/syslog restart') 117 self.test_syslog_restart()