{ "info": { "author": "Jonathan Griffin", "author_email": "jgriffin@mozilla.com", "bugtrack_url": null, "classifiers": [], "description": "Pulse Build Monitor\n===================\n\nPulse is mozilla's internal event system, see http://pulse.mozilla.org.\nThe pulse build monitor is a tool that consumes pulse events from\nbuildbot, and notifies callbacks when messages of interest are received.\n\n\nInstallation\n============\n\nDownload and install the pulse build monitor package.\n\n hg clone http://hg.mozilla.org/automation/pulsebuildmonitor/\n cd pulsebuildmonitor\n python setup.py install\n\nOr, more simply:\n\n easy_install pulsebuildmonitor\n\n\nUsage\n=====\n\nTo use the monitor, you just call a single convenience function:\n\n from mozillapulse.config import PulseConfiguration\n from pulsebuildmonitor import start_pulse_monitor\n\n pulse_cfg = PulseConfiguration(user='myuser', password='mypassword')\n monitor = start_pulse_monitor(buildCallback=None,\n testCallback=None,\n pulseCallback=None,\n label=None,\n trees=['mozilla-central'],\n platforms=None,\n products=None,\n buildtypes=None,\n tests=None,\n buildtags=None,\n logger=None,\n talos=False,\n pulse_cfg=pulse_cfg)\n\nThis function returns right away; all of the activity it initiates is\nexecuted on separate threads.\n\n\nParameters\n==========\n\n buildCallback - a function to call when a buildbot message is received\n that indicates a build is finished. This callback is called with\n a dict with the following properties:\n * buildtype: one of: debug, opt, pgo\n * product: the product, may be firefox, mobile, xulrunner, None\n or some other value\n * revision: the hg commit that the build was built from\n * builddate: the buildbot builddate in seconds since epoch format\n * buildername: the buildbot buildername in long format, e.g.,\n \"Android Tegra 250 try opt test mochitest-1\"\n * timestamp: the datetime the pulse message was received, in \n 'YYYYMMDDHHMMSS' format\n * tree: mozilla-central, etc. Only the repo name is included\n here, not the relative path, so this value might\n be mozilla-beta, but not releases/mozilla-beta.\n * platform: generic platform, e.g., linux, linux64, win32, macosx64\n * buildurl: the full url to the build used to run the test\n * testsurl: the full url to the test package for this build\n * key: the pulse key for the original pulse message\n * release: for release builds, the name of the release\n * tags: a list of zero or more tags for this build; see\n https://github.com/mozilla/pulsetranslator/blob/master/pulsetranslator/messageparams.py\n for a list of possible values.\n\n testCallback - a function to call when a buildbot messages is received\n that indicates a unit test has been finished. This callback is called\n with a dict with the following properties:\n * buildtype: one of: debug, opt, pgo\n * product: the product, may be firefox, mobile, xulrunner, None\n or some other value\n * revision: the hg commit that the build was built from\n * builddate: the buildbot builddate in seconds since epoch format\n * buildername: the buildbot buildername in long format, e.g.,\n \"Android Tegra 250 try opt test mochitest-1\"\n * timestamp: the datetime the pulse message was received, in \n 'YYYYMMDDHHMMSS' format\n * talos: true if the message is related to a talos test\n * tree: mozilla-central, etc. Only the repo name is included\n here, not the relative path, so this value might\n be mozilla-beta, but not releases/mozilla-beta.\n * buildnumber: the buildbot build number\n * os: specific OS, e.g., win7, xp, fedora64, snowleopard\n * platform: generic platform, e.g., linux, linux64, win32, macosx64\n * buildurl: the full url to the build used to run the test\n * logurl: full url to the logfile on http://stage.mozilla.org\n * key: the pulse key for the original pulse message\n * release: for release builds, the name of the release\n * test: the name of the test, e.g., reftest, mochitest-other\n\n pulseCallback - a function to call when any buildbot message is received.\n The messages sent to this callback are not filtered. The function\n is called with one parameter, a large dict that contains the pulse\n message. The structure of this dict varies depending on message type.\n This can be useful if you want to provide your own message filtering.\n\n label - a unique string to identify this pulse consumer. If None is\n passed, a random string will be generated.\n\n trees - a list of trees to use to filter messages passed to \n buildCallback and testCallback. If not specified, defaults\n to ['mozilla-central'].\n\n platforms - a list of one of more of: linux, linuxqt, linux-rpm, linux64,\n linux64-rpm, win32, win64, macosx, macosx64, android, android-xul.\n If specified, will be used to filter messages passed to\n buildCallback and testCallback.\n\n products = a list of one or more prodcuts to filter messages with;\n possible products include firefox, mobile, xulrunner, and None\n for buildbot messages that don't contain product information.\n\n talos - if True, pass messages relating to both talos and\n unittests to testCallback. If False (the default), exclude all\n talos messages.\n\n tests - a list of test names (e.g., 'reftest') that is used to filter\n talos and unittest messages passed to testCallback. The test names\n are defined by buildbot and are subject to change without notice.\n\n buildtype - a list of one or more of: debug, opt, pgo. If specified,\n used to filter messages passed to buildCallback and testCallback.\n\n buildtags - a list of build tags which are used to filter builds\n passed to buildCallback. The list can either be a list of strings,\n in which case all strings must match build tags in order for the\n message to be passed to buildCallback, or it can be a list of lists of\n strings, in which all strings in any of the inner lists much match\n build tags in order for the message to pass the filter. Build tags\n are arbitrary tags that can help distginuish between different builds;\n possible values are defined at \n https://github.com/mozilla/pulsetranslator/blob/master/pulsetranslator/messageparams.py#L53\n\n logger - either a string or a logging.logger instance. If a string,\n a logging.logger instance will be created using the given string\n as a filename.\n\n\nThreading considerations\n========================\n\nAs mentioned above, start_pulse_monitor will return immediately; all\nthe activity it initiates is handled on separate threads. If your main\nthread has nothing to do while waiting for pulse messages, it may call\nthe `join()` method on the monitor object returned by start_pulse_monitor:\n\n monitor = start_pulse_monitor(args...)\n try:\n while monitor.is_alive():\n monitor.join(1.0)\n except (KeyboardInterrupt, SystemExit):\n print 'Shutting down ...'\n\nIf the program should exit on keyboard interrupts or other signals, call\n`join()` with a timeout value. Otherwise it will run forever. Also remember\nthat the pulse message callbacks are always invoked using separate threads.\n\nBecause each call to a callback is made on a separate thread, if they\naccess any shared resources, they should make use of locks (such as\nthreading.RLock) or other synchronization mechanisms to prevent\ndeadlocks or other problems.\n\nAny exceptions which occur when executing the callbacks will be logged\n(if you specified the logger parameter), and will be print to stdout.\nHowever, since they are run on separate threads, they will not stop\nexecution of the monitor thread itself. Thus, these exceptions will\nnot cause your program to terminate; you'll need to consult the log\n(or watch stdout) to determine if your callbacks are raising exceptions\nor not.\n\n\nUpgrading from earlier versions\n===============================\n\nThere are some minor API changes to pulsebuildmonitor 0.6. When creating\na pulsebuildmonitor, some of the parameters have changed:\n\n* 'buildtype' is now 'buildtypes', and is a list\n* 'tree' is now 'trees', and is a list (previously it was a list or a string)\n* 'mobile' has been removed (you can filter on the mobile product using products=['mobile'])\n* 'includeTalos' is now just 'talos'\n* there are some new arguments, see the 'Usage' section above\n\nAdditionally, pulsebuildmonitor now requires mozillapulse >= 0.6. You can\ninstall the latest using 'easy_install mozillapulse', or grab a copy from\nhttp://hg.mozilla.org/automation/mozillapulse/\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://hg.mozilla.org/automation/pulsebuildmonitor", "keywords": "", "license": "MPL", "maintainer": null, "maintainer_email": null, "name": "pulsebuildmonitor", "package_url": "https://pypi.org/project/pulsebuildmonitor/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pulsebuildmonitor/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://hg.mozilla.org/automation/pulsebuildmonitor" }, "release_url": "https://pypi.org/project/pulsebuildmonitor/0.90/", "requires_dist": null, "requires_python": null, "summary": "monitor mozilla tinderbox builds via pulse", "version": "0.90" }, "last_serial": 1253415, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "02d3c9ae1a64b90a12c6e0e6a1d3e93c", "sha256": "65015cf36f204b37903f8fc0525ef43124c5743f7777c5f18f8ddd1c55d70dbf" }, "downloads": -1, "filename": "pulsebuildmonitor-0.2.zip", "has_sig": false, "md5_digest": "02d3c9ae1a64b90a12c6e0e6a1d3e93c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9333, "upload_time": "2011-07-01T01:23:17", "url": "https://files.pythonhosted.org/packages/99/2d/fd8316ca0d68132dc3499dce1efda0d885d2969369632a9cbe20fc7785bb/pulsebuildmonitor-0.2.zip" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "46e8a1b4ad60d5aa941c4cb3bab9c9bb", "sha256": "29751dbbee699316971aff4b0cc0c7b983af371fd6ca84f34ca3c461557750d0" }, "downloads": -1, "filename": "pulsebuildmonitor-0.3.zip", "has_sig": false, "md5_digest": "46e8a1b4ad60d5aa941c4cb3bab9c9bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16022, "upload_time": "2011-12-29T19:39:31", "url": "https://files.pythonhosted.org/packages/09/64/bf2f6b86b0f53c071e310e7b297fabe05e3fd2afd095dfc7950b9d30d5f9/pulsebuildmonitor-0.3.zip" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "96e813185cf826f0c16f7f99becdf780", "sha256": "af003565994ffb22cdddabad8f4d1a7518474e99b6b6972392990a0697a813d1" }, "downloads": -1, "filename": "pulsebuildmonitor-0.5.tar.gz", "has_sig": false, "md5_digest": "96e813185cf826f0c16f7f99becdf780", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8822, "upload_time": "2012-03-22T01:49:13", "url": "https://files.pythonhosted.org/packages/53/e2/40eee8765441df09e4dafe3e093b0a6882a5b2c397ddd637de6b6d916955/pulsebuildmonitor-0.5.tar.gz" }, { "comment_text": "", "digests": { "md5": "3e352dc7159da3bc1287af798453a296", "sha256": "c433c0a6ff51d6dc84411af956d331b6ec6a067e1d6445b5700ef578e582f33d" }, "downloads": -1, "filename": "pulsebuildmonitor-0.5.zip", "has_sig": false, "md5_digest": "3e352dc7159da3bc1287af798453a296", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12915, "upload_time": "2012-03-15T20:47:52", "url": "https://files.pythonhosted.org/packages/80/db/a4da32dfcf9dbf8ab637ef35fc80e8da0119256bcd151ae43b41e74fd9ee/pulsebuildmonitor-0.5.zip" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "7d05e1154015ef08f2069ec067707dd0", "sha256": "1b2eb87af0a4c7036e957920ba746f2e2fad8cfdf695a669a53c80a765c43a45" }, "downloads": -1, "filename": "pulsebuildmonitor-0.6.tar.gz", "has_sig": false, "md5_digest": "7d05e1154015ef08f2069ec067707dd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9138, "upload_time": "2012-03-21T18:04:16", "url": "https://files.pythonhosted.org/packages/d7/a7/4ca82900758c3ab907feb0fe6b2e35a763fcce72ff5abfbf5487a414d59c/pulsebuildmonitor-0.6.tar.gz" } ], "0.61": [ { "comment_text": "", "digests": { "md5": "2db3886710d5a156683109012481e026", "sha256": "0a4ba39add9aa595e91ce107ed9584004774cf0211e2954e3381fc73146f2db9" }, "downloads": -1, "filename": "pulsebuildmonitor-0.61.tar.gz", "has_sig": false, "md5_digest": "2db3886710d5a156683109012481e026", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8823, "upload_time": "2012-03-22T01:52:22", "url": "https://files.pythonhosted.org/packages/b1/7c/e56ce7b28e4c3ceb9eb56ce92602026323e50bfe4b02d6c75eac4e22cd1f/pulsebuildmonitor-0.61.tar.gz" } ], "0.62": [ { "comment_text": "", "digests": { "md5": "545c18380a870fcfdd6118c57400e172", "sha256": "25bca25fe32369fcd1f0f4b09a7f76e0e27193ccb274d2daaaef94e353b7c10e" }, "downloads": -1, "filename": "pulsebuildmonitor-0.62.tar.gz", "has_sig": false, "md5_digest": "545c18380a870fcfdd6118c57400e172", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9068, "upload_time": "2012-04-04T00:03:12", "url": "https://files.pythonhosted.org/packages/45/b1/64c8422f2e8849ff9c926678dede27f97e4d9ea6101aae646d712ebe3da1/pulsebuildmonitor-0.62.tar.gz" } ], "0.63": [ { "comment_text": "", "digests": { "md5": "e06d05af12328512499287010ed098b1", "sha256": "b2d8697b2bb436d4ce6b45914971c46a1f891a6cb73e90585814cce5533c3982" }, "downloads": -1, "filename": "pulsebuildmonitor-0.63.tar.gz", "has_sig": false, "md5_digest": "e06d05af12328512499287010ed098b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9256, "upload_time": "2012-04-19T19:17:43", "url": "https://files.pythonhosted.org/packages/9c/8a/e15ce660eac3979a76f9fc0194e0ec66451368ed7be531dccc187cd57ea6/pulsebuildmonitor-0.63.tar.gz" } ], "0.64": [ { "comment_text": "", "digests": { "md5": "e925a882f5b058b02bbbfe6221fc51e0", "sha256": "427702b7c534c8d49626418955fc03d5c1a080083bc0ad4c52fc67ee86219c89" }, "downloads": -1, "filename": "pulsebuildmonitor-0.64.tar.gz", "has_sig": false, "md5_digest": "e925a882f5b058b02bbbfe6221fc51e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9181, "upload_time": "2012-09-19T22:05:39", "url": "https://files.pythonhosted.org/packages/5a/ae/3f55a752cf8c2c34d5401c31dbf6e8acbb35df97d2a93fc7d4d83b49efc5/pulsebuildmonitor-0.64.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "271db75ec553b7019967450c3ed6fa8e", "sha256": "89e9fb0a50aa96001bb9422e67b8b64080597ff41c3e0d6495425feb00c09bc0" }, "downloads": -1, "filename": "pulsebuildmonitor-0.7.tar.gz", "has_sig": false, "md5_digest": "271db75ec553b7019967450c3ed6fa8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9488, "upload_time": "2013-02-19T21:41:55", "url": "https://files.pythonhosted.org/packages/cb/cb/3c0e2f663f7a6c8cd512412420cff5269811ff5b8d92cb70ecce28711f78/pulsebuildmonitor-0.7.tar.gz" } ], "0.70": [ { "comment_text": "", "digests": { "md5": "5d1b42ed39630f4b800c130ba20a1601", "sha256": "8091b8516390d6dbb47ec73e50373b8f237c78b6aa1007253ce3f799a364930b" }, "downloads": -1, "filename": "pulsebuildmonitor-0.70.tar.gz", "has_sig": false, "md5_digest": "5d1b42ed39630f4b800c130ba20a1601", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9496, "upload_time": "2013-02-19T22:05:21", "url": "https://files.pythonhosted.org/packages/30/6d/332c235b349c43226e099da53b8f06fbf7eaec684b12768c92720021ed9c/pulsebuildmonitor-0.70.tar.gz" } ], "0.80": [ { "comment_text": "", "digests": { "md5": "c2f6a11cd7d50654ceaa47abe64dd9ea", "sha256": "8932624db5bbdbcca54cda05f28de23eedee277885fe6f78f879fab5d5371aa3" }, "downloads": -1, "filename": "pulsebuildmonitor-0.80.tar.gz", "has_sig": false, "md5_digest": "c2f6a11cd7d50654ceaa47abe64dd9ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9286, "upload_time": "2014-02-12T20:44:34", "url": "https://files.pythonhosted.org/packages/27/f5/6867a5b5aa083397fb8010edcabf578024067782493bb367cd0729bd29e1/pulsebuildmonitor-0.80.tar.gz" } ], "0.81": [ { "comment_text": "", "digests": { "md5": "4f6bb855143d26c8993b3fb75bbf9cf7", "sha256": "a6dca6167cbfcc90fce351b1e093017459908be9c045c550cf3b703b5497a787" }, "downloads": -1, "filename": "pulsebuildmonitor-0.81.tar.gz", "has_sig": false, "md5_digest": "4f6bb855143d26c8993b3fb75bbf9cf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9318, "upload_time": "2014-04-08T21:34:28", "url": "https://files.pythonhosted.org/packages/c4/c4/a9100aec6ce41300dd280ebb0a0b2818ef8331099869c551d68e753454f4/pulsebuildmonitor-0.81.tar.gz" } ], "0.90": [ { "comment_text": "", "digests": { "md5": "2252c662e4ef642dbaafe1bb365780cc", "sha256": "57b72bb00c7b4af5d36ddf211ae053e1e0897940138a2555949f6424c047ab26" }, "downloads": -1, "filename": "pulsebuildmonitor-0.90.tar.gz", "has_sig": false, "md5_digest": "2252c662e4ef642dbaafe1bb365780cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9455, "upload_time": "2014-10-09T17:57:39", "url": "https://files.pythonhosted.org/packages/30/c3/f1e1c8729bfad73451b9eb942b0c9ea863ed08e615c0574d2cdf24f47ef5/pulsebuildmonitor-0.90.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2252c662e4ef642dbaafe1bb365780cc", "sha256": "57b72bb00c7b4af5d36ddf211ae053e1e0897940138a2555949f6424c047ab26" }, "downloads": -1, "filename": "pulsebuildmonitor-0.90.tar.gz", "has_sig": false, "md5_digest": "2252c662e4ef642dbaafe1bb365780cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9455, "upload_time": "2014-10-09T17:57:39", "url": "https://files.pythonhosted.org/packages/30/c3/f1e1c8729bfad73451b9eb942b0c9ea863ed08e615c0574d2cdf24f47ef5/pulsebuildmonitor-0.90.tar.gz" } ] }