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)
示例#2
0
 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")
示例#3
0
    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)
示例#4
0
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)
示例#5
0
    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')
示例#9
0
 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")
示例#10
0
 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()
示例#11
0
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)