Monorail is the Issue Tracker used by the Chromium project and other related projects. It is hosted at bugs.chromium.org.
If you wish to file a bug against Monorail itself, please do so in our self-hosting tracker. We also discuss development of Monorail at infra-dev@chromium.org
.
Here's how to run Monorail locally for development on Debian stretch/buster. These instructions may work with other Debian derivatives:
cd /path/to/empty/workdir
fetch infra
cd infra/appengine/monorail
sudo apt-get install default-mysql-server default-mysql-client
brew install mysql@5.6
sudo mysql -uroot mysql -e "UPDATE user SET host='%', plugin='' WHERE user='root'; FLUSH PRIVILEGES;"
STRICT_TRANS_TABLES
echo -e "[mysqld]\nsql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" | sudo tee /etc/mysql/conf.d/99-sql-mode.cnf
sudo /etc/init.d/mysql restart
sudo apt-get install python-mysqldb
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
pip install MYSQL-python
sudo install_name_tool -change libmysqlclient.18.dylib \ /usr/local/mysql/lib/libmysqlclient.18.dylib \ /Library/Python/2.7/site-packages/_mysql.so
mysql --user=root -e 'CREATE DATABASE monorail;'
mysql --user=root monorail < schema/framework.sql
mysql --user=root monorail < schema/project.sql
mysql --user=root monorail < schema/tracker.sql
eval `../../go/env.py`
-- you'll need to run this in any shell you wish to use for developing Monorail. It will add some key directories to your $PATH
.npm install
sudo apt-get install build-essential automake
make serve
mysql --user=root monorail -e "UPDATE User SET is_site_admin = TRUE WHERE email = 'test@example.com';"
Instructions for deploying Monorail to an existing instance or setting up a new instance are here.
Here's how to run unit tests from the command-line:
To run all Python unit tests, in the appengine/monorail
directory run:
make test
For quick debugging, if you need to run just one test you can do the following. For instance for the test IssueServiceTest.testUpdateIssues_Normal
in services/test/issue_svc_test.py
:
../../test.py test appengine/monorail:services.test.issue_svc_test.IssueServiceTest.testUpdateIssues_Normal --no-coverage
To run the frontend tests for Monorail, you first need to set up your Go environment. From the Monorail directory, run:
eval `../../go/env.py`
Then, to run the frontend tests, run:
make karma
To run only one test or a subset of tests, you can add .only
to the test function you want to isolate:
// Run one test. it.only(() => { ... }); // Run a subset of tests. describe.only(() => { ... });
Just remember to remove them before you upload your CL.
TypeError: connect() got an unexpected keyword argument 'charset'
This error occurs when dev_appserver
cannot find the MySQLdb library. Try installing it via sudo apt-get install python-mysqldb.
TypeError: connect() argument 6 must be string, not None
This occurs when your mysql server is not running. Check if it is running with ps aux | grep mysqld
. Start it up with /etc/init.d/mysqld start on linux, or just mysqld.
OSError: [Errno 24] Too many open files
and then lists out all source filesdev_appserver wants to reload source files that you have changed in the editor, however that feature does not seem to work well with multiple GAE modules and instances running in different processes. The workaround is to control-C or kill
the dev_appserver processes and restart them.
IntegrityError: (1364, "Field 'comment_id' doesn't have a default value")
happens when trying to file or update an issueIn some versions of SQL, the STRICT_TRANS_TABLES
option is set by default. You'll have to disable this option to stop this error.
Monorail supports all browsers defined in the Chrome Ops guidelines.
File a browser compatability bug here.