Repository: ambari
Updated Branches:
  refs/heads/trunk 99cac719d -> 4e2b2d848


AMBARI-12036 Windows unit tests: Agent unit tests: fix the imports & failing 
patches

Excluded the inapplicable tests for now. Coalesced the OS mock.


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

Branch: refs/heads/trunk
Commit: 4e2b2d8481260f1d2c06c2251b97a4105e987be7
Parents: 99cac71
Author: Florian Barca <fba...@hortonworks.com>
Authored: Tue Jul 21 09:35:04 2015 -0700
Committer: Florian Barca <fba...@hortonworks.com>
Committed: Tue Jul 21 09:40:52 2015 -0700

----------------------------------------------------------------------
 .../test/python/ambari_agent/TestActionQueue.py | 24 +++---
 .../ambari_agent/TestActualConfigHandler.py     |  7 +-
 .../python/ambari_agent/TestCertGeneration.py   | 12 +--
 .../test/python/ambari_agent/TestController.py  |  6 +-
 .../TestCustomServiceOrchestrator.py            | 25 +++---
 .../test/python/ambari_agent/TestDataCleaner.py |  9 +--
 .../test/python/ambari_agent/TestFileCache.py   |  4 +-
 .../test/python/ambari_agent/TestHostInfo.py    |  4 +-
 .../test/python/ambari_agent/TestHostname.py    | 11 +--
 .../test/python/ambari_agent/TestLiveStatus.py  |  7 +-
 .../src/test/python/ambari_agent/TestMain.py    | 55 ++++++-------
 .../src/test/python/ambari_agent/TestNetUtil.py |  9 +--
 .../python/ambari_agent/TestPythonExecutor.py   | 11 +--
 .../test/python/ambari_agent/TestSecurity.py    |  7 +-
 .../test/python/ambari_agent/TestStatusCheck.py |  7 +-
 .../resource_management/TestContentSources.py   |  5 +-
 .../TestDirectoryResource.py                    | 65 ++++++++--------
 .../resource_management/TestExecuteResource.py  | 13 ++--
 .../resource_management/TestFileResource.py     | 81 ++++++++++----------
 .../resource_management/TestGroupResource.py    | 20 +++--
 .../resource_management/TestLinkResource.py     | 36 ++++-----
 .../TestPropertiesFileResource.py               | 36 +++++----
 .../TestRepositoryResource.py                   | 10 ++-
 .../resource_management/TestUserResource.py     | 32 ++++----
 .../TestXmlConfigResource.py                    | 32 ++++----
 .../src/test/python/only_for_platform.py        |  5 ++
 26 files changed, 256 insertions(+), 277 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py 
b/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
index 4e130f9..5a22843 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
@@ -36,14 +36,9 @@ from ambari_agent.PythonExecutor import PythonExecutor
 from ambari_agent.CommandStatusDict import CommandStatusDict
 from ambari_agent.ActualConfigHandler import ActualConfigHandler
 from ambari_agent.RecoveryManager import RecoveryManager
-from FileCache import FileCache
+from ambari_agent.FileCache import FileCache
 from ambari_commons import OSCheck
-from only_for_platform import only_for_platform, get_platform, 
not_for_platform, PLATFORM_LINUX, PLATFORM_WINDOWS
-
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
+from only_for_platform import not_for_platform, os_distro_value, 
PLATFORM_WINDOWS
 
 class TestActionQueue(TestCase):
   def setUp(self):
@@ -818,9 +813,12 @@ class TestActionQueue(TestCase):
     self.assertEqual(2, sleep_mock.call_count)
     sleep_mock.assert_has_calls([call(2), call(3)], False)
     runCommand_mock.assert_has_calls([
-      call(command, '/tmp/ambari-agent/output-19.txt', 
'/tmp/ambari-agent/errors-19.txt', override_output_files=True, retry=False),
-      call(command, '/tmp/ambari-agent/output-19.txt', 
'/tmp/ambari-agent/errors-19.txt', override_output_files=False, retry=True),
-      call(command, '/tmp/ambari-agent/output-19.txt', 
'/tmp/ambari-agent/errors-19.txt', override_output_files=False, retry=True)])
+      call(command, os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 
'output-19.txt',
+           os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 
'errors-19.txt', override_output_files=True, retry=False),
+      call(command, os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 
'output-19.txt',
+           os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 
'errors-19.txt', override_output_files=False, retry=True),
+      call(command, os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 
'output-19.txt',
+           os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 
'errors-19.txt', override_output_files=False, retry=True)])
 
 
   @patch("time.time")
@@ -857,8 +855,10 @@ class TestActionQueue(TestCase):
     self.assertEqual(1, sleep_mock.call_count)
     sleep_mock.assert_has_calls([call(2)], False)
     runCommand_mock.assert_has_calls([
-      call(command, '/tmp/ambari-agent/output-19.txt', 
'/tmp/ambari-agent/errors-19.txt', override_output_files=True, retry=False),
-      call(command, '/tmp/ambari-agent/output-19.txt', 
'/tmp/ambari-agent/errors-19.txt', override_output_files=False, retry=True)])
+      call(command, os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 
'output-19.txt',
+           os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 
'errors-19.txt', override_output_files=True, retry=False),
+      call(command, os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 
'output-19.txt',
+           os.sep + 'tmp' + os.sep + 'ambari-agent' + os.sep + 
'errors-19.txt', override_output_files=False, retry=True)])
 
   #retryable_command
   @patch("time.sleep")

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestActualConfigHandler.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/ambari_agent/TestActualConfigHandler.py 
b/ambari-agent/src/test/python/ambari_agent/TestActualConfigHandler.py
index 7f88e17..096516b 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestActualConfigHandler.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestActualConfigHandler.py
@@ -24,12 +24,7 @@ import logging
 from mock.mock import patch, MagicMock, call
 from ambari_agent.LiveStatus import LiveStatus
 from ambari_commons import OSCheck
-from only_for_platform import only_for_platform, get_platform, PLATFORM_LINUX, 
PLATFORM_WINDOWS
-
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
+from only_for_platform import os_distro_value
 
 with patch("platform.linux_distribution", return_value = 
('Suse','11','Final')):
   from ambari_agent.AmbariConfig import AmbariConfig

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestCertGeneration.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestCertGeneration.py 
b/ambari-agent/src/test/python/ambari_agent/TestCertGeneration.py
index d188dbd..2461281 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestCertGeneration.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestCertGeneration.py
@@ -21,18 +21,12 @@ import os
 import tempfile
 import shutil
 from unittest import TestCase
-import ConfigParser
-import security
-from security import CertificateManager
+
+from ambari_agent.security import CertificateManager
 from ambari_agent import AmbariConfig
 from mock.mock import patch, MagicMock
 from ambari_commons import OSCheck
-from only_for_platform import only_for_platform, get_platform, PLATFORM_LINUX, 
PLATFORM_WINDOWS
-
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
+from only_for_platform import os_distro_value
 
 class TestCertGeneration(TestCase):
   @patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = 
os_distro_value))

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestController.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestController.py 
b/ambari-agent/src/test/python/ambari_agent/TestController.py
index 93a39c3..a18d159 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestController.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestController.py
@@ -31,7 +31,7 @@ import platform
 from threading import Event
 import ambari_simplejson
 from ambari_commons import OSCheck
