You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ao...@apache.org on 2014/01/31 20:50:31 UTC

[06/51] [partial] AMBARI-4491. Move all the supported versions in Baikal for stack to python code (remove dependence on puppet). (aonishuk)

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/HIVE/test_mysql_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/HIVE/test_mysql_server.py b/ambari-server/src/test/python/stacks/1.3.2/HIVE/test_mysql_server.py
new file mode 100644
index 0000000..d424a12
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/HIVE/test_mysql_server.py
@@ -0,0 +1,141 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestMySqlServer(RMFTestCase):
+  def test_configure_default(self):
+    self.executeScript("1.3.2/services/HIVE/package/scripts/mysql_server.py",
+                       classname = "MysqlServer",
+                       command = "configure",
+                       config_file="default.json"
+    )
+    self.assert_configure_default()
+    self.assertNoMoreResources()
+
+  def test_start_default(self):
+    self.executeScript("1.3.2/services/HIVE/package/scripts/mysql_server.py",
+                       classname = "MysqlServer",
+                       command = "start",
+                       config_file="default.json"
+    )
+
+    self.assertResourceCalled('Execute', 'service mysql start',
+                       logoutput = True,
+                       path = ['/usr/local/bin/:/bin/:/sbin/'],
+                       tries = 1,
+    )
+    self.assertNoMoreResources()
+
+  def test_stop_default(self):
+    self.executeScript("1.3.2/services/HIVE/package/scripts/mysql_server.py",
+                       classname = "MysqlServer",
+                       command = "stop",
+                       config_file="default.json"
+    )
+
+    self.assertResourceCalled('Execute', 'service mysql stop',
+                              logoutput = True,
+                              path = ['/usr/local/bin/:/bin/:/sbin/'],
+                              tries = 1,
+    )
+    self.assertNoMoreResources()
+
+
+  def test_configure_secured(self):
+    self.executeScript("1.3.2/services/HIVE/package/scripts/mysql_server.py",
+                       classname = "MysqlServer",
+                       command = "configure",
+                       config_file="secured.json"
+    )
+    self.assert_configure_secured()
+    self.assertNoMoreResources()
+
+  def test_start_secured(self):
+    self.executeScript("1.3.2/services/HIVE/package/scripts/mysql_server.py",
+                       classname = "MysqlServer",
+                       command = "start",
+                       config_file="secured.json"
+    )
+
+    self.assertResourceCalled('Execute', 'service mysql start',
+                              logoutput = True,
+                              path = ['/usr/local/bin/:/bin/:/sbin/'],
+                              tries = 1,
+                              )
+    self.assertNoMoreResources()
+
+  def test_stop_secured(self):
+    self.executeScript("1.3.2/services/HIVE/package/scripts/mysql_server.py",
+                       classname = "MysqlServer",
+                       command = "stop",
+                       config_file="secured.json"
+    )
+
+    self.assertResourceCalled('Execute', 'service mysql stop',
+                              logoutput = True,
+                              path = ['/usr/local/bin/:/bin/:/sbin/'],
+                              tries = 1,
+                              )
+    self.assertNoMoreResources()
+
+  def assert_configure_default(self):
+    self.assertResourceCalled('Execute', 'service mysql start',
+      logoutput = True,
+      path = ['/usr/local/bin/:/bin/:/sbin/'],
+      tries = 1,
+    )
+    self.assertResourceCalled('File', '/tmp/addMysqlUser.sh',
+      content = StaticFile('addMysqlUser.sh'),
+      mode = 493,
+    )
+    self.assertResourceCalled('Execute', ('bash', '-x', '/tmp/addMysqlUser.sh', 'mysql', u'hive', 'asd', u'c6402.ambari.apache.org'),
+      logoutput = True,
+      path = ['/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'],
+      tries = 3,
+      try_sleep = 5,
+    )
+    self.assertResourceCalled('Execute', 'service mysql stop',
+      logoutput = True,
+      path = ['/usr/local/bin/:/bin/:/sbin/'],
+      tries = 1,
+    )
+
+  def assert_configure_secured(self):
+    self.assertResourceCalled('Execute', 'service mysql start',
+      logoutput = True,
+      path = ['/usr/local/bin/:/bin/:/sbin/'],
+      tries = 1,
+    )
+    self.assertResourceCalled('File', '/tmp/addMysqlUser.sh',
+      content = StaticFile('addMysqlUser.sh'),
+      mode = 493,
+    )
+    self.assertResourceCalled('Execute', ('bash', '-x', '/tmp/addMysqlUser.sh', 'mysql', u'hive', 'asd', u'c6402.ambari.apache.org'),
+      logoutput = True,
+      path = ['/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'],
+      tries = 3,
+      try_sleep = 5,
+    )
+    self.assertResourceCalled('Execute', 'service mysql stop',
+      logoutput = True,
+      path = ['/usr/local/bin/:/bin/:/sbin/'],
+      tries = 1,
+    )

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_client.py b/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_client.py
new file mode 100644
index 0000000..fdfbf6e
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_client.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestMapreduceClient(RMFTestCase):
+
+  def test_configure_default(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/client.py",
+                       classname = "Client",
+                       command = "configure",
+                       config_file="default.json"
+    )
+    self.assertResourceCalled('Directory', '/var/run/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/mapred',
+      owner = 'mapred',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.include',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+    self.assertNoMoreResources()
+
+  def test_configure_secured(self):
+
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/client.py",
+      classname = "Client",
+      command = "configure",
+      config_file="secured.json"
+    )
+    self.assertResourceCalled('Directory', '/var/run/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/mapred',
+      owner = 'mapred',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.include',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+
+    self.assertNoMoreResources()
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_historyserver.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_historyserver.py b/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_historyserver.py
new file mode 100644
index 0000000..df58f13
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_historyserver.py
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestHistoryServer(RMFTestCase):
+
+  def test_configure_default(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/historyserver.py",
+                       classname = "Historyserver",
+                       command = "configure",
+                       config_file="default.json"
+    )
+    self.assert_configure_default()
+    self.assertNoMoreResources()
+
+  def test_start_default(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/historyserver.py",
+                         classname = "Historyserver",
+                         command = "start",
+                         config_file="default.json"
+      )
+
+    self.assert_configure_default()
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf start historyserver',
+                              user = 'mapred',
+                              not_if = 'ls /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid` >/dev/null 2>&1'
+    )
+    self.assertResourceCalled('Execute', 'ls /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid` >/dev/null 2>&1',
+                              user = 'mapred',
+                              initial_wait = 5,
+                              not_if= 'ls /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid` >/dev/null 2>&1'
+    )
+    self.assertNoMoreResources()
+
+  def test_stop_default(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/historyserver.py",
+                       classname = "Historyserver",
+                       command = "stop",
+                       config_file="default.json"
+    )
+
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf stop historyserver',
+                              user = 'mapred'
+    )
+    self.assertResourceCalled('Execute', 'rm -f /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid')
+    self.assertNoMoreResources()
+
+
+  def test_configure_secured(self):
+
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/historyserver.py",
+                       classname = "Historyserver",
+                       command = "configure",
+                       config_file="secured.json"
+    )
+    self.assert_configure_secured()
+    self.assertNoMoreResources()
+
+  def test_start_secured(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/historyserver.py",
+                         classname = "Historyserver",
+                         command = "start",
+                         config_file="secured.json"
+    )
+
+    self.assert_configure_default()
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf start historyserver',
+                              user = 'mapred',
+                              not_if = 'ls /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid` >/dev/null 2>&1'
+    )
+    self.assertResourceCalled('Execute', 'ls /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid` >/dev/null 2>&1',
+                              user = 'mapred',
+                              initial_wait = 5,
+                              not_if= 'ls /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid` >/dev/null 2>&1'
+    )
+    self.assertNoMoreResources()
+
+  def test_stop_secured(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/historyserver.py",
+                       classname = "Historyserver",
+                       command = "stop",
+                       config_file="secured.json"
+    )
+
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf stop historyserver',
+                              user = 'mapred'
+    )
+    self.assertResourceCalled('Execute', 'rm -f /var/run/hadoop/mapred/hadoop-mapred-historyserver.pid')
+    self.assertNoMoreResources()
+
+  def assert_configure_default(self):
+    self.assertResourceCalled('Directory', '/var/run/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/mapred',
+      owner = 'mapred',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.include',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+
+  def assert_configure_secured(self):
+    self.assertResourceCalled('Directory', '/var/run/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/mapred',
+      owner = 'mapred',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.include',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_jobtracker.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_jobtracker.py b/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_jobtracker.py
new file mode 100644
index 0000000..4c442ad
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_jobtracker.py
@@ -0,0 +1,196 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestJobtracker(RMFTestCase):
+
+  def test_configure_default(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
+                       classname = "Jobtracker",
+                       command = "configure",
+                       config_file="default.json"
+    )
+    self.assert_configure_default()
+    self.assertNoMoreResources()
+
+  def test_start_default(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
+                       classname = "Jobtracker",
+                       command = "start",
+                       config_file="default.json"
+      )
+
+    self.assert_configure_default()
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf start jobtracker',
+                       user = 'mapred',
+                       not_if = 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1'
+    )
+    self.assertResourceCalled('Execute', 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1',
+                       user = 'mapred',
+                       initial_wait = 5,
+                       not_if= 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1'
+    )
+    self.assertNoMoreResources()
+
+  def test_stop_default(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
+                       classname = "Jobtracker",
+                       command = "stop",
+                       config_file="default.json"
+    )
+
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf stop jobtracker',
+                              user = 'mapred'
+    )
+    self.assertResourceCalled('Execute', 'rm -f /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid')
+    self.assertNoMoreResources()
+
+  def test_decommission_default(self):
+
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
+                       classname = "Jobtracker",
+                       command = "decommission",
+                       config_file="default.json"
+    )
+
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
+                       owner = 'mapred',
+                       content = Template('exclude_hosts_list.j2'),
+                       group = 'hadoop',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'mradmin -refreshNodes',
+                       conf_dir = '/etc/hadoop/conf',
+                       kinit_override = True,
+                       user = 'mapred',
+    )
+    self.assertNoMoreResources()
+
+  def test_configure_secured(self):
+
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
+                       classname = "Jobtracker",
+                       command = "configure",
+                       config_file="secured.json"
+    )
+    self.assert_configure_secured()
+    self.assertNoMoreResources()
+
+  def test_start_secured(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
+                       classname = "Jobtracker",
+                       command = "start",
+                       config_file="secured.json"
+    )
+
+    self.assert_configure_default()
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf start jobtracker',
+                       user = 'mapred',
+                       not_if = 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1'
+    )
+    self.assertResourceCalled('Execute', 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1',
+                       user = 'mapred',
+                       initial_wait = 5,
+                       not_if= 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1'
+    )
+    self.assertNoMoreResources()
+
+  def test_stop_secured(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
+                       classname = "Jobtracker",
+                       command = "stop",
+                       config_file="secured.json"
+    )
+
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf stop jobtracker',
+                       user = 'mapred'
+    )
+    self.assertResourceCalled('Execute', 'rm -f /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid')
+    self.assertNoMoreResources()
+
+  def test_decommission_secured(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
+                       classname = "Jobtracker",
+                       command = "decommission",
+                       config_file="secured.json"
+    )
+
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
+                       owner = 'mapred',
+                       content = Template('exclude_hosts_list.j2'),
+                       group = 'hadoop',
+    )
+
+    self.assertResourceCalled('ExecuteHadoop', 'mradmin -refreshNodes',
+                       conf_dir = '/etc/hadoop/conf',
+                       kinit_override = True,
+                       user = 'mapred',
+    )
+    self.assertNoMoreResources()
+
+  def assert_configure_default(self):
+    self.assertResourceCalled('Directory', '/var/run/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/mapred',
+      owner = 'mapred',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.include',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+
+  def assert_configure_secured(self):
+    self.assertResourceCalled('Directory', '/var/run/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/mapred',
+      owner = 'mapred',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.include',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_service_check.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_service_check.py b/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_service_check.py
new file mode 100644
index 0000000..7391a04
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_service_check.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestServiceCheck(RMFTestCase):
+
+  def test_service_check_default(self):
+
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/service_check.py",
+                        classname="ServiceCheck",
+                        command="service_check",
+                        config_file="default.json"
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'dfs -rmr mapredsmokeoutput mapredsmokeinput ; hadoop dfs -put /etc/passwd mapredsmokeinput',
+                        try_sleep = 5,
+                        tries = 1,
+                        user = 'ambari-qa',
+                        conf_dir = '/etc/hadoop/conf',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'jar /usr/lib/hadoop//hadoop-examples.jar wordcount mapredsmokeinput mapredsmokeoutput',
+                        logoutput = True,
+                        try_sleep = 5,
+                        tries = 1,
+                        user = 'ambari-qa',
+                        conf_dir = '/etc/hadoop/conf',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'fs -test -e mapredsmokeoutput',
+                        user = 'ambari-qa',
+                        conf_dir = '/etc/hadoop/conf',
+    )
+    self.assertNoMoreResources()
+
+  def test_service_check_secured(self):
+
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/service_check.py",
+                       classname="ServiceCheck",
+                       command="service_check",
+                       config_file="secured.json"
+    )
+    self.assertResourceCalled('Execute', '/usr/bin/kinit -kt /etc/security/keytabs/smokeuser.headless.keytab ambari-qa;',
+                       user = 'ambari-qa',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'dfs -rmr mapredsmokeoutput mapredsmokeinput ; hadoop dfs -put /etc/passwd mapredsmokeinput',
+                       try_sleep = 5,
+                       tries = 1,
+                       user = 'ambari-qa',
+                       conf_dir = '/etc/hadoop/conf',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'jar /usr/lib/hadoop//hadoop-examples.jar wordcount mapredsmokeinput mapredsmokeoutput',
+                       logoutput = True,
+                       try_sleep = 5,
+                       tries = 1,
+                       user = 'ambari-qa',
+                       conf_dir = '/etc/hadoop/conf',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'fs -test -e mapredsmokeoutput',
+                       user = 'ambari-qa',
+                       conf_dir = '/etc/hadoop/conf',
+    )
+    self.assertNoMoreResources()

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_tasktracker.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_tasktracker.py b/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_tasktracker.py
new file mode 100644
index 0000000..d12f09b
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_tasktracker.py
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestTasktracker(RMFTestCase):
+
+  def test_configure_default(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/tasktracker.py",
+                       classname = "Tasktracker",
+                       command = "configure",
+                       config_file="default.json"
+    )
+    self.assert_configure_default()
+    self.assertNoMoreResources()
+
+  def test_start_default(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/tasktracker.py",
+                         classname = "Tasktracker",
+                         command = "start",
+                         config_file="default.json"
+      )
+
+    self.assert_configure_default()
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf start tasktracker',
+                              user = 'mapred',
+                              not_if = 'ls /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid` >/dev/null 2>&1'
+    )
+    self.assertResourceCalled('Execute', 'ls /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid` >/dev/null 2>&1',
+                              user = 'mapred',
+                              initial_wait = 5,
+                              not_if= 'ls /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid` >/dev/null 2>&1'
+    )
+    self.assertNoMoreResources()
+
+  def test_stop_default(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/tasktracker.py",
+                       classname = "Tasktracker",
+                       command = "stop",
+                       config_file="default.json"
+    )
+
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf stop tasktracker',
+                              user = 'mapred'
+    )
+    self.assertResourceCalled('Execute', 'rm -f /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid')
+    self.assertNoMoreResources()
+
+
+  def test_configure_secured(self):
+
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/tasktracker.py",
+                       classname = "Tasktracker",
+                       command = "configure",
+                       config_file="secured.json"
+    )
+    self.assert_configure_secured()
+    self.assertNoMoreResources()
+
+  def test_start_secured(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/tasktracker.py",
+                         classname = "Tasktracker",
+                         command = "start",
+                         config_file="secured.json"
+    )
+
+    self.assert_configure_default()
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf start tasktracker',
+                              user = 'mapred',
+                              not_if = 'ls /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid` >/dev/null 2>&1'
+    )
+    self.assertResourceCalled('Execute', 'ls /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid` >/dev/null 2>&1',
+                              user = 'mapred',
+                              initial_wait = 5,
+                              not_if= 'ls /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid` >/dev/null 2>&1'
+    )
+    self.assertNoMoreResources()
+
+  def test_stop_secured(self):
+    self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/tasktracker.py",
+                       classname = "Tasktracker",
+                       command = "stop",
+                       config_file="secured.json"
+    )
+
+    self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf stop tasktracker',
+                              user = 'mapred'
+    )
+    self.assertResourceCalled('Execute', 'rm -f /var/run/hadoop/mapred/hadoop-mapred-tasktracker.pid')
+    self.assertNoMoreResources()
+
+  def assert_configure_default(self):
+    self.assertResourceCalled('Directory', '/var/run/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/mapred',
+      owner = 'mapred',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.include',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+
+  def assert_configure_secured(self):
+    self.assertResourceCalled('Directory', '/var/run/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/hadoop/mapred',
+      owner = 'mapred',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/mapred',
+      owner = 'mapred',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.include',
+      owner = 'mapred',
+      group = 'hadoop',
+    )
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/SQOOP/test_service_check.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/SQOOP/test_service_check.py b/ambari-server/src/test/python/stacks/1.3.2/SQOOP/test_service_check.py
new file mode 100644
index 0000000..93a14c3
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/SQOOP/test_service_check.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestSqoopServiceCheck(RMFTestCase):
+
+  def test_service_check_secured(self):
+    self.executeScript("1.3.2/services/SQOOP/package/scripts/service_check.py",
+                       classname = "SqoopServiceCheck",
+                       command = "service_check",
+                       config_file="secured.json")
+    self.assertResourceCalled('Execute', '/usr/bin/kinit  -kt /etc/security/keytabs/smokeuser.headless.keytab ambari-qa',)
+    self.assertResourceCalled('Execute', 'sqoop version',
+                              logoutput = True,
+                              user = 'ambari-qa',)
+    self.assertNoMoreResources()
+
+  def test_service_check_default(self):
+    self.executeScript("1.3.2/services/SQOOP/package/scripts/service_check.py",
+                         classname = "SqoopServiceCheck",
+                         command = "service_check",
+                         config_file="default.json")
+    self.assertResourceCalled('Execute', 'sqoop version',
+                              logoutput = True,
+                              user = 'ambari-qa',)
+    self.assertNoMoreResources()
+
+
+
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/SQOOP/test_sqoop.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/SQOOP/test_sqoop.py b/ambari-server/src/test/python/stacks/1.3.2/SQOOP/test_sqoop.py
new file mode 100644
index 0000000..c052280
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/SQOOP/test_sqoop.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestSqoop(RMFTestCase):
+
+  def test_configure_default(self):
+    self.executeScript("1.3.2/services/SQOOP/package/scripts/sqoop_client.py",
+                       classname = "SqoopClient",
+                       command = "configure",
+                       config_file="default.json"
+    )
+    self.assertResourceCalled('Link', '/usr/lib/sqoop/lib/mysql-connector-java.jar',
+                              to = '/usr/share/java/mysql-connector-java.jar',)
+    self.assertResourceCalled('Directory', '/usr/lib/sqoop/conf',
+                              owner = 'sqoop',
+                              group = 'hadoop',)
+    self.assertResourceCalled('TemplateConfig', '/usr/lib/sqoop/conf/sqoop-env.sh',
+                              owner = 'sqoop',
+                              template_tag = None,)
+    self.assertResourceCalled('File', '/usr/lib/sqoop/conf/sqoop-env-template.sh',
+                              owner = 'sqoop',
+                              group = 'hadoop',)
+    self.assertResourceCalled('File', '/usr/lib/sqoop/conf/sqoop-site-template.xml',
+                              owner = 'sqoop',
+                              group = 'hadoop',)
+    self.assertResourceCalled('File', '/usr/lib/sqoop/conf/sqoop-site.xml',
+                              owner = 'sqoop',
+                              group = 'hadoop',)
+    self.assertNoMoreResources()
+
+
+
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/WEBHCAT/test_webhcat_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/WEBHCAT/test_webhcat_server.py b/ambari-server/src/test/python/stacks/1.3.2/WEBHCAT/test_webhcat_server.py
new file mode 100644
index 0000000..7690954
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/WEBHCAT/test_webhcat_server.py
@@ -0,0 +1,188 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestWebHCatServer(RMFTestCase):
+
+  def test_configure_default(self):
+    self.executeScript("1.3.2/services/WEBHCAT/package/scripts/webhcat_server.py",
+                       classname = "WebHCatServer",
+                       command = "configure",
+                       config_file="default.json"
+    )
+    self.assert_configure_default()
+    self.assertNoMoreResources()
+
+  def test_start_default(self):
+    self.executeScript("1.3.2/services/WEBHCAT/package/scripts/webhcat_server.py",
+                       classname = "WebHCatServer",
+                       command = "start",
+                       config_file="default.json"
+    )
+
+    self.assert_configure_default()
+    self.assertResourceCalled('Execute', 'env HADOOP_HOME=/usr /usr/lib/hcatalog/sbin/webhcat_server.sh start',
+                              not_if = 'ls /var/run/webhcat/webhcat.pid >/dev/null 2>&1 && ps `cat /var/run/webhcat/webhcat.pid` >/dev/null 2>&1',
+                              user = 'hcat'
+    )
+    self.assertNoMoreResources()
+
+  def test_stop_default(self):
+    self.executeScript("1.3.2/services/WEBHCAT/package/scripts/webhcat_server.py",
+                       classname = "WebHCatServer",
+                       command = "stop",
+                       config_file="default.json"
+    )
+
+    self.assertResourceCalled('Execute', 'env HADOOP_HOME=/usr /usr/lib/hcatalog/sbin/webhcat_server.sh stop',
+                              user = 'hcat',
+                              )
+    self.assertResourceCalled('Execute', 'rm -f /var/run/webhcat/webhcat.pid')
+    self.assertNoMoreResources()
+
+    def test_configure_secured(self):
+      self.executeScript("1.3.2/services/WEBHCAT/package/scripts/webhcat_server.py",
+                         classname = "WebHCatServer",
+                         command = "configure",
+                         config_file="secured.json"
+      )
+
+      self.assert_configure_secured()
+      self.assertNoMoreResources()
+
+  def test_start_secured(self):
+    self.executeScript("1.3.2/services/WEBHCAT/package/scripts/webhcat_server.py",
+                       classname = "WebHCatServer",
+                       command = "start",
+                       config_file="secured.json"
+    )
+
+    self.assert_configure_secured()
+    self.assertResourceCalled('Execute', 'env HADOOP_HOME=/usr /usr/lib/hcatalog/sbin/webhcat_server.sh start',
+                              not_if = 'ls /var/run/webhcat/webhcat.pid >/dev/null 2>&1 && ps `cat /var/run/webhcat/webhcat.pid` >/dev/null 2>&1',
+                              user = 'hcat'
+    )
+    self.assertNoMoreResources()
+
+  def test_stop_secured(self):
+    self.executeScript("1.3.2/services/WEBHCAT/package/scripts/webhcat_server.py",
+                       classname = "WebHCatServer",
+                       command = "stop",
+                       config_file="secured.json"
+    )
+
+    self.assertResourceCalled('Execute', 'env HADOOP_HOME=/usr /usr/lib/hcatalog/sbin/webhcat_server.sh stop',
+                              user = 'hcat',
+                              )
+    self.assertResourceCalled('Execute', 'rm -f /var/run/webhcat/webhcat.pid')
+    self.assertNoMoreResources()
+
+  def assert_configure_default(self):
+    self.assertResourceCalled('Directory', '/var/run/webhcat',
+      owner = 'hcat',
+      group = 'hadoop',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('Directory', '/var/log/webhcat',
+      owner = 'hcat',
+      group = 'hadoop',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('Directory', '/etc/hcatalog/conf',
+      owner = 'hcat',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('XmlConfig', 'webhcat-site.xml',
+      owner = 'hcat',
+      group = 'hadoop',
+      conf_dir = '/etc/hcatalog/conf',
+      configurations = self.getConfig()['configurations']['webhcat-site'], # don't hardcode all the properties
+    )
+    self.assertResourceCalled('File', '/etc/hcatalog/conf/webhcat-env.sh',
+      content = Template('webhcat-env.sh.j2'),
+      owner = 'hcat',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'fs -copyFromLocal /usr/lib/hadoop-mapreduce/hadoop-streaming*.jar /apps/webhcat/hadoop-streaming.jar',
+      not_if = ' hadoop fs -ls /apps/webhcat/hadoop-streaming.jar >/dev/null 2>&1',
+      user = 'hcat',
+      conf_dir = '/etc/hadoop/conf',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'fs -copyFromLocal /usr/share/HDP-webhcat/pig.tar.gz /apps/webhcat/pig.tar.gz',
+      not_if = ' hadoop fs -ls /apps/webhcat/pig.tar.gz >/dev/null 2>&1',
+      user = 'hcat',
+      conf_dir = '/etc/hadoop/conf',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'fs -copyFromLocal /usr/share/HDP-webhcat/hive.tar.gz /apps/webhcat/hive.tar.gz',
+      not_if = ' hadoop fs -ls /apps/webhcat/hive.tar.gz >/dev/null 2>&1',
+      user = 'hcat',
+      conf_dir = '/etc/hadoop/conf',
+    )
+
+  def assert_configure_secured(self):
+    self.assertResourceCalled('Directory', '/var/run/webhcat',
+      owner = 'hcat',
+      group = 'hadoop',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('Directory', '/var/log/webhcat',
+      owner = 'hcat',
+      group = 'hadoop',
+      recursive = True,
+      mode = 493,
+    )
+    self.assertResourceCalled('Directory', '/etc/hcatalog/conf',
+      owner = 'hcat',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('XmlConfig', 'webhcat-site.xml',
+      owner = 'hcat',
+      group = 'hadoop',
+      conf_dir = '/etc/hcatalog/conf',
+      configurations = self.getConfig()['configurations']['webhcat-site'], # don't hardcode all the properties
+    )
+    self.assertResourceCalled('File', '/etc/hcatalog/conf/webhcat-env.sh',
+      content = Template('webhcat-env.sh.j2'),
+      owner = 'hcat',
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('Execute', '/usr/bin/kinit -kt /etc/security/keytabs/smokeuser.headless.keytab ambari-qa;',
+      path = ['/bin'],
+      user = 'hcat',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'fs -copyFromLocal /usr/lib/hadoop-mapreduce/hadoop-streaming*.jar /apps/webhcat/hadoop-streaming.jar',
+      not_if = '/usr/bin/kinit -kt /etc/security/keytabs/smokeuser.headless.keytab ambari-qa; hadoop fs -ls /apps/webhcat/hadoop-streaming.jar >/dev/null 2>&1',
+      user = 'hcat',
+      conf_dir = '/etc/hadoop/conf',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'fs -copyFromLocal /usr/share/HDP-webhcat/pig.tar.gz /apps/webhcat/pig.tar.gz',
+      not_if = ' hadoop fs -ls /apps/webhcat/pig.tar.gz >/dev/null 2>&1',
+      user = 'hcat',
+      conf_dir = '/etc/hadoop/conf',
+    )
+    self.assertResourceCalled('ExecuteHadoop', 'fs -copyFromLocal /usr/share/HDP-webhcat/hive.tar.gz /apps/webhcat/hive.tar.gz',
+      not_if = ' hadoop fs -ls /apps/webhcat/hive.tar.gz >/dev/null 2>&1',
+      user = 'hcat',
+      conf_dir = '/etc/hadoop/conf',
+    )

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/WEBHCAT/test_webhcat_service_check.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/WEBHCAT/test_webhcat_service_check.py b/ambari-server/src/test/python/stacks/1.3.2/WEBHCAT/test_webhcat_service_check.py
new file mode 100644
index 0000000..bc63ad5
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/WEBHCAT/test_webhcat_service_check.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestServiceCheck(RMFTestCase):
+
+  def test_service_check_default(self):
+
+    self.executeScript("1.3.2/services/WEBHCAT/package/scripts/service_check.py",
+                       classname="WebHCatServiceCheck",
+                       command="service_check",
+                       config_file="default.json"
+    )
+    self.assertResourceCalled('File', '/tmp/templetonSmoke.sh',
+                       content = StaticFile('templetonSmoke.sh'),
+                       mode = 493,
+    )
+    self.assertResourceCalled('Execute', 'sh /tmp/templetonSmoke.sh c6402.ambari.apache.org ambari-qa no_keytab False /usr/bin/kinit',
+                       logoutput = True,
+                       path = ['/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'],
+                       tries = 3,
+                       try_sleep = 5,
+    )
+    self.assertNoMoreResources()
+
+  def test_service_check_secured(self):
+
+    self.executeScript("1.3.2/services/WEBHCAT/package/scripts/service_check.py",
+                       classname="WebHCatServiceCheck",
+                       command="service_check",
+                       config_file="secured.json"
+    )
+    self.assertResourceCalled('File', '/tmp/templetonSmoke.sh',
+                       content = StaticFile('templetonSmoke.sh'),
+                       mode = 493,
+    )
+    self.assertResourceCalled('Execute', 'sh /tmp/templetonSmoke.sh c6402.ambari.apache.org ambari-qa /etc/security/keytabs/smokeuser.headless.keytab True /usr/bin/kinit',
+                       logoutput = True,
+                       path = ['/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'],
+                       tries = 3,
+                       try_sleep = 5,
+    )
+    self.assertNoMoreResources()

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_client.py b/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_client.py
new file mode 100644
index 0000000..f36b83a
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_client.py
@@ -0,0 +1,124 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestZookeeperClient(RMFTestCase):
+
+  def test_configure_default(self):
+    self.executeScript("1.3.2/services/ZOOKEEPER/package/scripts/zookeeper_client.py",
+                       classname = "ZookeeperClient",
+                       command = "configure",
+                       config_file="default.json"
+    )
+    self.assertResourceCalled('Directory', '/etc/zookeeper/conf',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zoo.cfg',
+      owner = 'zookeeper',
+      content = Template('zoo.cfg.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zookeeper-env.sh',
+      owner = 'zookeeper',
+      content = Template('zookeeper-env.sh.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/configuration.xsl',
+      owner = 'zookeeper',
+      content = Template('configuration.xsl.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('Directory', '/var/run/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zoo_sample.cfg',
+      owner = 'zookeeper',
+      group = 'hadoop',
+    )
+    self.assertNoMoreResources()
+
+  def test_configure_secured(self):
+
+    self.executeScript("1.3.2/services/ZOOKEEPER/package/scripts/zookeeper_client.py",
+                       classname = "ZookeeperClient",
+                       command = "configure",
+                       config_file="secured.json"
+    )
+
+    self.assertResourceCalled('Directory', '/etc/zookeeper/conf',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zoo.cfg',
+      owner = 'zookeeper',
+      content = Template('zoo.cfg.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zookeeper-env.sh',
+      owner = 'zookeeper',
+      content = Template('zookeeper-env.sh.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/configuration.xsl',
+      owner = 'zookeeper',
+      content = Template('configuration.xsl.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('Directory', '/var/run/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zookeeper_client_jaas.conf',
+      owner = 'zookeeper',
+      content = Template('zookeeper_client_jaas.conf.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zoo_sample.cfg',
+      owner = 'zookeeper',
+      group = 'hadoop',
+    )
+    self.assertNoMoreResources()

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_server.py b/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_server.py
new file mode 100644
index 0000000..876fd3e
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_server.py
@@ -0,0 +1,200 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestZookeeperServer(RMFTestCase):
+
+  def test_configure_default(self):
+    self.executeScript("1.3.2/services/ZOOKEEPER/package/scripts/zookeeper_server.py",
+                   classname = "ZookeeperServer",
+                   command = "configure",
+                   config_file="default.json"
+    )
+
+    self.assert_configure_default()
+    self.assertNoMoreResources()
+
+  def test_start_default(self):
+    self.executeScript("1.3.2/services/ZOOKEEPER/package/scripts/zookeeper_server.py",
+                   classname = "ZookeeperServer",
+                   command = "start",
+                   config_file="default.json"
+    )
+
+    self.assert_configure_default()
+    self.assertResourceCalled('Execute', 'source /etc/zookeeper/conf/zookeeper-env.sh ; env ZOOCFGDIR=/etc/zookeeper/conf ZOOCFG=zoo.cfg /usr/lib/zookeeper/bin/zkServer.sh start',
+                    not_if = 'ls /var/run/zookeeper/zookeeper_server.pid >/dev/null 2>&1 && ps `cat /var/run/zookeeper/zookeeper_server.pid` >/dev/null 2>&1',
+                    user = 'zookeeper'
+    )
+    self.assertNoMoreResources()
+
+  def test_stop_default(self):
+    self.executeScript("1.3.2/services/ZOOKEEPER/package/scripts/zookeeper_server.py",
+                  classname = "ZookeeperServer",
+                  command = "stop",
+                  config_file="default.json"
+    )
+
+    self.assertResourceCalled('Execute', 'source /etc/zookeeper/conf/zookeeper-env.sh ; env ZOOCFGDIR=/etc/zookeeper/conf ZOOCFG=zoo.cfg /usr/lib/zookeeper/bin/zkServer.sh stop',
+      user = 'zookeeper',
+    )
+    self.assertResourceCalled('Execute', 'rm -f /var/run/zookeeper/zookeeper_server.pid')
+    self.assertNoMoreResources()
+
+  def test_configure_secured(self):
+    self.executeScript("1.3.2/services/ZOOKEEPER/package/scripts/zookeeper_server.py",
+                  classname = "ZookeeperServer",
+                  command = "configure",
+                  config_file="secured.json"
+    )
+
+    self.assert_configure_secured()
+    self.assertNoMoreResources()
+
+  def test_start_secured(self):
+    self.executeScript("1.3.2/services/ZOOKEEPER/package/scripts/zookeeper_server.py",
+                  classname = "ZookeeperServer",
+                  command = "start",
+                  config_file="secured.json"
+    )
+
+    self.assert_configure_secured()
+    self.assertResourceCalled('Execute', 'source /etc/zookeeper/conf/zookeeper-env.sh ; env ZOOCFGDIR=/etc/zookeeper/conf ZOOCFG=zoo.cfg /usr/lib/zookeeper/bin/zkServer.sh start',
+                  not_if = 'ls /var/run/zookeeper/zookeeper_server.pid >/dev/null 2>&1 && ps `cat /var/run/zookeeper/zookeeper_server.pid` >/dev/null 2>&1',
+                  user = 'zookeeper'
+    )
+    self.assertNoMoreResources()
+
+  def test_stop_secured(self):
+    self.executeScript("1.3.2/services/ZOOKEEPER/package/scripts/zookeeper_server.py",
+                  classname = "ZookeeperServer",
+                  command = "stop",
+                  config_file="secured.json"
+    )
+
+    self.assertResourceCalled('Execute', 'source /etc/zookeeper/conf/zookeeper-env.sh ; env ZOOCFGDIR=/etc/zookeeper/conf ZOOCFG=zoo.cfg /usr/lib/zookeeper/bin/zkServer.sh stop',
+                  user = 'zookeeper',
+    )
+
+    self.assertResourceCalled('Execute', 'rm -f /var/run/zookeeper/zookeeper_server.pid')
+    self.assertNoMoreResources()
+
+  def assert_configure_default(self):
+
+    self.assertResourceCalled('Directory', '/etc/zookeeper/conf',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zoo.cfg',
+      owner = 'zookeeper',
+      content = Template('zoo.cfg.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zookeeper-env.sh',
+      owner = 'zookeeper',
+      content = Template('zookeeper-env.sh.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/configuration.xsl',
+      owner = 'zookeeper',
+      content = Template('configuration.xsl.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('Directory', '/var/run/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('File', '/hadoop/zookeeper/myid',
+      content = '1',
+      mode = 420,
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zoo_sample.cfg',
+      owner = 'zookeeper',
+      group = 'hadoop',
+    )
+
+  def assert_configure_secured(self):
+
+    self.assertResourceCalled('Directory', '/etc/zookeeper/conf',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zoo.cfg',
+      owner = 'zookeeper',
+      content = Template('zoo.cfg.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zookeeper-env.sh',
+      owner = 'zookeeper',
+      content = Template('zookeeper-env.sh.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/configuration.xsl',
+      owner = 'zookeeper',
+      content = Template('configuration.xsl.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('Directory', '/var/run/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/var/log/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('Directory', '/hadoop/zookeeper',
+      owner = 'zookeeper',
+      group = 'hadoop',
+      recursive = True,
+    )
+    self.assertResourceCalled('File', '/hadoop/zookeeper/myid',
+      content = '1',
+      mode = 420,
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zookeeper_jaas.conf',
+      owner = 'zookeeper',
+      content = Template('zookeeper_jaas.conf.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zookeeper_client_jaas.conf',
+      owner = 'zookeeper',
+      content = Template('zookeeper_client_jaas.conf.j2'),
+      group = 'hadoop',
+    )
+    self.assertResourceCalled('File', '/etc/zookeeper/conf/zoo_sample.cfg',
+      owner = 'zookeeper',
+      group = 'hadoop',
+    )
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/43f14b34/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_service_check.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_service_check.py b/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_service_check.py
new file mode 100644
index 0000000..6cfd016
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/1.3.2/ZOOKEEPER/test_zookeeper_service_check.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+
+'''
+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, patch
+from stacks.utils.RMFTestCase import *
+
+class TestServiceCheck(RMFTestCase):
+
+  def test_service_check_default(self):
+
+    self.executeScript("1.3.2/services/ZOOKEEPER/package/scripts/service_check.py",
+                       classname="ZookeeperServiceCheck",
+                       command="service_check",
+                       config_file="default.json"
+    )
+    self.assertResourceCalled('File', '/tmp/zkSmoke.sh',
+                       content = StaticFile('zkSmoke.sh'),
+                       mode = 493,
+    )
+    self.assertResourceCalled('Execute', 'sh /tmp/zkSmoke.sh /usr/lib/zookeeper/bin/zkCli.sh ambari-qa /etc/zookeeper/conf 2181 False /usr/bin/kinit no_keytab',
+                       logoutput = True,
+                       path = ['/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'],
+                       tries = 3,
+                       try_sleep = 5,
+    )
+    self.assertNoMoreResources()
+
+  def test_service_check_secured(self):
+
+    self.executeScript("1.3.2/services/ZOOKEEPER/package/scripts/service_check.py",
+                       classname="ZookeeperServiceCheck",
+                       command="service_check",
+                       config_file="secured.json"
+    )
+    self.assertResourceCalled('File', '/tmp/zkSmoke.sh',
+                       content = StaticFile('zkSmoke.sh'),
+                       mode = 493,
+    )
+    self.assertResourceCalled('Execute', 'sh /tmp/zkSmoke.sh /usr/lib/zookeeper/bin/zkCli.sh ambari-qa /etc/zookeeper/conf 2181 True /usr/bin/kinit /etc/security/keytabs/smokeuser.headless.keytab',
+                       logoutput = True,
+                       path = ['/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'],
+                       tries = 3,
+                       try_sleep = 5,
+    )
+    self.assertNoMoreResources()