ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From oleew...@apache.org
Subject [30/50] [abbrv] ambari git commit: AMBARI-18156 Remove upgradeHelper.py and corresponding files due to drop of the manual upgrade (dsen)
Date Thu, 18 Aug 2016 10:30:06 GMT
http://git-wip-us.apache.org/repos/asf/ambari/blob/793adfe4/ambari-server/src/test/python/TestUpgradeHelper.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/TestUpgradeHelper.py b/ambari-server/src/test/python/TestUpgradeHelper.py
deleted file mode 100644
index 6da4507..0000000
--- a/ambari-server/src/test/python/TestUpgradeHelper.py
+++ /dev/null
@@ -1,1028 +0,0 @@
-"""
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-"""
-
-
-from mock.mock import MagicMock, call
-from mock.mock import patch
-
-from unittest import TestCase
-import sys
-import os
-import unittest
-import upgradeHelper
-import json
-import copy
-from StringIO import StringIO
-
-
-class UpgradeCatalogFactoryMock(upgradeHelper.UpgradeCatalogFactory):
-  def __init__(self, data):
-    self._load(data)
-
-  def _load(self, data):
-    fn = StringIO(data)
-    with patch("__builtin__.open") as open_mock:
-      open_mock.return_value = fn
-      super(UpgradeCatalogFactoryMock, self)._load("")
-
-
-class TestUpgradeHelper(TestCase):
-  original_curl = None
-  out = None
-  catalog_from = "1.3"
-  catalog_to = "2.2"
-  catalog_cfg_type = "my type"
-  required_service = "TEST"
-  curl_response = "{}"
-  test_catalog = """{
-   "version": "1.0",
-   "stacks": [
-     {
-       "name": "HDP",
-       "old-version": "%s",
-       "target-version": "%s",
-       "options": {
-         "config-types": {
-           "%s": {
-             "merged-copy": "yes"
-           }
-          }
-       },
-       "properties": {
-         "%s": {
-           "my property": {
-             "value": "my value",
-             "required-services": [\"%s\"]
-           }
-         }
-       },
-       "property-mapping": {
-         "my replace property": "my property 2"
-       }
-     }
-   ]
-  }
-  """
-
-  def setUp(self):
-    # replace original curl call to mock
-    self.test_catalog = self.test_catalog % (self.catalog_from, self.catalog_to,
-                                             self.catalog_cfg_type, self.catalog_cfg_type,
-                                             self.required_service)
-
-    self.original_curl = upgradeHelper.curl
-    upgradeHelper.curl = self.magic_curl
-
-    # mock logging methods
-    upgradeHelper.logging.getLogger = MagicMock()
-    upgradeHelper.logging.FileHandler = MagicMock()
-
-    self.out = StringIO()
-    sys.stdout = self.out
-
-  def magic_curl(self, *args, **kwargs):
-    resp = self.curl_response
-    self.curl_response = "{}"
-    if "parse" in kwargs and isinstance(resp, str) and kwargs["parse"] == True:
-      resp = json.loads(resp)
-    return resp
-
-  def tearDown(self):
-    sys.stdout = sys.__stdout__
-
-  @patch("optparse.OptionParser")
-  @patch("upgradeHelper.modify_configs")
-  @patch("__builtin__.open")
-  def test_ParseOptions(self, open_mock, modify_action_mock, option_parser_mock):
-    class options(object):
-      user = "test_user"
-      hostname = "127.0.0.1"
-      clustername = "test1"
-      password = "test_password"
-      upgrade_json = "catalog_file"
-      from_stack = "0.0"
-      to_stack = "1.3"
-      logfile = "test.log"
-      report = "report.txt"
-      https = False
-      port = "8080"
-      warnings = []
-      printonly = False
-
-    args = ["update-configs"]
-    modify_action_mock.return_value = MagicMock()
-    test_mock = MagicMock()
-    test_mock.parse_args = lambda: (options, args)
-    option_parser_mock.return_value = test_mock
-
-    upgradeHelper.main()
-
-    self.assertEqual("8080", upgradeHelper.Options.API_PORT)
-    self.assertEqual("http", upgradeHelper.Options.API_PROTOCOL)
-    self.assertEqual(1, modify_action_mock.call_count)
-    self.assertEqual({"user": options.user, "pass": options.password}, upgradeHelper.Options.API_TOKENS)
-    self.assertEqual(options.clustername, upgradeHelper.Options.CLUSTER_NAME)
-
-  def test_is_services_exists(self):
-    old_services = upgradeHelper.Options.SERVICES
-
-    upgradeHelper.Options.SERVICES = set(['TEST1', 'TEST2'])
-    actual_result = upgradeHelper.is_services_exists(['TEST1'])
-
-    # check for situation with two empty sets
-    upgradeHelper.Options.SERVICES = set()
-    actual_result_1 = upgradeHelper.is_services_exists([])
-
-    upgradeHelper.Options.SERVICES = old_services
-
-    self.assertEqual(True, actual_result)
-    self.assertEqual(True, actual_result_1)
-
-
-  @patch("__builtin__.open")
-  @patch.object(os.path, "isfile")
-  @patch("os.remove")
-  def test_write_mapping(self, remove_mock, isfile_mock, open_mock):
-    test_data = {
-      "test_field": "test_value"
-    }
-    test_result = json.dumps(test_data)
-    output = StringIO()
-    isfile_mock.return_value = True
-    open_mock.return_value = output
-
-    # execute testing function
-    upgradeHelper.write_mapping(test_data)
-
-    self.assertEquals(1, isfile_mock.call_count)
-    self.assertEquals(1, remove_mock.call_count)
-    self.assertEquals(1, open_mock.call_count)
-
-    # check for content
-    self.assertEquals(test_result, output.getvalue())
-
-  @patch("__builtin__.open")
-  @patch.object(os.path, "isfile")
-  def test_read_mapping(self, isfile_mock, open_mock):
-    test_data = {
-      "test_field": "test_value"
-    }
-    test_result = json.dumps(test_data)
-    isfile_mock.return_value = True
-    output = StringIO(test_result)
-    open_mock.return_value = output
-
-    # execute testing function
-    actual_mapping = upgradeHelper.read_mapping()
-
-    self.assertEquals(1, isfile_mock.call_count)
-    self.assertEquals(1, open_mock.call_count)
-
-    self.assertEquals(test_data, actual_mapping)
-
-  @patch.object(upgradeHelper, "curl")
-  @patch.object(upgradeHelper, "write_mapping")
-  def test_get_mr1_mapping(self, write_mapping_mock, curl_mock):
-    return_data = [
-     {
-      "host_components": [   # MAPREDUCE_CLIENT
-        {
-          "HostRoles": {
-            "host_name": "test.host.vm"
-           }
-        }
-      ]
-     },
-     {
-      "host_components": [  # JOBTRACKER
-        {
-          "HostRoles": {
-            "host_name": "test1.host.vm"
-           }
-        }
-      ]
-     },
-     {
-      "host_components": [  # TASKTRACKER
-        {
-          "HostRoles": {
-            "host_name": "test2.host.vm"
-           }
-        }
-      ]
-     },
-     {
-      "host_components": [  # HISTORYSERVER
-        {
-          "HostRoles": {
-            "host_name": "test3.host.vm"
-           }
-        }
-      ]
-     }
-    ]
-    expect_data = {
-      "MAPREDUCE_CLIENT": ["test.host.vm"],
-      "JOBTRACKER": ["test1.host.vm"],
-      "TASKTRACKER": ["test2.host.vm"],
-      "HISTORYSERVER": ["test3.host.vm"]
-    }
-
-    tricky_mock = MagicMock(side_effect=return_data)
-    curl_mock.side_effect = tricky_mock
-
-    # execute testing function
-    upgradeHelper.get_mr1_mapping()
-
-    self.assertEquals(write_mapping_mock.call_count, 1)
-    self.assertEquals(expect_data, write_mapping_mock.call_args[0][0])
-
-  @patch.object(upgradeHelper, "get_choice_string_input")
-  def test_get_YN_input(self, get_choice_string_input_mock):
-    yes = set(['yes', 'ye', 'y'])
-    no = set(['no', 'n'])
-
-    prompt = "test prompt"
-    default = "default value"
-
-    # execute testing function
-    upgradeHelper.get_YN_input(prompt, default)
-
-    expect_args = (prompt, default, yes, no)
-    self.assertEquals(expect_args, get_choice_string_input_mock.call_args[0])
-
-  @patch("__builtin__.raw_input")
-  def test_get_choice_string_input(self, raw_input_mock):
-    yes = set(['yes', 'ye', 'y'])
-    no = set(['no', 'n'])
-    input_answers = ["yes", "no", ""]
-    tricky_mock = MagicMock(side_effect=input_answers)
-    raw_input_mock.side_effect = tricky_mock
-    default = "default value"
-
-    expect_result = [True, False, default]
-    actual_result = []
-    for i in range(0, len(input_answers)):
-      actual_result.append(upgradeHelper.get_choice_string_input("test prompt", default,
yes, no))
-
-    self.assertEquals(expect_result, actual_result)
-
-  @patch.object(upgradeHelper, "get_YN_input")
-  @patch.object(upgradeHelper, "read_mapping")
-  @patch.object(upgradeHelper, "curl")
-  def test_delete_mr(self, curl_mock, read_mapping_mock, get_YN_mock):
-    COMPONENT_URL_FORMAT = upgradeHelper.Options.CLUSTER_URL + '/hosts/%s/host_components/%s'
-    SERVICE_URL_FORMAT = upgradeHelper.Options.CLUSTER_URL + '/services/MAPREDUCE'
-    NON_CLIENTS = ["JOBTRACKER", "TASKTRACKER", "HISTORYSERVER"]
-    PUT_IN_DISABLED = {
-      "HostRoles": {
-        "state": "DISABLED"
-      }
-    }
-    mr_mapping = {
-      "MAPREDUCE_CLIENT": ["test.host.vm"],
-      "JOBTRACKER": ["test1.host.vm"],
-      "TASKTRACKER": ["test2.host.vm"],
-      "HISTORYSERVER": ["test3.host.vm"]
-    }
-    expected_curl_exec_args = []
-    for key, hosts in mr_mapping.items():
-      if key in NON_CLIENTS:
-        for host in hosts:
-          expected_curl_exec_args.append(
-            [
-              (COMPONENT_URL_FORMAT % (host, key),),
-              {
-                "request_type": "PUT",
-                "data": PUT_IN_DISABLED,
-                "validate": True
-              }
-            ]
-          )
-
-    expected_curl_exec_args.append(
-      [
-        (SERVICE_URL_FORMAT,),
-        {
-          "request_type": "DELETE",
-          "validate": True
-        }
-      ]
-    )
-
-    get_YN_mock.return_value = True
-    read_mapping_mock.return_value = mr_mapping
-
-    # execute testing function
-    upgradeHelper.delete_mr()
-
-    self.assertEqual(expected_curl_exec_args, curl_mock.call_args_list)
-
-    pass
-
-  @patch.object(upgradeHelper, "curl")
-  def test_get_cluster_stackname(self, curl_mock):
-    expected_result = "test version"
-    actual_result = ""
-    curl_mock.return_value = {
-      "Clusters": {
-        "version": expected_result
-      }
-    }
-
-    # execute testing function
-    actual_result = upgradeHelper.get_cluster_stackname()
-
-    self.assertEqual(expected_result, actual_result)
-
-  @patch.object(upgradeHelper, "curl")
-  def test_has_component_in_stack_def(self, curl_mock):
-    curl_mock.side_effect = MagicMock(side_effect=["", upgradeHelper.FatalException(1, "some
reason")])
-
-    # execute testing function
-    result_ok = upgradeHelper.has_component_in_stack_def("-", "", "")
-    result_fail = upgradeHelper.has_component_in_stack_def("-", "", "")
-
-    self.assertEqual(True, result_ok)
-    self.assertEqual(False, result_fail)
-
-  @patch.object(upgradeHelper, "get_cluster_stackname")
-  @patch.object(upgradeHelper, "has_component_in_stack_def")
-  @patch.object(upgradeHelper, "read_mapping")
-  @patch.object(upgradeHelper, "curl")
-  def test_add_services(self, curl_mock, read_mapping_mock, has_component_mock, get_stack_name_mock):
-    host_mapping = {
-      "MAPREDUCE_CLIENT": ["test.host.vm"],
-      "JOBTRACKER": ["test1.host.vm"],
-      "TASKTRACKER": ["test2.host.vm"],
-      "HISTORYSERVER": ["test3.host.vm"]
-    }
-    SERVICE_URL_FORMAT = upgradeHelper.Options.CLUSTER_URL + '/services/{0}'
-    COMPONENT_URL_FORMAT = SERVICE_URL_FORMAT + '/components/{1}'
-    HOST_COMPONENT_URL_FORMAT = upgradeHelper.Options.CLUSTER_URL + '/hosts/{0}/host_components/{1}'
-    service_comp = {
-      "YARN": ["NODEMANAGER", "RESOURCEMANAGER", "YARN_CLIENT"],
-      "MAPREDUCE2": ["HISTORYSERVER", "MAPREDUCE2_CLIENT"]}
-    new_old_host_map = {
-      "NODEMANAGER": "TASKTRACKER",
-      "HISTORYSERVER": "HISTORYSERVER",
-      "RESOURCEMANAGER": "JOBTRACKER",
-      "YARN_CLIENT": "MAPREDUCE_CLIENT",
-      "MAPREDUCE2_CLIENT": "MAPREDUCE_CLIENT"}
-    get_stack_name_mock.return_value = ""
-    has_component_mock.return_value = False
-    read_mapping_mock.return_value = host_mapping
-    expected_curl_args = []
-
-    for service in service_comp.keys():
-      expected_curl_args.append([
-        (SERVICE_URL_FORMAT.format(service),),
-        {
-          "validate": True,
-          "request_type": "POST"
-        }
-      ])
-      for component in service_comp[service]:
-        expected_curl_args.append([
-          (COMPONENT_URL_FORMAT.format(service, component),),
-          {
-            "validate": True,
-            "request_type": "POST"
-          }
-        ])
-        for host in host_mapping[new_old_host_map[component]]:
-          expected_curl_args.append([
-            (HOST_COMPONENT_URL_FORMAT.format(host, component),),
-            {
-              "validate": True,
-              "request_type": "POST"
-            }
-          ])
-
-    # execute testing function
-    upgradeHelper.add_services()
-
-    self.assertEqual(expected_curl_args, curl_mock.call_args_list)
-
-  @patch.object(upgradeHelper, "get_config_resp_all")
-  def test_coerce_tag(self, get_config_resp_all_mock):
-    test_catalog = """
-        {
-      "version": "1.0",
-      "stacks": [
-        {
-          "name": "HDP",
-          "old-version": "1.0",
-          "target-version": "1.1",
-          "options": {
-            "config-types":{
-              "test": {
-                "merged-copy": "yes"
-              }
-            }
-          },
-          "properties": {
-             "test": {
-               "test": "host1.com"
-            }
-          },
-          "property-mapping": {
-            "test":{
-                "map-to": "test-arr",
-                "coerce-to": "yaml-array"
-           }
-          }
-        }
-      ]
-    }
-    """
-    old_opt = upgradeHelper.Options.OPTIONS
-    options = lambda: ""
-    options.from_stack = "1.0"
-    options.to_stack = "1.1"
-    options.upgrade_json = ""
-
-    upgradeHelper.Options.OPTIONS = options
-    upgradeHelper.Options.SERVICES = [self.required_service]
-    get_config_resp_all_mock.return_value = {
-      "test": {
-        "properties": {}
-      }
-    }
-
-    ucf = UpgradeCatalogFactoryMock(test_catalog)
-    scf = upgradeHelper.ServerConfigFactory()
-
-    cfg = scf.get_config("test")
-    ucfg = ucf.get_catalog("1.0", "1.1")
-
-    cfg.merge(ucfg)
-    scf.process_mapping_transformations(ucfg)
-
-    upgradeHelper.Options.OPTIONS = old_opt
-
-    self.assertEqual(True, "test-arr" in cfg.properties)
-    self.assertEqual("['host1.com']", cfg.properties["test-arr"])
-
-  @patch.object(upgradeHelper, "get_config_resp_all")
-  def test_override_tag(self, get_config_resp_all_mock):
-    test_catalog = """
-        {
-      "version": "1.0",
-      "stacks": [
-        {
-          "name": "HDP",
-          "old-version": "1.0",
-          "target-version": "1.1",
-          "options": {
-            "config-types":{
-              "test": {
-                "merged-copy": "yes"
-              }
-            }
-          },
-          "properties": {
-             "test": {
-               "test_property": {
-                  "value": "host1.com",
-                  "override": "no"
-                }
-
-            }
-          },
-          "property-mapping": {}
-        }
-      ]
-    }
-    """
-    old_opt = upgradeHelper.Options.OPTIONS
-    options = lambda: ""
-    options.from_stack = "1.0"
-    options.to_stack = "1.1"
-    options.upgrade_json = ""
-
-    upgradeHelper.Options.OPTIONS = options
-    upgradeHelper.Options.SERVICES = [self.required_service]
-    get_config_resp_all_mock.return_value = {
-      "test": {
-        "properties": {
-          "test_property": "test host"
-        }
-      }
-    }
-
-    ucf = UpgradeCatalogFactoryMock(test_catalog)
-    scf = upgradeHelper.ServerConfigFactory()
-
-    cfg = scf.get_config("test")
-    ucfg = ucf.get_catalog("1.0", "1.1")
-
-    cfg.merge(ucfg)
-    scf.process_mapping_transformations(ucfg)
-
-    upgradeHelper.Options.OPTIONS = old_opt
-
-    self.assertEqual(True, "test_property" in cfg.properties)
-    self.assertEqual("test host", cfg.properties["test_property"])
-
-  @patch.object(upgradeHelper, "get_config_resp_all")
-  def test_replace_tag(self, get_config_resp_all_mock):
-    test_catalog = """
-        {
-      "version": "1.0",
-      "stacks": [
-        {
-          "name": "HDP",
-          "old-version": "1.0",
-          "target-version": "1.1",
-          "options": {
-            "config-types":{
-              "test": {
-                "merged-copy": "yes"
-              }
-            }
-          },
-          "properties": {
-             "test": {
-               "test": "host1.com"
-            }
-          },
-          "property-mapping": {
-            "test":{
-                "map-to": "test-arr",
-                "replace-from": "com",
-                "replace-to": "org"
-           }
-          }
-        }
-      ]
-    }
-    """
-    old_opt = upgradeHelper.Options.OPTIONS
-    options = lambda: ""
-    options.from_stack = "1.0"
-    options.to_stack = "1.1"
-    options.upgrade_json = ""
-
-    upgradeHelper.Options.OPTIONS = options
-    upgradeHelper.Options.SERVICES = [self.required_service]
-    get_config_resp_all_mock.return_value = {
-      "test": {
-        "properties": {}
-      }
-    }
-
-    ucf = UpgradeCatalogFactoryMock(test_catalog)
-    scf = upgradeHelper.ServerConfigFactory()
-
-    cfg = scf.get_config("test")
-    ucfg = ucf.get_catalog("1.0", "1.1")
-
-    cfg.merge(ucfg)
-    scf.process_mapping_transformations(ucfg)
-
-    upgradeHelper.Options.OPTIONS = old_opt
-
-    self.assertEqual(True, "test-arr" in cfg.properties)
-    self.assertEqual("host1.org", cfg.properties["test-arr"])
-
-  @patch.object(upgradeHelper, "curl")
-  @patch("time.time")
-  def test_update_config(self, time_mock, curl_mock):
-    time_pass = 2
-    config_type = "test config"
-    properties = {
-      "test property": "test value"
-    }
-    attributes = {
-      "test attribute": "attribute value"
-    }
-    expected_tag = "version" + str(int(time_pass * 1000))
-    properties_payload = {"Clusters": {"desired_config": {"type": config_type, "tag": expected_tag,
"properties": properties}}}
-    time_mock.return_value = time_pass
-
-    expected_simple_result = (
-      (upgradeHelper.Options.CLUSTER_URL,),
-      {
-        "request_type": "PUT",
-        "data": copy.deepcopy(properties_payload),
-        "validate": True,
-        "soft_validation": True
-      }
-    )
-
-    properties_payload["Clusters"]["desired_config"]["properties_attributes"] = attributes
-    expected_complex_result = (
-      (upgradeHelper.Options.CLUSTER_URL,),
-      {
-        "request_type": "PUT",
-        "data": copy.deepcopy(properties_payload),
-        "validate": True,
-        "soft_validation": True
-      }
-    )
-
-    # execute testing function
-    upgradeHelper.update_config(properties, config_type)
-    simple_result = tuple(curl_mock.call_args)
-
-    upgradeHelper.update_config(properties, config_type, attributes)
-    complex_result = tuple(curl_mock.call_args)
-
-    self.assertEqual(expected_simple_result, simple_result)
-    self.assertEqual(expected_complex_result, complex_result)
-
-  @patch.object(upgradeHelper, "curl")
-  def test_get_zookeeper_quorum(self, curl_mock):
-    zoo_def_port = "2181"
-    return_curl_data = {
-      "host_components": [
-                           {
-                             "HostRoles": {
-                               "host_name": "test.host.vm"
-                             }
-                           },
-                           {
-                             "HostRoles": {
-                               "host_name": "test.host.vm"
-                             }
-                           }
-      ]
-    }
-
-    curl_mock.return_value = copy.deepcopy(return_curl_data)
-
-    # build zookeeper quorum string from return_curl_data and remove trailing comas
-    expected_result = reduce(
-      lambda x, y: x + "%s:%s," % (y["HostRoles"]["host_name"], zoo_def_port),
-      return_curl_data["host_components"],
-      ''  # initializer
-    ).rstrip(',')
-
-    # execute testing function
-    actual_result = upgradeHelper.get_zookeeper_quorum()
-
-    self.assertEqual(expected_result, actual_result)
-
-  @patch.object(upgradeHelper, "curl")
-  def test_get_tez_history_url_base(self, curl_mock):
-    return_curl_data = {
-      'href': 'http://127.0.0.1:8080/api/v1/views/TEZ',
-      'ViewInfo': {'view_name': 'TEZ'},
-      'versions': [
-        {
-          'ViewVersionInfo': {
-            'view_name': 'TEZ',
-            'version': '0.7.0.2.3.0.0-1319'
-          },
-          'href': 'http://127.0.0.1:8080/api/v1/views/TEZ/versions/0.7.0.2.3.0.0-1319'
-        }
-      ]
-    }
-
-    curl_mock.return_value = copy.deepcopy(return_curl_data)
-
-    # build zookeeper quorum string from return_curl_data and remove trailing comas
-    expected_result = "http://127.0.0.1:8080/#/main/views/TEZ/0.7.0.2.3.0.0-1319/TEZ_CLUSTER_INSTANCE"
-
-    # execute testing function
-    actual_result = upgradeHelper.get_tez_history_url_base()
-
-    self.assertEqual(expected_result, actual_result)
-
-  @patch.object(upgradeHelper, "curl")
-  def test_get_ranger_xaaudit_hdfs_destination_directory(self, curl_mock):
-    return_curl_data = {
-      "host_components": [
-        {
-          "HostRoles": {
-            "host_name": "test.host.vm"
-          }
-        }
-      ]
-    }
-
-    curl_mock.return_value = copy.deepcopy(return_curl_data)
-
-    # build zookeeper quorum string from return_curl_data and remove trailing comas
-    expected_result = "hdfs://test.host.vm:8020/ranger/audit"
-
-    # execute testing function
-    actual_result = upgradeHelper.get_ranger_xaaudit_hdfs_destination_directory()
-
-    self.assertEqual(expected_result, actual_result)
-
-
-  @patch.object(upgradeHelper, "curl")
-  def test_get_config_resp_all(self, curl_mock):
-    cfg_type = "my type"
-    cfg_tag = "my tag"
-    cfg_properties = {
-      "my property": "property value"
-    }
-    curl_resp = [
-      {
-        'Clusters': {
-          'desired_configs': {
-            cfg_type: {
-              "tag": cfg_tag
-            }
-          }
-        }
-      },
-      {
-        "items": [
-          {
-            "type": cfg_type,
-            "tag": cfg_tag,
-            "properties": cfg_properties
-          }
-        ]
-      }
-    ]
-
-    expected_result = {
-        cfg_type: {
-          "properties": cfg_properties,
-          "tag": cfg_tag
-        }
-      }
-    curl_mock.side_effect = MagicMock(side_effect=curl_resp)
-
-    # execute testing function
-    actual_result = upgradeHelper.get_config_resp_all()
-
-    self.assertEquals(expected_result, actual_result)
-    pass
-
-  @patch.object(upgradeHelper, "get_config_resp_all")
-  @patch("os.mkdir")
-  @patch("os.path.exists")
-  @patch("__builtin__.open")
-  def test_backup_configs(self, open_mock, os_path_exists_mock, mkdir_mock, get_config_resp_all_mock):
-    data = {
-      self.catalog_cfg_type: {
-        "properties": {
-          "test-property": "value"
-        },
-        "tag": "version1"
-      }
-    }
-    os_path_exists_mock.return_value = False
-    get_config_resp_all_mock.return_value = data
-    expected = json.dumps(data[self.catalog_cfg_type]["properties"], indent=4)
-    stream = StringIO()
-    m = MagicMock()
-    m.__enter__.return_value = stream
-    open_mock.return_value = m
-
-    # execute testing function
-    upgradeHelper.backup_configs(self.catalog_cfg_type)
-
-    self.assertEqual(expected, stream.getvalue())
-
-  @patch.object(upgradeHelper, "curl")
-  def test_install_services(self, curl_mock):
-    expected_args = (
-      (
-        ('http://127.0.0.1:8080/api/v1/clusters/test1/services/MAPREDUCE2',),
-        {
-          'request_type': 'PUT',
-          'data': {
-            'RequestInfo': {
-              'context': 'Install MapReduce2'
-            },
-            'Body': {
-              'ServiceInfo': {
-                'state': 'INSTALLED'
-              }
-            }
-          },
-          'validate': True
-        }
-      ),
-      (
-        ('http://127.0.0.1:8080/api/v1/clusters/test1/services/YARN',),
-        {
-          'request_type': 'PUT',
-          'data': {
-            'RequestInfo': {
-              'context': 'Install YARN'
-            },
-            'Body': {
-              'ServiceInfo': {
-                'state': 'INSTALLED'
-              }
-            }
-          },
-          'validate': True
-        }
-      )
-    )
-
-    # execute testing function
-    upgradeHelper.install_services()
-
-    self.assertEqual(2, curl_mock.call_count)
-    for i in range(0, 1):
-      self.assertEqual(expected_args[i], tuple(curl_mock.call_args_list[i]))
-
-  def test_configuration_diff_analyze(self):
-    in_data = {
-        self.catalog_cfg_type: [
-          {
-            'catalog_item': {
-              'value': 'my value'
-            },
-            'property': 'my property',
-            'actual_value': 'my value',
-            'catalog_value': 'my value'
-          }
-        ]
-    }
-
-    expected_result = {
-      'my type': {
-        'fail': {
-          'count': 0,
-          'items': []
-        },
-        'total': {
-          'count': 1,
-          'items': []
-        },
-      'skipped': {
-        'count': 0,
-        'items': []
-      },
-        'ok': {
-          'count': 1,
-          'items': [
-                    {
-                      'catalog_item': {
-                        'value': 'my value'
-                      },
-                      'property': 'my property',
-                      'actual_value': 'my value',
-                      'catalog_value': 'my value'
-                    }
-          ]
-        }
-      }
-    }
-
-    # execute testing function
-    actual_result = upgradeHelper.configuration_diff_analyze(in_data)
-
-    self.assertEqual(expected_result, actual_result)
-
-  @patch.object(upgradeHelper, "UpgradeCatalogFactory", autospec=True)
-  @patch.object(upgradeHelper, "get_config_resp_all")
-  @patch.object(upgradeHelper, "configuration_item_diff")
-  @patch.object(upgradeHelper, "configuration_diff_analyze")
-  @patch("__builtin__.open")
-  def test_verify_configuration(self, open_mock, configuration_diff_analyze_mock, configuration_item_diff_mock,
-                                get_config_resp_all_mock, upgradecatalogfactory_mock):
-    old_opt = upgradeHelper.Options.OPTIONS
-    options = lambda: ""
-    options.from_stack = self.catalog_from
-    options.to_stack = self.catalog_to
-    options.upgrade_json = ""
-
-    upgradeHelper.Options.OPTIONS = options
-    upgradeHelper.Options.SERVICES = [self.required_service]
-    upgradecatalogfactory_mock.return_value = UpgradeCatalogFactoryMock(self.test_catalog)
-    get_config_resp_all_mock.return_value = {
-      self.catalog_cfg_type: {
-        "properties": {}
-      }
-    }
-
-    # execute testing function
-    upgradeHelper.verify_configuration()
-
-    upgradeHelper.Options.OPTIONS = old_opt
-
-    self.assertEqual(1, get_config_resp_all_mock.call_count)
-    self.assertEqual(1, configuration_item_diff_mock.call_count)
-    self.assertEqual(1, configuration_diff_analyze_mock.call_count)
-    self.assertEqual(1, open_mock.call_count)
-
-  def test_report_formatter(self):
-    file = StringIO()
-    cfg_item = self.catalog_cfg_type
-    analyzed_list = {
-        'fail': {
-          'count': 1,
-          'items': [
-            {
-              'catalog_item': {
-                'value': 'my value'
-              },
-              'property': 'my property',
-              'actual_value': 'my value 1',
-              'catalog_value': 'my value'
-            }
-          ]
-        },
-        'total': {
-          'count': 1,
-          'items': []
-        },
-        'skipped': {
-          'count': 0,
-          'items': []
-        },
-        'ok': {
-          'count': 0,
-          'items': []
-        }
-    }
-
-    expected_output = "Configuration item my type: property \"my property\" is set to \"my
value 1\", but should be set to \"my value\"\n"
-
-    # execute testing function
-    upgradeHelper.report_formatter(file, cfg_item, analyzed_list)
-
-    self.assertEqual(expected_output, file.getvalue())
-
-  @patch.object(upgradeHelper, "get_config_resp_all")
-  def test_conditional_replace(self, get_config_resp_all_mock):
-    test_catalog = """
-        {
-      "version": "1.0",
-      "stacks": [
-        {
-          "name": "HDP",
-          "old-version": "1.0",
-          "target-version": "1.1",
-          "options": {
-            "config-types":{
-              "test": {
-                "merged-copy": "yes"
-              }
-            }
-          },
-          "properties": {
-             "test": {
-               "test": {
-                 "value": "10",
-                 "value-required": "-1"
-               },
-               "test2": {
-                 "value": "10",
-                 "value-required": "-2"
-               }
-            }
-          },
-          "property-mapping": {
-          }
-        }
-      ]
-    }
-    """
-
-    expected_properties = {"test":"10", "test2":"15"}
-
-    old_opt = upgradeHelper.Options.OPTIONS
-    options = lambda: ""
-    options.from_stack = "1.0"
-    options.to_stack = "1.1"
-    options.upgrade_json = ""
-
-    upgradeHelper.Options.OPTIONS = options
-    upgradeHelper.Options.SERVICES = [self.required_service]
-    get_config_resp_all_mock.return_value = {
-      "test": {
-        "properties": {"test":"-1", "test2":"15"}
-      }
-    }
-
-    ucf = UpgradeCatalogFactoryMock(test_catalog)
-    scf = upgradeHelper.ServerConfigFactory()
-
-    cfg = scf.get_config("test")
-    ucfg = ucf.get_catalog("1.0", "1.1")
-
-    cfg.merge(ucfg)
-    upgradeHelper.Options.OPTIONS = old_opt
-
-    self.assertEqual(expected_properties, cfg.properties)
-
-if __name__ == "__main__":
-  unittest.main()


Mime
View raw message