# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: chuck.bell@oracle.com-20110112155901-y4v0ft57koar7w0j # target_branch: file:///Users/cbell/source/bzr_public/mysql-\ # utilities/ # testament_sha1: 1d3c37205b1fc7e33f0069f0c76a7d5ab242b1db # timestamp: 2011-01-12 11:00:13 -0500 # base_revision_id: chuck.bell@oracle.com-20101213191938-\ # q0qu6ps9m96fe2dh # # Begin patch === modified file 'scripts/mysqluserclone.py' --- scripts/mysqluserclone.py 2010-12-03 21:52:48 +0000 +++ scripts/mysqluserclone.py 2011-01-12 15:59:01 +0000 @@ -137,7 +137,7 @@ new_user_list = args[1:] # Parse destination connection values if not dumping - if not opt.dump: + if not opt.dump and opt.destination is not None: try: dest_values = parse_connection(opt.destination) except: === modified file 'test/test/clone_user.py' --- test/test/clone_user.py 2010-12-01 14:24:07 +0000 +++ test/test/clone_user.py 2011-01-12 15:59:01 +0000 @@ -22,7 +22,7 @@ raise MUTException("Failed to read commands from file %s: " % \ data_file + e.errmsg) return True - + def show_user_grants(self, user): query = "SHOW GRANTS FOR %s" % (user) try: @@ -32,14 +32,14 @@ self.results.append(row[0]+"\n") except MySQLUtilError, e: raise MUTException("Failed to get grants for %s." % user) - + def run(self): self.res_fname = self.testdir + "result.txt" from_conn = "--source=" + self.build_connection_string(self.server1) to_conn = "--destination=" + self.build_connection_string(self.server1) cmd_str = "mysqluserclone.py %s %s " % (from_conn, to_conn) - + # Test case 1 - clone a user to a single user comment = "Test case 1 - clone a single user joe_pass@user to " + \ "a single user: jill@user" @@ -114,14 +114,26 @@ if not res: raise MUTException("%s: failed" % comment) + + from_conn = "--source=" + self.build_connection_string(self.server1) + cmd_str = "mysqluserclone.py %s -f " % from_conn + + # Test case 1 - clone a user to a single user + comment = "Test case 8 - clone a single user joe_pass@user to " + \ + "a single user: jill@user with only source specified" + res = self.run_test_case(0, cmd_str + " joe_pass@user jill:duh@user", + comment) + if not res: + raise MUTException("%s: failed" % comment) + return True def get_result(self): return self.compare(__name__, self.results) - + def record(self): return self.save_result_file(__name__, self.results) - + def drop_user(self, user_name, server): user = User(server, user_name, False) if user.exists(): @@ -129,7 +141,7 @@ if res is not None: print "cleanup: failed to drop user %s" % user_name return True - + def cleanup(self): if self.res_fname: os.unlink(self.res_fname) @@ -160,8 +172,3 @@ if not res: return False return True - - - - - === modified file 'test/test/clone_user.result' --- test/test/clone_user.result 2010-11-12 21:07:21 +0000 +++ test/test/clone_user.result 2011-01-12 15:59:01 +0000 @@ -57,3 +57,8 @@ GRANT USAGE ON *.* TO 'joe_pass'@'%' GRANT ALL PRIVILEGES ON `util_test`.* TO 'joe_pass'@'%' # ...done. +Test case 8 - clone a single user joe_pass@user to a single user: jill@user with only source specified +# Source on localhost: ... connected. +# Cloning 1 users... +# Cloning joe_pass@user to user jill:duh@user +# ...done. # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWTiuCeAAA2R/gERRAAJbb/// WqMOBL////BgBxdu+NVQAOTWj13Wo0BTCSSaJ6mUj2qbTxDU9Kfqeqf6k9KNPUaBiD1GE8gZU9Uy Mj1NGj0jQZAAAAAAAEVPymap6mmRp6gGjQxNAAAA0GhoEiTSqfkm00TKeo2iD1HiBPRMg2oMgD1B zTEyZNGEwTE0wCYBDBGBGASSBAamCaTNCZGiZMJpNNqm00IA8pHACp4PJ99YjQNUrAlgRMFObR4C SjSuyItzPUemjY4jpyu4aubyX3xPDUSOGxacHqjVgdbJrNtZxiL2JFgjtovxVZx30TvMSTw1YSh+ VoTCZmZM2veg8f5LPvdaJiFoU2CmJTnYB0SSTFIjMkKUpBsgJm00tfhYXmak1AbaMt1AzH+v70h7 KHf636uX+ap0q/iO8Mn87YYzixmVD3EIUQU7GGfY6ZXhXSoye0CCpYea+x16LByqkLGY4sCObFLH CBqOhbxjh36j6caZLDW3YV50eSos5v5/pjPARLhrkf83AnMltD5dz1z+DtfO7ohp5m0TTLLmukUl fGbcznQ66ziMMXgD7t441evoauPZFUHx1oWHtr8toy1WjrIXIDCdAVTM4vTDJ5AJ65VedjMEamyC VbDMF3RztkjBBwEOQJyQzI9i4cpESNY+JXKoeBsglAaYJnGJ4lo8ydec4COo4iPbwUhjmrFsknLB RZyixhFZcImsQ1DhGAhkUn8xoxIoRJ7pDDMnpDrRvDX1Rqu1uVAVjHUEwofgKRMYFDVuLTnlloq0 6YazEtPwtRoWld15F9Q61znk0CkQNzrDNqXqJQ4RjEgP3nbnOEWMMyBcNt+jtxRDQcl1GhEqGWwx NYzDbHWXFaya5VjpzKCULzebE+ZBDjM0NtVV1TrqioewEHkieooCTDJSKCmwofBVFJiEDEd2CNKZ 6UYDdRcZkza9bDwRQYlxuNZQIqMzuEPvgI998h5UZE7DHVCuyG2GXY81y4sRdAtLEOsKCsuNhWWl C4DHJXV42274vfMeXNOhZFCOBSPETEWFI15fVanWTCVUp46WYVEi+zEtIlp+SrVqvGEYAMWjkrFi MsN2OM7ClVDea8DprKziY+K0brzdmW5MXI4jt21E0PxDIVbjqVjA3MvDGbr4sGQY4zZ0yG3MQDOL wWzPFJoWOKeNAdchBE3jbbTx/jJayf7vohuZXp/kMuRjepqCYQ6+7GIpESQqRWt0KQOhtJHLkWGm iA6yssp3hgSFTJ3TyjgEo1eXoImIqQwbEzQWis9heOKRjbnHGc2nTmLDFAbD3vLquSa8SynEY8SJ aWDGo21h+XXGiL/eHDd1/f0WbHmOQy2r9MOi2EBCAyBei21jdPlxoBx+XmGN6zEGtowYNpv4tzOR yN5ShiSHZGaD5dxMtKzrKCYzm12YXnzKl8Aqoly4j8wxTfHEMIDzFnkERd3koIBgZZEvsbD4p77/ OWwxKSu1vNXBMsJ7GO9oKAlgNgyhNqh4smzdEMLyKYd0B9sQHHMIAWWTEYUJUwUQYQNPqeWslgDE jQa4qsH+wUp9aghWkEn9VnCct6K1jhePrPgUmkwtGNZsNxVFRDlS7VipVFg8BHTiEZqm1jwnXnAl GU4v3qPXpKxwDkCQeUYXUcIIDOChaYxKdyDUpjyspChNyzIPX+wgbhl9xXvnqZs0eH8ddFFUmBmZ A1BMh7NPWI/g8+ZOtThGQJGCqMjgRzaRREZKMtsERkQhsWX0RYgHJ4wdFgM4ZAMZXySXMeHSu1HA 9EB3pjcFRNHUvrxuH0BOXwD7+pU06KnOE5g/UZBVkEFWMKAgknJHR6CL2Xz2IHsAy5nwp6B5nUbj oEcl2g2BHGgKDDEig0KqOlhv+EAVJIoQ4u/CAuE4I+716Yhsn+fEPE7SYc+nRHoEIh9aVYF3bKus bit1Bydw+yXatdhtNQt/oeqsRoMHfqcAfAtICJEFFJH5+U0QR2adVQhj9c3cc1u+kFoyfZXTl2mA cH7iTwhhSnMTYdQx+HvavTJw8hs8iNijS0hqQcxeemxWMPPrcIXRn3+pAMQgimtkD15/OaJLrZVC u1AyDNkWirTk77HpGXc64GzbugQHEDQQ/lCgfJdBbD5QjDr16GOsVm0ctMOA8uV2FmVxISLImmUr B4mjBBoNrXBtoINhA5NlVijS5Uost9WZhmZGAnGCGgRPE8xHl7mStO3mIbQ7z3Ec+lxzDsO46H+L Ss5DkrjHfh0baPE6gQ922Jd9Tr/rBJYP6aQp5NPoLuSKcKEgcVwTwA==