Skip to main content

The `db-contrib-tool` - MongoDB's tool for contributors.

Project description

db-contrib-tool

The db-contrib-tool - MongoDB's tools for contributors.

Table of contents

Description

The command line tool with various subcommands:

  • bisect
    • README.md
    • performs an evergreen-aware git-bisect to find the 'last passing version' and 'first failing version' of mongo
  • setup-repro-env
    • README.md
    • downloads and installs:
      • particular MongoDB versions
      • debug symbols
      • artifacts (including resmoke, python scripts etc)
      • python venv for resmoke, python scripts etc
  • symbolize
    • README.md
    • Symbolizes stacktraces from recent mongod and mongos binaries compiled in Evergreen, including patch builds, mainline builds, and release/production builds.
    • Requires authenticating to an internal MongoDB symbol mapping service.

Dependencies

Installation

Make sure dependencies are installed. Use pipx to install db-contrib-tool that will be available globally on your machine:

python3 -m pip install pipx
python3 -m pipx ensurepath

Installing db-contrib-tool:

python3 -m pipx install db-contrib-tool

Upgrading db-contrib-tool:

python3 -m pipx upgrade db-contrib-tool

In case of installation errors, some of them may be related to pipx and could be fixed by re-installing pipx.

Removing pipx completely (WARNING! This will delete everything that is installed and managed by pipx):

python3 -m pip uninstall pipx
rm -rf ~/.local/pipx  # in case you're using the default pipx home directory

Now you can try to install again from scratch.

Usage

Print out help message:

db-contrib-tool --help

For more information see description section.

Contributor's Guide (local development)

Install project dependencies

This project uses poetry for dependency management.

poetry install

Run command line tool (local development)

Some subcommands like bisect and symbolize could be tested from the db-contrib-tool repo root:

poetry run db-contrib-tool --help

For setup-repro-env some features can also be tested from the db-contrib-tool repo root, but full features are available when running from mongo repo root. See testing changes locally section.

Run linters

poetry run ruff format
poetry run ruff check

Run tests

poetry run pytest

Pre-commit

This project has pre-commit configured. Pre-commit will run configured checks at git commit time.
To enable pre-commit on your local repository run:

poetry run pre-commit install

To run pre-commit manually:

poetry run pre-commit run

or across all files (not just those staged):

poetry run pre-commit run --all-files

Testing changes in mongo

This tool is used to help run tests in the mongodb/mongo repository. On occasion, it may be desirable to run a mongodb-mongo-* patch build with in-flight changes to this repository. The following steps can be taken to accomplish that.

  • Create a branch with the changes you wish to test.

  • Push the branch to the origin repository: git push -u origin <branch_name>.

  • In the "mongo" repository, edit the evergreen/prelude_db_contrib_tool.sh to install from the git repository instead of from pypi:

    pipx install "git+ssh://git@github.com/10gen/db-contrib-tool.git@<branch_name>" || exit 1
    
  • Create a patch build.

The patch build should now pull down the changes from your branch instead of using the published db-contrib-tool.

Note: Since the db-contrib-tool is pulled from your branch, if you need to make additional changes to the tool, you can just push to the branch and then restart the desired tasks. There is no need to create an additional patch build unless you also need to make updates to the mongo repository.

Testing changes locally

Pipx installation recommendations can be found in installation section.

The tool can be installed via pipx from your local repo:

python3 -m pipx install /path/to/db-contrib-tool/repo/root/dir

If the tool is already installed you can force install an updated version using --force flag:

python3 -m pipx install --force /path/to/db-contrib-tool/repo/root/dir

After these steps you can run in-development version of db-contrib-tool from any directory:

db-contrib-tool --help

Versioning

This project uses semver for versioning. Please include a description what is added for each new version in CHANGELOG.md.

Code Review

This projects uses GitHub PRs for code reviews. You should assign any reviewers you would like to look at the PR to it.

This project uses the GitHub merge queue. Click "Merge when ready" as soon as you'd like.

Deployment

Deployment to pypi is done by deploy task of db-contrib-tool project in Evergreen. A new version in Evergreen is created on merges to main branch.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

db_contrib_tool-0.8.8.tar.gz (55.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

db_contrib_tool-0.8.8-py3-none-any.whl (68.5 kB view details)

Uploaded Python 3

File details

Details for the file db_contrib_tool-0.8.8.tar.gz.

File metadata

  • Download URL: db_contrib_tool-0.8.8.tar.gz
  • Upload date:
  • Size: 55.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.9.2 Linux/4.15.0-1044-aws

File hashes

Hashes for db_contrib_tool-0.8.8.tar.gz
Algorithm Hash digest
SHA256 7a35d1c849f049286adcf76f21ecc8208220f4047ba100a17d5da8148143f8dd
MD5 d5093d380d7efc7dcf24a80cb51cb6f5
BLAKE2b-256 f70f42608e3d011cc4b42defbbf631ffb9c2b05bdde8e1258ce1bb4847a51e31

See more details on using hashes here.

File details

Details for the file db_contrib_tool-0.8.8-py3-none-any.whl.

File metadata

  • Download URL: db_contrib_tool-0.8.8-py3-none-any.whl
  • Upload date:
  • Size: 68.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.9.2 Linux/4.15.0-1044-aws

File hashes

Hashes for db_contrib_tool-0.8.8-py3-none-any.whl
Algorithm Hash digest
SHA256 ba2799bb986b2a6abf29086412fe72b2fb2ff07d7e02c4ee6d01c3b0f251b03c
MD5 fedb13b972ab3cc2aaff24334ff74d0c
BLAKE2b-256 c229f8674f3a1aca9c8c93c875d4b07c01c2224d2a2e6ba6c2c97e48fbc79a19

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page