Esempio n. 1
0
    def test__parse_options(self):
        files = [
            os.path.join(self.option_file_dir, 'include_files', '1.cnf'),
            os.path.join(self.option_file_dir, 'include_files', '2.cnf'),
        ]
        self.option_file_parser = MySQLOptionsParser(files)
        self.assertRaises(ValueError, self.option_file_parser._parse_options,
                          'dummy_file.cnf')
        self.option_file_parser._parse_options(files)
        exp = {'option1': '15', 'option2': '20'}
        self.assertEqual(
            exp, self.option_file_parser.get_groups('group2', 'group1'))

        exp = {'option3': '200'}
        self.assertEqual(
            exp, self.option_file_parser.get_groups('group3', 'group4'))
        self.assertEqual(
            exp, self.option_file_parser.get_groups('group4', 'group3'))
Esempio n. 2
0
    def test_get_groups_as_dict_with_priority(self):
        files = [
            os.path.join(self.option_file_dir, 'include_files', '1.cnf'),
            os.path.join(self.option_file_dir, 'include_files', '2.cnf'),
        ]
        self.option_file_parser = MySQLOptionsParser(files)

        exp = dict([
            ('group1', {'option1': ('15', 1),
                        'option2': ('20', 1)}),
            ('group2', {'option1': ('20', 1),
                        'option2': ('30', 1)}),
            ('group3', {'option3': ('100', 0)}),
            ('group4', {'option3': ('200', 1)}),
            ('mysql', {'user': ('ham', 0)}),
            ('client', {'user': ('spam', 1)})
        ])
        self.assertEqual(
            exp, self.option_file_parser.get_groups_as_dict_with_priority())
    def test__parse_options(self):
        files = [
            os.path.join(self.option_file_dir, "include_files", "1.cnf"),
            os.path.join(self.option_file_dir, "include_files", "2.cnf"),
        ]
        self.option_file_parser = MySQLOptionsParser(files)
        self.assertRaises(ValueError, self.option_file_parser._parse_options, "dummy_file.cnf")
        self.option_file_parser._parse_options(files)
        exp = {"option1": "15", "option2": "20"}
        self.assertEqual(exp, self.option_file_parser.get_groups("group2", "group1"))

        exp = {"option3": "200"}
        self.assertEqual(exp, self.option_file_parser.get_groups("group3", "group4"))
        self.assertEqual(exp, self.option_file_parser.get_groups("group4", "group3"))
    def test_get_groups_as_dict_with_priority(self):
        files = [
            os.path.join(self.option_file_dir, "include_files", "1.cnf"),
            os.path.join(self.option_file_dir, "include_files", "2.cnf"),
        ]
        self.option_file_parser = MySQLOptionsParser(files)

        exp = dict(
            [
                ("group1", {"option1": ("15", 1), "option2": ("20", 1)}),
                ("group2", {"option1": ("20", 1), "option2": ("30", 1)}),
                ("group3", {"option3": ("100", 0)}),
                ("group4", {"option3": ("200", 1)}),
                ("mysql", {"user": ("ham", 0)}),
                ("client", {"user": ("spam", 1)}),
            ]
        )
        self.assertEqual(exp, self.option_file_parser.get_groups_as_dict_with_priority())
Esempio n. 5
0
    def test_get_groups_as_dict_with_priority(self):
        files = [
            os.path.join(self.option_file_dir, 'include_files', '1.cnf'),
            os.path.join(self.option_file_dir, 'include_files', '2.cnf'),
        ]
        self.option_file_parser = MySQLOptionsParser(files)

        exp = dict([
            ('group1', {'option1': ('15', 1),
                        'option2': ('20', 1)}),
            ('group2', {'option1': ('20', 1),
                        'option2': ('30', 1)}),
            ('group3', {'option3': ('100', 0)}),
            ('group4', {'option3': ('200', 1)}),
            ('mysql', {'user': ('ham', 0)}),
            ('client', {'user': ('spam', 1)})
        ])
        self.assertEqual(
            exp, self.option_file_parser.get_groups_as_dict_with_priority())
