From 49b1e05911c0095cb8a89e1ad2072d2a06054865 Mon Sep 17 00:00:00 2001 From: Jake Hunsaker Date: Thu, 21 Nov 2019 14:17:21 -0500 Subject: [Policy] Add Container Runtime abstraction class Adds a `ContainerRuntime()` class to allow policies to specify a container runtime to allow plugins to utilize. The `ContainerRuntime` is intended to allow for the discovery of containers, including specific ones by name, and for the execution of commands inside those containers. This is meant to remove the overhead of manually defining ways to determine an active runtime and if a component is containerized within plugins. Related: #1866 Signed-off-by: Jake Hunsaker --- tests/plugin_tests.py | 102 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 70 insertions(+), 32 deletions(-) (limited to 'tests/plugin_tests.py') diff --git a/tests/plugin_tests.py b/tests/plugin_tests.py index fd0d0f14..72ec895b 100644 --- a/tests/plugin_tests.py +++ b/tests/plugin_tests.py @@ -158,60 +158,86 @@ class PluginTests(unittest.TestCase): def setUp(self): self.mp = MockPlugin({ - 'cmdlineopts': MockOptions(), - 'policy': LinuxPolicy(init=InitSystem()), 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'cmdlineopts': MockOptions() }) self.mp.archive = MockArchive() def test_plugin_default_name(self): - p = MockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = MockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) self.assertEquals(p.name(), "mockplugin") def test_plugin_set_name(self): - p = NamedMockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = NamedMockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) self.assertEquals(p.name(), "testing") def test_plugin_no_descrip(self): - p = MockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = MockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) self.assertEquals(p.get_description(), "") def test_plugin_no_descrip(self): - p = NamedMockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = NamedMockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) self.assertEquals(p.get_description(), "This plugin has a description.") def test_set_plugin_option(self): - p = MockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = MockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) p.set_option("opt", "testing") self.assertEquals(p.get_option("opt"), "testing") def test_set_nonexistant_plugin_option(self): - p = MockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = MockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) self.assertFalse(p.set_option("badopt", "testing")) def test_get_nonexistant_plugin_option(self): - p = MockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = MockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) self.assertEquals(p.get_option("badopt"), 0) def test_get_unset_plugin_option(self): - p = MockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = MockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) self.assertEquals(p.get_option("opt"), 0) def test_get_unset_plugin_option_with_default(self): # this shows that even when we pass in a default to get, # we'll get the option's default as set in the plugin # this might not be what we really want - p = MockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = MockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) self.assertEquals(p.get_option("opt", True), True) def test_get_unset_plugin_option_with_default_not_none(self): @@ -219,24 +245,36 @@ class PluginTests(unittest.TestCase): # if the plugin default is not None # we'll get the option's default as set in the plugin # this might not be what we really want - p = MockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = MockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) self.assertEquals(p.get_option("opt2", True), False) def test_get_option_as_list_plugin_option(self): - p = MockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = MockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) p.set_option("opt", "one,two,three") self.assertEquals(p.get_option_as_list("opt"), ['one', 'two', 'three']) def test_get_option_as_list_plugin_option_default(self): - p = MockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = MockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) self.assertEquals(p.get_option_as_list("opt", default=[]), []) def test_get_option_as_list_plugin_option_not_list(self): - p = MockPlugin({'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), - 'cmdlineopts': MockOptions()}) + p = MockPlugin({ + 'sysroot': self.sysroot, + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), + 'cmdlineopts': MockOptions() + }) p.set_option("opt", "testing") self.assertEquals(p.get_option_as_list("opt"), ['testing']) @@ -252,7 +290,7 @@ class PluginTests(unittest.TestCase): p = ForbiddenMockPlugin({ 'cmdlineopts': MockOptions(), 'sysroot': self.sysroot, - 'policy': LinuxPolicy(init=InitSystem()) + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False) }) p.archive = MockArchive() p.setup() @@ -276,7 +314,7 @@ class AddCopySpecTests(unittest.TestCase): def setUp(self): self.mp = MockPlugin({ 'cmdlineopts': MockOptions(), - 'policy': LinuxPolicy(init=InitSystem()), + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'sysroot': os.getcwd(), 'cmdlineopts': MockOptions() }) @@ -353,7 +391,7 @@ class CheckEnabledTests(unittest.TestCase): def setUp(self): self.mp = EnablerPlugin({ - 'policy': sos.policies.load(), + 'policy': LinuxPolicy(probe_runtime=False), 'sysroot': os.getcwd(), 'cmdlineopts': MockOptions() }) @@ -382,7 +420,7 @@ class RegexSubTests(unittest.TestCase): def setUp(self): self.mp = MockPlugin({ 'cmdlineopts': MockOptions(), - 'policy': LinuxPolicy(init=InitSystem()), + 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'sysroot': os.getcwd() }) self.mp.archive = MockArchive() -- cgit