def test_basic(self): try: # start mysql server mysqld = testing.mysqld.Mysqld(my_cnf={'skip-networking': None}) self.assertIsNotNone(mysqld) self.assertEqual(mysqld.dsn(), dict(unix_socket=mysqld.base_dir + '/tmp/mysql.sock', user='******', db='test')) # connect to mysql (w/ pymysql) conn = pymysql.connect(**mysqld.dsn()) self.assertIsNotNone(conn) self.assertRegexpMatches(mysqld.read_bootlog(), 'ready for connections') # connect to mysql (w/ sqlalchemy) engine = sqlalchemy.create_engine(mysqld.url()) self.assertIsNotNone(engine) # shutting down pid = mysqld.server_pid self.assertTrue(os.path.exists(mysqld.base_dir + '/tmp/mysql.sock')) self.assertTrue(mysqld.is_alive()) finally: mysqld.stop() sleep(1) self.assertFalse(os.path.exists(mysqld.base_dir + '/tmp/mysql.sock')) self.assertFalse(mysqld.is_alive()) with self.assertRaises(OSError): os.kill(pid, 0) # process is down
def test_basic(self): try: # start mysql server mysqld = testing.mysqld.Mysqld(my_cnf={'skip-networking': None}) self.assertIsNotNone(mysqld) self.assertEqual( mysqld.dsn(), dict(unix_socket=mysqld.base_dir + '/tmp/mysql.sock', user='******', db='test')) # connect to mysql (w/ pymysql) conn = pymysql.connect(**mysqld.dsn()) self.assertIsNotNone(conn) self.assertRegexpMatches(mysqld.read_bootlog(), 'ready for connections') # connect to mysql (w/ sqlalchemy) engine = sqlalchemy.create_engine(mysqld.url()) self.assertIsNotNone(engine) # shutting down pid = mysqld.server_pid self.assertTrue(os.path.exists(mysqld.base_dir + '/tmp/mysql.sock')) self.assertTrue(mysqld.is_alive()) finally: mysqld.stop() sleep(1) self.assertFalse( os.path.exists(mysqld.base_dir + '/tmp/mysql.sock')) self.assertFalse(mysqld.is_alive()) with self.assertRaises(OSError): os.kill(pid, 0) # process is down
def test_with_mysql(self): with testing.mysqld.Mysqld(my_cnf={'skip-networking': None}) as mysqld: self.assertIsNotNone(mysqld) # connect to mysql conn = pymysql.connect(**mysqld.dsn()) self.assertIsNotNone(conn) self.assertTrue(mysqld.is_alive()) self.assertFalse(mysqld.is_alive())
def test_stop(self): # start mysql server mysqld = testing.mysqld.Mysqld(my_cnf={'skip-networking': None}) self.assertTrue(os.path.exists(mysqld.base_dir)) self.assertTrue(mysqld.is_alive()) # call stop() mysqld.stop() self.assertFalse(os.path.exists(mysqld.base_dir)) self.assertFalse(mysqld.is_alive()) # call stop() again mysqld.stop() self.assertFalse(os.path.exists(mysqld.base_dir)) self.assertFalse(mysqld.is_alive()) # delete mysqld object after stop() del mysqld
def test_stop_on_child_process(self): mysqld = testing.mysqld.Mysqld(my_cnf={'skip-networking': None}) if os.fork() == 0: mysqld.stop() os.kill(mysqld.server_pid, 0) # process is alive (calling stop() is ignored) os.kill(os.getpid(), signal.SIGTERM) # exit tests FORCELY else: os.wait() sleep(1) self.assertTrue(mysqld.is_alive()) # process is alive (calling stop() in child is ignored)
def test_fork(self): mysqld = testing.mysqld.Mysqld(my_cnf={'skip-networking': None}) if os.fork() == 0: del mysqld mysqld = None os.kill(os.getpid(), signal.SIGTERM) # exit tests FORCELY else: os.wait() sleep(1) self.assertTrue(mysqld.is_alive()) # process is alive (delete mysqld obj in child does not effect)
def test_fork(self): mysqld = testing.mysqld.Mysqld(my_cnf={'skip-networking': None}) if os.fork() == 0: del mysqld mysqld = None os.kill(os.getpid(), signal.SIGTERM) # exit tests FORCELY else: os.wait() sleep(1) self.assertTrue(mysqld.is_alive( )) # process is alive (delete mysqld obj in child does not effect)
def test_stop_on_child_process(self): mysqld = testing.mysqld.Mysqld(my_cnf={'skip-networking': None}) if os.fork() == 0: mysqld.stop() os.kill(mysqld.server_pid, 0) # process is alive (calling stop() is ignored) os.kill(os.getpid(), signal.SIGTERM) # exit tests FORCELY else: os.wait() sleep(1) self.assertTrue(mysqld.is_alive( )) # process is alive (calling stop() in child is ignored)