{"id":41591465,"url":"https://github.com/opensciencegrid/vm-test-runs","last_synced_at":"2026-01-24T09:31:41.605Z","repository":{"id":37851386,"uuid":"56001913","full_name":"opensciencegrid/vm-test-runs","owner":"opensciencegrid","description":"VM infrastructure scripts for nightly tests","archived":false,"fork":false,"pushed_at":"2026-01-14T17:52:40.000Z","size":1030,"stargazers_count":0,"open_issues_count":1,"forks_count":6,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-01-14T21:38:47.932Z","etag":null,"topics":["software","tests"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opensciencegrid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-04-11T19:39:23.000Z","updated_at":"2026-01-14T17:52:45.000Z","dependencies_parsed_at":"2023-12-13T20:46:19.276Z","dependency_job_id":"de84be38-327a-4653-894e-b449042ff5dc","html_url":"https://github.com/opensciencegrid/vm-test-runs","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/opensciencegrid/vm-test-runs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensciencegrid%2Fvm-test-runs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensciencegrid%2Fvm-test-runs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensciencegrid%2Fvm-test-runs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensciencegrid%2Fvm-test-runs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opensciencegrid","download_url":"https://codeload.github.com/opensciencegrid/vm-test-runs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensciencegrid%2Fvm-test-runs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28723233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T08:27:05.734Z","status":"ssl_error","status_checked_at":"2026-01-24T08:27:01.197Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["software","tests"],"created_at":"2026-01-24T09:31:40.871Z","updated_at":"2026-01-24T09:31:41.592Z","avatar_url":"https://github.com/opensciencegrid.png","language":"Python","readme":"Running Tests as VM Jobs\n========================\n\n- [Setting up credentials](#setting-up-credentials)\n- [Running osg-test in VM Universe](#running-osg-test-in-vm-universe)\n- [Troubleshooting](#troubleshooting)\n  - [Missing unicode fonts](#missing-unicode-fonts)\n  - [Interactively connecting to a VM](#interactively-connecting-to-a-vm)\n\nThis repository drives the OSG Software nightly tests.\nWhenever updating [osg-run-tests](osg-run-tests), make sure to update the copy in `/usr/bin/` on `osg-sw-submit`.\n\nSetting up credentials\n----------------------\n\n**Note:** This one time setup must be performed before submitting any test jobs.\n\n1.  Open a Freshdesk ticket requesting an account on `osg-sw-submit.chtc.wisc.edu` and assign it to the Software group\n2.  Once the ticket has been resolved, verify access by SSHing to `osg-sw-submit`.\n\nRunning osg-test in VM Universe\n-------------------------------\n\nThe procedure explained in this section replaces [this](https://opensciencegrid.github.io/technology/software/development-process/) if and only if there are functional tests for each package being tested.\n\n1.  From `osg-sw-submit.chtc.wisc.edu`, make and populate a test run directory:\n\n        [user@osg-sw-submit ~]$ osg-run-tests '\u003cRUN DESCRIPTION\u003e'\n\n2.  Change to the test run directory (see output of osg-run-tests)\n3.  If you need to change `osg-test`, make changes to a github fork of osg-test and prepend the source lines in the yaml\n    parameters files (see below) with the following: `\u003cGITHUB ACCOUNT\u003e:\u003cBRANCH OF OSG-TEST\u003e;`\n4.  If there are test failures that shouldn't be marked as failures in the reporting, edit `test-exceptions.yaml` add\n    test failures to ignore with the following format:\n\n        # - [test_function, test_module, start date, end date].\n        [test_04_trace, test_55_condorce, 2014-12-01, 2015-01-14]\n\n5.  To change test run parameters, edit `parameters.d/*.yaml`, or add/remove yaml files with the same format.\n    Each file in `parameters.d` generates an osg-test run for every possible combination of the `platforms`, `sources`,\n    and `package_sets` parameters in that file.\n    1.  To change the distribution, modify the `platforms` section. Accepted values are listed below:\n\n              platforms:\n                - centos_6_x86_64\n                - rhel_6_x86_64\n                - sl_6_x86_64\n                - centos_7_x86_64\n                - rhel_7_x86_64\n                - sl_7_x86_64\n\n    2.  To change the repos that packages are installed from, edit the sources section, which has the following format:\n\n            [\u003cGITHUB ACCOUNT\u003e:\u003cBRANCH OF OSG-TEST\u003e;] \u003cINITIAL OSG VERSION\u003e; \u003cINTIAL YUM REPO\u003e [\u003e] [\u003cUPDATE OSG VERSION\u003e/][\u003cUPDATE YUM REPO\u003e]\n            # Run osg-test from the 'opensciencegrid' github account using the 'master' branch (\u003chttps://github.com/opensciencegrid/osg-test.git\u003e) with packages from 3.2-testing\n            opensciencegrid:master; 3.2; osg-testing\n            # Run osg-test (from 3.1-minefield) with packages from 3.1-release\n            3.1; osg\n            # Run osg-test (from 3.1-minefield) with packages from 3.1-testing that are then upgraded to 3.2-testing\n            3.1; osg-testing \u003e 3.2/osg-testing\n            # Run osg-test (from 3.2-minefield) with packages from 3.2-release and 3.2-testing that are then upgraded to 3.3-testing and 3-3-upcoming-testing\n            3.2; osg, osg-testing \u003e 3.3/osg-testing, osg-upcoming-testing\n\n    3. The `package_sets` section controls the packages that are installed, the label used for reporting, whether or not\n       SELinux is enabled, and whether or not to pre-install the OSG Java packages:\n\n            package_sets:\n            #### Required ####\n            # label - used for reporting, should be consistent across param files\n            # packages - list of packages to install in the test run\n            #### Optional ####\n            # selinux - enable SELinux for the package set, otherwise Permissive mode (default: True)\n            # osg_java - Pre-install OSG java packages (default: False)\n            ##################\n            - label: All\n              packages:\n                - osg-tested-internal\n            - label: HTCondor\n              packages:\n                - condor.x86_64\n                - osg-ce-condor\n\n    4. The test infrastructure can read multiple yaml files in `parameters.d`, which allows you to run different,\n       mutually exclusive tests.\n       For example, if you wanted to test 3.4 development on EL7 in addition to the standard tests, you could add the\n       following to a file in `parameters.d`:\n\n            platform:\n              - centos_7_x86_64\n              - sl_7_x86_64\n\n            sources:\n              - opensciencegrid:master; 3.4; osg-development\n\n            package_sets:\n              - label: All\n                packages:\n                  - osg-tested-internal\n              - label: All (3.4)\n                packages:\n                  - osg-tested-internal\n              - label: HTCondor\n                packages:\n                  - condor.x86_64\n                  - osg-ce-condor\n              - label: GridFTP\n                packages:\n                  - osg-gridftp\n\n6.  Submit the test run (you must submit the DAG from the run directory):\n\n        [user@osg-sw-submit run-20200327-0925]$ ./master-run.sh\n\n7.  Monitor the test run (as desired):\n\n        [user@osg-sw-submit run-20200327-0925]$ condor_q -dag\n\n8.  When the test run finishes, an email will go out to members of the software team (hardcoded in `email-analysis`).\n\nTroubleshooting\n---------------\n\n### Missing Unicode Fonts\n\nThe HTML reports for the testing results utilize unicode characters (namely the padlock to represent that SELinux was enabled). If these characters are appearing as the character code in a block, that means that the font you're using does not support these characters. To render these characters properly, perform the following steps:\n\n1.  Download a suitable Unicode Emoji font. We have had success with the \"Noto Emoji\" font available from \u003chttps://www.google.com/get/noto/\u003e\n2.  Create a `~/.fonts/` dir if one does not already exist\n3.  Copy the `.ttf` file from the downloaded font `.zip` file into `~/.fonts/`\n4.  Run `fc-cache -f`\n\n### Interactively connecting to a VM\n\nUnfortunately, VM Universe jobs don't have the ssh\\_to\\_job capacity that's available to other Condor jobs so if we need to investigate test failures in VMU, we'll have to spin up our own VM's. We can do this by taking the images that Neil automatically generates and create new ones from them that don't automatically run osg-test (Right now, Neil has to manually copy over the updated images. Eventually, we should have an automated way to get the most updated VMU images). Here are the steps you need to follow to set up your own VM:\n\n1.  Grab the make-interactive-image from git:\n\n        git clone https://github.com/opensciencegrid/vm-test-runs.git\n2.  Run `make-interactive-image` using the flavor and version of Linux you need, VMU images are in `/staging/osg-images/` (NOTE: the output image needs to be in a directory that's readable by the `qemu` user):\n\n        vm-test-runs/make-interactive-image /staging/osg-images/\u003cINPUT IMAGE\u003e \u003cOUTPUT IMAGE\u003e\n\n3.  Make a copy of `libvirt-template.xml` and edit the `@DOMAIN@` and `@IMAGEFILE@` to a name that will be used by virsh and the path to the image file you created in the previous step\n4.  Define and start the VM with your copy of the xml file:\n\n        virsh create \u003cXML FILE\u003e\n5.  Connect to the VM (consult BrianL, Mat or Carl for the password). You can use either the domain name or the ID returned by `virsh list`:\n\n        virsh console \u003cDOMAIN\u003e\n6.  Cleanup the VM. You can use either the domain name or the ID returned by `virsh list`:\n\n        virsh destroy \u003cDOMAIN\u003e\n\n### `list-rpm-versions`\n\nThis script is for listing rpm versions installed in an osg-test job output\nor summarizing across an entire VMU run on osg-sw-submit.  A copy is installed\nthere under `/usr/local/bin`.\n\nBelow are some use cases for reference / appetite whetting.\n\n**TL;DR:** The most common use case will probably be the one at the end with `--summarize` and `--list-outputs` (`-sl` for short) run against the timestamp for a VMU run dir.\n\n---\n\nUsage \u0026 Options summary:\n```\n[edquist@osg-sw-submit ~]\n$ list-rpm-versions --help\n\nUsage:\n  list-rpm-versions [options] output-001 [packages...]\n  list-rpm-versions [options] [--summarize] [run-]20161220-1618 packages...\n  list-rpm-versions [options] VMU-RESULTS-URL packages...\n\nList version-release numbers for RPMs installed in an osg-test run output\ndirectory, as found in output-NNN/output/osg-test-*.log\n\nThe output argument can also be a root.log from a koji/mock build,\nor the raw output of an 'rpm -qa' command, or an osg-profile.txt from\nosg-system-profiler.\n\nIf any packages are specified, limit the results to just those packages.\n\nPatterns can be specified for package names with the '%' character, which\nmatches like '*' in a shell glob pattern.\n\nIf a run directory (or, just the timstamp string) is specified, summary\ninformation will be printed for the listed packages across all output-NNN\nsubdirectories for that set of osg test runs.\n\nIf a VMU-RESULTS-URL is provided, the corresponding run dir will be used.\nEg: \"https://osg-sw-submit.chtc.wisc.edu/tests/20180604-1516/005/osg-test-20180604.log\"\nfor an individual output job (005),\nor: \"https://osg-sw-submit.chtc.wisc.edu/tests/20180604-1516/packages.html\"\nfor a summary of all jobs for the run.\n\nOptions:\n  -A, --no-strip-arch  don't attempt to strip .arch from package names\n  -D, --no-strip-dist  don't attempt to strip .dist tag from package releases\n\n  -s, --summarize      summarize results for all output subdirs\n                       (this option is implied if the argument specified is of\n                       the format [run-]YYYYMMDD-HHMM)\n  -l, --list-outputs   list output numbers (summarize mode only)\n  -L, --max-outputs N  list at most N output numbers per NVR (-1 for unlimited)\n```\n\n\nExample run on a single `output-NNN` dir for all packages:\n```\n[edquist@osg-sw-submit /osgtest/runs/run-20161221-0423]\n$ list-rpm-versions output-123 \n\nPackage                         output-123\n-------                         ----------\nCGSI-gSOAP                      1.3.10-1\nGConf2                          3.2.6-8\napache-commons-cli              1.2-13\napache-commons-codec            1.8-7\napache-commons-collections      3.2.1-22\napache-commons-discovery        2:0.5-9\napache-commons-io               1:2.4-12\napache-commons-lang             2.6-15\napache-commons-logging          1.1.2-7\napr                             1.4.8-3\napr-util                        1.5.2-6\natk                             2.14.0-1\naudit-libs-python               2.4.1-5\navalon-framework                4.3-10\n...\n```\n\n\nExample run on a single `output-NNN` dir for two packages:\n```\n[edquist@osg-sw-submit /osgtest/runs/run-20161221-0423]\n$ list-rpm-versions output-123 condor java-1.7.0-openjdk\n\nPackage             output-123\n-------             ----------\ncondor              8.5.8-1.osgup\njava-1.7.0-openjdk  1:1.7.0.121-2.6.8.0\n```\n\n\nExample run in summary mode over all `output-NNN` subdirs for a run set:\n```\n[edquist@osg-sw-submit ~]\n$ list-rpm-versions -s 20161221-0423 condor java-1.7.0-openjdk\n\nPackage             Version-Release      Count\n-------             ---------------      -----\ncondor              -                    5\ncondor              8.4.9-1              63\ncondor              8.4.10-1             105\ncondor              8.5.7-1.osgup        42\ncondor              8.5.8-1.osgup        79\n\njava-1.7.0-openjdk  -                    5\njava-1.7.0-openjdk  1:1.7.0.121-2.6.8.0  121\njava-1.7.0-openjdk  1:1.7.0.121-2.6.8.1  168\n```\n\n\nSame thing, but list the output dir numbers also:\n```\n[edquist@osg-sw-submit ~]\n$ list-rpm-versions -sl 20161221-0423 condor java-1.7.0-openjdk\n\nPackage             Version-Release      Count  Output-Nums\n-------             ---------------      -----  -----------\ncondor              -                    5      075,078,080,082,083\ncondor              8.4.9-1              63     000,001,002,003,004,005,006,...\ncondor              8.4.10-1             105    007,008,009,010,011,012,013,...\ncondor              8.5.7-1.osgup        42     021,022,023,024,025,026,027,...\ncondor              8.5.8-1.osgup        79     028,029,030,031,032,033,034,...\n\njava-1.7.0-openjdk  -                    5      075,078,080,082,083\njava-1.7.0-openjdk  1:1.7.0.121-2.6.8.0  121    000,001,002,003,004,005,006,...\njava-1.7.0-openjdk  1:1.7.0.121-2.6.8.1  168    126,127,128,129,130,131,132,...\n```\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensciencegrid%2Fvm-test-runs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopensciencegrid%2Fvm-test-runs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensciencegrid%2Fvm-test-runs/lists"}