本文整理汇总了Python中pysflib.sfgerrit.GerritUtils.add_group_member方法的典型用法代码示例。如果您正苦于以下问题:Python GerritUtils.add_group_member方法的具体用法?Python GerritUtils.add_group_member怎么用?Python GerritUtils.add_group_member使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pysflib.sfgerrit.GerritUtils
的用法示例。
在下文中一共展示了GerritUtils.add_group_member方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TestProjectTestsWorkflow
# 需要导入模块: from pysflib.sfgerrit import GerritUtils [as 别名]
# 或者: from pysflib.sfgerrit.GerritUtils import add_group_member [as 别名]
class TestProjectTestsWorkflow(Base):
""" Functional tests to verify the configuration of a project test
"""
@classmethod
def setUpClass(cls):
cls.msu = ManageSfUtils(config.GATEWAY_URL)
cls.sample_project_dir = \
os.path.join(config.SF_TESTS_DIR, "sample_project/")
@classmethod
def tearDownClass(cls):
pass
def setUp(self):
self.projects = []
self.dirs_to_delete = []
self.un = config.ADMIN_USER
self.gu = GerritUtils(
config.GATEWAY_URL,
auth_cookie=config.USERS[self.un]['auth_cookie'])
self.gu2 = GerritUtils(
config.GATEWAY_URL,
auth_cookie=config.USERS[config.USER_2]['auth_cookie'])
self.ju = JenkinsUtils()
self.gu.add_pubkey(config.USERS[self.un]["pubkey"])
priv_key_path = set_private_key(config.USERS[self.un]["privkey"])
self.gitu_admin = GerritGitUtils(self.un,
priv_key_path,
config.USERS[self.un]['email'])
# Clone the config repo and make change to it
# in order to test the new sample_project
self.config_clone_dir = self.clone_as_admin("config")
self.original_layout = file(os.path.join(
self.config_clone_dir, "zuul/layout.yaml")).read()
self.original_zuul_projects = file(os.path.join(
self.config_clone_dir, "zuul/projects.yaml")).read()
self.original_project = file(os.path.join(
self.config_clone_dir, "jobs/projects.yaml")).read()
# Put USER_2 as core for config project
self.gu.add_group_member(config.USER_2, "config-core")
def tearDown(self):
self.restore_config_repo(self.original_layout,
self.original_project,
self.original_zuul_projects)
for name in self.projects:
self.msu.deleteProject(name,
config.ADMIN_USER)
for dirs in self.dirs_to_delete:
shutil.rmtree(dirs)
def assert_reviewer_approvals(self, change_id, value):
approvals = {}
for _ in range(90):
approvals = self.gu.get_reviewer_approvals(change_id,
'jenkins')
if approvals and approvals.get('Verified') == value:
break
time.sleep(1)
self.assertEqual(value, approvals.get('Verified'))
def clone_as_admin(self, pname):
url = "ssh://%[email protected]%s:29418/%s" % (self.un, config.GATEWAY_HOST,
pname)
clone_dir = self.gitu_admin.clone(url, pname)
if os.path.dirname(clone_dir) not in self.dirs_to_delete:
self.dirs_to_delete.append(os.path.dirname(clone_dir))
return clone_dir
def restore_config_repo(self, layout, project, zuul):
file(os.path.join(
self.config_clone_dir, "zuul/layout.yaml"), 'w').write(
layout)
file(os.path.join(
self.config_clone_dir, "zuul/projects.yaml"), 'w').write(
zuul)
file(os.path.join(
self.config_clone_dir, "jobs/projects.yaml"), 'w').write(
project)
self.commit_direct_push_as_admin(
self.config_clone_dir,
"Restore layout.yaml and projects.yaml")
def commit_direct_push_as_admin(self, clone_dir, msg):
# Stage, commit and direct push the additions on master
self.gitu_admin.add_commit_for_all_new_additions(clone_dir, msg)
self.gitu_admin.direct_push_branch(clone_dir, 'master')
def push_review_as_admin(self, clone_dir, msg):
# Stage, commit and direct push the additions on master
self.gitu_admin.add_commit_for_all_new_additions(clone_dir, msg)
self.gitu_admin.review_push_branch(clone_dir, 'master')
def create_project(self, name, user,
options=None):
self.msu.createProject(name, user,
options)
self.projects.append(name)
def test_check_project_test_workflow(self):
#.........这里部分代码省略.........
示例2: TestGerritHooks
# 需要导入模块: from pysflib.sfgerrit import GerritUtils [as 别名]
# 或者: from pysflib.sfgerrit.GerritUtils import add_group_member [as 别名]
class TestGerritHooks(Base):
""" Functional tests that validate Gerrit hooks.
"""
@classmethod
def setUpClass(cls):
cls.msu = ManageSfUtils(config.GATEWAY_URL)
@classmethod
def tearDownClass(cls):
pass
def setUp(self):
self.projects = []
self.dirs_to_delete = []
self.issues = []
self.u = config.ADMIN_USER
self.u2 = config.USER_2
self.rm = RedmineUtils(
config.GATEWAY_URL + "/redmine/",
auth_cookie=config.USERS[config.ADMIN_USER]['auth_cookie'])
self.gu = GerritUtils(
config.GATEWAY_URL,
auth_cookie=config.USERS[self.u]['auth_cookie'])
self.gu2 = GerritUtils(
config.GATEWAY_URL,
auth_cookie=config.USERS[self.u2]['auth_cookie'])
self.gu.add_pubkey(config.USERS[self.u]["pubkey"])
priv_key_path = set_private_key(config.USERS[self.u]["privkey"])
self.gitu = GerritGitUtils(self.u,
priv_key_path,
config.USERS[self.u]['email'])
def tearDown(self):
for issue in self.issues:
self.rm.delete_issue(issue)
for name in self.projects:
self.msu.deleteProject(name, self.u)
for dirs in self.dirs_to_delete:
shutil.rmtree(dirs)
def create_project(self, name, user,
options=None):
self.msu.createProject(name, user,
options)
self.projects.append(name)
def _test_update_issue_hooks(self, comment_template, status):
""" A referenced issue in commit msg triggers the hook
"""
pname = 'p_%s' % create_random_str()
# Be sure the project does not exist
self.msu.deleteProject(pname, self.u)
# Create the project
self.create_project(pname, self.u)
# Put USER_2 as core for the project
self.gu.add_group_member(self.u2, "%s-core" % pname)
# Create an issue on the project
issue_id = self.rm.create_issue(pname, "There is a problem")
# Clone and commit something
url = "ssh://%[email protected]%s:29418/%s" % (self.u, config.GATEWAY_HOST,
pname)
clone_dir = self.gitu.clone(url, pname)
cmt_msg = comment_template % issue_id
self.gitu.add_commit_and_publish(clone_dir, 'master', cmt_msg)
# Check issue status (Gerrit hook updates the issue to in progress)
attempt = 0
while True:
if self.rm.test_issue_status(issue_id, 'In Progress'):
break
if attempt > 10:
break
time.sleep(1)
attempt += 1
self.assertTrue(self.rm.test_issue_status(issue_id, 'In Progress'))
self._test_merging(pname, issue_id, status)
def _test_merging(self, pname, issue_id, status):
# Get the change id and merge the patch
change_ids = self.gu.get_my_changes_for_project(pname)
self.assertGreater(len(change_ids), 0)
change_id = change_ids[0]
self.gu.submit_change_note(change_id, "current", "Code-Review", "2")
self.gu.submit_change_note(change_id, "current", "Workflow", "1")
self.gu.submit_change_note(change_id, "current", "Verified", "2")
self.gu2.submit_change_note(change_id, "current", "Code-Review", "2")
self.assertTrue(self.gu.submit_patch(change_id, "current"))
# Check issue status (Gerrit hook updates the issue to in progress)
attempt = 0
while True:
if self.rm.test_issue_status(issue_id, status):
break
if attempt > 10:
break
time.sleep(1)
#.........这里部分代码省略.........
示例3: TestProjectReplication
# 需要导入模块: from pysflib.sfgerrit import GerritUtils [as 别名]
# 或者: from pysflib.sfgerrit.GerritUtils import add_group_member [as 别名]
#.........这里部分代码省略.........
'projects', project)
self.msu.replicationModifyConfig(user, 'add',
section, 'url', url)
push = '+refs/heads/*:refs/heads/*'
self.msu.replicationModifyConfig(user, 'add',
section, 'push', push)
push = '+refs/tags/*:refs/tags/*'
self.msu.replicationModifyConfig(user, 'add',
section, 'push', push)
def deleteConfigSection(self, user, project):
# section name will be node name and the project
section = 'managesf_%s' % project
self.msu.replicationModifyConfig(user, 'remove-section', section)
def mirror_clone_and_check_files(self, url, pname, us_files):
retries = 0
files = []
while True:
clone = self.clone(url, pname)
# clone may fail, as mirror repo is not yet ready(i.e gerrit not
# yet replicated the project)
if os.path.isdir(clone):
files = [f for f in os.listdir(clone) if not f.startswith('.')]
shutil.rmtree(clone)
if us_files and files:
break
elif retries > 30:
break
else:
time.sleep(3)
retries += 1
if us_files:
for f in us_files:
self.assertIn(f, files)
self.assertTrue((len(us_files) < len(files)))
def test_replication(self):
""" Test gerrit replication for review process
"""
# Be sure the project, mirror repo, project in config don't exist
self.deleteMirrorRepo(self.pname)
self.deleteConfigSection(self.un, self.pname)
self.msu.deleteProject(self.pname, self.un)
# Create the project
self.create_project(self.pname, self.un)
# Create new section for this project in replication.config
self.createConfigSection(self.un, self.pname)
# Force gerrit to read its known_hosts file. The only
# way to do that is by restarting gerrit. The Puppet Gerrit
# manifest will restart gerrit if a new entry in known_hosts_gerrit
# is discovered.
# This may take some time (gerrit in some condition take long
# to be fully up)
call("ssh [email protected] systemctl restart gerrit", shell=True)
call("ssh [email protected] /root/wait4gerrit.sh", shell=True)
# Clone the project and submit it for review
priv_key_path = set_private_key(config.USERS[self.un]["privkey"])
gitu = GerritGitUtils(self.un,
priv_key_path,
config.USERS[self.un]['email'])
url = "ssh://%[email protected]%s:29418/%s" % (self.un, config.GATEWAY_HOST,
self.pname)
clone_dir = gitu.clone(url, self.pname)
gitu.add_commit_and_publish(clone_dir, "master", "Test commit")
# Add 2 files and resubmit for review
data = "echo Working"
us_files = ["run_functional-tests.sh", "run_tests.sh"]
for f in us_files:
file(os.path.join(clone_dir, f), 'w').write(data)
os.chmod(os.path.join(clone_dir, f), 0755)
gitu.add_commit_and_publish(clone_dir, "master", None, fnames=us_files)
# Review the patch and merge it
change_ids = self.gu.get_my_changes_for_project(self.pname)
self.assertGreater(len(change_ids), 0)
change_id = change_ids[0]
self.gu.submit_change_note(change_id, "current", "Code-Review", "2")
self.gu.submit_change_note(change_id, "current", "Verified", "2")
self.gu.submit_change_note(change_id, "current", "Workflow", "1")
# Put USER_2 as core for config project
grp_name = '%s-core' % self.pname
self.gu.add_group_member(config.USER_2, grp_name)
self.gu2.submit_change_note(change_id, "current", "Code-Review", "2")
self.assertTrue(self.gu.submit_patch(change_id, "current"))
shutil.rmtree(clone_dir)
# Verify if gerrit automatically triggered replication
# Mirror repo(in mysql node) should have these latest changes
# Clone the mirror repo(from mysql) and check for the 2 files
msql_repo_url = self.msql_repo_path + '%s.git' % self.pname
self.mirror_clone_and_check_files(msql_repo_url, self.pname, us_files)