Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support find cache + gh action for core mlc actions #39

Merged
merged 22 commits into from
Jan 31, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 124 additions & 0 deletions .github/workflows/test-mlc-core-actions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: MLC core actions test

on:
pull_request:
branches: [ "main", "dev" ]
paths:
- '.github/workflows/test-mlc-core-actions.yml'
- '**'
- '!**.md'

jobs:
test_mlc_core_actions:

runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ["3.12", "3.8"]
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
exclude:
- os: windows-latest
- os: macos-latest

steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}

- name: Configure git longpaths (Windows)
if: matrix.os == 'windows-latest'
run: |
git config --system core.longpaths true

- name: Install mlcflow from the pull request's source repository and branch
run: |
python -m pip install --upgrade pip
python -m pip install --ignore-installed --verbose pip setuptools
python -m pip install .

- name: Test 1 - pull repo - Pull a forked MLOps repository
run: |
GH_MLC_REPO_PATH_FORK="${HOME}/MLC/repos/anandhu-eng@mlperf-automations"
GH_MLC_REPO_JSON_PATH="${HOME}/MLC/repos/repos.json"
mlc pull repo anandhu-eng@mlperf-automations --checkout=dev
if [ ! -d "${GH_MLC_REPO_PATH_FORK}" ]; then
echo "Repository folder $GH_MLC_REPO_PATH_FORK not found. Exiting with failure."
exit 1
fi
if [ ! -f "$GH_MLC_REPO_JSON_PATH" ]; then
echo "File $GH_MLC_REPO_JSON_PATH does not exist. Exiting with failure."
exit 1
fi
if ! grep -q "$GH_MLC_REPO_PATH_FORK" "$GH_MLC_REPO_JSON_PATH"; then
echo "Path $GH_MLC_REPO_PATH_FORK not found in $GH_MLC_REPO_JSON_PATH. Exiting with failure."
exit 1
fi
CURRENT_BRANCH=$(git -C "$GH_MLC_REPO_PATH_FORK" rev-parse --abbrev-ref HEAD)
if [ "$CURRENT_BRANCH" != "dev" ]; then
echo "Expected branch 'dev', but found '$CURRENT_BRANCH'. Exiting with failure."
exit 1
fi


- name: Test 2 - pull repo - Test conflicting repo scenario
run: |
GH_MLC_REPO_PATH="${HOME}/MLC/repos/mlcommons@mlperf-automations"
GH_MLC_REPO_JSON_PATH="${HOME}/MLC/repos/repos.json"
mlc pull repo mlcommons@mlperf-automations --checkout=dev
if [ ! -d "$GH_MLC_REPO_PATH" ]; then
echo "Repository folder $GH_MLC_REPO_PATH not found. Exiting with failure."
exit 1
fi
if [ ! -f "$GH_MLC_REPO_JSON_PATH" ]; then
echo "File $GH_MLC_REPO_JSON_PATH does not exist. Exiting with failure."
exit 1
fi
if ! grep -q "$GH_MLC_REPO_PATH" "$GH_MLC_REPO_JSON_PATH"; then
echo "Path $GH_MLC_REPO_PATH not found in $GH_MLC_REPO_JSON_PATH. Exiting with failure."
exit 1
fi
if ! grep -q "$GH_MLC_REPO_PATH_FORK" "$GH_MLC_REPO_JSON_PATH"; then
echo "Path $GH_MLC_REPO_PATH_FORK also found in $GH_MLC_REPO_JSON_PATH. This should have been replaced. Exiting with failure."
exit 1
fi
CURRENT_BRANCH=$(git -C "$GH_MLC_REPO_PATH" rev-parse --abbrev-ref HEAD)
if [ "$CURRENT_BRANCH" != "dev" ]; then
echo "Expected branch 'dev', but found '$CURRENT_BRANCH'. Exiting with failure."
exit 1
fi

- name: Test 3 - list repo - List the existing repositories
run: |
mlc list repo

- name: Test 4 - rm repo - Remove the forked mlperf-automation repo
run: |
GH_MLC_REPO_PATH_FORK="${HOME}/MLC/repos/anandhu-eng@mlperf-automations"
mlc rm repo anandhu-eng@mlperf-automations
if [ -d "$GH_MLC_REPO_PATH_FORK" ]; then
echo "Repository folder $GH_MLC_REPO_PATH found. It should ideally be deleted. Exiting with failure."
exit 1
fi

- name: Test 5 - find cache - Cache not present
run: |
mlc find cache --tags=detect,os 2>&1 | tee test5.log
if ! grep -q "No cache entry found for the specified tags:" test5.log; then
exit 1
fi

- name: Test 6 - run script - Output being used for testing mlc cache
run: |
mlc run script --tags=get,imagenet-aux --quiet
mlc run script --tags=get,imagenet-aux,_from.dropbox --quiet

- name: Test 7 - find cache - More than one cache present
run: |
mlc search cache --tags=get,imagenet-aux 2>&1 | tee test7.log
mlc search cache --tags=detect,os 2>&1 | tee test5.log
if grep -q "No cache entry found for the specified tags:" test5.log; then
exit 1
fi
8 changes: 6 additions & 2 deletions mlc/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -1178,6 +1178,7 @@ def call_script_module_function(self, function_name, run_args):
return result
else:
logger.info("ScriptAutomation class not found in the script.")
return {'return': 1, 'error': 'ScriptAutomation class not found in the script.'}

def docker(self, run_args):
return self.call_script_module_function("docker", run_args)
Expand Down Expand Up @@ -1220,8 +1221,6 @@ def rm(self, i):
def show(self, run_args):
self.action_type = "cache"
logger.info(f"Showing cache with identifier: {args.details}")
run_args['target_name'] = "cache"
return self.search(run_args)

def list(self, args):
logger.info("Listing all caches.")
Expand Down Expand Up @@ -1374,6 +1373,11 @@ def main():
if hasattr(args, 'repo') and args.repo:
run_args['repo'] = args.repo


if args.command in ['rm']:
if args.target == "repo":
run_args['repo'] = args.details

if hasattr(args, 'details') and args.details and "," in args.details and not run_args.get("tags") and args.target in ["script", "cache"]:
run_args['tags'] = args.details

Expand Down
Loading