-from only_for_platform import not_for_platform, only_for_platform, 
get_platform, PLATFORM_LINUX, PLATFORM_WINDOWS
+from only_for_platform import not_for_platform, os_distro_value, 
PLATFORM_WINDOWS
 from ambari_agent import Controller, ActionQueue, Register
 from ambari_agent import hostname
 from ambari_agent.Controller import AGENT_AUTO_RESTART_EXIT_CODE
@@ -42,10 +42,8 @@ from ambari_agent.AmbariConfig import AmbariConfig
 from ambari_agent.Facter import FacterLinux
 import ambari_commons
 
-OPERATING_SYSTEM_DISTRO = ('Suse','11','Final')
-
 @not_for_platform(PLATFORM_WINDOWS)
-@patch.object(OSCheck, "os_distribution", new = OPERATING_SYSTEM_DISTRO)
+@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = 
os_distro_value))
 class TestController(unittest.TestCase):
 
   logger = logging.getLogger()

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestCustomServiceOrchestrator.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/ambari_agent/TestCustomServiceOrchestrator.py 
b/ambari-agent/src/test/python/ambari_agent/TestCustomServiceOrchestrator.py
index 831ecce..8957b44 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestCustomServiceOrchestrator.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestCustomServiceOrchestrator.py
@@ -30,24 +30,19 @@ import tempfile
 import time
 from threading import Thread
 
-from PythonExecutor import PythonExecutor
-from CustomServiceOrchestrator import CustomServiceOrchestrator
-from AmbariConfig import AmbariConfig
 from mock.mock import MagicMock, patch
 import StringIO
 import sys
-from AgentException import AgentException
-from FileCache import FileCache
-from LiveStatus import LiveStatus
-from BackgroundCommandExecutionHandle import BackgroundCommandExecutionHandle
+
 from ambari_agent.ActionQueue import ActionQueue
+from ambari_agent.AgentException import AgentException
+from ambari_agent.AmbariConfig import AmbariConfig
+from ambari_agent.BackgroundCommandExecutionHandle import 
BackgroundCommandExecutionHandle
+from ambari_agent.CustomServiceOrchestrator import CustomServiceOrchestrator
+from ambari_agent.FileCache import FileCache
+from ambari_agent.PythonExecutor import PythonExecutor
 from ambari_commons import OSCheck
-from only_for_platform import get_platform, PLATFORM_WINDOWS
-
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
+from only_for_platform import get_platform, os_distro_value, PLATFORM_WINDOWS
 
 class TestCustomServiceOrchestrator(TestCase):
 
@@ -81,7 +76,7 @@ class TestCustomServiceOrchestrator(TestCase):
 
   @patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = 
os_distro_value))
   @patch.object(CustomServiceOrchestrator, 'decompressClusterHostInfo')
-  @patch("hostname.public_hostname")
+  @patch("ambari_agent.hostname.public_hostname")
   @patch("os.path.isfile")
   @patch("os.unlink")
   @patch.object(FileCache, "__init__")
@@ -144,7 +139,7 @@ class TestCustomServiceOrchestrator(TestCase):
 
 
   @patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = 
os_distro_value))
-  @patch("hostname.public_hostname")
+  @patch("ambari_agent.hostname.public_hostname")
   @patch("os.path.isfile")
   @patch("os.unlink")
   @patch.object(FileCache, "__init__")

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestDataCleaner.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestDataCleaner.py 
b/ambari-agent/src/test/python/ambari_agent/TestDataCleaner.py
index 3ecb46a..02b69ac 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestDataCleaner.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestDataCleaner.py
@@ -22,15 +22,10 @@ limitations under the License.
 import unittest
 from mock.mock import patch, MagicMock, call, Mock
 from ambari_agent import DataCleaner
-import AmbariConfig
+from ambari_agent import AmbariConfig
 import os
 from ambari_commons import OSCheck
-from only_for_platform import only_for_platform, get_platform, PLATFORM_LINUX, 
PLATFORM_WINDOWS
-
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
+from only_for_platform import os_distro_value
 
 class TestDataCleaner(unittest.TestCase):
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestFileCache.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestFileCache.py 
b/ambari-agent/src/test/python/ambari_agent/TestFileCache.py
index da08782..1ffcadc 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestFileCache.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestFileCache.py
@@ -28,8 +28,8 @@ import tempfile
 import time
 from threading import Thread
 
-from FileCache import FileCache, CachingException
-from AmbariConfig import AmbariConfig
+from ambari_agent.FileCache import FileCache, CachingException
+from ambari_agent.AmbariConfig import AmbariConfig
 from mock.mock import MagicMock, patch
 import StringIO
 import sys

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py 
b/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py
index 58745f9..57e4224 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py
@@ -31,7 +31,7 @@ from mock.mock import create_autospec
 import ambari_commons
 from ambari_commons import OSCheck
 import os
-from only_for_platform import not_for_platform, get_platform, 
PLATFORM_WINDOWS, PLATFORM_LINUX
+from only_for_platform import not_for_platform, os_distro_value, 
PLATFORM_WINDOWS
 from ambari_commons.firewall import Firewall
 from ambari_commons.os_check import OSCheck, OSConst
 from ambari_agent.HostCheckReportFileHandler import HostCheckReportFileHandler
@@ -42,7 +42,7 @@ from resource_management.core.system import System
 from resource_management.libraries.functions import packages_analyzer
 
 @not_for_platform(PLATFORM_WINDOWS)
-@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = 
('Suse','11','Final')))
+@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = 
os_distro_value))
 class TestHostInfo(TestCase):
 
   @patch.object(OSCheck, 'get_os_family')

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestHostname.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestHostname.py 
b/ambari-agent/src/test/python/ambari_agent/TestHostname.py
index 8cfcc96..3cf6b17 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestHostname.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestHostname.py
@@ -28,12 +28,7 @@ import shutil
 import os, pprint, json,stat
 from mock.mock import patch, MagicMock
 from ambari_commons import OSCheck
-from only_for_platform import only_for_platform, get_platform, 
not_for_platform, PLATFORM_LINUX, PLATFORM_WINDOWS
-
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
+from only_for_platform import not_for_platform, os_distro_value, 
PLATFORM_WINDOWS
 
 class TestHostname(TestCase):
 
@@ -78,7 +73,7 @@ class TestHostname(TestCase):
       config.remove_option('server', 'hostname_script')
     pass
 
-  @only_for_platform(PLATFORM_LINUX)
+  @not_for_platform(PLATFORM_WINDOWS)
   def test_hostname_override(self):
     hostname.cached_hostname = None
     hostname.cached_public_hostname = None
@@ -101,7 +96,7 @@ class TestHostname(TestCase):
       config.remove_option('agent', 'hostname_script')
     pass
 
-  @only_for_platform(PLATFORM_LINUX)
+  @not_for_platform(PLATFORM_WINDOWS)
   def test_public_hostname_override(self):
     hostname.cached_hostname = None
     hostname.cached_public_hostname = None

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestLiveStatus.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestLiveStatus.py 
b/ambari-agent/src/test/python/ambari_agent/TestLiveStatus.py
index e9bb776..871dfb7 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestLiveStatus.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestLiveStatus.py
@@ -27,12 +27,7 @@ from mock.mock import patch, MagicMock
 import pprint
 from ambari_agent import StatusCheck
 from ambari_commons import OSCheck
