From d293346375f1fa0129904270600bd060fef879f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Honza=20Kr=C3=A1l?= Date: Mon, 12 Jan 2015 14:57:52 +0100 Subject: [PATCH] Proper skipping technique for yaml test suite --- test_elasticsearch/test_server/test_common.py | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/test_elasticsearch/test_server/test_common.py b/test_elasticsearch/test_server/test_common.py index 7b495ea3..695b17fa 100644 --- a/test_elasticsearch/test_server/test_common.py +++ b/test_elasticsearch/test_server/test_common.py @@ -125,8 +125,27 @@ class YamlTestCase(ElasticsearchTestCase): if catch: raise AssertionError('Failed to catch %r in %r.' % (catch, self.last_response)) + def _get_nodes(self): + if not hasattr(self, '_node_info'): + self._node_info = list(self.client.nodes.info(node_id='_all', metric='clear')['nodes'].values()) + return self._node_info + + def _get_data_nodes(self): + return len([info for info in self._get_nodes() if info.get('attributes', {}).get('data', 'true') == 'true']) + + def _get_benchmark_nodes(self): + return len([info for info in self._get_nodes() if info.get('attributes', {}).get('bench', 'false') == 'true']) + def run_skip(self, skip): - if 'features' in skip and skip['features'] not in IMPLEMENTED_FEATURES: + if 'features' in skip: + if skip['features'] in IMPLEMENTED_FEATURES: + return + elif skip['features'] == 'requires_replica': + if self._get_data_nodes() > 1: + return + elif skip['features'] == 'benchmark': + if self._get_benchmark_nodes(): + return raise SkipTest(skip.get('reason', 'Feature %s is not supported' % skip['features'])) if 'version' in skip: