)]}'
{".testr.conf":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"bbb2e685ad06359a8482b93933274ae8b11a1307","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"#test_command\u003d${PYTHON:-python} -m subunit.run discover octavia $LISTOPT $IDOPTION"},{"line_number":3,"context_line":"test_command\u003dOS_STDOUT_CAPTURE\u003d1 OS_STDERR_CAPTURE\u003d1 OS_LOG_CAPTURE\u003d1 ${PYTHON:-python} -m subunit.run discover -t ./ ${OS_TEST_PATH:-./octavia/tests/unit} $LISTOPT $IDOPTION"},{"line_number":4,"context_line":"test_id_option\u003d--load-list $IDFILE"},{"line_number":5,"context_line":"test_list_option\u003d--list"}],"source_content_type":"text/plain","patch_set":66,"id":"5aef4532_47c85d74","line":3,"updated":"2016-03-10 10:10:30.000000000","message":"Won\u0027t this skip all the functional tests for the usual py27 and py34 runs?","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"158d0edc6e53eb41b3cb6ed2f2855bb92f08c9e2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"#test_command\u003d${PYTHON:-python} -m subunit.run discover octavia $LISTOPT $IDOPTION"},{"line_number":3,"context_line":"test_command\u003dOS_STDOUT_CAPTURE\u003d1 OS_STDERR_CAPTURE\u003d1 OS_LOG_CAPTURE\u003d1 ${PYTHON:-python} -m subunit.run discover -t ./ ${OS_TEST_PATH:-./octavia/tests/unit} $LISTOPT $IDOPTION"},{"line_number":4,"context_line":"test_id_option\u003d--load-list $IDFILE"},{"line_number":5,"context_line":"test_list_option\u003d--list"}],"source_content_type":"text/plain","patch_set":66,"id":"1af94dfe_efcd605e","line":3,"in_reply_to":"1af94dfe_d9c67248","updated":"2016-03-17 01:27:15.000000000","message":"Is it not possible to tell tempest to ignore the \u0027functional\u0027 tests directory? I would think that the only thing we want tempest paying any attention to is the \u0027tempest\u0027 testing directory (after all-- for future gate jobs, any tempest runs should not re-run unit and functional tests as we have other gate jobs covering those).","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"08be5b6b2e964bfd76c2442d21335419ff576126","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"#test_command\u003d${PYTHON:-python} -m subunit.run discover octavia $LISTOPT $IDOPTION"},{"line_number":3,"context_line":"test_command\u003dOS_STDOUT_CAPTURE\u003d1 OS_STDERR_CAPTURE\u003d1 OS_LOG_CAPTURE\u003d1 ${PYTHON:-python} -m subunit.run discover -t ./ ${OS_TEST_PATH:-./octavia/tests/unit} $LISTOPT $IDOPTION"},{"line_number":4,"context_line":"test_id_option\u003d--load-list $IDFILE"},{"line_number":5,"context_line":"test_list_option\u003d--list"}],"source_content_type":"text/plain","patch_set":66,"id":"5aef4532_598ad464","line":3,"in_reply_to":"5aef4532_47c85d74","updated":"2016-03-11 00:47:06.000000000","message":"So the functional tests in octavia are not tempest style functional tests.\n\nThey\u0027re unit tests, but the devs put it in that functional directory.\n\nThe problem is that a unit test error will occur when running all the tests under /tests as it will encompass functional and unit and tempest.\n\nSo some background on why I made the change in .testr.conf to point to \u0027unit\u0027:\n\nIn tempest there is a config param called conf.DEBUG  \n\nThat parameter will clobber the conf.DEBUG that is set in octavia\nthus causing some dev unit tests to fail as the debug will be set as an object (tempest) vs. boolean (octavia).\n\nTo fix this, I specified .testr.conf to point to the \u0027unit\u0027 directory only, thereby passing the tempest directory for gate tests.\n\nThis avoids the CONF.debug conflict.\n\nHowever, this also causes the tests inside of \u0027functional\u0027 to be omitted as well.\n\nWe need the tests in \u0027functional\u0027 to be run as well as in \u0027unit\u0027. \n\n\nI\u0027m thinking we can do any of the following:\n\n1. find a way for .testr.conf to run from both unit and functional (some testr research?  might not be possible...)\n\n2. fix the CONF.debug conflict between tempest and octavia by moving the octavia CONF.debug flag into a specific group (maybe not a good idea)\n\n3. create another gate job for functional tests (similar to how neutron-lbaas does it)\n\n4.  move the functional directory into unit directory (not sure if this is correct)\n\n5.  some other way?","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"bd36f63424412e6b0efa19e46916c13b830a02db","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"#test_command\u003d${PYTHON:-python} -m subunit.run discover octavia $LISTOPT $IDOPTION"},{"line_number":3,"context_line":"test_command\u003dOS_STDOUT_CAPTURE\u003d1 OS_STDERR_CAPTURE\u003d1 OS_LOG_CAPTURE\u003d1 ${PYTHON:-python} -m subunit.run discover -t ./ ${OS_TEST_PATH:-./octavia/tests/unit} $LISTOPT $IDOPTION"},{"line_number":4,"context_line":"test_id_option\u003d--load-list $IDFILE"},{"line_number":5,"context_line":"test_list_option\u003d--list"}],"source_content_type":"text/plain","patch_set":66,"id":"1af94dfe_d9c67248","line":3,"in_reply_to":"5aef4532_598ad464","updated":"2016-03-17 00:06:06.000000000","message":"Okay. Here is what we can do to have functional tests running (with both py27/py34). This can be setup in tox.ini and create another hooks script (called post-gate_hook) to run two separate jobs at gate for functional (py27) and functional (py34) tests. So, we can come back at the separate commit to set them up and tweaks in tox.ini and include post_gate_hooks script.","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"}],"octavia/tests/tempest/etc/tempest.conf":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"19698ebfee17c531c67491fdd238f9434ddc652d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"debug \u003d True"},{"line_number":3,"context_line":"log_file \u003d tempest.log"},{"line_number":4,"context_line":"use_stderr \u003d False"}],"source_content_type":"text/plain","patch_set":24,"id":"9a68dd71_7b16dea8","line":1,"range":{"start_line":1,"start_character":8,"end_line":1,"end_character":9},"updated":"2016-01-26 20:44:43.000000000","message":"Per IRC conversation:  Let\u0027s change this file to have a comment at the top pointing the user at where they can find the official tempest.conf template / example in the tempest repository, and eliminated most of the commented out stuff in here. (But I would still leave explanatory comments around the stuff that isn\u0027t commented out, as appropriate.)","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"28c4d78f9b413d6a225ee96c0a638b31ab4d1816","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":"debug \u003d True"},{"line_number":3,"context_line":"log_file \u003d tempest.log"},{"line_number":4,"context_line":"use_stderr \u003d False"}],"source_content_type":"text/plain","patch_set":24,"id":"9a68dd71_1625395b","line":1,"range":{"start_line":1,"start_character":8,"end_line":1,"end_character":9},"in_reply_to":"9a68dd71_7b16dea8","updated":"2016-01-26 21:03:40.000000000","message":"Done","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"d4831dd920d6b19fbe6162ee702f6dbc73db6d95","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# From tempest.config"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# For more configuration settings see:"},{"line_number":4,"context_line":"# http://docs.openstack.org/developer/tempest/sampleconf.html"}],"source_content_type":"text/plain","patch_set":28,"id":"3a57f1b5_f683a5ca","line":1,"updated":"2016-02-10 22:10:24.000000000","message":"This file can be removed, so we can maintain single source of file: /opt/stack/tempest/etc/tempest.conf as consistency?","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"c200b76b913893799e6a06969470b615d6ee7e8c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# From tempest.config"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# For more configuration settings see:"},{"line_number":4,"context_line":"# http://docs.openstack.org/developer/tempest/sampleconf.html"}],"source_content_type":"text/plain","patch_set":28,"id":"dae33548_286ad480","line":1,"in_reply_to":"3a57f1b5_f683a5ca","updated":"2016-02-15 22:06:57.000000000","message":"I\u0027ve changed the content to be more informative.","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"dca901f8f5711b249147d06d3d45db2d970fd10e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# If running tests locally on Devstack,"},{"line_number":2,"context_line":"# please copy the settings located at: /opt/stack/tempest/etc/tempest.conf"},{"line_number":3,"context_line":"# to: /etc/tempest/tempst.conf"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# For more Tempest configuration settings see:"},{"line_number":6,"context_line":"# http://docs.openstack.org/developer/tempest/sampleconf.html"}],"source_content_type":"text/plain","patch_set":37,"id":"dae33548_e2728d48","line":3,"updated":"2016-02-16 22:49:45.000000000","message":"nit: tempest.conf\n\nIf we want to run the tests locally, just exporting the below variable should work (it is defined in tox.ini) \n\nTEMPEST_CONFIG_DIR\u003d/opt/stack/tempest/etc\n\nthan copying the whole file to /etc/tempest/tempest.conf\n\nIf I were you, I would remove this file though and directory to avoid ambiguity","commit_id":"a42d611b6f042f1f972e619a27dd1f31d4920a5d"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"1c4122cbdf64a7a7bdd5e046185c42e8ba6ba0ba","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# If running tests locally on Devstack,"},{"line_number":2,"context_line":"# please copy the settings located at: /opt/stack/tempest/etc/tempest.conf"},{"line_number":3,"context_line":"# to: /etc/tempest/tempst.conf"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# For more Tempest configuration settings see:"},{"line_number":6,"context_line":"# http://docs.openstack.org/developer/tempest/sampleconf.html"}],"source_content_type":"text/plain","patch_set":37,"id":"dae33548_c0e821e5","line":3,"in_reply_to":"dae33548_e2728d48","updated":"2016-02-16 23:40:32.000000000","message":"Yep - after some testing, it appears that the config file does get generated in that directory thus I agree this is not needed.","commit_id":"a42d611b6f042f1f972e619a27dd1f31d4920a5d"}],"octavia/tests/tempest/v1/api/base.py":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"d7b18e30dca919c9233bbe85d253d13855e87f0a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            cls._try_delete_resource("},{"line_number":74,"context_line":"                cls.load_balancers_client.delete_load_balancer,"},{"line_number":75,"context_line":"                lb.get(\u0027amphora\u0027).get(\u0027id\u0027))"},{"line_number":76,"context_line":"            # Remove listeners and their children"},{"line_number":77,"context_line":"            for listener in lb.get(\u0027listeners\u0027):"},{"line_number":78,"context_line":"                for pool in listener.get(\u0027pools\u0027):"},{"line_number":79,"context_line":"                    hm \u003d pool.get(\u0027healthmonitor\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a68dd71_f1d98f84","line":76,"range":{"start_line":76,"start_character":14,"end_line":76,"end_character":20},"updated":"2016-01-26 23:21:57.000000000","message":"Wouldn\u0027t destroying the load balancer cascade to all its various children? Or can we not make that assumption?","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"84b57cee3d700d5a83b8436416f8393a7ebb44e2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            cls._try_delete_resource("},{"line_number":74,"context_line":"                cls.load_balancers_client.delete_load_balancer,"},{"line_number":75,"context_line":"                lb.get(\u0027amphora\u0027).get(\u0027id\u0027))"},{"line_number":76,"context_line":"            # Remove listeners and their children"},{"line_number":77,"context_line":"            for listener in lb.get(\u0027listeners\u0027):"},{"line_number":78,"context_line":"                for pool in listener.get(\u0027pools\u0027):"},{"line_number":79,"context_line":"                    hm \u003d pool.get(\u0027healthmonitor\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_04274e13","line":76,"range":{"start_line":76,"start_character":14,"end_line":76,"end_character":20},"in_reply_to":"9a68dd71_f1d98f84","updated":"2016-01-28 01:36:06.000000000","message":"As it stands now, a cascading delete is not possible.  Hopefully, we can have something like that in the future.","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"d7b18e30dca919c9233bbe85d253d13855e87f0a","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                lb.get(\u0027amphora\u0027).get(\u0027id\u0027))"},{"line_number":76,"context_line":"            # Remove listeners and their children"},{"line_number":77,"context_line":"            for listener in lb.get(\u0027listeners\u0027):"},{"line_number":78,"context_line":"                for pool in listener.get(\u0027pools\u0027):"},{"line_number":79,"context_line":"                    hm \u003d pool.get(\u0027healthmonitor\u0027)"},{"line_number":80,"context_line":"                    if hm:"},{"line_number":81,"context_line":"                        cls._try_delete_resource("}],"source_content_type":"text/x-python","patch_set":24,"id":"9a68dd71_110ea3e5","line":78,"range":{"start_line":78,"start_character":40,"end_line":78,"end_character":42},"updated":"2016-01-26 23:21:57.000000000","message":"Assuming you can\u0027t just kill the top-level load balancer... with shared pools support, if you just delete all the load balancers first, the pools and all their children will remain as logical objects in the database (and not on any amphorae). This means that cleanup of them won\u0027t involve any flows which touch the amphorae, also meaning this cleanup should run faster.","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"84b57cee3d700d5a83b8436416f8393a7ebb44e2","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                lb.get(\u0027amphora\u0027).get(\u0027id\u0027))"},{"line_number":76,"context_line":"            # Remove listeners and their children"},{"line_number":77,"context_line":"            for listener in lb.get(\u0027listeners\u0027):"},{"line_number":78,"context_line":"                for pool in listener.get(\u0027pools\u0027):"},{"line_number":79,"context_line":"                    hm \u003d pool.get(\u0027healthmonitor\u0027)"},{"line_number":80,"context_line":"                    if hm:"},{"line_number":81,"context_line":"                        cls._try_delete_resource("}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_5f0e7335","line":78,"range":{"start_line":78,"start_character":40,"end_line":78,"end_character":42},"in_reply_to":"9a68dd71_110ea3e5","updated":"2016-01-28 01:36:06.000000000","message":"so, it appears that a pool will require a lb_id so it\u0027s not possible to disassociate the pool from an lb.  I can see some negative test cases though where we could test whether that is true or not.","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"d4831dd920d6b19fbe6162ee702f6dbc73db6d95","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        credentials \u003d cls.isolated_creds.get_primary_creds()"},{"line_number":48,"context_line":"        mgr \u003d tempest_clients.Manager(credentials\u003dcredentials)"},{"line_number":49,"context_line":"        auth_provider \u003d mgr.get_auth_provider(credentials)"},{"line_number":50,"context_line":"        client_args \u003d [auth_provider, \u0027octavia\u0027, \u0027regionOne\u0027]"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        cls.load_balancers_client \u003d ("},{"line_number":53,"context_line":"            load_balancers_client.LoadBalancersClientJSON(*client_args)"}],"source_content_type":"text/x-python","patch_set":28,"id":"3a57f1b5_5d089491","line":50,"updated":"2016-02-10 22:10:24.000000000","message":"Can we pick those values from config rather than defined in a list?\n\nFor region, we can use conf.network.region or conf.identity.region as defined here: https://github.com/openstack/tempest/blob/master/tempest/config.py\n\nFor octavia, I think we can set like this: service \u003d config.network.catalog_type\n\nhttps://review.openstack.org/#/c/273262/4/neutron_lbaas/tests/tempest/v2/scenario/base.py","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"c200b76b913893799e6a06969470b615d6ee7e8c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        credentials \u003d cls.isolated_creds.get_primary_creds()"},{"line_number":48,"context_line":"        mgr \u003d tempest_clients.Manager(credentials\u003dcredentials)"},{"line_number":49,"context_line":"        auth_provider \u003d mgr.get_auth_provider(credentials)"},{"line_number":50,"context_line":"        client_args \u003d [auth_provider, \u0027octavia\u0027, \u0027regionOne\u0027]"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        cls.load_balancers_client \u003d ("},{"line_number":53,"context_line":"            load_balancers_client.LoadBalancersClientJSON(*client_args)"}],"source_content_type":"text/x-python","patch_set":28,"id":"dae33548_a8b544ce","line":50,"in_reply_to":"3a57f1b5_5d089491","updated":"2016-02-15 22:06:57.000000000","message":"I\u0027ve made the change for region.  But for service, Tempest isn\u0027t generating an octavia section yet.  I\u0027ll make a change once that\u0027s configurable.","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"}],"octavia/tests/tempest/v1/clients/health_monitors_client.py":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"d7b18e30dca919c9233bbe85d253d13855e87f0a","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def list_health_monitors(self, params\u003dNone):"},{"line_number":25,"context_line":"        \"\"\"List all health monitors.\"\"\""},{"line_number":26,"context_line":"        url \u003d \u0027v1/healthmonitors\u0027"},{"line_number":27,"context_line":"        if params:"},{"line_number":28,"context_line":"            url \u003d \"{0}?{1}\".format(url, urllib.urlencode(params))"},{"line_number":29,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a68dd71_db93454e","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":32},"updated":"2016-01-26 23:21:57.000000000","message":"I\u0027m guessing these URLs were copied from Neutron LBaaS?  Because Octavia doesn\u0027t use the same URLs, eh. (Octavia uses a much more nested URL format.)","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"84b57cee3d700d5a83b8436416f8393a7ebb44e2","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def list_health_monitors(self, params\u003dNone):"},{"line_number":25,"context_line":"        \"\"\"List all health monitors.\"\"\""},{"line_number":26,"context_line":"        url \u003d \u0027v1/healthmonitors\u0027"},{"line_number":27,"context_line":"        if params:"},{"line_number":28,"context_line":"            url \u003d \"{0}?{1}\".format(url, urllib.urlencode(params))"},{"line_number":29,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_7fd00f54","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":32},"in_reply_to":"9a68dd71_db93454e","updated":"2016-01-28 01:36:06.000000000","message":"Good catch,\nnote to self: http://docs.openstack.org/developer/octavia/api/octaviaapi.html\n\nAlso, it looks like the list call is not needed for health monitors as only one health monitor can ever be associated to one pool.","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"f721cabcf111e9d71d093ae5ffefa506f4f5c090","unresolved":false,"context_lines":[{"line_number":22,"context_line":"class HealthMonitorsClientJSON(service_client.ServiceClient):"},{"line_number":23,"context_line":"    \"\"\"Tests Health Monitors API.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    _HEALTH_MONITORS_URL \u003d (\"v1/loadbalancers/{lb_id}/listeners/\""},{"line_number":26,"context_line":"                            \"{listener_id/pools/{pool_id}/health_monitor\")"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def get_health_monitor(self, lb_id, listener_id, pool_id, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a5de9d1_23dd59e0","line":25,"range":{"start_line":25,"start_character":29,"end_line":25,"end_character":31},"updated":"2016-01-29 02:22:09.000000000","message":"I guess this depends somewhat on which patch we expect to land first (this one or the shared pools patch), but I\u0027d really rather see us doing tempest tests against non-deprecated paths.","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"}],"octavia/tests/tempest/v1/clients/listeners_client.py":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"d7b18e30dca919c9233bbe85d253d13855e87f0a","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def list_listeners(self, params\u003dNone):"},{"line_number":25,"context_line":"        \"\"\"List all listeners.\"\"\""},{"line_number":26,"context_line":"        url \u003d \u0027v1/listeners\u0027"},{"line_number":27,"context_line":"        if params:"},{"line_number":28,"context_line":"            url \u003d \u0027{0}?{1}\u0027.format(url, urllib.urlencode(params))"},{"line_number":29,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a68dd71_1bc1dd2e","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":27},"updated":"2016-01-26 23:21:57.000000000","message":"Will actually end up being:  v1/loadbalancers/\u003cid\u003e/listeners","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"84b57cee3d700d5a83b8436416f8393a7ebb44e2","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def list_listeners(self, params\u003dNone):"},{"line_number":25,"context_line":"        \"\"\"List all listeners.\"\"\""},{"line_number":26,"context_line":"        url \u003d \u0027v1/listeners\u0027"},{"line_number":27,"context_line":"        if params:"},{"line_number":28,"context_line":"            url \u003d \u0027{0}?{1}\u0027.format(url, urllib.urlencode(params))"},{"line_number":29,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_05c2e585","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":27},"in_reply_to":"9a68dd71_1bc1dd2e","updated":"2016-01-28 01:36:06.000000000","message":"Done","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"84b57cee3d700d5a83b8436416f8393a7ebb44e2","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def list_listeners(self, params\u003dNone):"},{"line_number":25,"context_line":"        \"\"\"List all listeners.\"\"\""},{"line_number":26,"context_line":"        url \u003d \u0027v1/listeners\u0027"},{"line_number":27,"context_line":"        if params:"},{"line_number":28,"context_line":"            url \u003d \u0027{0}?{1}\u0027.format(url, urllib.urlencode(params))"},{"line_number":29,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_87aa5d18","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":27},"in_reply_to":"9a68dd71_1bc1dd2e","updated":"2016-01-28 01:36:06.000000000","message":"Done","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"}],"octavia/tests/tempest/v1/clients/members_client.py":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"d7b18e30dca919c9233bbe85d253d13855e87f0a","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def list_members(self, pool_id, params\u003dNone):"},{"line_number":25,"context_line":"        \"\"\"List all Members.\"\"\""},{"line_number":26,"context_line":"        url \u003d \u0027v1/pools/{0}/members\u0027.format(pool_id)"},{"line_number":27,"context_line":"        if params:"},{"line_number":28,"context_line":"            url \u003d \"{0}?{1}\".format(url, urllib.urlencode(params))"},{"line_number":29,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a68dd71_9beb8db0","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":23},"updated":"2016-01-26 23:21:57.000000000","message":"Will actually end up being v1/loadbalancers/\u003cid\u003e/pools/\u003cid\u003e/members","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"84b57cee3d700d5a83b8436416f8393a7ebb44e2","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def list_members(self, pool_id, params\u003dNone):"},{"line_number":25,"context_line":"        \"\"\"List all Members.\"\"\""},{"line_number":26,"context_line":"        url \u003d \u0027v1/pools/{0}/members\u0027.format(pool_id)"},{"line_number":27,"context_line":"        if params:"},{"line_number":28,"context_line":"            url \u003d \"{0}?{1}\".format(url, urllib.urlencode(params))"},{"line_number":29,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_e0969793","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":23},"in_reply_to":"9a68dd71_9beb8db0","updated":"2016-01-28 01:36:06.000000000","message":"Done","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"f721cabcf111e9d71d093ae5ffefa506f4f5c090","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    \"\"\"Tests Members API.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    _MEMBERS_URL \u003d (\"v1/loadbalancers/{lb_id}/listeners/{listener_id}/\""},{"line_number":25,"context_line":"                    \"pools/{pool_id}/members\")"},{"line_number":26,"context_line":"    _MEMBER_URL \u003d \"{base_url}/{member_id}\".format(base_url\u003d_MEMBERS_URL)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def list_members(self, lb_id, listener_id, pool_id, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a5de9d1_e3fd013b","line":25,"updated":"2016-01-29 02:22:09.000000000","message":"Same note about deprecated paths here.","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"}],"octavia/tests/tempest/v1/clients/pools_client.py":[{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"d7b18e30dca919c9233bbe85d253d13855e87f0a","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def list_pools(self, params\u003dNone):"},{"line_number":25,"context_line":"        \"\"\"List all pools.\"\"\""},{"line_number":26,"context_line":"        url \u003d \u0027v1/pools\u0027"},{"line_number":27,"context_line":"        if params:"},{"line_number":28,"context_line":"            url \u003d \u0027{0}?{1}\u0027.format(url, urllib.urlencode(params))"},{"line_number":29,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a68dd71_fbdac916","line":26,"range":{"start_line":26,"start_character":15,"end_line":26,"end_character":17},"updated":"2016-01-26 23:21:57.000000000","message":"will actually end up being:  v1/loadbalancers/\u003cid\u003e/pools","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"84b57cee3d700d5a83b8436416f8393a7ebb44e2","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def list_pools(self, params\u003dNone):"},{"line_number":25,"context_line":"        \"\"\"List all pools.\"\"\""},{"line_number":26,"context_line":"        url \u003d \u0027v1/pools\u0027"},{"line_number":27,"context_line":"        if params:"},{"line_number":28,"context_line":"            url \u003d \u0027{0}?{1}\u0027.format(url, urllib.urlencode(params))"},{"line_number":29,"context_line":"        resp, body \u003d self.get(url)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_60e9471a","line":26,"range":{"start_line":26,"start_character":15,"end_line":26,"end_character":17},"in_reply_to":"9a68dd71_fbdac916","updated":"2016-01-28 01:36:06.000000000","message":"Done","commit_id":"a966334b01461eb37bddca9bad9eb2739ded5444"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"f721cabcf111e9d71d093ae5ffefa506f4f5c090","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class PoolsClientJSON(service_client.ServiceClient):"},{"line_number":22,"context_line":"    \"\"\"Test Pools API.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    _POOLS_URL \u003d \"v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools\""},{"line_number":25,"context_line":"    _POOL_URL \u003d \"{base_url}/{pool_id}\".format(base_url\u003d_POOLS_URL)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def list_pools(self, lb_id, listener_id, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a5de9d1_238b19c5","line":24,"updated":"2016-01-29 02:22:09.000000000","message":"Same note about deprecated paths here.","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"}],"octavia/tests/tempest/v1/scenario/base.py":[{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"dca901f8f5711b249147d06d3d45db2d970fd10e","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            # Start netcat"},{"line_number":254,"context_line":"            start_server \u003d (\u0027while true; do \u0027"},{"line_number":255,"context_line":"                            \u0027sudo nc -ll -p %(port)s -e sh /tmp/%(script)s; \u0027"},{"line_number":256,"context_line":"                            \u0027done \u003e /dev/null \u0026\u0027)"},{"line_number":257,"context_line":"            cmd \u003d start_server % {\u0027port\u0027: self.port1,"},{"line_number":258,"context_line":"                                  \u0027script\u0027: \u0027script1\u0027}"},{"line_number":259,"context_line":"            ssh_client.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":37,"id":"dae33548_421379b8","line":256,"updated":"2016-02-16 22:49:45.000000000","message":"This command works well with cirros 0.3.4 image. However, this test will fail when we use cirros 0.3.3 as it doesnt support persistent listening. Its better to leave persistent listening option so that it can be run on both cirros 0.3.3/0.3.4 images.\n\nPlease see: https://github.com/openstack/neutron-lbaas/blob/master/neutron_lbaas/tests/tempest/v2/scenario/base.py#L250","commit_id":"a42d611b6f042f1f972e619a27dd1f31d4920a5d"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"1c4122cbdf64a7a7bdd5e046185c42e8ba6ba0ba","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            # Start netcat"},{"line_number":254,"context_line":"            start_server \u003d (\u0027while true; do \u0027"},{"line_number":255,"context_line":"                            \u0027sudo nc -ll -p %(port)s -e sh /tmp/%(script)s; \u0027"},{"line_number":256,"context_line":"                            \u0027done \u003e /dev/null \u0026\u0027)"},{"line_number":257,"context_line":"            cmd \u003d start_server % {\u0027port\u0027: self.port1,"},{"line_number":258,"context_line":"                                  \u0027script\u0027: \u0027script1\u0027}"},{"line_number":259,"context_line":"            ssh_client.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":37,"id":"dae33548_20e10dd1","line":256,"in_reply_to":"dae33548_421379b8","updated":"2016-02-16 23:40:32.000000000","message":"Done","commit_id":"a42d611b6f042f1f972e619a27dd1f31d4920a5d"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"b9753a54dc1829f2ef50218918651442cadfe865","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                    self.copy_file_to_host(script.name,"},{"line_number":251,"context_line":"                                               \"/tmp/script1\","},{"line_number":252,"context_line":"                                               ip,"},{"line_number":253,"context_line":"                                               username, key.name)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            # Start netcat"},{"line_number":256,"context_line":"            start_server \u003d (\u0027while true; do \u0027"}],"source_content_type":"text/x-python","patch_set":52,"id":"bae84128_48aa2c1a","line":253,"updated":"2016-02-24 01:20:39.000000000","message":"TypeError: copy_file_to_host() takes exactly 5 arguments (6 given)","commit_id":"d8a7605dff2b31f2f58e16422a34fede5f0df530"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"bbb2e685ad06359a8482b93933274ae8b11a1307","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        # Check for floating ip status before you check load-balancer"},{"line_number":426,"context_line":"        self.check_floating_ip_status(floating_ip, \u0027ACTIVE\u0027)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def _create_load_balancer(self, ip_version\u003d4, persistence_type\u003dNone):"},{"line_number":429,"context_line":"        self.create_lb_kwargs \u003d {\u0027vip\u0027: {\u0027subnet_id\u0027: self.subnet[\u0027id\u0027]}}"},{"line_number":430,"context_line":"        self.load_balancer \u003d self.load_balancers_client.create_load_balancer("},{"line_number":431,"context_line":"            **self.create_lb_kwargs)"}],"source_content_type":"text/x-python","patch_set":66,"id":"5aef4532_6281078f","line":428,"range":{"start_line":428,"start_character":8,"end_line":428,"end_character":29},"updated":"2016-03-10 10:10:30.000000000","message":"You\u0027ve packed a ton of things into this one method, presumably for the sake of making your sample scenario test shorter. However, this makes this method much less useful for re-use in other tests.\n\nWhy not make this test just create the load balancer, and then if someone wants to add listeners to it in the scenario, they can do so there? (Same goes for most of the methods in here--  having a long list of calls in the scenario tests is not a bad thing, in my mind: How else are we going to try different permutations of work flows if we\u0027re stuck using large, rigid methods like this?)","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"08be5b6b2e964bfd76c2442d21335419ff576126","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        # Check for floating ip status before you check load-balancer"},{"line_number":426,"context_line":"        self.check_floating_ip_status(floating_ip, \u0027ACTIVE\u0027)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def _create_load_balancer(self, ip_version\u003d4, persistence_type\u003dNone):"},{"line_number":429,"context_line":"        self.create_lb_kwargs \u003d {\u0027vip\u0027: {\u0027subnet_id\u0027: self.subnet[\u0027id\u0027]}}"},{"line_number":430,"context_line":"        self.load_balancer \u003d self.load_balancers_client.create_load_balancer("},{"line_number":431,"context_line":"            **self.create_lb_kwargs)"}],"source_content_type":"text/x-python","patch_set":66,"id":"5aef4532_f93f6084","line":428,"range":{"start_line":428,"start_character":8,"end_line":428,"end_character":29},"in_reply_to":"5aef4532_6281078f","updated":"2016-03-11 00:47:06.000000000","message":"I was thinking of doing that with the api functional tests such as how we  currently do it with neutron-lbaas tests.  Though, I suppose we can also do that here too and reuse between the tests.   I\u0027d have to research that as well.","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"bd36f63424412e6b0efa19e46916c13b830a02db","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        # Check for floating ip status before you check load-balancer"},{"line_number":426,"context_line":"        self.check_floating_ip_status(floating_ip, \u0027ACTIVE\u0027)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def _create_load_balancer(self, ip_version\u003d4, persistence_type\u003dNone):"},{"line_number":429,"context_line":"        self.create_lb_kwargs \u003d {\u0027vip\u0027: {\u0027subnet_id\u0027: self.subnet[\u0027id\u0027]}}"},{"line_number":430,"context_line":"        self.load_balancer \u003d self.load_balancers_client.create_load_balancer("},{"line_number":431,"context_line":"            **self.create_lb_kwargs)"}],"source_content_type":"text/x-python","patch_set":66,"id":"1af94dfe_99eb4ab0","line":428,"range":{"start_line":428,"start_character":8,"end_line":428,"end_character":29},"in_reply_to":"5aef4532_f93f6084","updated":"2016-03-17 00:06:06.000000000","message":"Yeah. We can create separate methods here for creating respective resources like create_listener, create_pool so on.","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"dae01426e26b2492ee7927d950594728e244a917","unresolved":false,"context_lines":[{"line_number":613,"context_line":"        for member, counter in six.iteritems(counters):"},{"line_number":614,"context_line":"            if member \u003d\u003d \u0027server1\u0027:"},{"line_number":615,"context_line":"                self.assertEqual(counter, 0,"},{"line_number":616,"context_line":"                                 \u0027Member %s is not balanced\u0027 % member)"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"    def _check_load_balancing_after_deleting_resources(self):"},{"line_number":619,"context_line":"        \"\"\"Check load balancer after deleting resources"}],"source_content_type":"text/x-python","patch_set":74,"id":"1a122d0e_d90ed38b","line":616,"updated":"2016-04-29 23:39:15.000000000","message":"We could send API request to amphora vm to check haproxy member status.","commit_id":"c22450f685c81ca4bf584fdc73ae391a2a8f049d"},{"author":{"_account_id":10477,"name":"min wang","email":"swiftwangster@gmail.com","username":"minwang"},"change_message_id":"1f7b65e644f4fea0c97c2c55dcc0290e5b8f8192","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                self._wait_for_load_balancer_status(load_balancer_id)"},{"line_number":407,"context_line":"                self.members.append(member)"},{"line_number":408,"context_line":"        self.assertTrue(self.members)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    def _assign_floating_ip_to_lb_vip(self, lb):"},{"line_number":411,"context_line":"        public_network_id \u003d config.network.public_network_id"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":75,"id":"dab17558_11c14c81","line":409,"updated":"2016-05-05 20:33:19.000000000","message":"we might need to add methods about cleanup members here.","commit_id":"ad92170105701bb1e9fe72dcc443fa0afdf46d75"},{"author":{"_account_id":11662,"name":"Paul Glass","email":"paul.glass@rackspace.com","username":"pglass"},"change_message_id":"4d19c1d33076254b898a576cdca891ade082bd72","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from tempest.common import waiters"},{"line_number":32,"context_line":"from tempest import config"},{"line_number":33,"context_line":"from tempest import exceptions"},{"line_number":34,"context_line":"from tempest.scenario import manager"},{"line_number":35,"context_line":"from tempest.scenario import network_resources as net_resources"},{"line_number":36,"context_line":"from tempest import test"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from octavia.i18n import _"}],"source_content_type":"text/x-python","patch_set":81,"id":"9a89bdaa_d00d583f","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":63},"updated":"2016-09-12 21:12:34.000000000","message":"http://docs.openstack.org/developer/tempest/plugin.html#stable-tempest-apis-plugins-may-use\n\nAs much as possible, we should stay within the confines of the stable tempest interfaces. We shouldn\u0027t reuse the tempest.scenario manager, but rather create our own manager that instantiates the clients we need (those clients exist at https://github.com/openstack/tempest/tree/master/tempest/lib/services/network).\n\nAlso there is no network_resources module in tempest.scenario https://github.com/openstack/tempest/tree/master/tempest/scenario","commit_id":"db7b8b00ba059f915dc724c64b2dd718c4181d6d"},{"author":{"_account_id":11662,"name":"Paul Glass","email":"paul.glass@rackspace.com","username":"pglass"},"change_message_id":"098b5f62a27818376f3cbea2ffd0f2c1e7d85918","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from tempest.common import waiters"},{"line_number":32,"context_line":"from tempest import config"},{"line_number":33,"context_line":"from tempest import exceptions"},{"line_number":34,"context_line":"from tempest.scenario import manager"},{"line_number":35,"context_line":"from tempest.scenario import network_resources as net_resources"},{"line_number":36,"context_line":"from tempest import test"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from octavia.i18n import _"}],"source_content_type":"text/x-python","patch_set":81,"id":"9a89bdaa_5529ff99","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":63},"in_reply_to":"9a89bdaa_d00d583f","updated":"2016-09-13 17:04:34.000000000","message":"The network_resources module was removed some time ago: https://github.com/openstack/tempest/commit/33735f268530331c8e5d7653623e548aebdfba5b. That commit has examples of how to remove the old OO wrappers (like `DeletableNetwork`, `DeletableSubnet`, etc).","commit_id":"db7b8b00ba059f915dc724c64b2dd718c4181d6d"}],"test-requirements.txt":[{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"d4831dd920d6b19fbe6162ee702f6dbc73db6d95","unresolved":false,"context_lines":[{"line_number":8,"context_line":"pyroute2\u003e\u003d0.3.10 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":9,"context_line":"python-subunit\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":10,"context_line":"oslotest\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":11,"context_line":"tempest-lib\u003e\u003d0.4.0"},{"line_number":12,"context_line":"testrepository\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":13,"context_line":"testtools\u003e\u003d1.4.0 # MIT"},{"line_number":14,"context_line":"testresources\u003e\u003d0.2.4 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":28,"id":"3a57f1b5_7d4f90bd","line":11,"updated":"2016-02-10 22:10:24.000000000","message":"can we set this library to tempest-lib\u003e\u003d0.14.0, so that we can have the updated tempest-lib code?","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"c200b76b913893799e6a06969470b615d6ee7e8c","unresolved":false,"context_lines":[{"line_number":8,"context_line":"pyroute2\u003e\u003d0.3.10 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":9,"context_line":"python-subunit\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":10,"context_line":"oslotest\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":11,"context_line":"tempest-lib\u003e\u003d0.4.0"},{"line_number":12,"context_line":"testrepository\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":13,"context_line":"testtools\u003e\u003d1.4.0 # MIT"},{"line_number":14,"context_line":"testresources\u003e\u003d0.2.4 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":28,"id":"dae33548_88dde016","line":11,"in_reply_to":"3a57f1b5_7d4f90bd","updated":"2016-02-15 22:06:57.000000000","message":"Done","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"}],"tox.ini":[{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"d4831dd920d6b19fbe6162ee702f6dbc73db6d95","unresolved":false,"context_lines":[{"line_number":72,"context_line":"[testenv:releasenotes]"},{"line_number":73,"context_line":"commands \u003d sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"[testenv:tempest]"},{"line_number":76,"context_line":"deps \u003d"},{"line_number":77,"context_line":"  {[testenv]deps}"},{"line_number":78,"context_line":"  -egit+https://git.openstack.org/openstack/tempest#egg\u003dtempest"}],"source_content_type":"text/x-properties","patch_set":28,"id":"3a57f1b5_1dba1c6f","line":75,"updated":"2016-02-10 22:10:24.000000000","message":"can we change this name to api, so it can provide clear meaning to the users when running the tests. Likewise, for scenario, it can be set to \u0027scenario\u0027","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"c200b76b913893799e6a06969470b615d6ee7e8c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"[testenv:releasenotes]"},{"line_number":73,"context_line":"commands \u003d sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"[testenv:tempest]"},{"line_number":76,"context_line":"deps \u003d"},{"line_number":77,"context_line":"  {[testenv]deps}"},{"line_number":78,"context_line":"  -egit+https://git.openstack.org/openstack/tempest#egg\u003dtempest"}],"source_content_type":"text/x-properties","patch_set":28,"id":"dae33548_28d93422","line":75,"in_reply_to":"3a57f1b5_1dba1c6f","updated":"2016-02-15 22:06:57.000000000","message":"Yep - there\u0027s going to be some changes here.","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"d4831dd920d6b19fbe6162ee702f6dbc73db6d95","unresolved":false,"context_lines":[{"line_number":79,"context_line":"setenv \u003d"},{"line_number":80,"context_line":" OS_TEST_PATH\u003d{toxinidir}/octavia/tests/tempest"},{"line_number":81,"context_line":" OS_TESTR_CONCURRENCY\u003d1"},{"line_number":82,"context_line":" TEMPEST_CONFIG_DIR\u003d{toxinidir}/octavia/tests/tempest/etc"}],"source_content_type":"text/x-properties","patch_set":28,"id":"3a57f1b5_5df2d470","line":82,"updated":"2016-02-10 22:10:24.000000000","message":"Instead of having too many tempest.conf, its better to point to the /opt/stack/etc/tempest.conf to avoid confusion when debugging.","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"c200b76b913893799e6a06969470b615d6ee7e8c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"setenv \u003d"},{"line_number":80,"context_line":" OS_TEST_PATH\u003d{toxinidir}/octavia/tests/tempest"},{"line_number":81,"context_line":" OS_TESTR_CONCURRENCY\u003d1"},{"line_number":82,"context_line":" TEMPEST_CONFIG_DIR\u003d{toxinidir}/octavia/tests/tempest/etc"}],"source_content_type":"text/x-properties","patch_set":28,"id":"dae33548_08f9d080","line":82,"in_reply_to":"3a57f1b5_5df2d470","updated":"2016-02-15 22:06:57.000000000","message":"Yep - I recently found that out.  Good catch, Madhu!  Thanks.","commit_id":"40776a323b8639d5e8d7edc16428e8494b0a216e"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"bbb2e685ad06359a8482b93933274ae8b11a1307","unresolved":false,"context_lines":[{"line_number":18,"context_line":"[testenv:cover]"},{"line_number":19,"context_line":"commands \u003d python setup.py testr --coverage --testr-args\u003d\u0027{posargs}\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"[testenv:functional]"},{"line_number":22,"context_line":"setenv \u003d OS_TEST_PATH\u003d{toxinidir}/octavia/tests/functional"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[testenv:debug]"}],"source_content_type":"text/x-properties","patch_set":66,"id":"5aef4532_5d1dce64","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":20},"updated":"2016-03-10 10:10:30.000000000","message":"I don\u0027t like splitting out the functional tests like this. This makes it harder to run the functional tests using both py27 and py34, and really there\u0027s so much in the functional tests that should be run every time. The \"functional\" name is very loose: Many of them are really just slightly more complicated than unit tests (and many could be considered equivalent to unit tests).","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"158d0edc6e53eb41b3cb6ed2f2855bb92f08c9e2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"[testenv:cover]"},{"line_number":19,"context_line":"commands \u003d python setup.py testr --coverage --testr-args\u003d\u0027{posargs}\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"[testenv:functional]"},{"line_number":22,"context_line":"setenv \u003d OS_TEST_PATH\u003d{toxinidir}/octavia/tests/functional"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[testenv:debug]"}],"source_content_type":"text/x-properties","patch_set":66,"id":"1af94dfe_cfb184e3","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":20},"in_reply_to":"1af94dfe_394b16cb","updated":"2016-03-17 01:27:15.000000000","message":"Min: I\u0027m not sure exactly what the original intent was here, having unit / functional tests split the way they are in this repository currently. I do know that others (including myself) have simply followed the established pattern in adding new tests.","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"},{"author":{"_account_id":14556,"name":"Madhusudhan Kandadai","email":"madhusudhan.openstack@gmail.com","username":"madhusudhan-kandadai"},"change_message_id":"bd36f63424412e6b0efa19e46916c13b830a02db","unresolved":false,"context_lines":[{"line_number":18,"context_line":"[testenv:cover]"},{"line_number":19,"context_line":"commands \u003d python setup.py testr --coverage --testr-args\u003d\u0027{posargs}\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"[testenv:functional]"},{"line_number":22,"context_line":"setenv \u003d OS_TEST_PATH\u003d{toxinidir}/octavia/tests/functional"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[testenv:debug]"}],"source_content_type":"text/x-properties","patch_set":66,"id":"1af94dfe_394b16cb","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":20},"in_reply_to":"1af94dfe_b1d46420","updated":"2016-03-17 00:06:06.000000000","message":"commented in .testr.conf","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"},{"author":{"_account_id":10477,"name":"min wang","email":"swiftwangster@gmail.com","username":"minwang"},"change_message_id":"53d28781dc8630d5be478f228cc478c9a92b3e46","unresolved":false,"context_lines":[{"line_number":18,"context_line":"[testenv:cover]"},{"line_number":19,"context_line":"commands \u003d python setup.py testr --coverage --testr-args\u003d\u0027{posargs}\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"[testenv:functional]"},{"line_number":22,"context_line":"setenv \u003d OS_TEST_PATH\u003d{toxinidir}/octavia/tests/functional"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[testenv:debug]"}],"source_content_type":"text/x-properties","patch_set":66,"id":"1af94dfe_b1d46420","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":20},"in_reply_to":"5aef4532_5d1dce64","updated":"2016-03-16 21:08:14.000000000","message":"I am kind of curious why our functional test are loose here,  I thought unit test is from programmer\u0027s perspective, while functional test is more like from user\u0027s perspective to test how does the system work, if they are very similar in some cases, is that designed by purpose?","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"},{"author":{"_account_id":7812,"name":"Franklin Naval","email":"franklin.naval@gmail.com","username":"fnaval"},"change_message_id":"08be5b6b2e964bfd76c2442d21335419ff576126","unresolved":false,"context_lines":[{"line_number":18,"context_line":"[testenv:cover]"},{"line_number":19,"context_line":"commands \u003d python setup.py testr --coverage --testr-args\u003d\u0027{posargs}\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"[testenv:functional]"},{"line_number":22,"context_line":"setenv \u003d OS_TEST_PATH\u003d{toxinidir}/octavia/tests/functional"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[testenv:debug]"}],"source_content_type":"text/x-properties","patch_set":66,"id":"5aef4532_f95640cc","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":20},"in_reply_to":"5aef4532_5d1dce64","updated":"2016-03-11 00:47:06.000000000","message":"so, see my comment in your comment in .testr.conf on why we may need this.  I\u0027m open to ideas on how we can solve that problem.","commit_id":"58cc43c83518f97b1beb6b0fd0603c2daffaa011"}]}