-from only_for_platform import only_for_platform, get_platform, PLATFORM_LINUX, 
PLATFORM_WINDOWS
-
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
+from only_for_platform import os_distro_value
 
 
 class TestLiveStatus(TestCase):

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestMain.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestMain.py 
b/ambari-agent/src/test/python/ambari_agent/TestMain.py
index 8c8d347..7a3dc71 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestMain.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestMain.py
@@ -28,14 +28,9 @@ import tempfile
 import ConfigParser
 
 from ambari_commons import OSCheck
-from only_for_platform import get_platform, not_for_platform, 
only_for_platform, PLATFORM_WINDOWS, PLATFORM_LINUX
+from only_for_platform import get_platform, not_for_platform, os_distro_value, 
PLATFORM_WINDOWS
 from mock.mock import MagicMock, patch, ANY, Mock
 
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
-
 with patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = 
os_distro_value)):
   from ambari_agent import NetUtil, security
   from ambari_agent import ProcessHelper, main
@@ -46,8 +41,6 @@ with patch.object(OSCheck, "os_distribution", new = 
MagicMock(return_value = os_
   import ambari_agent.HeartbeatHandlers as HeartbeatHandlers
   from ambari_commons.os_check import OSConst, OSCheck
   from ambari_agent.ExitHelper import ExitHelper
-  if get_platform() != PLATFORM_WINDOWS:
-    from ambari_commons.shell import shellRunnerLinux
 
 class TestMain(unittest.TestCase):
 
@@ -61,7 +54,7 @@ class TestMain(unittest.TestCase):
     # enable stdout
     sys.stdout = sys.__stdout__
 
-  @only_for_platform(PLATFORM_LINUX)
+  @not_for_platform(PLATFORM_WINDOWS)
   @patch("ambari_agent.HeartbeatHandlers.HeartbeatStopHandlersLinux")
   @patch("sys.exit")
   @patch("os.getpid")
@@ -130,7 +123,7 @@ class TestMain(unittest.TestCase):
     main.update_log_level(config)
     setLevel_mock.assert_called_with(logging.INFO)
 
-  @only_for_platform(PLATFORM_LINUX)
+  @not_for_platform(PLATFORM_WINDOWS)
   @patch("signal.signal")
   def test_bind_signal_handlers(self, signal_mock):
     main.bind_signal_handlers(os.getpid())
@@ -206,10 +199,11 @@ class TestMain(unittest.TestCase):
   @not_for_platform(PLATFORM_WINDOWS)
   @patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = 
os_distro_value))
   @patch("time.sleep")
-  @patch.object(shellRunnerLinux,"run")
   @patch("sys.exit")
   @patch("os.path.exists")
-  def test_daemonize_and_stop(self, exists_mock, sys_exit_mock, kill_mock, 
sleep_mock):
+  def test_daemonize_and_stop(self, exists_mock, sys_exit_mock, sleep_mock):
+    from ambari_commons.shell import shellRunnerLinux
+
     oldpid = ProcessHelper.pidfile
     pid = str(os.getpid())
     _, tmpoutfile = tempfile.mkstemp()
@@ -220,24 +214,25 @@ class TestMain(unittest.TestCase):
     saved = open(ProcessHelper.pidfile, 'r').read()
     self.assertEqual(pid, saved)
 
-    # Reuse pid file when testing agent stop
-    # Testing normal exit
-    exists_mock.return_value = False
-    main.stop_agent()
-    kill_mock.assert_called_with(['ambari-sudo.sh', 'kill', '-15', pid])
-    sys_exit_mock.assert_called_with(0)
-
-    # Restore
-    kill_mock.reset_mock()
-    sys_exit_mock.reset_mock()
-    kill_mock.return_value = {'exitCode': 0, 'output': 'out', 'error': 'err'}
-
-    # Testing exit when failed to remove pid file
-    exists_mock.return_value = True
-    main.stop_agent()
-    kill_mock.assert_any_call(['ambari-sudo.sh', 'kill', '-15', pid])
-    kill_mock.assert_any_call(['ambari-sudo.sh', 'kill', '-9', pid])
-    sys_exit_mock.assert_called_with(1)
+    with patch("ambari_commons.shell.shellRunnerLinux.run") as kill_mock:
+      # Reuse pid file when testing agent stop
+      # Testing normal exit
+      exists_mock.return_value = False
+      main.stop_agent()
+      kill_mock.assert_called_with(['ambari-sudo.sh', 'kill', '-15', pid])
+      sys_exit_mock.assert_called_with(0)
+
+      # Restore
+      kill_mock.reset_mock()
+      sys_exit_mock.reset_mock()
+      kill_mock.return_value = {'exitCode': 0, 'output': 'out', 'error': 'err'}
+
+      # Testing exit when failed to remove pid file
+      exists_mock.return_value = True
+      main.stop_agent()
+      kill_mock.assert_any_call(['ambari-sudo.sh', 'kill', '-15', pid])
+      kill_mock.assert_any_call(['ambari-sudo.sh', 'kill', '-9', pid])
+      sys_exit_mock.assert_called_with(1)
 
     # Restore
     ProcessHelper.pidfile = oldpid

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestNetUtil.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestNetUtil.py 
b/ambari-agent/src/test/python/ambari_agent/TestNetUtil.py
index 3d8083b..ec4818e 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestNetUtil.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestNetUtil.py
@@ -23,12 +23,7 @@ from mock.mock import MagicMock, patch
 import unittest
 import threading
 from ambari_commons import OSCheck
-from only_for_platform import only_for_platform, get_platform, PLATFORM_LINUX, 
PLATFORM_WINDOWS
-
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
+from only_for_platform import not_for_platform, os_distro_value, 
PLATFORM_WINDOWS
 
 class TestNetUtil(unittest.TestCase):
 
@@ -58,7 +53,7 @@ class TestNetUtil(unittest.TestCase):
     httpsConMock.side_effect = Exception("test")
     self.assertFalse(netutil.checkURL("url")[0])
 
