--- a/src/tests/api/t_dependencies.py Tue Apr 12 16:24:25 2011 +1200
+++ b/src/tests/api/t_dependencies.py Thu Apr 14 13:55:45 2011 +1200
@@ -70,6 +70,7 @@
smf_paths = {
"broken":
"var/svc/manifest/broken-service.xml",
+ "delete": "var/svc/manifest/delete-service.xml",
"delivered_many_nodeps":
"var/svc/manifest/delivered-many-nodeps.xml",
"foreign_many_nodeps":
@@ -672,6 +673,39 @@
</service>
</service_bundle>
"""
+ smf_fmris["delete"] = [ \
+ "svc:/application/pkg5test/deleteservice",
+ "svc:/application/pkg5test/deleteservice:default" ]
+ smf_known_deps["svc:/application/pkg5test/deleteservice"] = []
+ smf_known_deps["svc:/application/pkg5test/deleteservice:default"] = []
+ smf_manifest_text["delete"] = \
+"""<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+<service_bundle type='manifest' name='delete-service'>
+
+<!-- svc:/application/pkg5test/deleteservice
+ svc:/application/pkg5test/deleteservice:default
+ While we do have an SMF dependency, this shouldn't be used to generate
+ pkg dependencies, since it has the 'delete' attribute set to true.
+-->
+<service
+
+ name='application/pkg5test/deleteservice'
+ type='service'
+ version='0.1'>
+ <create_default_instance enabled='true' />
+ <single_instance/>
+ <dependency name='network'
+ grouping='require_all'
+ restart_on='error'
+ type='service'
+ delete='true'>
+ <service_fmri value='svc:/application/pkg5test/delivered-many'/>
+ </dependency>
+</service>
+</service_bundle>
+"""
+
int_smf_manf = """\
file NOHASH group=sys mode=0644 owner=root path=%(service_single)s
file NOHASH group=sys mode=0644 owner=root path=%(delivered_many_nodeps)s
@@ -688,6 +722,11 @@
file NOHASH group=sys mode=0644 owner=root path=%(service_single)s
""" % paths
+ delete_smf_manf = """\
+file NOHASH group=sys mode=0644 owner=root path=%(delete)s
+file NOHASH group=sys mode=0644 owner=root path=%(foreign_single_nodeps)s
+""" % paths
+
faildeps_smf_manf = """\
file NOHASH group=sys mode=0644 owner=root path=%(delivered_many_nodeps)s
file NOHASH group=sys mode=0644 owner=root path=%(service_single)s
@@ -1757,17 +1796,18 @@
present in the provided pkg_attrs dictionary. Errors are
reported in an assertion message that includes manifest_name."""
- self.assert_(pkg_attrs.has_key("opensolaris.smf.fmri"),
- "Missing opensolaris.smf.fmri key for %s" % manifest_name)
+ self.assert_(pkg_attrs.has_key("org.opensolaris.smf.fmri"),
+ "Missing org.opensolaris.smf.fmri key for %s" %
+ manifest_name)
- found = len(pkg_attrs["opensolaris.smf.fmri"])
+ found = len(pkg_attrs["org.opensolaris.smf.fmri"])
self.assertEqual(found, len(expected),
"Wrong no. of SMF instances/services found for %s: expected"
" %s got %s" % (manifest_name, len(expected), found))
for fmri in expected:
self.assert_(
- fmri in pkg_attrs["opensolaris.smf.fmri"],
+ fmri in pkg_attrs["org.opensolaris.smf.fmri"],
"%s not in list of SMF instances/services "
"from %s" % (fmri, manifest_name))
@@ -1927,6 +1967,24 @@
self.smf_fmris["service_unknown"],
"faildeps_smf_manf")
+ def test_delete_smf_manifest(self):
+ """We don't create any SMF dependencies where a manifest
+ specifies a 'delete' attribute in its dependency."""
+
+ t_path = self.make_manifest(self.delete_smf_manf)
+ self.make_smf_test_files()
+
+ ds, es, ms, pkg_attrs = dependencies.list_implicit_deps(t_path,
+ [self.proto_dir], {}, [], remove_internal_deps=False,
+ convert=False)
+
+ self.assert_(len(es) == 0,
+ "Detected %s error(s), expected 0" % len(es))
+ self.assert_(len(ds) == 0, "Expected 0 dependencies, got %s" %
+ len(ds))
+ self.check_smf_fmris(pkg_attrs, self.smf_fmris["delete"] +
+ self.smf_fmris["foreign_single_nodeps"], "delete")
+
def test_runpath_1(self):
"""Test basic functionality of runpaths."""