New plugin data is collected in statsender
White list for plugins info added into statsender. Now we are checking that all plugin data is collected in tests. In case of adding new property to Plugin DB model test checks that this field is collected by statsender. Change-Id: Iae3f41b839172b5f6d4f79b207b2a19c309b6e8b Closes-Bug: #1521596
This commit is contained in:
parent
34e4f4f0dc
commit
5ded5017e5
|
@ -134,6 +134,27 @@ class InstallationInfo(object):
|
|||
'vsphere_cluster'), 'vmware_az_nova_computes_num', len),
|
||||
)
|
||||
|
||||
plugin_info_white_list = (
|
||||
# ((path, to, property), 'map_to_name', transform_function)
|
||||
WhiteListRule(('id',), 'id', None),
|
||||
WhiteListRule(('name',), 'name', None),
|
||||
WhiteListRule(('version',), 'version', None),
|
||||
WhiteListRule(('releases',), 'releases', None),
|
||||
WhiteListRule(('fuel_version',), 'fuel_version', None),
|
||||
WhiteListRule(('package_version',), 'package_version', None),
|
||||
WhiteListRule(('groups',), 'groups', None),
|
||||
WhiteListRule(('licenses',), 'licenses', None),
|
||||
WhiteListRule(('is_hotpluggable',), 'is_hotpluggable', None),
|
||||
WhiteListRule(('attributes_metadata',), 'attributes_metadata', None),
|
||||
WhiteListRule(('volumes_metadata',), 'volumes_metadata', None),
|
||||
WhiteListRule(('roles_metadata',), 'roles_metadata', None),
|
||||
WhiteListRule(('network_roles_metadata',),
|
||||
'network_roles_metadata', None),
|
||||
WhiteListRule(('components_metadata',), 'components_metadata', None),
|
||||
WhiteListRule(('deployment_tasks',), 'deployment_tasks', None),
|
||||
WhiteListRule(('tasks',), 'tasks', None),
|
||||
)
|
||||
|
||||
def fuel_release_info(self):
|
||||
return settings.VERSION
|
||||
|
||||
|
@ -213,14 +234,8 @@ class InstallationInfo(object):
|
|||
def get_cluster_plugins_info(self, cluster):
|
||||
plugins_info = []
|
||||
for plugin_inst in ClusterPlugins.get_enabled(cluster.id):
|
||||
plugin_info = {
|
||||
"id": plugin_inst.id,
|
||||
"name": plugin_inst.name,
|
||||
"version": plugin_inst.version,
|
||||
"releases": plugin_inst.releases,
|
||||
"fuel_version": plugin_inst.fuel_version,
|
||||
"package_version": plugin_inst.package_version,
|
||||
}
|
||||
plugin_info = self.get_attributes(plugin_inst.__dict__,
|
||||
self.plugin_info_white_list)
|
||||
plugins_info.append(plugin_info)
|
||||
|
||||
return plugins_info
|
||||
|
|
|
@ -272,45 +272,15 @@ class TestInstallationInfo(BaseTestCase):
|
|||
)
|
||||
|
||||
def test_plugins_info(self):
|
||||
info = InstallationInfo()
|
||||
|
||||
cluster = self.env.create_cluster(api=False)
|
||||
plugin = self.env.create_plugin(api=False, cluster=cluster)
|
||||
|
||||
plugin_kwargs = self.env.get_default_plugin_metadata()
|
||||
plugin_obj = plugins.Plugin(**plugin_kwargs)
|
||||
plugin_kwargs['id'] = plugin.id
|
||||
|
||||
self.db.add(plugin_obj)
|
||||
self.db.flush()
|
||||
|
||||
plugin_kwargs["id"] = plugin_obj.id
|
||||
|
||||
cluster_plugin_kwargs = {
|
||||
"cluster_id": cluster.id,
|
||||
"plugin_id": plugin_obj.id,
|
||||
"enabled": True
|
||||
}
|
||||
cluster_plugin = plugins.ClusterPlugins(**cluster_plugin_kwargs)
|
||||
|
||||
self.db.add(cluster_plugin)
|
||||
self.db.flush()
|
||||
|
||||
expected_attributes_names = (
|
||||
"id",
|
||||
"name",
|
||||
"version",
|
||||
"releases",
|
||||
"fuel_version",
|
||||
"package_version",
|
||||
)
|
||||
|
||||
expected_info = dict(
|
||||
[(key, value) for key, value in six.iteritems(plugin_kwargs)
|
||||
if key in expected_attributes_names]
|
||||
)
|
||||
|
||||
expected = [expected_info]
|
||||
actual = info.get_cluster_plugins_info(cluster)
|
||||
self.assertEqual(expected, actual)
|
||||
for name, expected in six.iteritems(plugin_kwargs):
|
||||
actual = getattr(plugin, name)
|
||||
self.assertEqual(expected, actual)
|
||||
|
||||
def test_installation_info(self):
|
||||
info = InstallationInfo()
|
||||
|
@ -470,6 +440,30 @@ class TestInstallationInfo(BaseTestCase):
|
|||
for path in expected_paths:
|
||||
self.assertIn(path, actual_paths)
|
||||
|
||||
def test_all_plugin_data_collected(self):
|
||||
cluster = self.env.create_cluster(api=False)
|
||||
self.env.create_plugin(api=False, cluster=cluster)
|
||||
|
||||
# Fetching plugin info
|
||||
info = InstallationInfo().get_cluster_plugins_info(cluster)
|
||||
actual_plugin = info[0]
|
||||
|
||||
# Creating plugin data schema
|
||||
plugin_schema = {}
|
||||
for column in inspect(plugins.Plugin).columns:
|
||||
plugin_schema[six.text_type(column.name)] = None
|
||||
|
||||
# Removing of not required fields
|
||||
remove_fields = ('description', 'title', 'authors', 'homepage')
|
||||
for field in remove_fields:
|
||||
plugin_schema.pop(field)
|
||||
|
||||
# If test failed here it means, that you have added properties
|
||||
# to plugin and they are not exported into statistics.
|
||||
# If you don't know what to do, contact fuel-stats team please.
|
||||
for key in six.iterkeys(plugin_schema):
|
||||
self.assertIn(key, actual_plugin)
|
||||
|
||||
def test_wite_list_unique_names(self):
|
||||
names = set(rule.map_to_name for rule in
|
||||
InstallationInfo.attributes_white_list)
|
||||
|
@ -479,3 +473,7 @@ class TestInstallationInfo(BaseTestCase):
|
|||
InstallationInfo.vmware_attributes_white_list)
|
||||
self.assertEqual(len(InstallationInfo.vmware_attributes_white_list),
|
||||
len(names))
|
||||
names = set(rule.map_to_name for rule in
|
||||
InstallationInfo.plugin_info_white_list)
|
||||
self.assertEqual(len(InstallationInfo.plugin_info_white_list),
|
||||
len(names))
|
||||
|
|
Loading…
Reference in New Issue