-  @only_for_platform(PLATFORM_LINUX)
+  @not_for_platform(PLATFORM_WINDOWS)
   @patch("time.sleep")
   @patch.object(threading._Event, "wait")
   def test_try_to_connect(self, event_mock,

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestPythonExecutor.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestPythonExecutor.py 
b/ambari-agent/src/test/python/ambari_agent/TestPythonExecutor.py
index eb6dd29..e4a47d1 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestPythonExecutor.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestPythonExecutor.py
@@ -26,16 +26,11 @@ import tempfile
 import time
 from threading import Thread
 
-from PythonExecutor import PythonExecutor
-from AmbariConfig import AmbariConfig
+from ambari_agent.PythonExecutor import PythonExecutor
+from ambari_agent.AmbariConfig import AmbariConfig
 from mock.mock import MagicMock, patch
 from ambari_commons import OSCheck
-from only_for_platform import only_for_platform, get_platform, PLATFORM_LINUX, 
PLATFORM_WINDOWS
-
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
+from only_for_platform import os_distro_value
 
 @patch.object(PythonExecutor, "open_subprocess_files", 
new=MagicMock(return_value =("", "")))
 class TestPythonExecutor(TestCase):

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestSecurity.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestSecurity.py 
b/ambari-agent/src/test/python/ambari_agent/TestSecurity.py
index c47172a..0e1e4ee 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestSecurity.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestSecurity.py
@@ -30,12 +30,7 @@ import os
 import tempfile
 
 from ambari_commons import OSCheck
-from only_for_platform import only_for_platform, get_platform, PLATFORM_LINUX, 
PLATFORM_WINDOWS
-
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
+from only_for_platform import os_distro_value
 
 with patch("platform.linux_distribution", return_value = 
('Suse','11','Final')):
   from ambari_agent import NetUtil

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/ambari_agent/TestStatusCheck.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestStatusCheck.py 
b/ambari-agent/src/test/python/ambari_agent/TestStatusCheck.py
index 32be4a8..34c57cc 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestStatusCheck.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestStatusCheck.py
@@ -28,12 +28,7 @@ import logging
 from mock.mock import patch
 from mock.mock import MagicMock
 
-from only_for_platform import only_for_platform, get_platform, PLATFORM_LINUX, 
PLATFORM_WINDOWS
-
-if get_platform() != PLATFORM_WINDOWS:
-  os_distro_value = ('Suse','11','Final')
-else:
-  os_distro_value = ('win2012serverr2','6.3','WindowsServer')
+from only_for_platform import os_distro_value
 
 USERNAME_LENGTH=10
 USERNAME_CHARS=string.ascii_uppercase +string.ascii_lowercase + string.digits 
+ '-_'

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/resource_management/TestContentSources.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/resource_management/TestContentSources.py 
b/ambari-agent/src/test/python/resource_management/TestContentSources.py
index c144cf9..55c3300 100644
--- a/ambari-agent/src/test/python/resource_management/TestContentSources.py
+++ b/ambari-agent/src/test/python/resource_management/TestContentSources.py
@@ -18,6 +18,7 @@ limitations under the License.
 
 from unittest import TestCase
 from mock.mock import patch, MagicMock
+from only_for_platform import get_platform, not_for_platform, PLATFORM_WINDOWS
 
 from resource_management.core import Environment
 from resource_management.core.system import System
@@ -25,7 +26,9 @@ from resource_management.core.source import StaticFile
 from resource_management.core.source import DownloadSource
 from resource_management.core.source import Template
 from resource_management.core.source import InlineTemplate
-from resource_management.core import sudo
+
+if get_platform() != PLATFORM_WINDOWS:
+  from resource_management.core import sudo
 
 from ambari_jinja2 import UndefinedError, TemplateNotFound
 import urllib2

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/resource_management/TestDirectoryResource.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/resource_management/TestDirectoryResource.py 
b/ambari-agent/src/test/python/resource_management/TestDirectoryResource.py
index e57ed67..f1ca4de 100644
--- a/ambari-agent/src/test/python/resource_management/TestDirectoryResource.py
+++ b/ambari-agent/src/test/python/resource_management/TestDirectoryResource.py
@@ -18,24 +18,29 @@ limitations under the License.
 
 from unittest import TestCase
 from mock.mock import patch, MagicMock
+from only_for_platform import get_platform, not_for_platform, PLATFORM_WINDOWS
+
 import os
 from resource_management.core.system import System
-from resource_management.core import Environment, Fail, sudo
+from resource_management.core import Environment, Fail
 from resource_management.core.resources import Directory
-import pwd
-import grp
+
+if get_platform() != PLATFORM_WINDOWS:
+  import pwd
+  import grp
+
 
 @patch.object(System, "os_family", new = 'redhat')
 class TestDirectoryResource(TestCase):
   
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "makedirs")
-  @patch.object(sudo, "path_isdir")
-  @patch.object(sudo, "stat")
-  @patch.object(sudo,"chmod")
-  @patch.object(sudo,"chown")
-  @patch.object(pwd, "getpwnam")
-  @patch.object(grp, "getgrnam")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.makedirs")
+  @patch("resource_management.core.sudo.path_isdir")
+  @patch("resource_management.core.sudo.stat")
+  @patch("resource_management.core.sudo.chmod")
+  @patch("resource_management.core.sudo.chown")
+  @patch("pwd.getpwnam")
+  @patch("grp.getgrnam")
   def test_create_directory_recursive(self, getgrnam_mock, getpwnam_mock,
                                       os_chown_mock, os_chmod_mock, 
os_stat_mock,
                                       isdir_mock, os_makedirs_mock, 
@@ -62,15 +67,15 @@ class TestDirectoryResource(TestCase):
     os_chmod_mock.assert_called_with('/a/b/c/d', 0777)
     os_chown_mock.assert_any_call('/a/b/c/d', getpwnam_mock.return_value, 
getgrnam_mock.return_value)
   
-  @patch.object(sudo, "path_exists")
+  @patch("resource_management.core.sudo.path_exists")
   @patch.object(os.path, "dirname")
-  @patch.object(sudo, "path_isdir")
-  @patch.object(sudo, "makedir")
-  @patch.object(sudo, "stat")
-  @patch.object(sudo,"chmod")
-  @patch.object(sudo,"chown")
-  @patch.object(pwd, "getpwnam")
-  @patch.object(grp, "getgrnam")
+  @patch("resource_management.core.sudo.path_isdir")
+  @patch("resource_management.core.sudo.makedir")
+  @patch("resource_management.core.sudo.stat")
+  @patch("resource_management.core.sudo.chmod")
+  @patch("resource_management.core.sudo.chown")
+  @patch("pwd.getpwnam")
+  @patch("grp.getgrnam")
   def test_create_directory_not_recursive(self, getgrnam_mock, getpwnam_mock,
                                       os_chown_mock, os_chmod_mock, 
os_stat_mock,
                                       mkdir_mock, isdir_mock, os_dirname_mock, 
@@ -96,9 +101,9 @@ class TestDirectoryResource(TestCase):
     os_chmod_mock.assert_called_with('/a/b/c/d', 0777)
     os_chown_mock.assert_any_call('/a/b/c/d', getpwnam_mock.return_value, 
getgrnam_mock.return_value)
     
-  @patch.object(sudo, "path_exists")
+  @patch("resource_management.core.sudo.path_exists")
   @patch.object(os.path, "dirname")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_create_directory_failed_no_parent(self, isdir_mock, 
os_dirname_mock, 
                                       os_path_exists_mock):
     os_path_exists_mock.return_value = False
@@ -119,8 +124,8 @@ class TestDirectoryResource(TestCase):
       self.assertEqual('Applying Directory[\'/a/b/c/d\'] failed, parent 
directory /a/b/c doesn\'t exist',
                        str(e))
 
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_create_directory_path_is_file_or_line(self, isdir_mock, 
os_path_exists_mock):
     os_path_exists_mock.return_value = True
     isdir_mock.return_value = False
@@ -138,9 +143,9 @@ class TestDirectoryResource(TestCase):
       self.assertEqual('Applying Directory[\'/a/b/c/d\'] failed, file /a/b/c/d 
already exists',
                        str(e))
   
-  @patch.object(sudo, "rmtree")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.rmtree")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_delete_directory(self, isdir_mock, os_path_exists_mock, 
rmtree_mock):
     os_path_exists_mock.return_value = True
     isdir_mock.return_value = True
@@ -152,7 +157,7 @@ class TestDirectoryResource(TestCase):
       
     rmtree_mock.assert_called_with('/a/b/c/d')
     
-  @patch.object(sudo, "path_exists")
+  @patch("resource_management.core.sudo.path_exists")
   def test_delete_noexisting_directory(self, os_path_exists_mock):
     os_path_exists_mock.return_value = False
     
@@ -161,9 +166,9 @@ class TestDirectoryResource(TestCase):
            action='delete'
       )
   