Esempio n. 6
0
    def test__parse_options(self):
        files = [
            os.path.join(self.option_file_dir, 'include_files', '1.cnf'),
            os.path.join(self.option_file_dir, 'include_files', '2.cnf'),
        ]
        self.option_file_parser = MySQLOptionsParser(files)
        self.assertRaises(ValueError, self.option_file_parser._parse_options,
                          'dummy_file.cnf')
        self.option_file_parser._parse_options(files)
        exp = {
            'option1': '15',
            'option2': '20'
        }
        self.assertEqual(exp, self.option_file_parser.get_groups('group2',
                                                                 'group1'))

        exp = {
            'option3': '200'
        }
        self.assertEqual(exp, self.option_file_parser.get_groups('group3',
                                                                 'group4'))
        self.assertEqual(exp, self.option_file_parser.get_groups('group4',
                                                                 'group3'))
Esempio n. 7
0
 def test___init__(self):
     self.assertRaises(ValueError, MySQLOptionsParser)
     option_file_parser = MySQLOptionsParser(
         files=os.path.join(self.option_file_dir, 'my.cnf'))
     self.assertEqual(option_file_parser.files,
                      [os.path.join(self.option_file_dir, 'my.cnf')])
Esempio n. 8
0
 def setUp(self):
     self.option_file_dir = os.path.join('tests', 'data', 'option_files')
     self.option_file_parser = MySQLOptionsParser(
         files=os.path.join(self.option_file_dir, 'my.cnf'))
Esempio n. 9
0
class MySQLOptionsParserTests(tests.MySQLConnectorTests):
    """Class checking MySQLOptionsParser"""
    def setUp(self):
        self.option_file_dir = os.path.join('tests', 'data', 'option_files')
        self.option_file_parser = MySQLOptionsParser(
            files=os.path.join(self.option_file_dir, 'my.cnf'))

    def test___init__(self):
        self.assertRaises(ValueError, MySQLOptionsParser)
        option_file_parser = MySQLOptionsParser(
            files=os.path.join(self.option_file_dir, 'my.cnf'))
        self.assertEqual(option_file_parser.files,
                         [os.path.join(self.option_file_dir, 'my.cnf')])

    def test_optionxform(self):
        """Converts option strings

        Converts option strings to lower case and replaces dashes(-) with
        underscores(_) if keep_dashes variable is set.
        """
        self.assertEqual('ham', self.option_file_parser.optionxform('HAM'))
        self.assertEqual('ham-spam',
                         self.option_file_parser.optionxform('HAM-SPAM'))

        self.option_file_parser.keep_dashes = False
        self.assertEqual('ham_spam',
                         self.option_file_parser.optionxform('HAM-SPAM'))

    def test__parse_options(self):
        files = [
            os.path.join(self.option_file_dir, 'include_files', '1.cnf'),
            os.path.join(self.option_file_dir, 'include_files', '2.cnf'),
        ]
        self.option_file_parser = MySQLOptionsParser(files)
        self.assertRaises(ValueError, self.option_file_parser._parse_options,
                          'dummy_file.cnf')
        self.option_file_parser._parse_options(files)
        exp = {'option1': '15', 'option2': '20'}
        self.assertEqual(
            exp, self.option_file_parser.get_groups('group2', 'group1'))

        exp = {'option3': '200'}
        self.assertEqual(
            exp, self.option_file_parser.get_groups('group3', 'group4'))
        self.assertEqual(
            exp, self.option_file_parser.get_groups('group4', 'group3'))

    def test_read(self, ):
        filename = os.path.join(self.option_file_dir, 'my.cnf')
        self.assertEqual([filename], self.option_file_parser.read(filename))

        filenames = [
            os.path.join(self.option_file_dir, 'include_files', '1.cnf'),
            os.path.join(self.option_file_dir, 'include_files', '2.cnf'),
        ]
        self.assertEqual(filenames, self.option_file_parser.read(filenames))

        self.assertEqual([], self.option_file_parser.read('dummy-file.cnf'))

    def test_get_groups(self):
        exp = {
            'port': '1001',
            'socket': '/var/run/mysqld/mysqld2.sock',
            'ssl-ca': 'dummyCA',
            'ssl-cert': 'dummyCert',
            'ssl-key': 'dummyKey',
            'nice': '0',
            'user': '******',
            'pid-file': '/var/run/mysqld/mysqld.pid',
            'basedir': '/usr',
            'datadir': '/var/lib/mysql',
            'tmpdir': '/tmp',
            'lc-messages-dir': '/usr/share/mysql',
            'skip-external-locking': '',
            'bind-address': '127.0.0.1',
            'log_error': '/var/log/mysql/error.log',
        }
        self.assertEqual(
            exp,
            self.option_file_parser.get_groups('client', 'mysqld_safe',
                                               'mysqld'))

    def test_get_groups_as_dict(self):
        exp = dict([
            ('client', {
                'port': '1000',
                'socket': '/var/run/mysqld/mysqld.sock',
                'ssl-ca': 'dummyCA',
                'ssl-cert': 'dummyCert',
                'ssl-key': 'dummyKey'
            }),
            ('mysqld_safe', {
                'socket': '/var/run/mysqld/mysqld1.sock',
                'nice': '0'
            }),
            ('mysqld', {
                'user': '******',
                'pid-file': '/var/run/mysqld/mysqld.pid',
                'socket': '/var/run/mysqld/mysqld2.sock',
                'port': '1001',
                'basedir': '/usr',
                'datadir': '/var/lib/mysql',
                'tmpdir': '/tmp',
                'lc-messages-dir': '/usr/share/mysql',
                'skip-external-locking': '',
                'bind-address': '127.0.0.1',
                'log_error': '/var/log/mysql/error.log'
            }),
        ])
        self.assertEqual(exp, self.option_file_parser.get_groups_as_dict())

    def test_get_groups_as_dict_with_priority(self):
        files = [
            os.path.join(self.option_file_dir, 'include_files', '1.cnf'),
            os.path.join(self.option_file_dir, 'include_files', '2.cnf'),
        ]
        self.option_file_parser = MySQLOptionsParser(files)

        exp = dict([('group1', {
            'option1': ('15', 1),
            'option2': ('20', 1)
        }), ('group2', {
            'option1': ('20', 1),
            'option2': ('30', 1)
        }), ('group3', {
            'option3': ('100', 0)
        }), ('group4', {
            'option3': ('200', 1)
        }), ('mysql', {
            'user': ('ham', 0)
        }), ('client', {
            'user': ('spam', 1)
        })])
        self.assertEqual(
            exp, self.option_file_parser.get_groups_as_dict_with_priority())

    def test_read_option_files(self):

        self.assertRaises(ValueError,
                          read_option_files,
                          option_files='dummy_file.cnf')

        option_file_dir = os.path.join('tests', 'data', 'option_files')
        exp = {
            'port': 1000,
            'unix_socket': '/var/run/mysqld/mysqld.sock',
            'ssl_ca': 'dummyCA',
            'ssl_cert': 'dummyCert',
            'ssl_key': 'dummyKey',
        }
        result = read_option_files(
            option_files=os.path.join(option_file_dir, 'my.cnf'))
        self.assertEqual(exp, result)
        exp = {
            'port': 1001,
            'unix_socket': '/var/run/mysqld/mysqld2.sock',
            'ssl_ca': 'dummyCA',
            'ssl_cert': 'dummyCert',
            'ssl_key': 'dummyKey',
            'user': '******',
        }
        result = read_option_files(option_files=os.path.join(
            option_file_dir, 'my.cnf'),
                                   option_groups=['client', 'mysqld'])
        self.assertEqual(exp, result)

        option_file_dir = os.path.join('tests', 'data', 'option_files')
        files = [
            os.path.join(option_file_dir, 'include_files', '1.cnf'),
            os.path.join(option_file_dir, 'include_files', '2.cnf'),
        ]
        exp = {'user': '******'}
        result = read_option_files(option_files=files,
                                   option_groups=['client', 'mysql'])
        self.assertEqual(exp, result)

        self.assertRaises(ValueError, connect, option_files='dummy_file.cnf')
Esempio n. 10
0
 def setUp(self):
     self.option_file_dir = os.path.join('tests', 'data', 'option_files')
     self.option_file_parser = MySQLOptionsParser(files=os.path.join(
         self.option_file_dir, 'my.cnf'))
Esempio n. 11
0
class MySQLOptionsParserTests(tests.MySQLConnectorTests):

    """Class checking MySQLOptionsParser"""

    def setUp(self):
        self.option_file_dir = os.path.join('tests', 'data', 'option_files')
        self.option_file_parser = MySQLOptionsParser(files=os.path.join(
            self.option_file_dir, 'my.cnf'))

    def test___init__(self):
        self.assertRaises(ValueError, MySQLOptionsParser)
        option_file_parser = MySQLOptionsParser(files=os.path.join(
            self.option_file_dir, 'my.cnf'))
        self.assertEqual(option_file_parser.files, [os.path.join(
            self.option_file_dir, 'my.cnf')])

    def test_optionxform(self):
        """Converts option strings

        Converts option strings to lower case and replaces dashes(-) with
        underscores(_) if keep_dashes variable is set.
        """
        self.assertEqual('ham', self.option_file_parser.optionxform('HAM'))
        self.assertEqual('ham-spam', self.option_file_parser.optionxform(
            'HAM-SPAM'))

        self.option_file_parser.keep_dashes = False
        self.assertEqual('ham_spam', self.option_file_parser.optionxform(
            'HAM-SPAM'))

    def test__parse_options(self):
        files = [
            os.path.join(self.option_file_dir, 'include_files', '1.cnf'),
            os.path.join(self.option_file_dir, 'include_files', '2.cnf'),
        ]
        self.option_file_parser = MySQLOptionsParser(files)
        self.assertRaises(ValueError, self.option_file_parser._parse_options,
                          'dummy_file.cnf')
        self.option_file_parser._parse_options(files)
        exp = {
            'option1': '15',
            'option2': '20'
        }
        self.assertEqual(exp, self.option_file_parser.get_groups('group2',
                                                                 'group1'))

        exp = {
            'option3': '200'
        }
        self.assertEqual(exp, self.option_file_parser.get_groups('group3',
                                                                 'group4'))
        self.assertEqual(exp, self.option_file_parser.get_groups('group4',
                                                                 'group3'))

    def test_read(self,):
        filename = os.path.join( self.option_file_dir, 'my.cnf')
        self.assertEqual([filename], self.option_file_parser.read(filename))

        filenames = [
            os.path.join(self.option_file_dir, 'include_files', '1.cnf'),
            os.path.join(self.option_file_dir, 'include_files', '2.cnf'),
        ]
        self.assertEqual(filenames, self.option_file_parser.read(filenames))

        self.assertEqual([], self.option_file_parser.read('dummy-file.cnf'))

    def test_get_groups(self):
        exp = {
            'password': '******',
            'port': '1001',
            'socket': '/var/run/mysqld/mysqld2.sock',
            'ssl-ca': 'dummyCA',
            'ssl-cert': 'dummyCert',
            'ssl-key': 'dummyKey',
            'ssl-cipher': 'AES256-SHA:CAMELLIA256-SHA',
            'nice': '0',
            'user': '******',
            'pid-file': '/var/run/mysqld/mysqld.pid',
            'basedir': '/usr',
            'datadir': '/var/lib/mysql',
            'tmpdir': '/tmp',
            'lc-messages-dir': '/usr/share/mysql',
            'skip-external-locking': '',
            'bind-address': '127.0.0.1',
            'log_error': '/var/log/mysql/error.log',
        }
        self.assertEqual(exp, self.option_file_parser.get_groups('client',
                                                                 'mysqld_safe',
                                                                 'mysqld'))

    def test_get_groups_as_dict(self):
        exp = dict([
            ('client', {'port': '1000',
                        'password': '******',
                        'socket': '/var/run/mysqld/mysqld.sock',
                        'ssl-ca': 'dummyCA',
                        'ssl-cert': 'dummyCert',
                        'ssl-key': 'dummyKey',
                        'ssl-cipher': 'AES256-SHA:CAMELLIA256-SHA'}),
            ('mysqld_safe', {'socket': '/var/run/mysqld/mysqld1.sock',
                            'nice': '0'}),
            ('mysqld', {'user': '******',
                       'pid-file': '/var/run/mysqld/mysqld.pid',
                       'socket': '/var/run/mysqld/mysqld2.sock',
                       'port': '1001', 'basedir': '/usr',
                       'datadir': '/var/lib/mysql', 'tmpdir': '/tmp',
                       'lc-messages-dir': '/usr/share/mysql',
                       'skip-external-locking': '',
                       'bind-address': '127.0.0.1',
                       'log_error': '/var/log/mysql/error.log'}),
        ])
        self.assertEqual(exp, self.option_file_parser.get_groups_as_dict())

    def test_get_groups_as_dict_with_priority(self):
        files = [
            os.path.join(self.option_file_dir, 'include_files', '1.cnf'),
            os.path.join(self.option_file_dir, 'include_files', '2.cnf'),
        ]
        self.option_file_parser = MySQLOptionsParser(files)

        exp = dict([
            ('group1', {'option1': ('15', 1),
                        'option2': ('20', 1)}),
            ('group2', {'option1': ('20', 1),
                        'option2': ('30', 1)}),
            ('group3', {'option3': ('100', 0)}),
            ('group4', {'option3': ('200', 1)}),
            ('mysql', {'user': ('ham', 0)}),
            ('client', {'user': ('spam', 1)})
        ])
        self.assertEqual(
            exp, self.option_file_parser.get_groups_as_dict_with_priority())

    def test_read_option_files(self):

        self.assertRaises(ValueError, read_option_files,
                          option_files='dummy_file.cnf')

        option_file_dir = os.path.join('tests', 'data', 'option_files')
        exp = {
            'password': '******',
            'port': 1000,
            'unix_socket': '/var/run/mysqld/mysqld.sock',
            'ssl_ca': 'dummyCA',
            'ssl_cert': 'dummyCert',
            'ssl_key': 'dummyKey',
            'ssl_cipher': 'AES256-SHA:CAMELLIA256-SHA',
        }
        result = read_option_files(option_files=os.path.join(
            option_file_dir, 'my.cnf'))
        self.assertEqual(exp, result)
        exp = {
            'password': '******',
            'port': 1001,
            'unix_socket': '/var/run/mysqld/mysqld2.sock',
            'ssl_ca': 'dummyCA',
            'ssl_cert': 'dummyCert',
            'ssl_key': 'dummyKey',
            'ssl_cipher': 'AES256-SHA:CAMELLIA256-SHA',
            'user': '******',
        }
        result = read_option_files(option_files=os.path.join(
            option_file_dir, 'my.cnf'), option_groups=['client', 'mysqld'])
        self.assertEqual(exp, result)

        option_file_dir = os.path.join('tests', 'data', 'option_files')
        files = [
            os.path.join(option_file_dir, 'include_files', '1.cnf'),
            os.path.join(option_file_dir, 'include_files', '2.cnf'),
        ]
        exp = {
            'user': '******'
        }
        result = read_option_files(option_files=files,
                                   option_groups=['client', 'mysql'])
        self.assertEqual(exp, result)

        self.assertRaises(ValueError, connect, option_files='dummy_file.cnf')
 def setUp(self):
     self.option_file_dir = os.path.join("tests", "data", "option_files")
     self.option_file_parser = MySQLOptionsParser(files=os.path.join(self.option_file_dir, "my.cnf"))
class MySQLOptionsParserTests(tests.MySQLConnectorTests):

    """Class checking MySQLOptionsParser"""

    def setUp(self):
        self.option_file_dir = os.path.join("tests", "data", "option_files")
        self.option_file_parser = MySQLOptionsParser(files=os.path.join(self.option_file_dir, "my.cnf"))

    def test___init__(self):
        self.assertRaises(ValueError, MySQLOptionsParser)
        option_file_parser = MySQLOptionsParser(files=os.path.join(self.option_file_dir, "my.cnf"))
        self.assertEqual(option_file_parser.files, [os.path.join(self.option_file_dir, "my.cnf")])

    def test_optionxform(self):
        """Converts option strings

        Converts option strings to lower case and replaces dashes(-) with
        underscores(_) if keep_dashes variable is set.
        """
        self.assertEqual("ham", self.option_file_parser.optionxform("HAM"))
        self.assertEqual("ham-spam", self.option_file_parser.optionxform("HAM-SPAM"))

        self.option_file_parser.keep_dashes = False
        self.assertEqual("ham_spam", self.option_file_parser.optionxform("HAM-SPAM"))

    def test__parse_options(self):
        files = [
            os.path.join(self.option_file_dir, "include_files", "1.cnf"),
            os.path.join(self.option_file_dir, "include_files", "2.cnf"),
        ]
        self.option_file_parser = MySQLOptionsParser(files)
        self.assertRaises(ValueError, self.option_file_parser._parse_options, "dummy_file.cnf")
        self.option_file_parser._parse_options(files)
        exp = {"option1": "15", "option2": "20"}
        self.assertEqual(exp, self.option_file_parser.get_groups("group2", "group1"))

        exp = {"option3": "200"}
        self.assertEqual(exp, self.option_file_parser.get_groups("group3", "group4"))
        self.assertEqual(exp, self.option_file_parser.get_groups("group4", "group3"))

    def test_read(self,):
        filename = os.path.join(self.option_file_dir, "my.cnf")
        self.assertEqual([filename], self.option_file_parser.read(filename))

        filenames = [
            os.path.join(self.option_file_dir, "include_files", "1.cnf"),
            os.path.join(self.option_file_dir, "include_files", "2.cnf"),
        ]
        self.assertEqual(filenames, self.option_file_parser.read(filenames))

        self.assertEqual([], self.option_file_parser.read("dummy-file.cnf"))

    def test_get_groups(self):
        exp = {
            "password": "******",
            "port": "1001",
            "socket": "/var/run/mysqld/mysqld2.sock",
            "ssl-ca": "dummyCA",
            "ssl-cert": "dummyCert",
            "ssl-key": "dummyKey",
            "nice": "0",
            "user": "******",
            "pid-file": "/var/run/mysqld/mysqld.pid",
            "basedir": "/usr",
            "datadir": "/var/lib/mysql",
            "tmpdir": "/tmp",
            "lc-messages-dir": "/usr/share/mysql",
            "skip-external-locking": "",
            "bind-address": "127.0.0.1",
            "log_error": "/var/log/mysql/error.log",
        }
        self.assertEqual(exp, self.option_file_parser.get_groups("client", "mysqld_safe", "mysqld"))

    def test_get_groups_as_dict(self):
        exp = dict(
            [
                (
                    "client",
                    {
                        "port": "1000",
                        "password": "******",
                        "socket": "/var/run/mysqld/mysqld.sock",
                        "ssl-ca": "dummyCA",
                        "ssl-cert": "dummyCert",
                        "ssl-key": "dummyKey",
                    },
                ),
                ("mysqld_safe", {"socket": "/var/run/mysqld/mysqld1.sock", "nice": "0"}),
                (
                    "mysqld",
                    {
                        "user": "******",
                        "pid-file": "/var/run/mysqld/mysqld.pid",
                        "socket": "/var/run/mysqld/mysqld2.sock",
                        "port": "1001",
                        "basedir": "/usr",
                        "datadir": "/var/lib/mysql",
                        "tmpdir": "/tmp",
                        "lc-messages-dir": "/usr/share/mysql",
                        "skip-external-locking": "",
                        "bind-address": "127.0.0.1",
                        "log_error": "/var/log/mysql/error.log",
                    },
                ),
            ]
        )
        self.assertEqual(exp, self.option_file_parser.get_groups_as_dict())

    def test_get_groups_as_dict_with_priority(self):
        files = [
            os.path.join(self.option_file_dir, "include_files", "1.cnf"),
            os.path.join(self.option_file_dir, "include_files", "2.cnf"),
        ]
        self.option_file_parser = MySQLOptionsParser(files)

        exp = dict(
            [
                ("group1", {"option1": ("15", 1), "option2": ("20", 1)}),
                ("group2", {"option1": ("20", 1), "option2": ("30", 1)}),
                ("group3", {"option3": ("100", 0)}),
                ("group4", {"option3": ("200", 1)}),
                ("mysql", {"user": ("ham", 0)}),
                ("client", {"user": ("spam", 1)}),
            ]
        )
        self.assertEqual(exp, self.option_file_parser.get_groups_as_dict_with_priority())

    def test_read_option_files(self):

        self.assertRaises(ValueError, read_option_files, option_files="dummy_file.cnf")

        option_file_dir = os.path.join("tests", "data", "option_files")
        exp = {
            "password": "******",
            "port": 1000,
            "unix_socket": "/var/run/mysqld/mysqld.sock",
            "ssl_ca": "dummyCA",
            "ssl_cert": "dummyCert",
            "ssl_key": "dummyKey",
        }
        result = read_option_files(option_files=os.path.join(option_file_dir, "my.cnf"))
        self.assertEqual(exp, result)
        exp = {
            "password": "******",
            "port": 1001,
            "unix_socket": "/var/run/mysqld/mysqld2.sock",
            "ssl_ca": "dummyCA",
            "ssl_cert": "dummyCert",
            "ssl_key": "dummyKey",
            "user": "******",
        }
        result = read_option_files(
            option_files=os.path.join(option_file_dir, "my.cnf"), option_groups=["client", "mysqld"]
        )
        self.assertEqual(exp, result)

        option_file_dir = os.path.join("tests", "data", "option_files")
        files = [
            os.path.join(option_file_dir, "include_files", "1.cnf"),
            os.path.join(option_file_dir, "include_files", "2.cnf"),
        ]
        exp = {"user": "******"}
        result = read_option_files(option_files=files, option_groups=["client", "mysql"])
        self.assertEqual(exp, result)

        self.assertRaises(ValueError, connect, option_files="dummy_file.cnf")