Le 11/04/2019 à 22:54, Lucas Bates a écrit : > On Wed, Apr 10, 2019 at 10:33 AM Nicolas Dichtel > <nicolas.dich...@6wind.com> wrote: >> >> Le 09/04/2019 à 23:44, Lucas Bates a écrit : >>> Some of the testcases (for example, all of the fw tests) in tdc >>> require activating the nsplugin. This RFC introduces a feature which >>> tags one such test with the keyword "requires". Anyone running a test >>> that requires nsplugin will now get a warning if they are missing >>> the plugin. >>> >>> After compiling the list of test cases to execute, tdc will >>> gather all of the required plugins for that run, and validate >>> that they have been enabled with a symlink in the plugins/ >>> directory. If required plugins are missing, tdc will create the >>> symlink for the user and then terminate. (This is because plugin- >>> specific options may exist and need to be parsed at startup) >> I still don't understand the goal of this plugin. Why not simply include it >> in >> the core code (like it was some times ago)? > > Because the use of namespaces and the veth pair are specific to some > test cases. We're also making it possible to create complex test cases > which will require more than one namespace. The starting point was to > isolate the namespace into its own plugin. We had a discussion today Isolating a part of the code in a plugin is not the problem. The problem is that this code is not available by default.
> in our tri-weekly tc test meeting and the general consensus to address > what you brought up is leaning towards the following: > > - adding a symlink to nsPlugin I don't understand why a symlink is needed. Just load it by default and use it when needed. A property can be added to each test to tell which plugin (in fact, which topology) is needed to run it. Thus, if a new complex test is added, it can define another topology. > - Changing default behaviour so that unless an option is explicitly > specified, all the tests will be run under a namespace with automatic > creation of the ports Yes. > - If the user chooses /not/ to use namespaces, it will still create > the veth pair to use. In fact, I would say an option so that the user can choose another topology. > > I'll send the patch tomorrow as another RFC. > > What do you think of this? > >>> Please provide feedback. If this is amenable to all, I will proceed >>> to submit for the rest. >> After your patch, I got the following error: >> $ ./tdc.py >> Traceback (most recent call last): >> File "./tdc.py", line 740, in <module> >> main() >> File "./tdc.py", line 734, in main >> set_operation_mode(pm, args) >> File "./tdc.py", line 692, in set_operation_mode >> check_required_plugins(pm, alltests) >> File "./tdc.py", line 583, in check_required_plugins >> os.chown('plugins/{}'.format(fname), uid=int(os.getenv('SUDO_UID')), >> TypeError: int() argument must be a string or a number, not 'NoneType' > > That would be expected if you aren't running tdc with sudo or as root > or as a user with network admin capability. I was root for the test. Regards, Nicolas