services/lambda-pr-status-labeler/pr_status_bot/test.py (56 lines of code) (raw):

#!/usr/bin/env python3 # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # -*- coding: utf-8 -*- import os import json from PRStatusBot import PRStatusBot, GithubObj def load_and_test(data): payload_json = json.loads(data) os.environ["AWS_PROFILE"] = "mxnet-ci" # set secret_name [commented since it is to be redacted] # os.environ["secret_name"] = REDACTED os.environ["region_name"] = "us-west-2" github_obj = GithubObj(apply_secret=True) pr_status_bot = PRStatusBot(repo="apache/incubator-mxnet", github_obj=github_obj.github_object, apply_secret=True) pr_status_bot.parse_payload(payload_json) def prepare_input(pr_num, context, state, sha): data = { "target_url": "PR-" + str(pr_num), "context": "ci/jenkins/mxnet-validation/" + context, "state": state, "commit": { "sha": sha } } # return serialized data dictionary return json.dumps(data) def check_ci_failure(): data = prepare_input(18984, "website", "failed", "6fbfa3c020e566c0d54825cbfb67abca1d70b4fa") load_and_test(data) def check_ci_pending(): data = prepare_input(18921, "sanity", "pending", "19fa075dc0cc76678750b6c691208aa7aa1f45ff") load_and_test(data) def check_ci_success(): data = prepare_input(18983, "unix-gpu", "success", "26fb1921b6e09226146b4b90d2d995b7a018347d") load_and_test(data) def check_pr_awaiting_merge(): # https://github.com/apache/incubator-mxnet/pull/17468 # PR satisfies all criterion for pr-awaiting-merge label # - passed all CI tests; # - PR contains atleast 1 Committers' approvers; no requested changes # It does have a merge conflict though data = prepare_input(17468, "unix-gpu", "success", "68c19d7b08d04df1d4ac9dd3fca7ad58f925ec51") load_and_test(data) def check_commit_with_non_committer_review(): # https://github.com/apache/incubator-mxnet/pull/16025 # PR passes CI but has 1 non-MX Committer review data = prepare_input(16025, "unix-gpu", "success", "fb343b55ec4721c9cce4422224c246eb3a188bb2") load_and_test(data) def check_commit_with_no_review(): # https://github.com/apache/incubator-mxnet/pull/18983 # PR has no review but CI passes data = prepare_input(18983, "unix-gpu", "success", "26fb1921b6e09226146b4b90d2d995b7a018347d") load_and_test(data) def check_wip_title_pr(): data = prepare_input(18715, "unix-gpu", "success", "d638d3c51c176208e2909134306fb62d1df99b6c") load_and_test(data) def check_draft_pr(): data = prepare_input(18835, "unix-gpu", "success", "12dd397f6886a4014ef5f81c1cbcae4ca68e3f5b") load_and_test(data) def check_pr_with_requested_changes(): data = prepare_input(13735, "unix-gpu", "success", "32a3b6eb2b53f27a5bddbfd130ac2e357877475d") load_and_test(data) check_ci_failure() check_ci_success() check_ci_pending() check_pr_awaiting_merge() check_commit_with_non_committer_review() check_commit_with_no_review() check_wip_title_pr() check_draft_pr() check_pr_with_requested_changes() # check_pr_awaiting_response()