On 06/08/2016 06:44 PM, Aline Manera wrote:
>
>
> On 06/08/2016 06:41 PM, Rodrigo Trujillo wrote:
>>
>>
>> On 06/08/2016 04:16 PM, Aline Manera wrote:
>>> Unless the idea to only have sample plugin enabled on test mode,
>>> this patch looks good for me.
>>
>> Lets define 2 modes here: "test" mode and
"runningWOKtestsuite" mode.
>> I want only sample plugin enabled in the second.
>>
>> I believe the solution that i proposed before can fix this.
>>
>
> I don; t agree to create an option to a server (ie, a command line
> tool) which will be used only for tests (tests that are not package
> into the rpm/deb)
>
> Let's go back a bit and thinking about the real problem:
>
> 1. What do you need to do the tests?
> 2. Why having other plugins enabled among of Sample is a problem?
I did not proposed a "command line tool" ... I have proposed to add
new command line options (like "--environment" ) similar to what Yum
does with its plugins.
wokd is a command line tool. Why add a new option that only make sense
to running unit tests?
Answered (2) in my last 1/8 email.
>
>>>
>>> On 06/06/2016 04:13 PM, Rodrigo Trujillo wrote:
>>>> Test cases for new API
>>>>
>>>> Signed-off-by: Rodrigo Trujillo
<rodrigo.trujillo(a)linux.vnet.ibm.com>
>>>> ---
>>>> tests/test_plugin.py | 103
>>>> +++++++++++++++++++++++++++++++++++++++++++++++++--
>>>> 1 file changed, 99 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/tests/test_plugin.py b/tests/test_plugin.py
>>>> index d785cfa..01a3be3 100644
>>>> --- a/tests/test_plugin.py
>>>> +++ b/tests/test_plugin.py
>>>> @@ -20,11 +20,13 @@
>>>> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
>>>> 02110-1301 USA
>>>>
>>>> import json
>>>> +import os
>>>> import unittest
>>>> from functools import partial
>>>>
>>>> -#from wok.pluginsmanager import get_enabled_plugins
>>>> +from wok.config import paths
>>>> from wok.pluginsmanager import Plugins
>>>> +from wok.utils import wok_log
>>>>
>>>> import utils
>>>>
>>>> @@ -50,9 +52,9 @@ def tearDownModule():
>>>> test_server.stop()
>>>>
>>>>
>>>> -(a)unittest.skipUnless(
>>>> - 'sample' in Plugins().get_enabled_plugins(),
>>>> - 'sample plugin is not enabled, skip this test!')
>>>> +#
>>>> +# In test mode, the plugin Sample should always be enabled
>>>> +#
>>>> class PluginTests(unittest.TestCase):
>>>>
>>>> def setUp(self):
>>>> @@ -121,3 +123,96 @@ class PluginTests(unittest.TestCase):
>>>> req = json.dumps({'name': 'nowidth',
'length': 40})
>>>> resp = self.request('/plugins/sample/rectangles', req,
>>>> 'POST')
>>>> self.assertEquals(400, resp.status)
>>>> +
>>>> +
>>>> +def _plugins_number():
>>>> + """ Find number of plugins in
<wokpath>/wok/plugins"""
>>>> + plugin_dir = paths.plugins_dir
>>>> + try:
>>>> + return len([d for d in os.listdir(plugin_dir)
>>>> + if os.path.isdir(os.path.join(plugin_dir, d))])
>>>> + except OSError as e:
>>>> + wok_log.error("Failed reading plugins directory
'%s': %s" %
>>>> + (plugin_dir, e.message))
>>>> + return 0
>>>> +
>>>> +
>>>> +class PluginsManagerTests(unittest.TestCase):
>>>> + """
>>>> + This class test functionalities of Plugins Manager and
>>>> plugins API, using
>>>> + the Sample plugin, which should be enabled by default during
>>>> tests
>>>> + """
>>>> +
>>>> + def setUp(self):
>>>> + self.request = partial(utils.request, host, ssl_port)
>>>> + self.info = Plugins().get_plugin_info('sample')
>>>> + with open(self.info['conf_file']) as f:
>>>> + self.enable_sample_plugin = ('enable = True' in
>>>> f.read())
>>>> +
>>>> + def test_api(self):
>>>> + # Only SAMPLE should be enabled
>>>> + out = [{'name': 'sample', 'enabled':
True}]
>>>> +
>>>> + # List of plugins
>>>> + resp = self.request('/pluginsmanager', {},
'GET')
>>>> + plugins = json.loads(resp.read())
>>>> + self.assertEquals(_plugins_number(), len(plugins))
>>>> + self.assertIn(out[0], plugins)
>>>> +
>>>> + # Wrong plugin name
>>>> + resp = self.request('/pluginsmanager/samplewrong', {},
>>>> 'GET')
>>>> + self.assertEquals(404, resp.status)
>>>> + self.assertIn('WOKPLUG0001E',
>>>> json.loads(resp.read())['reason'])
>>>> +
>>>> + # Lookup plugin name
>>>> + resp = self.request('/pluginsmanager/sample', {},
'GET')
>>>> + self.assertEquals(200, resp.status)
>>>> + self.assertDictEqual(out[0], json.loads(resp.read()))
>>>> +
>>>> + # Enabling wrong plugin
>>>> + resp =
self.request('/pluginsmanager/samplewrong/enable',
>>>> {}, 'POST')
>>>> + self.assertEquals(404, resp.status)
>>>> + self.assertIn('WOKPLUG0001E',
>>>> json.loads(resp.read())['reason'])
>>>> +
>>>> + # Enabling Sample (already enabled, no problem)
>>>> + resp = self.request('/pluginsmanager/sample/enable', {},
>>>> 'POST')
>>>> + self.assertEquals(200, resp.status)
>>>> + self.assertDictEqual(out[0], json.loads(resp.read()))
>>>> +
>>>> + # Disabling Sample
>>>> + resp = self.request('/pluginsmanager/sample/disable',
{},
>>>> 'POST')
>>>> + self.assertEquals(200, resp.status)
>>>> + out[0]['enabled'] = False
>>>> + self.assertDictEqual(out[0], json.loads(resp.read()))
>>>> +
>>>> + # Disabling Sample (already disabled, no problem)
>>>> + resp = self.request('/pluginsmanager/sample/disable',
{},
>>>> 'POST')
>>>> + self.assertEquals(200, resp.status)
>>>> + self.assertDictEqual(out[0], json.loads(resp.read()))
>>>> +
>>>> + # Check config file
>>>> + with open(self.info['conf_file']) as f:
>>>> + self.assertIn('enable = False', f.read())
>>>> +
>>>> + # Backing configuration file to initial state
>>>> + if self.enable_sample_plugin:
>>>> + Plugins()._enable_plugin_conf_file(self.info['conf_file'])
>>>> +
>>>> + def test_not_allowed_methods(self):
>>>> + # Only GET allowed in Collection
>>>> + resp = self.request('/pluginsmanager', {},
'POST')
>>>> + self.assertEquals(405, resp.status)
>>>> + resp = self.request('/pluginsmanager', {},
'PUT')
>>>> + self.assertEquals(405, resp.status)
>>>> + resp = self.request('/pluginsmanager', {},
'DELETE')
>>>> + self.assertEquals(405, resp.status)
>>>> +
>>>> + # Only GET/POST allowed in resource
>>>> + resp = self.request('/pluginsmanager/sample', {},
'PUT')
>>>> + self.assertEquals(405, resp.status)
>>>> + resp = self.request('/pluginsmanager/sample', {},
'DELETE')
>>>> + self.assertEquals(405, resp.status)
>>>> + resp = self.request('/pluginsmanager/sample/enable', {},
>>>> 'PUT')
>>>> + self.assertEquals(405, resp.status)
>>>> + resp = self.request('/pluginsmanager/sample/disable',
{},
>>>> 'DELETE')
>>>> + self.assertEquals(405, resp.status)
>>>
>>> _______________________________________________
>>> Kimchi-devel mailing list
>>> Kimchi-devel(a)ovirt.org
>>>
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>>>
>>
>> _______________________________________________
>> Kimchi-devel mailing list
>> Kimchi-devel(a)ovirt.org
>>
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>>
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel(a)ovirt.org
>
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>
_______________________________________________
Kimchi-devel mailing list
Kimchi-devel(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel