You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jl...@apache.org on 2017/10/09 06:01:28 UTC

[30/50] [abbrv] ambari git commit: AMBARI-22141. Intermittent failure of test_stack_advisor_perf

AMBARI-22141. Intermittent failure of test_stack_advisor_perf


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0ed128fb
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0ed128fb
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0ed128fb

Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 0ed128fb6403f061e376050fae7ab41e621659f2
Parents: 5370297
Author: Attila Doroszlai <ad...@hortonworks.com>
Authored: Thu Oct 5 10:36:45 2017 +0200
Committer: Attila Doroszlai <ad...@hortonworks.com>
Committed: Thu Oct 5 19:03:32 2017 +0200

----------------------------------------------------------------------
 .../2.2/common/test_stack_advisor_perf.py       | 66 ++++++++++++--------
 1 file changed, 40 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/0ed128fb/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor_perf.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor_perf.py b/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor_perf.py
index 82cef1b..77dbb66 100644
--- a/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor_perf.py
+++ b/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor_perf.py
@@ -23,43 +23,57 @@ import imp
 from unittest import TestCase
 from mock.mock import patch
 
-class TestHDP22StackAdvisor(TestCase):
-
-  def instantiate_stack_advisor(self, testDirectory):
-    default_stack_advisor_path = os.path.join(testDirectory, '../../../../../main/resources/stacks/stack_advisor.py')
-    hdp_206_stack_advisor_path = os.path.join(testDirectory, '../../../../../main/resources/stacks/HDP/2.0.6/services/stack_advisor.py')
-    hdp_21_stack_advisor_path = os.path.join(testDirectory, '../../../../../main/resources/stacks/HDP/2.1/services/stack_advisor.py')
-    hdp_22_stack_advisor_path = os.path.join(testDirectory, '../../../../../main/resources/stacks/HDP/2.2/services/stack_advisor.py')
-    hdp_206_stack_advisor_classname = 'HDP206StackAdvisor'
-
-    with open(default_stack_advisor_path, 'rb') as fp:
-      imp.load_module('stack_advisor', fp, default_stack_advisor_path, ('.py', 'rb', imp.PY_SOURCE))
-    with open(hdp_206_stack_advisor_path, 'rb') as fp:
-      imp.load_module('stack_advisor_impl', fp, hdp_206_stack_advisor_path, ('.py', 'rb', imp.PY_SOURCE))
-    with open(hdp_21_stack_advisor_path, 'rb') as fp:
-      imp.load_module('stack_advisor_impl', fp, hdp_21_stack_advisor_path, ('.py', 'rb', imp.PY_SOURCE))
-    with open(hdp_22_stack_advisor_path, 'rb') as fp:
-      stack_advisor_impl = imp.load_module('stack_advisor_impl', fp, hdp_22_stack_advisor_path, ('.py', 'rb', imp.PY_SOURCE))
-    clazz = getattr(stack_advisor_impl, hdp_206_stack_advisor_classname)
+class TestStackAdvisorPerformance(TestCase):
+
+  TIME_ALLOWED = 0.2 # somewhat arbitrary, based on test runs
+
+  def setUp(self):
+    self.testDirectory = os.path.dirname(os.path.abspath(__file__))
+
+  def instantiate_stack_advisor(self):
+    self.load_stack_advisor('main/resources/stacks/stack_advisor.py', 'stack_advisor')
+
+    stack_advisors = (
+      'main/resources/stacks/HDP/2.0.6/services/stack_advisor.py',
+      'main/resources/stacks/HDP/2.1/services/stack_advisor.py',
+      'main/resources/stacks/HDP/2.2/services/stack_advisor.py',
+      'main/resources/stacks/HDP/2.3/services/stack_advisor.py',
+      'main/resources/stacks/HDP/2.4/services/stack_advisor.py',
+      'main/resources/stacks/HDP/2.5/services/stack_advisor.py',
+      'main/resources/stacks/HDP/2.6/services/stack_advisor.py',
+    )
+
+    for filename in stack_advisors:
+      stack_advisor_impl = self.load_stack_advisor(filename, 'stack_advisor_impl')
+
+    current_stack_advisor_classname = 'HDP26StackAdvisor'
+    clazz = getattr(stack_advisor_impl, current_stack_advisor_classname)
     return clazz()
 
+
+  def load_stack_advisor(self, filename, module_name):
+    path = os.path.join(self.testDirectory, '../../../../..', filename)
+    with open(path, 'rb') as fp:
+      return imp.load_module(module_name, fp, path, ('.py', 'rb', imp.PY_SOURCE))
+
+
   @patch('socket.getfqdn')
   def test_performance(self, getfqdn_method):
     getfqdn_method.side_effect = lambda host='perf400-a-1.c.pramod-thangali.internal': host
-    testDirectory = os.path.dirname(os.path.abspath(__file__))
-    current_stack_advisor_path = os.path.join(testDirectory, '../../../../../main/resources/stacks/stack_advisor.py')
 
     for folder_name in ['1', '2']:
-      services = json.load(open(os.path.join(testDirectory, folder_name + '/services.json')))
-      hosts = json.load(open(os.path.join(testDirectory, folder_name + '/hosts.json')))
+      with open(os.path.join(self.testDirectory, folder_name, 'services.json')) as fp:
+        services = json.load(fp)
+      with open(os.path.join(self.testDirectory, folder_name, 'hosts.json')) as fp:
+        hosts = json.load(fp)
+
+      stack_advisor = self.instantiate_stack_advisor()
 
-      stack_advisor = self.instantiate_stack_advisor(testDirectory)
       start = time.time()
       recommendation = stack_advisor.recommendComponentLayout(services, hosts)
       time_taken = time.time() - start
-      print "time taken by current stack_advisor.py = " + str(time_taken)
-
-      self.assertTrue(time_taken < 0.1)
+      print "Current stack advisor elapsed {0}, allowed {1}".format(time_taken, TestStackAdvisorPerformance.TIME_ALLOWED)
 
+      self.assertTrue(time_taken < TestStackAdvisorPerformance.TIME_ALLOWED) # Python 2.7: assertLess