1+ """
2+ Usage nwrap template create [network | device] [yaml | json] [<fileName>]
3+ template load <fileName> [<username> <password>]
4+ download <username> <password> link
5+ delete-devices <DeviceNames>
6+ -v | --version
7+ -vv | --verbose
8+ -h | --help
9+
10+ nwrap is an alias of `netsim-wrapper` and you can pass
11+ multiple devnames instead of single devname, eg. start, stop, ...
12+
13+ Additionally we support all `ncs-netsim` commands
14+ """
15+
16+ import gc
17+ import sys
18+ import pytest
19+ import unittest
20+
21+ from logging import DEBUG , INFO
22+ from netsim_wrapper import main
23+ from netsim_wrapper .nwrap import NWrap
24+
25+ from _pytest .monkeypatch import MonkeyPatch
26+
27+
28+ # @pytest.mark.run
29+ class TestNwrapCommon (unittest .TestCase ):
30+
31+ def setUp (self ):
32+ self .monkeypatch = MonkeyPatch ()
33+ self .args = ['nwrap' ]
34+
35+ def tearDown (self ) -> None :
36+ gc .collect ()
37+ self .monkeypatch .undo ()
38+ return super ().tearDown ()
39+
40+ @property
41+ def applyPatch (self ):
42+ self .monkeypatch .setattr (sys , 'argv' , self .args )
43+
44+ @pytest .fixture (autouse = True )
45+ def inject_fixtures (self , capfd ):
46+ self ._capfd = capfd
47+
48+ def test_nwrap_version (self ):
49+ self .args .append ('-v' )
50+ self .applyPatch
51+ try :
52+ main .nwrap ()
53+ except SystemExit as e :
54+ assert type (e ) == SystemExit
55+ finally :
56+ out , err = self ._capfd .readouterr ()
57+ assert out .strip () == 'netsim-wrapper version 4.0.0'
58+
59+ def test_nwrap_long_version (self ):
60+ self .args .append ('--version' )
61+ self .applyPatch
62+ try :
63+ main .nwrap ()
64+ except SystemExit as e :
65+ assert type (e ) == SystemExit
66+ finally :
67+ out , err = self ._capfd .readouterr ()
68+ assert out .strip () == 'netsim-wrapper version 4.0.0'
69+
70+ def test_nwrap (self ):
71+ self .applyPatch
72+ try :
73+ main .nwrap ()
74+ except SystemExit as e :
75+ assert type (e ) == SystemExit
76+ finally :
77+ out , err = self ._capfd .readouterr ()
78+ out = out .strip ()
79+ assert 'Usage nwrap template create' in out
80+ assert 'template create [network | device] [yaml | json] [<fileName>]' in out
81+ assert 'template load <fileName> [<username> <password>]' in out
82+ assert 'download <username> <password> link' in out
83+ assert 'delete-devices <DeviceNames>' in out
84+ assert '-v | --version' in out
85+ assert '-vv | --verbose' in out
86+ assert '-h | --help' in out
87+
88+ def test_nwrap_help (self ):
89+ self .args .append ('-h' )
90+ self .applyPatch
91+ try :
92+ main .nwrap ()
93+ except SystemExit as e :
94+ assert type (e ) == SystemExit
95+ finally :
96+ out , err = self ._capfd .readouterr ()
97+ out = out .strip ()
98+ assert 'Usage nwrap template create' in out
99+
100+ def test_nwrap_long_help (self ):
101+ self .args .append ('--help' )
102+ self .applyPatch
103+ try :
104+ main .nwrap ()
105+ except SystemExit as e :
106+ assert type (e ) == SystemExit
107+ finally :
108+ out , err = self ._capfd .readouterr ()
109+ out = out .strip ()
110+ assert 'Usage nwrap template create' in out
111+
112+
113+ # @pytest.mark.run
114+ class TestNwrapVerbose (unittest .TestCase ):
115+
116+ def setUp (self ):
117+ gc .collect ()
118+ self .monkeypatch = MonkeyPatch ()
119+ self .args = ['nwrap' ]
120+
121+ def tearDown (self ) -> None :
122+ self .monkeypatch .undo ()
123+ return super ().tearDown ()
124+
125+ @property
126+ def applyPatch (self ):
127+ self .monkeypatch .setattr (sys , 'argv' , self .args )
128+
129+ @pytest .fixture (autouse = True )
130+ def inject_fixtures (self , capfd ):
131+ self ._capfd = capfd
132+
133+ def test_nwrap_verbose (self ):
134+ self .args .append ('-vv' )
135+ self .applyPatch
136+ nwrap , p = main .check_verbose (self .args )
137+ assert nwrap .log .level == INFO # DEBUG
138+ # TODO: We logger level is getting set to INFO due to singleton objects
139+
140+ def test_nwrap_long_verbose (self ):
141+ self .args .append ('--verbose' )
142+ self .applyPatch
143+ nwrap , p = main .check_verbose (self .args )
144+ assert nwrap .log .level == INFO # DEBUG
145+ # TODO: We logger level is getting set to INFO due to singleton objects
0 commit comments