-  @patch.object(sudo, "rmtree")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.rmtree")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_delete_directory_with_path_to_file(self, isdir_mock, 
os_path_exists_mock, rmtree_mock):
     os_path_exists_mock.return_value = True
     isdir_mock.return_value = False

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/resource_management/TestExecuteResource.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/resource_management/TestExecuteResource.py 
b/ambari-agent/src/test/python/resource_management/TestExecuteResource.py
index 04244e9..2a6cd9b 100644
--- a/ambari-agent/src/test/python/resource_management/TestExecuteResource.py
+++ b/ambari-agent/src/test/python/resource_management/TestExecuteResource.py
@@ -18,18 +18,21 @@ limitations under the License.
 
 from unittest import TestCase
 from mock.mock import patch, MagicMock, call
+from only_for_platform import get_platform, not_for_platform, PLATFORM_WINDOWS
 
 from resource_management.core.system import System
 from resource_management.core.resources.system import Execute
 from resource_management.core.environment import Environment
-from resource_management.core import sudo
 
 import subprocess
 import logging
 import os
 from resource_management import Fail
-import grp
-import pwd
+
+if get_platform() != PLATFORM_WINDOWS:
+  import grp
+  import pwd
+
 import select
 
 
@@ -69,7 +72,7 @@ class TestExecuteResource(TestCase):
     self.assertTrue(popen_mock.called, 'subprocess.Popen should have been 
called!')
     self.assertFalse(proc_communicate_mock.called, 'proc.communicate should 
not have been called!')
 
-  @patch.object(sudo, "path_exists")
+  @patch("resource_management.core.sudo.path_exists")
   @patch.object(subprocess, "Popen")
   def test_attribute_creates(self, popen_mock, exists_mock):
     exists_mock.return_value = True
@@ -133,7 +136,7 @@ class TestExecuteResource(TestCase):
 
     self.assertTrue(call(10) in time_mock.call_args_list)
 
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_attribute_group(self, getpwnam_mock):
     def error(argument):
       self.assertEqual(argument, "test_user")

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/resource_management/TestFileResource.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/resource_management/TestFileResource.py 
b/ambari-agent/src/test/python/resource_management/TestFileResource.py
index 43df94f..7774108 100644
--- a/ambari-agent/src/test/python/resource_management/TestFileResource.py
+++ b/ambari-agent/src/test/python/resource_management/TestFileResource.py
@@ -19,22 +19,25 @@ limitations under the License.
 
 from unittest import TestCase
 from mock.mock import patch, MagicMock
+from only_for_platform import get_platform, not_for_platform, PLATFORM_WINDOWS
+
 import os
 import sys
-import grp
-import pwd
 from resource_management.core import Environment, Fail
 from resource_management.core.resources import File
 from resource_management.core.system import System
-from resource_management.core import sudo
-import resource_management.core.providers.system
 import resource_management
 
+if get_platform() != PLATFORM_WINDOWS:
+  import resource_management.core.providers.system
+  import grp
+  import pwd
+
 
 @patch.object(System, "os_family", new = 'redhat')
 class TestFileResource(TestCase):
   @patch.object(os.path, "dirname")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_action_create_dir_exist(self, isdir_mock, dirname_mock):
     """
     Tests if 'create' action fails when path is existent directory
@@ -55,7 +58,7 @@ class TestFileResource(TestCase):
     self.assertFalse(dirname_mock.called)
 
   @patch.object(os.path, "dirname")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_action_create_parent_dir_non_exist(self, isdir_mock, dirname_mock):
     """
     Tests if 'create' action fails when parent directory of path
@@ -79,10 +82,10 @@ class TestFileResource(TestCase):
     self.assertTrue(dirname_mock.called)
 
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "read_file")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.read_file")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_action_create_non_existent_file(self, isdir_mock, exists_mock, 
create_file_mock, read_file_mock, ensure_mock):
     """
     Tests if 'create' action create new non existent file and write proper data
@@ -103,10 +106,10 @@ class TestFileResource(TestCase):
 
 
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "read_file")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.read_file")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_action_create_replace(self, isdir_mock, exists_mock, 
create_file_mock, read_file_mock, ensure_mock):
     """
     Tests if 'create' action rewrite existent file with new data
@@ -126,9 +129,9 @@ class TestFileResource(TestCase):
     create_file_mock.assert_called_with('/directory/file', 'new-content', 
encoding=None)
 
 
-  @patch.object(sudo, "unlink")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.unlink")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_action_delete_is_directory(self, isdir_mock, exist_mock, 
unlink_mock):
     """
     Tests if 'delete' action fails when path is directory
@@ -152,9 +155,9 @@ class TestFileResource(TestCase):
     self.assertEqual(exist_mock.call_count, 0)
     self.assertEqual(unlink_mock.call_count, 0)
 
-  @patch.object(sudo, "unlink")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.unlink")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_action_delete(self, isdir_mock, exist_mock, unlink_mock):
     """
     Tests if 'delete' action removes file
@@ -175,7 +178,7 @@ class TestFileResource(TestCase):
     self.assertEqual(unlink_mock.call_count, 1)
 
 
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_attribute_path(self, isdir_mock):
     """
     Tests 'path' attribute
@@ -198,10 +201,10 @@ class TestFileResource(TestCase):
 
   @patch.object(resource_management.core.Environment, "backup_file")
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "read_file")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.read_file")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_attribute_backup(self, isdir_mock, exists_mock, create_file_mock,  
read_file_mock, ensure_mock, backup_file_mock):
     """
     Tests 'backup' attribute
@@ -235,8 +238,8 @@ class TestFileResource(TestCase):
 
   @patch("resource_management.core.providers.system._ensure_metadata")
   @patch("__builtin__.open")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_attribute_replace(self, isdir_mock, exists_mock, open_mock, 
ensure_mock):
     """
     Tests 'replace' attribute
@@ -263,14 +266,14 @@ class TestFileResource(TestCase):
     self.assertEqual(open_mock.call_count, 0)
 
 
-  @patch.object(pwd, "getpwnam")
-  @patch.object(grp, "getgrnam")
-  @patch.object(sudo, "chown")
-  @patch.object(sudo, "chmod")
-  @patch.object(sudo, "stat")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("pwd.getpwnam")
+  @patch("grp.getgrnam")
+  @patch("resource_management.core.sudo.chown")
+  @patch("resource_management.core.sudo.chmod")
+  @patch("resource_management.core.sudo.stat")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_ensure_metadata(self, isdir_mock, exists_mock, create_file_mock, 
stat_mock, chmod_mock, chown_mock, getgrnam_mock,
                            getpwnam_mock):
     """
