def setUp(self): plugins_dir = "/etc/snap/plugins" snap_dir = "/usr/local/bin" snapd_url = "http://snap.ci.snap-telemetry.io/snap/master/latest/snapd" snapctl_url = "http://snap.ci.snap-telemetry.io/snap/master/latest/snapctl" psutil_url = "http://snap.ci.snap-telemetry.io/plugin/build/latest/snap-plugin-collector-psutil" passthru_url = "http://snap.ci.snap-telemetry.io/snap/master/latest/snap-plugin-processor-passthru" mockfile_url = "http://snap.ci.snap-telemetry.io/snap/master/latest/snap-plugin-publisher-mock-file" # set and download required binaries (snapd, snapctl, plugins) self.binaries = bins.Binaries() self.binaries.snapd = bins.Snapd(snapd_url, snap_dir) self.binaries.snapctl = bins.Snapctl(snapctl_url, snap_dir) self.binaries.collector = bins.Plugin(psutil_url, plugins_dir, "collector", 6) self.binaries.processor = bins.Plugin(passthru_url, plugins_dir, "processor", -1) self.binaries.publisher = bins.Plugin(mockfile_url, plugins_dir, "publisher", -1) utils.download_binaries(self.binaries) self.task_file = "/snap-plugin-collector-psutil/examples/tasks/task-psutil.json" log.info("starting snapd") self.binaries.snapd.start() if not self.binaries.snapd.isAlive(): self.fail("snapd thread died") log.debug("Waiting for snapd to finish starting") if not self.binaries.snapd.wait(): log.error("snapd errors: {}".format(self.binaries.snapd.errors)) self.binaries.snapd.kill() self.fail("snapd not ready, timeout!")
def setUp(self): plugins_dir = os.getenv("PLUGINS_DIR", "/etc/snap/plugins") snap_dir = os.getenv("SNAP_DIR", "/usr/local/bin") snapd_url = "http://snap.ci.snap-telemetry.io/snap/master/latest/snapd" snapctl_url = "http://snap.ci.snap-telemetry.io/snap/master/latest/snapctl" meminfo_url = "http://snap.ci.snap-telemetry.io/plugins/snap-plugin-collector-meminfo/latest_build/linux/x86_64/snap-plugin-collector-meminfo" mockfile_url = "http://snap.ci.snap-telemetry.io/snap/master/latest/snap-plugin-publisher-mock-file" # set and download required binaries (snapd, snapctl, plugins) self.binaries = bins.Binaries() self.binaries.snapd = bins.Snapd(snapd_url, snap_dir) self.binaries.snapctl = bins.Snapctl(snapctl_url, snap_dir) self.binaries.collector = bins.Plugin(meminfo_url, plugins_dir, "collector", 3) self.binaries.publisher = bins.Plugin(mockfile_url, plugins_dir, "publisher", -1) utils.download_binaries(self.binaries) self.task_file = "{}/examples/tasks/task-mem.json".format(os.getenv("PROJECT_DIR", "snap-plugin-collector-meminfo")) log.info("starting snapd") self.binaries.snapd.start() if not self.binaries.snapd.isAlive(): self.fail("snapd thread died") log.debug("Waiting for snapd to finish starting") if not self.binaries.snapd.wait(): log.error("snapd errors: {}".format(self.binaries.snapd.errors)) self.binaries.snapd.kill() self.fail("snapd not ready, timeout!")
def test_meminfo_collector_plugin(self): # load plugins for plugin in self.binaries.get_all_plugins(): log.info("snapctl plugin load {}".format(os.path.join(plugin.dir, plugin.name))) loaded = self.binaries.snapctl.load_plugin(plugin) self.assertTrue(loaded, "{} loaded".format(plugin.name)) # check available metrics, plugins and tasks metrics = self.binaries.snapctl.list_metrics() plugins = self.binaries.snapctl.list_plugins() tasks = self.binaries.snapctl.list_tasks() self.assertGreater(len(metrics), 0, "Metrics available {} expected {}".format(len(metrics), 0)) self.assertEqual(len(plugins), 2, "Plugins available {} expected {}".format(len(plugins), 2)) self.assertEqual(len(tasks), 0, "Tasks available {} expected {}".format(len(tasks), 0)) # check config policy for metric rules = self.binaries.snapctl.metric_get("/intel/procfs/meminfo/mem_free") self.assertEqual(len(rules), 1, "Rules available {} expected {}".format(len(rules), 1)) # create and list available task log.info("snapctl task create -t {}".format(self.task_file)) task_id = self.binaries.snapctl.create_task(self.task_file) tasks = self.binaries.snapctl.list_tasks() self.assertEqual(len(tasks), 1, "Tasks available {} expected {}".format(len(tasks), 1)) # check if task hits and fails hits = self.binaries.snapctl.task_hits_count(task_id) fails = self.binaries.snapctl.task_fails_count(task_id) self.assertGreater(hits, 0, "Task hits {} expected {}".format(hits, ">0")) self.assertEqual(fails, 0, "Task fails {} expected {}".format(fails, 0)) # stop task and list available tasks log.info("snapctl task stop {}".format(task_id)) stopped = self.binaries.snapctl.stop_task(task_id) self.assertTrue(stopped, "Task stopped") tasks = self.binaries.snapctl.list_tasks() self.assertEqual(len(tasks), 1, "Tasks available {} expected {}".format(len(tasks), 1)) # unload plugin, list metrics and plugins log.info("snapctl plugin unload {}".format(self.binaries.collector)) self.binaries.snapctl.unload_plugin(self.binaries.collector) metrics = self.binaries.snapctl.list_metrics() plugins = self.binaries.snapctl.list_plugins() self.assertEqual(len(metrics), 0, "Metrics available {} expected {}".format(len(metrics), 0)) self.assertEqual(len(plugins), 1, "Plugins available {} expected {}".format(len(plugins), 1)) # check for snapd errors self.assertEqual(len(self.binaries.snapd.errors), 0, "Errors found during snapd execution:\n{}" .format("\n".join(self.binaries.snapd.errors)))
def test_psutil_collector_plugin(self): # load plugins for plugin in self.binaries.get_all_plugins(): log.info("snapctl plugin load {}".format( os.path.join(plugin.dir, plugin.name))) loaded = self.binaries.snapctl.load_plugin(plugin) self.assertTrue(loaded, "{} loaded".format(plugin.name)) # check available metrics, plugins and tasks metrics = self.binaries.snapctl.list_metrics() plugins = self.binaries.snapctl.list_plugins() tasks = self.binaries.snapctl.list_tasks() self.assertGreater( len(metrics), 0, "Metrics available {} expected {}".format(len(metrics), 0)) self.assertEqual( len(plugins), 3, "Plugins available {} expected {}".format(len(plugins), 3)) self.assertEqual( len(tasks), 0, "Tasks available {} expected {}".format(len(tasks), 0)) # check config policy for metric rules = self.binaries.snapctl.metric_get("/intel/psutil/vm/free") self.assertEqual( len(rules), 0, "Rules available {} expected {}".format(len(rules), 0)) # create and list available task log.info("snapctl task create -t {}".format(self.task_file)) task_id = self.binaries.snapctl.create_task(self.task_file) tasks = self.binaries.snapctl.list_tasks() self.assertEqual( len(tasks), 1, "Tasks available {} expected {}".format(len(tasks), 1)) # check if task hits and fails hits = self.binaries.snapctl.task_hits_count(task_id) fails = self.binaries.snapctl.task_fails_count(task_id) self.assertGreater(hits, 0, "Task hits {} expected {}".format(hits, ">0")) self.assertEqual(fails, 0, "Task fails {} expected {}".format(fails, 0)) # stop task and list available tasks log.info("snapctl task stop {}".format(task_id)) stopped = self.binaries.snapctl.stop_task(task_id) self.assertTrue(stopped, "Task stopped") tasks = self.binaries.snapctl.list_tasks() self.assertEqual( len(tasks), 1, "Tasks available {} expected {}".format(len(tasks), 1)) # unload plugin, list metrics and plugins log.info("snapctl plugin unload {}".format(self.binaries.collector)) self.binaries.snapctl.unload_plugin(self.binaries.collector) metrics = self.binaries.snapctl.list_metrics() plugins = self.binaries.snapctl.list_plugins() self.assertEqual( len(metrics), 0, "Metrics available {} expected {}".format(len(metrics), 0)) self.assertEqual( len(plugins), 2, "Plugins available {} expected {}".format(len(plugins), 2)) # check for snapd errors self.assertEqual(len(self.binaries.snapd.errors), 0, "Errors found during snapd execution")
def tearDown(self): log.info("stopping snapd") self.binaries.snapd.stop() if self.binaries.snapd.isAlive(): log.warn("snapd thread did not died")
def tearDown(self): log.info("stopping snapd") self.binaries.snapd.stop() if self.binaries.snapd.isAlive(): log.warn("snapd thread did not die")