. * * @package LibreNMS * @link http://librenms.org * @copyright 2017 Tony Murray * @author Tony Murray */ namespace LibreNMS\Tests; use LibreNMS\Config; use LibreNMS\Device\Processor; use LibreNMS\Util\ModuleTestHelper; class OSModulesTest extends DBTestCase { /** * Test all modules for a particular OS * * @group os * @dataProvider dumpedDataProvider * @param string $target_os * @param string $filename */ public function testOS($target_os, $filename) { $this->requreSnmpsim(); // require snmpsim for tests global $snmpsim; $file = Config::get('install_dir') . '/' . $filename; $expected_data = json_decode(file_get_contents($file), true); list($os, $variant) = explode('_', $target_os, 2); $modules = array_keys($expected_data); $helper = new ModuleTestHelper($modules, $os, $variant); $helper->setQuiet(); $results = $helper->generateTestData($snmpsim, true); foreach ($expected_data as $module => $data) { $this->assertEquals( $data['discovery'], $results[$module]['discovery'], "OS $target_os: Discovered $module data does not match that found in $filename\n" . $helper->getLastDiscoveryOutput() ); $this->assertEquals( $data['poller'] == 'matches discovery' ? $data['discovery'] : $data['poller'], $results[$module]['poller'], "OS $target_os: Polled $module data does not match that found in $filename\n" . $helper->getLastPollerOutput() ); } } public function dumpedDataProvider() { $install_dir = Config::get('install_dir'); $dump_files = glob("$install_dir/tests/data/*.json"); $data = array(); foreach ($dump_files as $file) { $os = basename($file, '.json'); $short_file = str_replace($install_dir.'/', '', $file); $data[$os] = array( $os, $short_file ); } return $data; } }