28
28
# Author : Kenneth J. Pronovici <pronovic@ieee.org>
29
29
# Language : Python (>= 2.3)
30
30
# Project : Cedar Backup, release 2
31
# Revision : $Id: mysqltests.py 656 2005-03-06 18:39:00Z pronovic $
31
# Revision : $Id: mysqltests.py 905 2005-10-30 22:33:18Z pronovic $
32
32
# Purpose : Tests MySQL extension functionality.
34
34
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
35
# This file was created with a width of 132 characters, and NO tabs.
37
36
########################################################################
38
37
# Module documentation
111
110
from StringIO import StringIO
113
# XML-related modules
114
from xml.dom.minidom import getDOMImplementation
115
from xml.dom.ext import PrettyPrint
117
112
# Cedar Backup modules
118
113
from CedarBackup2.testutil import findResources, buildPath, removedir, failUnlessAssignRaises
114
from CedarBackup2.xmlutil import createOutputDom, serializeDom
119
115
from CedarBackup2.extend.mysql import LocalConfig, MysqlConfig, _getOutputFile
124
120
#######################################################################
126
122
DATA_DIRS = [ "./data", "./test/data", ]
127
RESOURCES = [ "mysql.conf.1", "mysql.conf.2", "mysql.conf.3", "mysql.conf.4", ]
123
RESOURCES = [ "mysql.conf.1", "mysql.conf.2", "mysql.conf.3", "mysql.conf.4", "mysql.conf.5", ]
130
126
#######################################################################
684
680
@param origConfig: Original configuration.
686
impl = getDOMImplementation()
687
xmlDom = impl.createDocument(None, "cb_config", None)
688
parentNode = xmlDom.documentElement
682
(xmlDom, parentNode) = createOutputDom()
689
683
origConfig.addConfig(xmlDom, parentNode)
690
xmlBuffer = StringIO()
691
PrettyPrint(xmlDom, xmlBuffer)
692
xmlData = xmlBuffer.getvalue()
684
xmlData = serializeDom(xmlDom)
695
685
newConfig = LocalConfig(xmlData=xmlData, validate=False)
696
686
self.failUnlessEqual(origConfig, newConfig)
897
887
config.mysql = MysqlConfig("user", "password", "gzip", False, ["whatever", ])
898
888
config.validate()
890
def testValidate_009(self):
892
Test validate on a non-empty mysql section, with user=None.
894
config = LocalConfig()
895
config.mysql = MysqlConfig(None, "password", "gzip", True, None)
898
def testValidate_010(self):
900
Test validate on a non-empty mysql section, with password=None.
902
config = LocalConfig()
903
config.mysql = MysqlConfig("user", None, "gzip", True, None)
906
def testValidate_011(self):
908
Test validate on a non-empty mysql section, with user=None and password=None.
910
config = LocalConfig()
911
config.mysql = MysqlConfig(None, None, "gzip", True, None)
901
915
############################
902
916
# Test parsing of documents
978
992
self.failUnlessEqual(False, config.mysql.all)
979
993
self.failUnlessEqual(["database1", "database2", ], config.mysql.databases)
995
def testParse_006(self):
997
Parse config document containing only a mysql section, no user or password, multiple databases, all=False.
999
path = self.resources["mysql.conf.5"]
1000
contents = open(path).read()
1001
config = LocalConfig(xmlPath=path, validate=False)
1002
self.failIfEqual(None, config.mysql)
1003
self.failUnlessEqual(None, config.mysql.user)
1004
self.failUnlessEqual(None, config.mysql.password)
1005
self.failUnlessEqual("bzip2", config.mysql.compressMode)
1006
self.failUnlessEqual(False, config.mysql.all)
1007
self.failUnlessEqual(["database1", "database2", ], config.mysql.databases)
1008
config = LocalConfig(xmlData=contents, validate=False)
1009
self.failIfEqual(None, config.mysql)
1010
self.failUnlessEqual(None, config.mysql.user)
1011
self.failUnlessEqual(None, config.mysql.password)
1012
self.failUnlessEqual("bzip2", config.mysql.compressMode)
1013
self.failUnlessEqual(False, config.mysql.all)
1014
self.failUnlessEqual(["database1", "database2", ], config.mysql.databases)
982
1017
###################
983
1018
# Test addConfig()
1038
1073
config.mysql = MysqlConfig("user", "password", "gzip", True, [ "database1", "database2", ])
1039
1074
self.validateAddConfig(config)
1076
def testAddConfig_009(self):
1078
Test with multiple databases, user=None but all other values filled in, all=False.
1080
config = LocalConfig()
1081
config.mysql = MysqlConfig(None, "password", "gzip", True, [ "database1", "database2", ])
1082
self.validateAddConfig(config)
1084
def testAddConfig_010(self):
1086
Test with multiple databases, password=None but all other values filled in, all=False.
1088
config = LocalConfig()
1089
config.mysql = MysqlConfig("user", None, "gzip", True, [ "database1", "database2", ])
1090
self.validateAddConfig(config)
1092
def testAddConfig_011(self):
1094
Test with multiple databases, user=None and password=None but all other values filled in, all=False.
1096
config = LocalConfig()
1097
config.mysql = MysqlConfig(None, None, "gzip", True, [ "database1", "database2", ])
1098
self.validateAddConfig(config)
1042
1101
#######################################################################
1043
1102
# Suite definition