@@ -331,10 +334,10 @@ class TestFileResource(TestCase):
 
   @patch("resource_management.core.providers.system._ensure_metadata")
   @patch("resource_management.core.providers.system.FileProvider._get_content")
-  @patch.object(sudo, "read_file")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.read_file")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_action_create_encoding(self, isdir_mock, exists_mock, 
create_file_mock, read_file_mock, get_content_mock ,ensure_mock):
 
     isdir_mock.side_effect = [False, True]

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/resource_management/TestGroupResource.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/resource_management/TestGroupResource.py 
b/ambari-agent/src/test/python/resource_management/TestGroupResource.py
index 1d52a90..da982cf 100644
--- a/ambari-agent/src/test/python/resource_management/TestGroupResource.py
+++ b/ambari-agent/src/test/python/resource_management/TestGroupResource.py
@@ -18,16 +18,20 @@ limitations under the License.
 
 from unittest import TestCase
 from mock.mock import patch, MagicMock
+from only_for_platform import get_platform, not_for_platform, PLATFORM_WINDOWS
+
 from resource_management.core import Environment, Fail
 from resource_management.core.resources import Group
 from resource_management.core.system import System
 
 import subprocess
-import grp
 import os
-import pty
 import select
 
+if get_platform() != PLATFORM_WINDOWS:
+  import grp
+  import pty
+
 
 subproc_stdout = MagicMock()
 
@@ -35,11 +39,11 @@ subproc_stdout = MagicMock()
 @patch.object(select, "select", new=MagicMock(return_value=([subproc_stdout], 
None, None)))
 @patch.object(System, "os_family", new = 'redhat')
 @patch.object(os, "environ", new = {'PATH':'/bin'})
-@patch.object(pty, "openpty", new = MagicMock(return_value=(1,5)))
+@patch("pty.openpty", new = MagicMock(return_value=(1,5)))
 @patch.object(os, "close", new=MagicMock())
 class TestGroupResource(TestCase):
 
-  @patch.object(grp, "getgrnam")
+  @patch("grp.getgrnam")
   @patch.object(subprocess, "Popen")
   def test_action_create_nonexistent(self, popen_mock, getgrnam_mock):
     subproc_mock = MagicMock()
@@ -60,7 +64,7 @@ class TestGroupResource(TestCase):
     getgrnam_mock.assert_called_with('hadoop')
 
 
-  @patch.object(grp, "getgrnam")
+  @patch("grp.getgrnam")
   @patch.object(subprocess, "Popen")
   def test_action_create_existent(self, popen_mock, getgrnam_mock):
     subproc_mock = MagicMock()
@@ -82,7 +86,7 @@ class TestGroupResource(TestCase):
     getgrnam_mock.assert_called_with('mapred')
 
 
-  @patch.object(grp, "getgrnam")
+  @patch("grp.getgrnam")
   @patch.object(subprocess, "Popen")
   def test_action_create_fail(self, popen_mock, getgrnam_mock):
     subproc_mock = MagicMock()
@@ -107,7 +111,7 @@ class TestGroupResource(TestCase):
     getgrnam_mock.assert_called_with('mapred')
 
 
-  @patch.object(grp, "getgrnam")
+  @patch("grp.getgrnam")
   @patch.object(subprocess, "Popen")
   def test_action_remove(self, popen_mock, getgrnam_mock):
 
@@ -128,7 +132,7 @@ class TestGroupResource(TestCase):
     getgrnam_mock.assert_called_with('mapred')
 
 
-  @patch.object(grp, "getgrnam")
+  @patch("grp.getgrnam")
   @patch.object(subprocess, "Popen")
   def test_action_remove_fail(self, popen_mock, getgrnam_mock):
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/resource_management/TestLinkResource.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/resource_management/TestLinkResource.py 
b/ambari-agent/src/test/python/resource_management/TestLinkResource.py
index ceac076..f27b5d0 100644
--- a/ambari-agent/src/test/python/resource_management/TestLinkResource.py
+++ b/ambari-agent/src/test/python/resource_management/TestLinkResource.py
@@ -18,9 +18,9 @@ limitations under the License.
 
 from unittest import TestCase
 from mock.mock import patch, MagicMock
+from only_for_platform import get_platform, not_for_platform, PLATFORM_WINDOWS
 
 from resource_management.core import Environment, Fail
-from resource_management.core import sudo
 from resource_management.core.system import System
 from resource_management.core.resources.system import Link
 
@@ -30,10 +30,10 @@ import os
 class TestLinkResource(TestCase):
 
   @patch.object(os.path, "realpath")
-  @patch.object(sudo,  "path_lexists")
-  @patch.object(sudo,  "path_lexists")
-  @patch.object(sudo, "unlink")
-  @patch.object(sudo, "symlink")
+  @patch("resource_management.core.sudo.path_lexists")
+  @patch("resource_management.core.sudo.path_lexists")
+  @patch("resource_management.core.sudo.unlink")
+  @patch("resource_management.core.sudo.symlink")
   def test_action_create_relink(self, symlink_mock, unlink_mock, 
                          islink_mock, lexists_mock,
                          realmock):
@@ -49,7 +49,7 @@ class TestLinkResource(TestCase):
     symlink_mock.assert_called_with("/a/b/link_to_path", "/some_path")
     
   @patch.object(os.path, "realpath")
-  @patch.object(sudo,  "path_lexists")
+  @patch("resource_management.core.sudo.path_lexists")
   def test_action_create_failed_due_to_file_exists(self, 
                          lexists_mock, realmock):
     lexists_mock.side_effect = [True, False]
@@ -65,8 +65,8 @@ class TestLinkResource(TestCase):
         self.assertEqual("Link['/some_path'] trying to create a symlink with 
the same name as an existing file or directory",
                        str(e))
         
-  @patch.object(sudo,  "path_lexists")
-  @patch.object(sudo, "symlink")
+  @patch("resource_management.core.sudo.path_lexists")
+  @patch("resource_management.core.sudo.symlink")
   def test_action_create_symlink_clean_create(self, symlink_mock, 
lexists_mock):
     lexists_mock.return_value = False
     
@@ -78,9 +78,9 @@ class TestLinkResource(TestCase):
     symlink_mock.assert_called_with("/a/b/link_to_path", "/some_path")
     
   @patch.object(os.path, "isdir")
-  @patch.object(sudo, "path_exists")  
-  @patch.object(sudo,  "path_lexists")
-  @patch.object(sudo, "link")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_lexists")
+  @patch("resource_management.core.sudo.link")
   def test_action_create_hardlink_clean_create(self, link_mock, lexists_mock,
                                         exists_mock, isdir_mock):
     lexists_mock.return_value = False
@@ -95,8 +95,8 @@ class TestLinkResource(TestCase):
       
     link_mock.assert_called_with("/a/b/link_to_path", "/some_path")
     
