summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/cli/test_system_display.py135
1 files changed, 135 insertions, 0 deletions
diff --git a/scripts/cli/test_system_display.py b/scripts/cli/test_system_display.py
new file mode 100755
index 000000000..f9fb00aa5
--- /dev/null
+++ b/scripts/cli/test_system_display.py
@@ -0,0 +1,135 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2020 Francois Mertz fireboxled@gmail.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import re
+import os
+import unittest
+import configparser
+
+from psutil import process_iter
+from vyos.configsession import ConfigSession, ConfigSessionError
+from vyos.util import read_file
+
+base_path = ['system', 'display']
+
+"""
+ system display model (sdec|ezio)
+ system display show host (cpu|cpu-all|cpu-hist|disk|load-hist|memory|proc|uptime)
+ network interface <intName> alias <alias>
+ units (bps|Bps|pps)
+ clock (big|mini|date-time)
+ title <name>
+
+ system display time <s>
+ system display hello <string>
+ system display bye <string>
+ system display disabled
+"""
+
+class SystemDisplayTest(unittest.TestCase):
+ def setUp(self):
+ self.session = ConfigSession(os.getpid())
+
+ def tearDown(self):
+ self.session.delete(base_path)
+ self.session.commit()
+ del self.session
+
+ def test_system_display(self):
+ # configure some system display
+ self.session.set(base_path + ['hello', 'Welcome to VyOS'])
+ self.session.set(base_path + ['bye', 'Bye from VyOS'])
+ self.session.set(base_path + ['time', '30'])
+
+ # check validate() - a model and a show are required
+ with self.assertRaises(ConfigSessionError):
+ self.session.commit()
+
+ self.session.set(base_path + ['model', 'ezio'])
+
+ # check validate() - a show required
+ with self.assertRaises(ConfigSessionError):
+ self.session.commit()
+
+ self.session.set(base_path + ['show', 'clock', 'big'])
+
+ self.session.set(base_path + ['show', 'network', 'units', 'pps'])
+ self.session.set(base_path + ['show', 'network', 'interface', 'eth0', 'alias', 'WAN'])
+ self.session.set(base_path + ['show', 'network', 'interface', 'eth1', 'alias', 'LAN'])
+ self.session.set(base_path + ['show', 'network', 'interface', 'eth2', 'alias', 'WIFI'])
+ # One too many
+ self.session.set(base_path + ['show', 'network', 'interface', 'eth3'])
+
+ # check validate() - more then 3 interfaces
+ with self.assertRaises(ConfigSessionError):
+ self.session.commit()
+
+ self.session.delete(base_path + ['show', 'network', 'interface', 'eth3'])
+
+ # commit changes
+ self.session.commit()
+
+ # load up ini-styled LCDd.conf
+ LCDd_conf = configparser.ConfigParser()
+ LCDd_conf.read('/run/LCDd/LCDd.lo.conf')
+
+ # Check settings made it into LCDd.conf
+ self.assertTrue(LCDd_conf['server']['Driver'] == 'hd44780')
+ self.assertTrue(LCDd_conf['server']['Hello'] == '"Welcome to VyOS"')
+ self.assertTrue(LCDd_conf['server']['GoodBye'] == '"Bye from VyOS"')
+ self.assertTrue(LCDd_conf['server']['WaitTime'] == '30')
+
+ self.assertTrue(LCDd_conf['hd44780']['ConnectionType'] == 'ezio')
+ self.assertTrue(LCDd_conf['hd44780']['Keypad'] == 'yes')
+ self.assertTrue(LCDd_conf['hd44780']['Size'] == '16x2')
+ self.assertTrue(LCDd_conf['hd44780']['KeyMatrix_4_1'] == 'Enter')
+ self.assertTrue(LCDd_conf['hd44780']['KeyMatrix_4_2'] == 'Up')
+ self.assertTrue(LCDd_conf['hd44780']['KeyMatrix_4_3'] == 'Down')
+ self.assertTrue(LCDd_conf['hd44780']['KeyMatrix_4_4'] == 'Escape')
+ #self.assertTrue(LCDd_conf['hd44780']['Device'] == '/dev/ttyS1')
+
+ # load up ini-styled lcdproc.conf configuration file
+ lcdproc_conf = configparser.ConfigParser()
+
+ lcdproc_conf.read('/run/lcdproc/lcdproc.lo.conf')
+ # clock
+ self.assertTrue(lcdproc_conf['TimeDate']['Active'] == 'false')
+ self.assertTrue(lcdproc_conf['BigClock']['Active'] == 'true')
+ self.assertTrue(lcdproc_conf['MiniClock']['Active'] == 'false')
+ # host
+ self.assertTrue(lcdproc_conf['CPU']['Active'] == 'false')
+ self.assertTrue(lcdproc_conf['Memory']['Active'] == 'false')
+ self.assertTrue(lcdproc_conf['Load']['Active'] == 'false')
+ # network
+ self.assertTrue(lcdproc_conf['Iface']['Active'] == 'true')
+ self.assertTrue(lcdproc_conf['Iface']['Interface0'] == 'eth0')
+ self.assertTrue(lcdproc_conf['Iface']['Alias0'] == 'WAN')
+ self.assertTrue(lcdproc_conf['Iface']['Interface1'] == 'eth1')
+ self.assertTrue(lcdproc_conf['Iface']['Alias1'] == 'LAN')
+ self.assertTrue(lcdproc_conf['Iface']['Interface2'] == 'eth2')
+ self.assertTrue(lcdproc_conf['Iface']['Alias2'] == 'WIFI')
+ self.assertTrue(lcdproc_conf['Iface']['unit'] == 'packet')
+ # Check if LCdd and lcdproc are running
+ running = 0
+ for p in process_iter():
+ if p.name() in ['lcdproc', 'LCDd']:
+ running += 1
+
+ # both processes running
+ self.assertTrue(running == 2)
+
+if __name__ == '__main__':
+ unittest.main()