def setUp(self): plugins_dir = os.getenv("PLUGINS_DIR", "/etc/snap/plugins") snapteld_dir = os.getenv("SNAPTELD_DIR", "/usr/local/sbin") snaptel_dir = os.getenv("SNAPTEL_DIR", "/usr/local/bin") snapteld_url = "http://snap.ci.snap-telemetry.io/snap/latest_build/linux/x86_64/snapteld" snaptel_url = "http://snap.ci.snap-telemetry.io/snap/latest_build/linux/x86_64/snaptel" 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/latest_build/linux/x86_64/snap-plugin-publisher-mock-file" # set and download required binaries (snapteld, snaptel, plugins) self.binaries = bins.Binaries() self.binaries.snapteld = bins.Snapteld(snapteld_url, snapteld_dir) self.binaries.snaptel = bins.Snaptel(snaptel_url, snaptel_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 snapteld") self.binaries.snapteld.start() if not self.binaries.snapteld.isAlive(): self.fail("snapteld thread died") log.debug("Waiting for snapteld to finish starting") if not self.binaries.snapteld.wait(): log.error("snapteld errors: {}".format( self.binaries.snapteld.errors)) self.binaries.snapteld.kill() self.fail("snapteld not ready, timeout!")
def setUp(self): plugins_dir = os.getenv("PLUGINS_DIR", "/etc/snap/plugins") snap_dir = os.getenv("SNAP_DIR", "/usr/local/bin") snapteld_url = "http://snap.ci.snap-telemetry.io/snap/latest_build/linux/x86_64/snapteld" snaptel_url = "http://snap.ci.snap-telemetry.io/snap/latest_build/linux/x86_64/snaptel" psutil_url = "http://snap.ci.snap-telemetry.io/plugins/snap-plugin-collector-psutil/latest_build/linux/x86_64/snap-plugin-collector-psutil" file_url = "http://snap.ci.snap-telemetry.io/plugins/snap-plugin-publisher-file/latest_build/linux/x86_64/snap-plugin-publisher-file" # set and download required binaries (snapteld, snaptel, plugins) self.binaries = bins.Binaries() self.binaries.snapteld = bins.Snapteld(snapteld_url, snap_dir) self.binaries.snaptel = bins.Snaptel(snaptel_url, snap_dir) self.binaries.collector = bins.Plugin(psutil_url, plugins_dir, "collector", 9) self.binaries.publisher = bins.Plugin(file_url, plugins_dir, "publisher", -1) utils.download_binaries(self.binaries) self.task_file = "{}/examples/tasks/task-psutil.json".format(os.getenv("PROJECT_DIR", "/snap-plugin-collector-psutil")) log.info("starting snapteld") self.binaries.snapteld.start() if not self.binaries.snapteld.isAlive(): self.fail("snapteld thread died") log.debug("Waiting for snapteld to finish starting") if not self.binaries.snapteld.wait(): log.error("snapteld errors: {}".format(self.binaries.snapteld.errors)) self.binaries.snapteld.kill() self.fail("snapteld not ready, timeout!")
def test_psutil_collector_plugin(self): # load plugins for plugin in self.binaries.get_all_plugins(): log.info("snaptel plugin load {}".format(os.path.join(plugin.dir, plugin.name))) loaded = self.binaries.snaptel.load_plugin(plugin) self.assertTrue(loaded, "{} loaded".format(plugin.name)) # check available metrics, plugins and tasks metrics = self.binaries.snaptel.list_metrics() plugins = self.binaries.snaptel.list_plugins() tasks = self.binaries.snaptel.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.snaptel.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("snaptel task create -t {}".format(self.task_file)) task_id = self.binaries.snaptel.create_task(self.task_file) tasks = self.binaries.snaptel.list_tasks() self.assertEqual(len(tasks), 1, "Tasks available {} expected {}".format(len(tasks), 1)) # check if task hits and fails hits = self.binaries.snaptel.task_hits_count(task_id) fails = self.binaries.snaptel.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("snaptel task stop {}".format(task_id)) stopped = self.binaries.snaptel.stop_task(task_id) self.assertTrue(stopped, "Task stopped") tasks = self.binaries.snaptel.list_tasks() self.assertEqual(len(tasks), 1, "Tasks available {} expected {}".format(len(tasks), 1)) # unload plugin, list metrics and plugins log.info("snaptel plugin unload {}".format(self.binaries.collector)) self.binaries.snaptel.unload_plugin(self.binaries.collector) metrics = self.binaries.snaptel.list_metrics() plugins = self.binaries.snaptel.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 snapteld errors self.assertEqual( len(self.binaries.snapteld.errors), 0, "Errors found during snapteld execution:\n{}".format("\n".join(self.binaries.snapteld.errors)), )
def test_meminfo_collector_plugin(self): # load plugins for plugin in self.binaries.get_all_plugins(): log.info("snaptel plugin load {}".format(os.path.join(plugin.dir, plugin.name))) loaded = self.binaries.snaptel.load_plugin(plugin) self.assertTrue(loaded, "{} loaded".format(plugin.name)) # check available metrics, plugins and tasks metrics = self.binaries.snaptel.list_metrics() plugins = self.binaries.snaptel.list_plugins() tasks = self.binaries.snaptel.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.snaptel.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("snaptel task create -t {}".format(self.task_file)) task_id = self.binaries.snaptel.create_task(self.task_file) tasks = self.binaries.snaptel.list_tasks() self.assertEqual(len(tasks), 1, "Tasks available {} expected {}".format(len(tasks), 1)) # check if task hits and fails hits = self.binaries.snaptel.task_hits_count(task_id) fails = self.binaries.snaptel.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("snaptel task stop {}".format(task_id)) stopped = self.binaries.snaptel.stop_task(task_id) self.assertTrue(stopped, "Task stopped") tasks = self.binaries.snaptel.list_tasks() self.assertEqual(len(tasks), 1, "Tasks available {} expected {}".format(len(tasks), 1)) # unload plugin, list metrics and plugins log.info("snaptel plugin unload {}".format(self.binaries.collector)) self.binaries.snaptel.unload_plugin(self.binaries.collector) metrics = self.binaries.snaptel.list_metrics() plugins = self.binaries.snaptel.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 snapteld errors self.assertEqual(len(self.binaries.snapteld.errors), 0, "Errors found during snapteld execution:\n{}" .format("\n".join(self.binaries.snapteld.errors)))
def tearDown(self): log.info("stopping snapteld") self.binaries.snapteld.stop() if self.binaries.snapteld.isAlive(): log.warn("snapteld thread did not die")