def process(args): _validate_args(args) uri, user, cert, _ = phlsys_makeconduit.get_uri_user_cert_explanation( args.uri, args.user, args.cert) conduit = phlsys_conduit.Conduit(uri, user, cert, args.act_as_user) d = _process_user_fields(user, conduit, args) _set_options(args, d) d["order"] = 'order-' + args.order # perform the query results = conduit("differential.query", d) if args.statuses: results = [r for r in results if r["statusName"] in args.statuses] if args.update_min_age or args.update_max_age: results = _exclude_on_update_age(args, results) if args.translate: # gather user PHIDs _translate_user_phids(conduit, results) _set_human_times(results) _output_results(args, results)
def test_can_act_as_user(self): test_data = phldef_conduit conduit = phlsys_conduit.Conduit(test_data.TEST_URI, test_data.PHAB.user, test_data.PHAB.certificate) with phlsys_conduit.act_as_user_context(conduit, test_data.ALICE.user): conduit("differential.query")
def setUp(self): self.test_data = phldef_conduit self.conduit = phlsys_conduit.Conduit( self.test_data.TEST_URI, self.test_data.ALICE.user, self.test_data.ALICE.certificate) self.reviewerConduit = phlsys_conduit.Conduit( self.test_data.TEST_URI, self.test_data.BOB.user, self.test_data.BOB.certificate) self.phabConduit = phlsys_conduit.Conduit( self.test_data.TEST_URI, self.test_data.PHAB.user, self.test_data.PHAB.certificate)
def process(args): fs = abdt_fs.make_default_accessor() # make sure we can connect with those parameters uri, user, cert, _ = phlsys_makeconduit.get_uri_user_cert_explanation( args.instance_uri, args.arcyd_user, args.arcyd_cert) conduit = phlsys_conduit.Conduit(uri, user, cert, https_proxy=args.https_proxy) conduit.ping() content = _CONFIG.format(instance_uri=uri, arcyd_user=user, arcyd_cert=cert, review_url_format=args.review_url_format) if args.https_proxy: content = '\n'.join([ content, _CONFIG_HTTPS_PROXY.format(https_proxy=args.https_proxy) ]) if args.admin_emails: content = '\n'.join([ content, _CONFIG_ADMIN_EMAILS_FORMAT.format( admin_emails='\n'.join(args.admin_emails)) ]) with fs.lockfile_context(): fs.create_phabricator_config(args.name, content)
def testCreateUpdateEmptyRevision(self): conduit = phlsys_conduit.Conduit( self.test_data.TEST_URI, self.test_data.PHAB.user, self.test_data.PHAB.certificate) author = phldef_conduit.ALICE.user with phlsys_conduit.act_as_user_context(conduit, author): revision_id = phlcon_differential.create_empty_revision(conduit) revision_list = phlcon_differential.query(conduit, [revision_id]) self.assertEqual(len(revision_list), 1) with phlsys_conduit.act_as_user_context(conduit, author): phlcon_differential.update_revision_empty(conduit, revision_id)
def test_A_Breathing(self): test_data = phldef_conduit conduit = phlsys_conduit.Conduit(test_data.TEST_URI, test_data.PHAB.user, test_data.PHAB.certificate) revision_id = phlcon_differential.create_empty_revision(conduit) cache = phlcon_reviewstatecache.make_from_conduit(conduit) # shouldn't have active reviews to start with self.assertEqual(set(), cache.active_reviews) # assert it's in 'needs review' self.assertEqual( cache.get_state(revision_id).status, phlcon_differential.ReviewStates.needs_review) # should now have cached the review self.assertEqual(set((revision_id, )), cache.active_reviews) # change real state to 'abandoned' phlcon_differential.create_comment( conduit, revisionId=revision_id, action=phlcon_differential.Action.abandon) # check that the cache still reports 'needs_review' self.assertEqual( cache.get_state(revision_id).status, phlcon_differential.ReviewStates.needs_review) # refresh the cache cache.refresh_active_reviews() # check that the cache now reports 'abandoned' self.assertEqual( cache.get_state(revision_id).status, phlcon_differential.ReviewStates.abandoned)
def setUp(self): test_data = phldef_conduit self.conduit = phlsys_conduit.Conduit( test_data.TEST_URI, test_data.ALICE.user, test_data.ALICE.certificate)
def main(): parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=__doc__, epilog=_USAGE_EXAMPLES) parser.add_argument( 'destination', metavar="destination", type=str, help="address of the Phabricator instance, e.g. " "https://secure.phabricator.com") parser.add_argument( '--count', '-c', metavar="TIMES", type=int, help="number of times to ping, default is unlimited") parser.add_argument( '--interval', '-i', metavar="SECONDS", type=float, default=1.0, help="wait interval seconds between sending each request, default is " "to wait one second. Minimum wait is 0.2 seconds.") args = parser.parse_args() if args.interval < 0.2: print("interval must be at least 0.2 seconds") sys.exit(2) # perform the ping and display the time taken and result uri = phlsys_conduit.make_conduit_uri(args.destination) print("conduit.ping " + str(uri)) if args.count is not None: # pychecker requires sequence to be of same type so we have to wrap # xrange() in iter() to make it an iterator. sequence = iter(xrange(args.count)) else: sequence = itertools.count() is_first = True Stats = collections.namedtuple( "phabping__Stats", ['min', 'max', 'sum', 'count']) stats = None try: for i in sequence: # pause between requests if not is_first: time.sleep(args.interval) print("request " + str(i + 1) + " :", end=' ') conduit = phlsys_conduit.Conduit(uri) start = time.time() result = conduit.ping() end = time.time() msecs = (end - start) * 1000 print(result, ":", str(int(msecs)), "ms") # atomically update the 'stats' object # (we may receive KeyboardInterrupt during update) if stats is None: stats = Stats(min=msecs, max=msecs, sum=msecs, count=i + 1) else: stats = Stats( min=min(stats.min, msecs), max=max(stats.max, msecs), sum=stats.sum + msecs, count=i + 1) is_first = False except KeyboardInterrupt: # print a newline to separate the ^C print() if not stats: print("no requests processed.") else: print("---", uri, "conduit.ping statistics", "---") print(stats.count, "requests processed") print("min / mean / max =", end=' ') mean = stats.sum / stats.count vals = [stats.min, mean, stats.max] vals_str = ' / '.join(["{0:0.2f}".format(i) for i in vals]) print(vals_str, 'ms')
def test_can_list_reviews(self): test_data = phldef_conduit conduit = phlsys_conduit.Conduit(test_data.TEST_URI, test_data.ALICE.user, test_data.ALICE.certificate) conduit("differential.query")
def test_can_ping(self): test_data = phldef_conduit conduit = phlsys_conduit.Conduit(test_data.TEST_URI, test_data.ALICE.user, test_data.ALICE.certificate) conduit.ping()
def make_conduit(uri=None, user=None, cert=None, act_as_user=None): uri, user, cert, _ = get_uri_user_cert_explanation(uri, user, cert) return phlsys_conduit.Conduit(uri, user, cert, act_as_user)