Skip to content

Commit

Permalink
Merge pull request #3893 from vyos/mergify/bp/sagitta/pr-3888
Browse files Browse the repository at this point in the history
smoketest: T6614: initial support for op-mode command testing (backport #3888)
  • Loading branch information
c-po authored Jul 29, 2024
2 parents cd56721 + c70fcf8 commit eb61f28
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 1 deletion.
15 changes: 14 additions & 1 deletion smoketest/scripts/cli/base_vyostest_shim.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import os
import unittest
import paramiko
import pprint

from time import sleep
from typing import Type
Expand Down Expand Up @@ -82,13 +83,25 @@ def cli_commit(self):
while run(f'sudo lsof -nP {commit_lock}') == 0:
sleep(0.250)

def op_mode(self, path : list) -> None:
"""
Execute OP-mode command and return stdout
"""
if self.debug:
print('commit')
path = ' '.join(path)
out = cmd(f'/opt/vyatta/bin/vyatta-op-cmd-wrapper {path}')
if self.debug:
print(f'\n\ncommand "{path}" returned:\n')
pprint.pprint(out)
return out

def getFRRconfig(self, string=None, end='$', endsection='^!', daemon=''):
""" Retrieve current "running configuration" from FRR """
command = f'vtysh -c "show run {daemon} no-header"'
if string: command += f' | sed -n "/^{string}{end}/,/{endsection}/p"'
out = cmd(command)
if self.debug:
import pprint
print(f'\n\ncommand "{command}" returned:\n')
pprint.pprint(out)
return out
Expand Down
39 changes: 39 additions & 0 deletions smoketest/scripts/cli/test_op-mode_show.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env python3
#
# Copyright (C) 2024 VyOS maintainers and contributors
#
# 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 unittest
from base_vyostest_shim import VyOSUnitTestSHIM

from vyos.version import get_version

base_path = ['show']

class TestOPModeShow(VyOSUnitTestSHIM.TestCase):
def test_op_mode_show_version(self):
# Retrieve output of "show version" OP-mode command
tmp = self.op_mode(base_path + ['version'])
# Validate
version = get_version()
self.assertIn(f'Version: VyOS {version}', tmp)

def test_op_mode_show_vrf(self):
# Retrieve output of "show version" OP-mode command
tmp = self.op_mode(base_path + ['vrf'])
# Validate
self.assertIn('VRF is not configured', tmp)

if __name__ == '__main__':
unittest.main(verbosity=2)

0 comments on commit eb61f28

Please sign in to comment.