-  @patch.object(sudo, "path_exists")  
-  @patch.object(sudo,  "path_lexists")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_lexists")
   def test_action_create_hardlink_target_doesnt_exist(self, lexists_mock,
                                         exists_mock):
     lexists_mock.return_value = False
@@ -113,9 +113,9 @@ class TestLinkResource(TestCase):
         self.assertEqual('Failed to apply Link[\'/some_path\'], linking to 
nonexistent location /a/b/link_to_path',
                        str(e))
         
-  @patch.object(sudo, "path_isdir") 
-  @patch.object(sudo, "path_exists")  
-  @patch.object(sudo,  "path_lexists")
+  @patch("resource_management.core.sudo.path_isdir")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_lexists")
   def test_action_create_hardlink_target_is_dir(self, lexists_mock,
                                         exists_mock, isdir_mock):
     lexists_mock.return_value = False
@@ -133,8 +133,8 @@ class TestLinkResource(TestCase):
         self.assertEqual('Failed to apply Link[\'/some_path\'], cannot create 
hard link to a directory (/a/b/link_to_path)',
                        str(e)) 
         
-  @patch.object(sudo, "unlink")
-  @patch.object(sudo, "path_exists")
+  @patch("resource_management.core.sudo.unlink")
+  @patch("resource_management.core.sudo.path_exists")
   def test_action_delete(self, exists_mock, unlink_mock):     
     exists_mock.return_value = True
     

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/resource_management/TestPropertiesFileResource.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/resource_management/TestPropertiesFileResource.py
 
b/ambari-agent/src/test/python/resource_management/TestPropertiesFileResource.py
index 5c97380..7ca6ef8 100644
--- 
a/ambari-agent/src/test/python/resource_management/TestPropertiesFileResource.py
+++ 
b/ambari-agent/src/test/python/resource_management/TestPropertiesFileResource.py
@@ -24,7 +24,9 @@ import os
 import time
 from unittest import TestCase
 from mock.mock import patch, MagicMock
-from resource_management.core import Environment, sudo
+from only_for_platform import get_platform, not_for_platform, PLATFORM_WINDOWS
+
+from resource_management.core import Environment
 from resource_management.core.system import System
 from resource_management.libraries import PropertiesFile
 
