def setup_method(self, method): super(MySQLMetaCollectorTestCase, self).setup_method(method) context._setup_object_tank() mysql_manager = MySQLManager() mysql_manager._discover_objects() found_objects = context.objects.find_all(types=mysql_manager.types) self.mysql_object = found_objects[0]
def test_discover_objects(self): mysql_manager = MySQLManager() assert_that(mysql_manager, not_none()) # check to make sure there are no mysqlds mysql_objects = context.objects.find_all(types=mysql_manager.types) assert_that(mysql_objects, has_length(0)) # find objects mysql_manager._discover_objects() # check to see that a mysqld is found mysql_objects = context.objects.find_all(types=mysql_manager.types) assert_that(mysql_objects, has_length(1))
def test_find_correct_cmd(self): ps_output = [ ('17761 1 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin' + ' --user=mysql --skip-log-error --open-files-limit=65535 --pid-file=/var/run/mysqld/mysqld.pid' + ' --socket=/var/run/mysqld/mysqld.sock --port=3306'), ('17764 1 /bin/sh /usr/local/bin/mysqld_safe --basedir=/usr/local --datadir=/var/db/mysql' + ' --user=mysql --pid-file=/var/db/mysql/freebsd-amd64-arie-test.pid' ), '17762 1 logger -t mysqld -p daemon error', '17763 1 mysql -u root -p', '' ] # find mysql master processes found_masters = MySQLManager()._find_local(ps=ps_output) # check that only the first command from the ps output would be recognized as a master process assert_that(found_masters, has_length(1)) assert_that( found_masters[0]['cmd'], equal_to( '/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin ' + '--user=mysql --skip-log-error --open-files-limit=65535 --pid-file=/var/run/mysqld/mysqld.pid ' + '--socket=/var/run/mysqld/mysqld.sock --port=3306'))
def test_find_remote(self): mysql_manager = MySQLManager() assert_that(mysql_manager, not_none()) # stop mysqld & set remote mysql to True self.stop_mysqld() context.app_config['mysql']['remote'] = True found_masters = mysql_manager._find_remote() assert_that(found_masters, not_none()) assert_that(found_masters, has_length(1)) found_master = found_masters[0] assert_that(found_master['cmd'], equal_to('unknown')) assert_that(found_master['conf_path'], equal_to('unknown')) assert_that(found_master['pid'], equal_to('unknown')) assert_that( found_master['local_id'], equal_to( 'd47bcca34c2b2836266086c5d5d428b754cc4831e2df6e251b2ffa27bca59b3b' ))
def test_find_local(self): mysql_manager = MySQLManager() assert_that(mysql_manager, not_none()) found_masters = mysql_manager._find_local() assert_that(found_masters, not_none()) assert_that(found_masters, has_length(1)) found_master = found_masters[0] assert_that( found_master['cmd'], equal_to( '/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql ' '--plugin-dir=/usr/lib/mysql/plugin --user=mysql ' '--log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid ' '--socket=/var/run/mysqld/mysqld.sock --port=3306')) assert_that(found_master['conf_path'], equal_to('/etc/mysql/my.cnf')) assert_that(found_master['pid'], not_none()) assert_that( found_master['local_id'], equal_to( 'd3780726c2fdcbf45e32729a3113131f1cb4cf9a7cd42f99cd3f0ec88b9840c6' ))
def test_collect_remote(self): context.app_config['mysql']['remote'] = True context.app_config['mysql']['host'] = '127.0.0.1' context.app_config['mysql']['port'] = '3306' context.app_config['mysql'].pop('unix_socket', None) mysql_manager = MySQLManager() mysql_manager._discover_objects() found_objects = context.objects.find_all(types=mysql_manager.types) self.mysql_object = found_objects[0] mysql_meta_collector = MySQLMetaCollector( object=self.mysql_object, interval=self.mysql_object.intervals['meta']) # collect and assert that meta is not empty mysql_meta_collector.collect() # check value assert_that( mysql_meta_collector.meta, has_entries({ 'display_name': 'mysql @ hostname.nginx', 'local_id': 'd47bcca34c2b2836266086c5d5d428b754cc4831e2df6e251b2ffa27bca59b3b', 'type': 'mysql', 'cmd': 'unknown', 'pid': 'unknown', 'conf_path': 'unknown', 'root_uuid': DEFAULT_UUID, 'bin_path': 'unknown', 'connection_location': '127.0.0.1:3306', 'version': starts_with('5.5'), })) # check that it matches the object metad assert_that(mysql_meta_collector.meta, equal_to(self.mysql_object.metad.current))
def test_restart_objects(self): mysql_manager = MySQLManager() assert_that(mysql_manager, not_none()) # check to make sure there are no mysqlds mysql_objects = context.objects.find_all(types=mysql_manager.types) assert_that(mysql_objects, has_length(0)) # find objects mysql_manager._discover_objects() # check to see that a mysqld is found mysql_objects = context.objects.find_all(types=mysql_manager.types) assert_that(mysql_objects, has_length(1)) # store the mysqld id old_master_id = mysql_objects[0].id # stop mysqld self.stop_mysqld() time.sleep(0.1) # restart mysqld self.start_mysqld() time.sleep(0.1) # re-discover mysql_manager._discover_objects() # check to see that a mysql is found mysql_objects = context.objects.find_all(types=mysql_manager.types) assert_that(mysql_objects, has_length(1)) master_id = mysql_objects[0].id assert_that(master_id, not_(equal_to(old_master_id)))