)]}'
{"test/functional/__init__.py":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"34bbbfa8f40954cb41701293c55d9f100bae6c1c","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def in_process_setup(the_object_server\u003dobject_server):"},{"line_number":112,"context_line":"    eventlet.hubs.use_hub(utils.get_hub())"},{"line_number":113,"context_line":"    eventlet.patcher.monkey_patch(all\u003dFalse, socket\u003dTrue)"},{"line_number":114,"context_line":"    eventlet.debug.hub_exceptions(True)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAW3%2F%2F198%3D","line":112,"updated":"2014-04-10 01:43:11.000000000","message":"Why is it necessary to initialize eventlet here as well as at the module level?","commit_id":"2a2835e4f94ddbdd39cbb8c7edfb700ce0923da7"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"8bea2df10521f02100ebb1e132915e32110fcab9","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def in_process_setup(the_object_server\u003dobject_server):"},{"line_number":112,"context_line":"    eventlet.hubs.use_hub(utils.get_hub())"},{"line_number":113,"context_line":"    eventlet.patcher.monkey_patch(all\u003dFalse, socket\u003dTrue)"},{"line_number":114,"context_line":"    eventlet.debug.hub_exceptions(True)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAW3%2F%2F10M%3D","line":112,"in_reply_to":"AAAAW3%2F%2F198%3D","updated":"2014-04-10 02:34:32.000000000","message":"Oversight on my part, mostly likely from merging a number of time. I\u0027ll remove.","commit_id":"2a2835e4f94ddbdd39cbb8c7edfb700ce0923da7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"24ef319b77a517d398b6a4a2ced9274050fa96af","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    gk_prosrv \u003d gatekeeper.GatekeeperMiddleware("},{"line_number":285,"context_line":"        hc_prosrv, config)"},{"line_number":286,"context_line":"    ce_prosrv \u003d catch_errors.CatchErrorMiddleware("},{"line_number":287,"context_line":"        gk_prosrv, config)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    nl \u003d utils.NullLogger()"},{"line_number":290,"context_line":"    prospa \u003d eventlet.spawn(eventlet.wsgi.server, prolis, ce_prosrv, nl)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAW3%2F%2Fzzs%3D","line":287,"updated":"2014-04-10 09:32:45.000000000","message":"so this method, and particularly the pipeline/register stuff reminded me that there\u0027s going to be some maintenance overhead here - especially while it\u0027s new - until people learn how things work well enough to add stuff and fix bits when it breaks.  I\u0027m sure you\u0027ll help out where there\u0027s a need or an ask.\n\nI tried to do something with the filter_factory methods:\n\nhttps://gist.github.com/clayg/10360086","commit_id":"2a2835e4f94ddbdd39cbb8c7edfb700ce0923da7"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"4fbc72aafdd612690dd695a5b50cb2ce88837a00","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    gk_prosrv \u003d gatekeeper.GatekeeperMiddleware("},{"line_number":285,"context_line":"        hc_prosrv, config)"},{"line_number":286,"context_line":"    ce_prosrv \u003d catch_errors.CatchErrorMiddleware("},{"line_number":287,"context_line":"        gk_prosrv, config)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    nl \u003d utils.NullLogger()"},{"line_number":290,"context_line":"    prospa \u003d eventlet.spawn(eventlet.wsgi.server, prolis, ce_prosrv, nl)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAW3%2F%2FzJg%3D","line":287,"in_reply_to":"AAAAW3%2F%2Fzzs%3D","updated":"2014-04-10 10:39:55.000000000","message":"Thank @Clay, that is a big help. I\u0027ll try that out and see how it works.\n\nI agree this code is really ugly and will be a pain to maintain.","commit_id":"2a2835e4f94ddbdd39cbb8c7edfb700ce0923da7"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"34bbbfa8f40954cb41701293c55d9f100bae6c1c","unresolved":false,"context_lines":[{"line_number":343,"context_line":"            if k in config:"},{"line_number":344,"context_line":"                # prefer what\u0027s in test.conf"},{"line_number":345,"context_line":"                config[k] \u003d int(config[k])"},{"line_number":346,"context_line":"                in_process \u003d False"},{"line_number":347,"context_line":"            elif constraints.SWIFT_CONSTRAINTS_LOADED:"},{"line_number":348,"context_line":"                # swift.conf exists, so use what\u0027s defined there (or swift"},{"line_number":349,"context_line":"                # defaults) This normally happens when the test is running"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAW3%2F%2F12U%3D","line":346,"updated":"2014-04-10 01:43:11.000000000","message":"This is incorrect. If someone has test.conf, which contains no constraints, but only auth_host, then your code runs in-process regardless of the SWIFT_TEST_IN_PROCESS setting.\n\nThe correct code would be like:\n\n   ............\n    config.update(get_config(\u0027func_test\u0027))\n    if use_in_process is None:\n        if \u0027auth_host\u0027 in config:\n            in_process \u003d False\n        else:\n            in_process \u003d True\n    else:\n         in_process \u003d False\n    for k in constraints.DEFAULT_CONSTRAINTS:\n         if k in config:\n             config[k] \u003d int(config[k])\n             # XXX don\u0027t screw with in_process based on constraints\n         elif constraints.SWIFT_CONSTRAINTS_LOADED:\n         ...........","commit_id":"2a2835e4f94ddbdd39cbb8c7edfb700ce0923da7"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"8bea2df10521f02100ebb1e132915e32110fcab9","unresolved":false,"context_lines":[{"line_number":343,"context_line":"            if k in config:"},{"line_number":344,"context_line":"                # prefer what\u0027s in test.conf"},{"line_number":345,"context_line":"                config[k] \u003d int(config[k])"},{"line_number":346,"context_line":"                in_process \u003d False"},{"line_number":347,"context_line":"            elif constraints.SWIFT_CONSTRAINTS_LOADED:"},{"line_number":348,"context_line":"                # swift.conf exists, so use what\u0027s defined there (or swift"},{"line_number":349,"context_line":"                # defaults) This normally happens when the test is running"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAW3%2F%2F1sU%3D","line":346,"in_reply_to":"AAAAW3%2F%2F12U%3D","updated":"2014-04-10 02:34:32.000000000","message":"If SWIFT_TEST_IN_PROCESS is not present, then use_in_process will be None, and in that case we\u0027ll default to using the in-process setup if we can\u0027t find any constraints (see below, though).\n\nIf SWIFT_TEST_IN_PROCESS is set to \"false\" (see line 338), then we explicitly won\u0027t be using the in-process mode of operation, and if it is set to \"true\", then we will use the in-process mode of operation (see line 328).\n\nDoes that match your understanding?\n\nThe old code use to Skip a number of tests if there were no constraints defined (load_constraint raises SkipTest if the constraint is not an integer): that is to say, if there were no constraints listed in test.conf or if there was no /etc/swift.conf present (constraints.SWIFT_CONSTRAINTS_LOADED).\n\nInstead of skipping any tests, this code just runs all the in-process functional tests instead.\n\nWithout any notion of constraints, it seems silly to run any tests.\n\nHowever, with the recent /info update by @Allistair Coles to always have all of the constraints listed by default, the functional tests could be changed to skip all this entirely, and just hit up whatever server is configured for the storage URL and skip this. Then in-process would be used when we can\u0027t load the necessary values to construct the auth URL.\n\nI have opted not to go that root because it seemed that this type of setup was a corner case and having in-process functionality in master would help with all the work.  But if you feel strongly, I\u0027ll start using /info instead and rework this.","commit_id":"2a2835e4f94ddbdd39cbb8c7edfb700ce0923da7"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"3ffd1e95fc6f29836e9f76ee69fd943b0e80ac2f","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from test import get_config"},{"line_number":34,"context_line":"from test.functional.swift_test_client import Connection, ResponseError"},{"line_number":35,"context_line":"# This is has the side effect of mocking out the xattr module so that unit"},{"line_number":36,"context_line":"# tests (and in this case, when in-process functional tests are called for)"},{"line_number":37,"context_line":"# can run on file systems that don\u0027t support extended attributes."},{"line_number":38,"context_line":"from test.unit import debug_logger, FakeMemcache"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAW3%2F%2Fm5I%3D","line":35,"updated":"2014-04-11 19:32:31.000000000","message":"This is??","commit_id":"9db054cbb5868eb83b8e4a1a076fef39a7fdf87b"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"fbf507e48a16a56109d4291a6e76ef2f9c6f889a","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from test import get_config"},{"line_number":34,"context_line":"from test.functional.swift_test_client import Connection, ResponseError"},{"line_number":35,"context_line":"# This is has the side effect of mocking out the xattr module so that unit"},{"line_number":36,"context_line":"# tests (and in this case, when in-process functional tests are called for)"},{"line_number":37,"context_line":"# can run on file systems that don\u0027t support extended attributes."},{"line_number":38,"context_line":"from test.unit import debug_logger, FakeMemcache"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAW3%2F%2FYy4%3D","line":35,"in_reply_to":"AAAAW3%2F%2Fm5I%3D","updated":"2014-04-14 23:38:36.000000000","message":"Done","commit_id":"9db054cbb5868eb83b8e4a1a076fef39a7fdf87b"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"ad91cffcb2a8de0f814ddbbc825e34bf754dac11","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"def in_process_setup(the_object_server\u003dobject_server):"},{"line_number":118,"context_line":"    eventlet.hubs.use_hub(utils.get_hub())"},{"line_number":119,"context_line":"    eventlet.patcher.monkey_patch(all\u003dFalse, socket\u003dTrue)"},{"line_number":120,"context_line":"    eventlet.debug.hub_exceptions(True)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAW3%2F%2Fm%2Bw%3D","line":118,"updated":"2014-04-11 19:10:59.000000000","message":"Isn\u0027t this block of eventlet setup redundant with line 57? I thought you said it was, but now it\u0027s not removed. What am I missing?","commit_id":"9db054cbb5868eb83b8e4a1a076fef39a7fdf87b"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"fbf507e48a16a56109d4291a6e76ef2f9c6f889a","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"def in_process_setup(the_object_server\u003dobject_server):"},{"line_number":118,"context_line":"    eventlet.hubs.use_hub(utils.get_hub())"},{"line_number":119,"context_line":"    eventlet.patcher.monkey_patch(all\u003dFalse, socket\u003dTrue)"},{"line_number":120,"context_line":"    eventlet.debug.hub_exceptions(True)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAW3%2F%2FYyk%3D","line":118,"in_reply_to":"AAAAW3%2F%2Fm%2Bw%3D","updated":"2014-04-14 23:38:36.000000000","message":"You are not missing anything, that was from a broken merge along the way. Sorry. Removed.\n\nDone.","commit_id":"9db054cbb5868eb83b8e4a1a076fef39a7fdf87b"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"3ffd1e95fc6f29836e9f76ee69fd943b0e80ac2f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    global _testdir"},{"line_number":125,"context_line":"    _testdir \u003d os.path.join(mkdtemp(), \u0027tmp_functional\u0027)"},{"line_number":126,"context_line":"    utils.mkdirs(_testdir)"},{"line_number":127,"context_line":"    rmtree(_testdir)"},{"line_number":128,"context_line":"    utils.mkdirs(os.path.join(_testdir, \u0027sda1\u0027))"},{"line_number":129,"context_line":"    utils.mkdirs(os.path.join(_testdir, \u0027sda1\u0027, \u0027tmp\u0027))"},{"line_number":130,"context_line":"    utils.mkdirs(os.path.join(_testdir, \u0027sdb1\u0027))"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAW3%2F%2Fm4M%3D","line":127,"updated":"2014-04-11 19:32:31.000000000","message":"why call mkdirs and then rmtree immediately after?","commit_id":"9db054cbb5868eb83b8e4a1a076fef39a7fdf87b"},{"author":{"_account_id":6198,"name":"Peter Portante","email":"peter.a.portante@gmail.com","username":"peter-a-portante"},"change_message_id":"fbf507e48a16a56109d4291a6e76ef2f9c6f889a","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    global _testdir"},{"line_number":125,"context_line":"    _testdir \u003d os.path.join(mkdtemp(), \u0027tmp_functional\u0027)"},{"line_number":126,"context_line":"    utils.mkdirs(_testdir)"},{"line_number":127,"context_line":"    rmtree(_testdir)"},{"line_number":128,"context_line":"    utils.mkdirs(os.path.join(_testdir, \u0027sda1\u0027))"},{"line_number":129,"context_line":"    utils.mkdirs(os.path.join(_testdir, \u0027sda1\u0027, \u0027tmp\u0027))"},{"line_number":130,"context_line":"    utils.mkdirs(os.path.join(_testdir, \u0027sdb1\u0027))"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAW3%2F%2FYyU%3D","line":127,"in_reply_to":"AAAAW3%2F%2Fm4M%3D","updated":"2014-04-14 23:38:36.000000000","message":"Good question. This code was copied from test/unit/proxy/test_server.py, and I don\u0027t know why that code does it.  I am reluctant to remove it at this point, as unless folks want me to, I\u0027d rather not investigate the reasons.","commit_id":"9db054cbb5868eb83b8e4a1a076fef39a7fdf87b"}],"test/functional/swift_testing.py":[{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"56e6882604cfb06160c6818c0c38d13595d6b1c2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    global swift_test_tenant"},{"line_number":45,"context_line":"    global swift_test_perm"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    swift_test_auth_version \u003d str(conf.get(\u0027auth_version\u0027, \u00271\u0027))"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    swift_test_auth \u003d \u0027http\u0027"},{"line_number":50,"context_line":"    if conf.get(\u0027auth_ssl\u0027, \u0027no\u0027).lower() in (\u0027yes\u0027, \u0027true\u0027, \u0027on\u0027, \u00271\u0027):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F128%3D","line":47,"updated":"2014-02-10 13:39:00.000000000","message":"should it be :\n\nswift_test_auth_version \u003d str(conf.get(\u0027auth_version\u0027, swift_test_auth_version))\n\ninstead?","commit_id":"7d3c6520440cd449ae8fd0725acb9bd2e4f39d6e"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"56e6882604cfb06160c6818c0c38d13595d6b1c2","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    if conf:"},{"line_number":108,"context_line":"        print \u003e\u003esys.stderr, \u0027SKIPPING FUNCTIONAL TESTS DUE TO NO CONFIG\u0027"},{"line_number":109,"context_line":"    else:"},{"line_number":110,"context_line":"        # FIXME: setup defaults for in-process"},{"line_number":111,"context_line":"        hack_in_process \u003d True"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"skip2 \u003d not all([not skip, swift_test_user[1], swift_test_key[1]])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F12Y%3D","line":110,"updated":"2014-02-10 13:39:00.000000000","message":"I am not sure I understand this FIXME","commit_id":"7d3c6520440cd449ae8fd0725acb9bd2e4f39d6e"}]}