@@ -37,9 +39,9 @@ class TestPropertiesFIleResource(TestCase):
 
 
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   @patch.object(time, "asctime")
   def test_action_create_empty_properties_without_dir(self,
                                                       time_asctime_mock,
@@ -70,9 +72,9 @@ class TestPropertiesFIleResource(TestCase):
 
 
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   @patch.object(time, "asctime")
   def test_action_create_empty_properties_with_dir(self,
                                                    time_asctime_mock,
@@ -103,9 +105,9 @@ class TestPropertiesFIleResource(TestCase):
 
 
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   @patch.object(time, "asctime")
   def test_action_create_properties_simple(self,
                                            time_asctime_mock,
@@ -136,9 +138,9 @@ class TestPropertiesFIleResource(TestCase):
 
 
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   @patch.object(time, "asctime")
   def test_action_create_properties_with_metacharacters(self,
                                                         time_asctime_mock,
@@ -174,10 +176,10 @@ class TestPropertiesFIleResource(TestCase):
 
 
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "read_file")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.read_file")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   @patch.object(time, "asctime")
   def test_action_create_properties_rewrite_content(self,
                                                     time_asctime_mock,

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/resource_management/TestRepositoryResource.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/resource_management/TestRepositoryResource.py 
b/ambari-agent/src/test/python/resource_management/TestRepositoryResource.py
index 0f30178..8ff0fd2 100644
--- a/ambari-agent/src/test/python/resource_management/TestRepositoryResource.py
+++ b/ambari-agent/src/test/python/resource_management/TestRepositoryResource.py
@@ -20,11 +20,17 @@ import os, sys
 import tempfile
 from unittest import TestCase
 from mock.mock import patch, MagicMock
+from only_for_platform import get_platform, not_for_platform, PLATFORM_WINDOWS
 
-from resource_management import *
-from resource_management.libraries.providers import repository
+from resource_management.core.environment import Environment
+from resource_management.core.source import InlineTemplate
+from resource_management.core.system import System
+from resource_management.libraries.resources.repository import Repository
 from ambari_commons.os_check import OSCheck
 
+if get_platform() != PLATFORM_WINDOWS:
+  from resource_management.libraries.providers import repository
+
 class DummyTemplate(object):
 
   def __init__(self, name, extra_imports=[], **kwargs):

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/resource_management/TestUserResource.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/resource_management/TestUserResource.py 
b/ambari-agent/src/test/python/resource_management/TestUserResource.py
index 1598823..f2c25fa 100644
--- a/ambari-agent/src/test/python/resource_management/TestUserResource.py
+++ b/ambari-agent/src/test/python/resource_management/TestUserResource.py
@@ -18,28 +18,32 @@ limitations under the License.
 
 from unittest import TestCase
 from mock.mock import patch, MagicMock, PropertyMock
+from only_for_platform import get_platform, not_for_platform, PLATFORM_WINDOWS
 
 from resource_management.core import Environment, Fail
 from resource_management.core.system import System
 from resource_management.core.resources import User
-import pwd
 import subprocess
 import os
-import pty
 import select
 
+if get_platform() != PLATFORM_WINDOWS:
+  import pwd
+  import pty
+
+
 subproc_stdout = MagicMock()
 
 @patch.object(os, "read", new=MagicMock(return_value=None))
 @patch.object(select, "select", new=MagicMock(return_value=([subproc_stdout], 
None, None)))
 @patch.object(System, "os_family", new = 'redhat')
 @patch.object(os, "environ", new = {'PATH':'/bin'})
-@patch.object(pty, "openpty", new = MagicMock(return_value=(1,5)))
+@patch("pty.openpty", new = MagicMock(return_value=(1,5)))
 @patch.object(os, "close", new=MagicMock())
 class TestUserResource(TestCase):
 
   @patch.object(subprocess, "Popen")
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_action_create_nonexistent(self, getpwnam_mock, popen_mock):
     subproc_mock = MagicMock()
     subproc_mock.returncode = 0
@@ -53,7 +57,7 @@ class TestUserResource(TestCase):
     self.assertEqual(popen_mock.call_count, 1)
     
   @patch.object(subprocess, "Popen")
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_action_create_existent(self, getpwnam_mock, popen_mock):
     subproc_mock = MagicMock()
     subproc_mock.returncode = 0
@@ -68,7 +72,7 @@ class TestUserResource(TestCase):
     self.assertEqual(popen_mock.call_count, 1)
 
   @patch.object(subprocess, "Popen")
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_action_delete(self, getpwnam_mock, popen_mock):
     subproc_mock = MagicMock()
     subproc_mock.returncode = 0
@@ -83,7 +87,7 @@ class TestUserResource(TestCase):
     self.assertEqual(popen_mock.call_count, 1)
 
   @patch.object(subprocess, "Popen")
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_attribute_comment(self, getpwnam_mock, popen_mock):
     subproc_mock = MagicMock()
     subproc_mock.returncode = 0
@@ -99,7 +103,7 @@ class TestUserResource(TestCase):
     self.assertEqual(popen_mock.call_count, 1)
 
   @patch.object(subprocess, "Popen")
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_attribute_home(self, getpwnam_mock, popen_mock):
     subproc_mock = MagicMock()
     subproc_mock.returncode = 0
@@ -115,7 +119,7 @@ class TestUserResource(TestCase):
     self.assertEqual(popen_mock.call_count, 1)
 
   @patch.object(subprocess, "Popen")
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_attribute_password(self, getpwnam_mock, popen_mock):
     subproc_mock = MagicMock()
     subproc_mock.returncode = 0
@@ -131,7 +135,7 @@ class TestUserResource(TestCase):
     self.assertEqual(popen_mock.call_count, 1)
 
   @patch.object(subprocess, "Popen")
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_attribute_shell(self, getpwnam_mock, popen_mock):
     subproc_mock = MagicMock()
     subproc_mock.returncode = 0
@@ -146,7 +150,7 @@ class TestUserResource(TestCase):
     self.assertEqual(popen_mock.call_count, 1)
 
   @patch.object(subprocess, "Popen")
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_attribute_uid(self, getpwnam_mock, popen_mock):
     subproc_mock = MagicMock()
     subproc_mock.returncode = 0
@@ -161,7 +165,7 @@ class TestUserResource(TestCase):
     self.assertEqual(popen_mock.call_count, 1)
 
   @patch.object(subprocess, "Popen")
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_attribute_gid(self, getpwnam_mock, popen_mock):
     subproc_mock = MagicMock()
     subproc_mock.returncode = 0
@@ -177,7 +181,7 @@ class TestUserResource(TestCase):
 
   
@patch('resource_management.core.providers.accounts.UserProvider.user_groups', 
new_callable=PropertyMock)
   @patch.object(subprocess, "Popen")
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_attribute_groups(self, getpwnam_mock, popen_mock, user_groups_mock):
     subproc_mock = MagicMock()
     subproc_mock.returncode = 0
@@ -194,7 +198,7 @@ class TestUserResource(TestCase):
     self.assertEqual(popen_mock.call_count, 1)
 
   @patch.object(subprocess, "Popen")
-  @patch.object(pwd, "getpwnam")
+  @patch("pwd.getpwnam")
   def test_missing_shell_argument(self, getpwnam_mock, popen_mock):
     subproc_mock = MagicMock()
     subproc_mock.returncode = 0

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-agent/src/test/python/resource_management/TestXmlConfigResource.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/resource_management/TestXmlConfigResource.py 
b/ambari-agent/src/test/python/resource_management/TestXmlConfigResource.py
index 6092717..29a22b2 100644
--- a/ambari-agent/src/test/python/resource_management/TestXmlConfigResource.py
+++ b/ambari-agent/src/test/python/resource_management/TestXmlConfigResource.py
@@ -24,7 +24,9 @@ import os
 import time
 from unittest import TestCase
 from mock.mock import patch, MagicMock
-from resource_management.core import Environment, sudo
+from only_for_platform import get_platform, not_for_platform, PLATFORM_WINDOWS
+
+from resource_management.core import Environment
 from resource_management.core.system import System
 from resource_management.libraries import XmlConfig
 
@@ -37,9 +39,9 @@ class TestXmlConfigResource(TestCase):
   """
 
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   @patch.object(time, "asctime")
   def test_action_create_empty_xml_config(self,
                                           time_asctime_mock,
@@ -66,9 +68,9 @@ class TestXmlConfigResource(TestCase):
 
 
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   @patch.object(time, "asctime")
   def test_action_create_simple_xml_config(self,
                                            time_asctime_mock,
@@ -95,9 +97,9 @@ class TestXmlConfigResource(TestCase):
 
 
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   @patch.object(time, "asctime")
   def test_action_create_xml_config_with_metacharacters(self,
                                                         time_asctime_mock,
@@ -147,9 +149,9 @@ class TestXmlConfigResource(TestCase):
     create_file_mock.assert_called_with('/dir/conf/file.xml', u'<!--Wed 
2014-02-->\n    <configuration>\n    \n    <property>\n      <name></name>\n    
  <value></value>\n    </property>\n    \n    <property>\n      
<name>prop.1</name>\n      <value>&#39;.&#39;yyyy-MM-dd-HH</value>\n      
<attr1>x</attr1>\n    </property>\n    \n    <property>\n      
<name>prop.2</name>\n      <value>INFO, openjpa</value>\n    </property>\n    
\n    <property>\n      <name>prop.3</name>\n      <value>%d{ISO8601} %5p 
%c{1}:%L - %m%n</value>\n      <attr2>value3</attr2>\n    </property>\n    \n   
 <property>\n      <name>prop.4</name>\n      
<value>${oozie.log.dir}/oozie.log</value>\n      
<attr_value_empty></attr_value_empty>\n      <attr2>value4</attr2>\n    
</property>\n    \n    <property>\n      <name>prop.empty</name>\n      
<value></value>\n      <attr_value_empty></attr_value_empty>\n    </property>\n 
   \n  </configuration>', encoding='UTF-8')
 
   @patch("resource_management.core.providers.system._ensure_metadata")
-  @patch.object(sudo, "create_file")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.create_file")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   @patch.object(time, "asctime")
   def test_action_create_xml_config_sorted_by_key(self,
                                                   time_asctime_mock,
@@ -180,8 +182,8 @@ class TestXmlConfigResource(TestCase):
     create_file_mock.assert_called_with('/dir/conf/file.xml', u'<!--Wed 
2014-02-->\n    <configuration>\n    \n    <property>\n      <name></name>\n    
  <value></value>\n    </property>\n    \n    <property>\n      
<name>first</name>\n      <value>should be first</value>\n    </property>\n    
\n    <property>\n      <name>second</name>\n      <value>should be 
second</value>\n    </property>\n    \n    <property>\n      
<name>third</name>\n      <value>should be third</value>\n    </property>\n    
\n    <property>\n      <name>z_last</name>\n      <value>should be 
last</value>\n    </property>\n    \n  </configuration>', encoding='UTF-8')
 
   @patch("resource_management.libraries.providers.xml_config.File")
-  @patch.object(sudo, "path_exists")
-  @patch.object(sudo, "path_isdir")
+  @patch("resource_management.core.sudo.path_exists")
+  @patch("resource_management.core.sudo.path_isdir")
   def test_action_create_arguments(self, os_path_isdir_mock 
,os_path_exists_mock, file_mock):
 
     os_path_isdir_mock.side_effect = [False, True]

http://git-wip-us.apache.org/repos/asf/ambari/blob/4e2b2d84/ambari-common/src/test/python/only_for_platform.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/test/python/only_for_platform.py 
b/ambari-common/src/test/python/only_for_platform.py
index 1b08db5..fba2771 100644
--- a/ambari-common/src/test/python/only_for_platform.py
+++ b/ambari-common/src/test/python/only_for_platform.py
@@ -45,3 +45,8 @@ def for_specific_platforms(systems):
     if platform.system() in systems:
       return obj
   return decorator
+
+if get_platform() != PLATFORM_WINDOWS:
+  os_distro_value = ('Suse','11','Final')
+else:
+  os_distro_value = ('win2012serverr2','6.3','WindowsServer')

Reply via email to