)]}'
{".functests":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"1e8c86e4daecceaeefa873c9412533cd523fe040","unresolved":false,"context_lines":[{"line_number":27,"context_line":"if [ \"$FLAVOR\" \u003d\u003d \"jenkins\" ]; then"},{"line_number":28,"context_line":"    ostestr --serial --pretty $@"},{"line_number":29,"context_line":"else"},{"line_number":30,"context_line":"    export STORLET_FUNCTEST_SKIP_LONG\u003dTrue"},{"line_number":31,"context_line":"    ostestr --serial --pretty $@"},{"line_number":32,"context_line":"fi"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"rvalue\u003d$?"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"3a71b18c_c231fa0c","line":31,"range":{"start_line":30,"start_character":3,"end_line":31,"end_character":1},"updated":"2016-12-12 07:27:28.000000000","message":"I like to move the setting to be in tox.ini as another environment because it could be hard to notify why those tests are skipping in the developer environment. And using `dev` or `jenkins` may be not intuitive for them.","commit_id":"80780d9a7a744452f93f01af7e0721834592cebb"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"f2a2b7d38c6157322c273c10fc2b2da85008857f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"if [ \"$FLAVOR\" \u003d\u003d \"jenkins\" ]; then"},{"line_number":28,"context_line":"    ostestr --serial --pretty $@"},{"line_number":29,"context_line":"else"},{"line_number":30,"context_line":"    export STORLET_FUNCTEST_SKIP_LONG\u003dTrue"},{"line_number":31,"context_line":"    ostestr --serial --pretty $@"},{"line_number":32,"context_line":"fi"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"rvalue\u003d$?"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"1a6eadb0_b003010f","line":31,"range":{"start_line":30,"start_character":3,"end_line":31,"end_character":1},"in_reply_to":"3a71b18c_c231fa0c","updated":"2016-12-12 19:45:40.000000000","message":"I use the functional tests extensively during development. On one hand I want that at the gate this will always be false, and that in my dev env it would be true. If I will change it in to.ini I will need to remember not to commit. Any idea how we can turn it on by default in a dev env?","commit_id":"80780d9a7a744452f93f01af7e0721834592cebb"}],"tests/functional/__init__.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ba95af40436c73e199baea9c8a8fab31d9cfb724","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONFIG_FILE \u003d \u0027cluster_config.json\u0027"},{"line_number":27,"context_line":"PATH_TO_STORLETS \u003d \u0027StorletSamples\u0027"},{"line_number":28,"context_line":"global skip_long_running"},{"line_number":29,"context_line":"skip_long_running \u003d os.getenv(\u0027STORLET_FUNCTEST_SKIP_LONG\u0027, \u0027False\u0027)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_bf7d5bb3","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":24},"updated":"2016-12-02 07:34:04.000000000","message":"Q. Why do we need to make this global here?","commit_id":"ae2b21d7533320bb902c4182f104038f39b40e60"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ba95af40436c73e199baea9c8a8fab31d9cfb724","unresolved":false,"context_lines":[{"line_number":32,"context_line":"def long_running(f):"},{"line_number":33,"context_line":"    @functools.wraps(f)"},{"line_number":34,"context_line":"    def wrapper(*args, **kwargs):"},{"line_number":35,"context_line":"        global skip_long_running"},{"line_number":36,"context_line":"        if skip_long_running \u003d\u003d \u0027True\u0027:"},{"line_number":37,"context_line":"            raise SkipTest(\u0027Skipping long running test\u0027)"},{"line_number":38,"context_line":"        return f(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_e2ff3aff","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":32},"updated":"2016-12-02 07:34:04.000000000","message":"Personally I don\u0027t like global value so much, because it often makes things too complicated. Is there any concerns to parse env value here?","commit_id":"ae2b21d7533320bb902c4182f104038f39b40e60"}],"tests/functional/java/test_compress_storlet.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f5e5767e4e65b7f03b8b00ef2983efdbdba16817","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        headers.update(self.additional_headers)"},{"line_number":34,"context_line":"        querystring \u003d \"action\u003dcompress\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        with open(\u0027StorletSamples/java/CompressStorlet/bin/input.txt\u0027,"},{"line_number":37,"context_line":"                  \u0027r\u0027) as myfile:"},{"line_number":38,"context_line":"            data \u003d myfile.read()"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_7cd68cc6","line":36,"range":{"start_line":36,"start_character":19,"end_line":36,"end_character":68},"updated":"2016-11-08 01:20:44.000000000","message":"I noticed that we should not specify this file path directly, but should create this based from some elements like STORLET_PATH. I\u0027ll fix that as follow-up.","commit_id":"9750730f5e87a4f125eec4a3e7319ca91668e178"}],"tests/functional/java/test_deploy_storlet.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ba95af40436c73e199baea9c8a8fab31d9cfb724","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        super(TestExecDepStorlet, self).setUp()"},{"line_number":24,"context_line":"        # TODO(takashi): This should be a bin script which can be used to"},{"line_number":25,"context_line":"        #                deploy storlet in swift, after some refactoring"},{"line_number":26,"context_line":"        self.deploy_storlet_path \u003d \u0027storlets/tools/deploy_storlet.py\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        self.execdep_storlet_path \u003d \u0027%s/java/%s/%s\u0027 % (PATH_TO_STORLETS,"},{"line_number":29,"context_line":"                                                       \u0027ExecDepStorlet\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_22585232","line":26,"range":{"start_line":26,"start_character":8,"end_line":26,"end_character":69},"updated":"2016-12-02 07:34:04.000000000","message":"I now notice that this is not a library code but a bin script. I think this should be implemented as a cli command like storlets-deploy and placed under bin directory in the future.","commit_id":"ae2b21d7533320bb902c4182f104038f39b40e60"}],"tests/unit/__init__.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ba95af40436c73e199baea9c8a8fab31d9cfb724","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def print_logs():"},{"line_number":26,"context_line":"    unittests_logs \u003d os.environ.get(\u0027STORLETS_UNITTEST_PRINT_LOGS\u0027)"},{"line_number":27,"context_line":"    if unittests_logs:"},{"line_number":28,"context_line":"        return True"},{"line_number":29,"context_line":"    return False"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def with_tempdir(f):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_5ff9a77f","line":29,"range":{"start_line":27,"start_character":0,"end_line":29,"end_character":16},"updated":"2016-12-02 07:34:04.000000000","message":"This allows us to enable logging by just \u0027export STORLETS_UNITTEST_PRINT_LOGS\u003dFalse\u0027.\nCan we assert the env value, like the following?\n\nreturn unittest_logs.lower() \u003d\u003d \u0027true\u0027","commit_id":"ae2b21d7533320bb902c4182f104038f39b40e60"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"1e8c86e4daecceaeefa873c9412533cd523fe040","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from tempfile import mkdtemp"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def print_logs():"},{"line_number":26,"context_line":"    unittest_logs \u003d os.environ.get(\u0027STORLETS_UNITTEST_PRINT_LOGS\u0027)"},{"line_number":27,"context_line":"    return unittest_logs.lower() \u003d\u003d \u0027true\u0027"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_42216a4c","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":17},"updated":"2016-12-12 07:27:28.000000000","message":"Where is this function called? `egrep print_logs * -R` shows nothing except here.","commit_id":"80780d9a7a744452f93f01af7e0721834592cebb"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"f2a2b7d38c6157322c273c10fc2b2da85008857f","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from tempfile import mkdtemp"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def print_logs():"},{"line_number":26,"context_line":"    unittest_logs \u003d os.environ.get(\u0027STORLETS_UNITTEST_PRINT_LOGS\u0027)"},{"line_number":27,"context_line":"    return unittest_logs.lower() \u003d\u003d \u0027true\u0027"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_6bac1cee","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":17},"in_reply_to":"3a71b18c_42216a4c","updated":"2016-12-12 19:45:40.000000000","message":"Oops. fixed.","commit_id":"80780d9a7a744452f93f01af7e0721834592cebb"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"721d9384fb52de086f473764bf63d0d01177c101","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _print_log(self, level, msg):"},{"line_number":58,"context_line":"        self._log_lines[level.lower()].append(msg)"},{"line_number":59,"context_line":"        if print_logs() is True:"},{"line_number":60,"context_line":"            print(\u0027%s: %s\u0027 % (level, msg))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def get_log_lines(self, level):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_360de43e","line":59,"updated":"2016-12-14 02:54:09.000000000","message":"OK, you want to check if we dumps the logs to STDOUT. Make sense. However, I wonder if why not it should be callable?\n\nIs it same thing with?:\n\n UNITTEST_PRINT_LOGS \u003d os.environ.get(\u0027STORLETS_UNITTEST_PRINT_LOGS\u0027, False)\n\nAnd then:\n\n if UNITTEST_PRINT_LOGS:\n   print(\u0027%s: %s\u0027 % (level, msg))\n\nOr if you like to check the env value, swift.common.utils.config_true_value will be your friend.\n\n from swift.common.utils import config_true_value\n # True if the value is in \u0027true\u0027, \u00271\u0027, \u0027yes\u0027, \u0027on\u0027, \u0027t\u0027, \u0027y\u0027 else False\n UNITTEST_PRINT_LOGS \u003d config_true_value(\n     os.environ.get(\u0027STORLETS_UNITTEST_PRINT_LOGS\u0027, False))","commit_id":"5bf9debc5cf374f71f012dfb407def292b1fec68"}],"tox.ini":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f5e5767e4e65b7f03b8b00ef2983efdbdba16817","unresolved":false,"context_lines":[{"line_number":21,"context_line":"                      find"},{"line_number":22,"context_line":"                      rm"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[testenv:py27]"},{"line_number":25,"context_line":"commands \u003d ./.unittests {posargs}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"[testenv:pep8python]"},{"line_number":28,"context_line":"commands \u003d"}],"source_content_type":"text/x-properties","patch_set":2,"id":"9a629dbe_9c02803d","line":25,"range":{"start_line":24,"start_character":0,"end_line":25,"end_character":33},"updated":"2016-11-08 01:20:44.000000000","message":"I remember we had intentional change to remove the usage of .unittest from tox [1], which I think it\u0027s better to keep.\n\n[1] https://github.com/openstack/storlets/commit/2bdd7b4f023acbd6c9d71f94a8779633a1731b77","commit_id":"9750730f5e87a4f125eec4a3e7319ca91668e178"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"1e8c86e4daecceaeefa873c9412533cd523fe040","unresolved":false,"context_lines":[{"line_number":22,"context_line":"                      rm"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[testenv:py27]"},{"line_number":25,"context_line":"commands \u003d ostestr --path tests/unit --serial --pretty"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"[testenv:pep8python]"},{"line_number":28,"context_line":"commands \u003d"}],"source_content_type":"text/x-properties","patch_set":6,"id":"3a71b18c_02b13201","line":25,"updated":"2016-12-12 07:27:28.000000000","message":"Why not using .unittests as well as functests?\n\nAnd if suitable and we use --serial option here, I\u0027d like to use nosetests for unittest case because `ostestr --pretty` makes quit annoying DEBUG print between each test lines in the result STDOUT and it could make us difficult to know what\u0027s going on running the unit tests.\n\nThe reason I\u0027d recommend nosetests for that, is because nosetests shows the results at first and then the failure result with captured STDOUT only in the failure results which can be enough and easy to read for developers.\n\nHow do you think of?","commit_id":"80780d9a7a744452f93f01af7e0721834592cebb"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"f2a2b7d38c6157322c273c10fc2b2da85008857f","unresolved":false,"context_lines":[{"line_number":22,"context_line":"                      rm"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[testenv:py27]"},{"line_number":25,"context_line":"commands \u003d ostestr --path tests/unit --serial --pretty"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"[testenv:pep8python]"},{"line_number":28,"context_line":"commands \u003d"}],"source_content_type":"text/x-properties","patch_set":6,"id":"1a6eadb0_8b6258d7","line":25,"in_reply_to":"3a71b18c_02b13201","updated":"2016-12-12 19:45:40.000000000","message":"I left it as test althogh I totally agree with your point here.\nOne of the comments we got was to use testr, I am not sure how important this is. I will mention this reservation in the work summary and see what response we get.","commit_id":"80780d9a7a744452f93f01af7e0721834592cebb"}]}
