Add docs to policyd module

This commit is contained in:
Alex Kavanagh
2019-09-25 14:31:15 +01:00
parent 6648aaf0e9
commit 13128db1f4

View File

@@ -12,7 +12,40 @@
# See the License for the specific language governing permissions and
# limitations under the License.
"""Encapsulate policyd testing."""
"""Encapsulate policyd testing.
The Policyd Tests test the following:
- Two general tests in the PolicydTest class that check that a policy zip can
drop policy files in the correct service policy.d directory. One test tests
that a valid yaml file is dropped; the 2nd that an invalid one is not dropped
and the workload info status line shows that it is broken.
- A custom policyd test that is per charm and tests that a policy zip file
attached does actually disable something in the associated service (i.e.
verify that the charm has implemented policy overrides and ensured that the
service actually picks them up).
In order to use the generic tests, just include them in the specific test
class. The KeystonePolicydTest as an example does:
class KeystonePolicydTest(PolicydTest,
ch_keystone.BaseKeystoneTest,
test_utils.OpenStackBaseTest):
@classmethod
def setUpClass(cls, application_name=None):
super(KeystonePolicydTest, cls).setUpClass(application_name)
Note that the generic test class (PolicyDTest) comes first, and then the
ch_keystone.BaseKeystoneTest, followed by the test_utils.OpenStackBaseTest.
This is to get the order of super().setUpClass(...) calls to work with
application_name.
If a charm doesn't require a specific test, then the GenericPolicydTest class
can be used that just includes the two generic tests. The config in the
tests.yaml would stil be required. See the PolicydTest class docstring for
further details.
"""
import logging
import os
@@ -103,7 +136,6 @@ class PolicydTest(object):
zaza_model.attach_resource(self.application_name,
'policyd-override',
good_zip_path)
logging.debug("... waiting for idle")
zaza_model.block_until_all_units_idle()
logging.debug("Now setting config to true")
self._set_config(True)
@@ -139,7 +171,7 @@ class PolicydTest(object):
logging.info("Checking that {} has been removed".format(path))
zaza_model.block_until_file_missing(self.application_name, path)
logging.info("...done")
logging.info("OK")
def test_002_policyd_bad_yaml(self):
# Test that a bad yaml file in the zip file doesn't not put it in the
@@ -152,13 +184,13 @@ class PolicydTest(object):
zaza_model.attach_resource(self.application_name,
'policyd-override',
bad_zip_path)
logging.debug("... waiting for idle")
zaza_model.block_until_all_units_idle()
logging.debug("Now setting config to true")
self._set_config(True)
# ensure that the workload status info line starts with PO (broken):
# to show that it didn't work
logging.info("Checking for workload status line starts with PO:")
logging.info(
"Checking for workload status line starts with PO (broken):")
zaza_model.block_until_wl_status_info_starts_with(
self.application_name, "PO (broken):")
logging.debug("App status is valid for broken yaml file")
@@ -170,7 +202,7 @@ class PolicydTest(object):
zaza_model.block_until_file_missing(self.application_name, path)
self._set_config(True)
zaza_model.block_until_all_units_idle()
logging.info("...done")
logging.info("OK")
class KeystonePolicydTest(PolicydTest,
@@ -222,7 +254,8 @@ class KeystonePolicydTest(PolicydTest,
'token passed and should have failed. IP = {}'
.format(ip))
except keystoneauth1.exceptions.http.Forbidden:
logging.info("keystone IP:{} policyd override working"
logging.info("keystone IP:{} policyd override disabled "
"services listing by demo user"
.format(ip))
# now verify (with the config off) that we can actually access