)]}'
{"Engine/SBus/SBusPythonFacade/sbus/datagram.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9ab076cf8c853cc10adae90aeba35e51d1f99ccf","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    The manager class for the datagram passed over sbus protocol"},{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def __init__(self, command, fds, metadata, required_fd_types, params\u003dNone,"},{"line_number":48,"context_line":"                 task_id\u003dNone):"},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        Create SBusDatagram instance"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_8e9d790c","line":47,"range":{"start_line":47,"start_character":47,"end_line":47,"end_character":66},"updated":"2016-11-10 02:46:40.000000000","message":"Does the following change makes sense to you?\n\n* define required_fd_types as class attribute\n* add class method to confirm that passed fd list matches to required fd types rule","commit_id":"0416c1aa1de28f967c98697f8b315b835f2134f4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9ab076cf8c853cc10adae90aeba35e51d1f99ccf","unresolved":false,"context_lines":[{"line_number":154,"context_line":"     - SBUS_CMD_PING"},{"line_number":155,"context_line":"     - SBUS_CMD_CANCEL"},{"line_number":156,"context_line":"    \"\"\""},{"line_number":157,"context_line":"    def __init__(self, command, fds, metadata, params\u003dNone, task_id\u003dNone):"},{"line_number":158,"context_line":"        required_fd_types \u003d [sbus_fd.SBUS_FD_SERVICE_OUT]"},{"line_number":159,"context_line":"        super(SBusServiceDatagram, self).__init__("},{"line_number":160,"context_line":"            command, fds, metadata, required_fd_types, params,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_2ea62d53","line":157,"range":{"start_line":157,"start_character":23,"end_line":157,"end_character":30},"updated":"2016-11-10 02:46:40.000000000","message":"Why don\u0027t you assert command type, if you have limited command types for which you can used this datagram.","commit_id":"0416c1aa1de28f967c98697f8b315b835f2134f4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9ab076cf8c853cc10adae90aeba35e51d1f99ccf","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            command, fds, metadata, required_fd_types, params,"},{"line_number":161,"context_line":"            task_id)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @classmethod"},{"line_number":164,"context_line":"    def build_from_raw_message(cls, fds, str_md, str_cmd_params):"},{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        Build SBusServiceDatagram from raw message recieved over sbus"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        :param fds: A list of file descriptors (integer) to pass with"},{"line_number":169,"context_line":"                    the command"},{"line_number":170,"context_line":"        :param str_md: json serialized metadata dict"},{"line_number":171,"context_line":"        :param str_cmd_params: json serialized command parameters dict"},{"line_number":172,"context_line":"        \"\"\""},{"line_number":173,"context_line":"        metadata \u003d json.loads(str_md)"},{"line_number":174,"context_line":"        cmd_params \u003d json.loads(str_cmd_params)"},{"line_number":175,"context_line":"        command \u003d cmd_params.get(\u0027command\u0027)"},{"line_number":176,"context_line":"        params \u003d cmd_params.get(\u0027params\u0027)"},{"line_number":177,"context_line":"        task_id \u003d cmd_params.get(\u0027task_id\u0027)"},{"line_number":178,"context_line":"        return cls(command, fds, metadata, params, task_id)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @property"},{"line_number":181,"context_line":"    def service_out_fd(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_eeda75e7","line":178,"range":{"start_line":163,"start_character":0,"end_line":178,"end_character":59},"updated":"2016-11-10 02:46:40.000000000","message":"I think this should be defined in SBusDatagram, because it is generally used for all command types.","commit_id":"0416c1aa1de28f967c98697f8b315b835f2134f4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9ab076cf8c853cc10adae90aeba35e51d1f99ccf","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"class SBusExecuteDatagram(SBusDatagram):"},{"line_number":186,"context_line":"    def __init__(self, command, fds, metadata, params\u003dNone, task_id\u003dNone):"},{"line_number":187,"context_line":"        required_fd_types \u003d [sbus_fd.SBUS_FD_INPUT_OBJECT,"},{"line_number":188,"context_line":"                             sbus_fd.SBUS_FD_OUTPUT_TASK_ID,"},{"line_number":189,"context_line":"                             sbus_fd.SBUS_FD_OUTPUT_OBJECT,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_4ebe0166","line":186,"range":{"start_line":186,"start_character":23,"end_line":186,"end_character":30},"updated":"2016-11-10 02:46:40.000000000","message":"If this is only for execute datagram, you should assert command type.","commit_id":"0416c1aa1de28f967c98697f8b315b835f2134f4"}],"storlets/sbus/datagram.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d92e0c613c890778382c452ab461773a8b84e800","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    required_fd_types \u003d []"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def __init__(self, command, fds, metadata, params\u003dNone, task_id\u003dNone):"},{"line_number":170,"context_line":"        self.required_fd_types \u003d [sbus_fd.SBUS_FD_SERVICE_OUT]"},{"line_number":171,"context_line":"        super(SBusServiceDatagram, self).__init__("},{"line_number":172,"context_line":"            command, fds, metadata, params, task_id)"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3a71b18c_87102203","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":62},"updated":"2016-12-03 18:54:22.000000000","message":"Why we need to override required_fd_types here?","commit_id":"048217d6c1d419bd6eb52bc91f4ba138c9b5203c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d92e0c613c890778382c452ab461773a8b84e800","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        return self._find_fds(sbus_fd.SBUS_FD_INPUT_OBJECT)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"def build_from_raw_message(fds, str_md, str_cmd_params):"},{"line_number":224,"context_line":"    \"\"\""},{"line_number":225,"context_line":"    Build SBusDatagram from raw message recieved over sbus"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3a71b18c_c7fa1abd","line":223,"range":{"start_line":223,"start_character":4,"end_line":223,"end_character":26},"updated":"2016-12-03 18:54:22.000000000","message":"If you make this independent function, I think you should include \u0027datagram\u0027 in function name so that let people find easily what it returns.","commit_id":"048217d6c1d419bd6eb52bc91f4ba138c9b5203c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ace2dea761bed59ecab9512e4de6e8456a122c36","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    The manager class for the datagram passed over sbus protocol"},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    required_fd_types \u003d []"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, command, fds, metadata, params\u003dNone, task_id\u003dNone):"},{"line_number":51,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":27,"id":"1a6eadb0_b6dd39e2","line":48,"range":{"start_line":48,"start_character":4,"end_line":48,"end_character":26},"updated":"2016-12-15 01:34:56.000000000","message":"As we talked in our f2f discussion, please place this inside __init__ as you do for subclasses.","commit_id":"17f58a2a5b90f653d5194b2978e0f4eb71ae4e40"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"9c1b6598c7f20b11577fa0ab989846e42e4382e1","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    The manager class for the datagram passed over sbus protocol"},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    required_fd_types \u003d []"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, command, fds, metadata, params\u003dNone, task_id\u003dNone):"},{"line_number":51,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":27,"id":"1a6eadb0_f1c25b33","line":48,"range":{"start_line":48,"start_character":4,"end_line":48,"end_character":26},"in_reply_to":"1a6eadb0_b6dd39e2","updated":"2016-12-15 02:40:20.000000000","message":"Done","commit_id":"17f58a2a5b90f653d5194b2978e0f4eb71ae4e40"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"4af253222bdac26760f8993ba2f74e0e7861cefb","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    The manager class for the datagram passed over sbus protocol"},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    required_fd_types \u003d []"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, command, fds, metadata, params\u003dNone, task_id\u003dNone):"},{"line_number":51,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":27,"id":"1a6eadb0_fe6ce336","line":48,"range":{"start_line":48,"start_character":4,"end_line":48,"end_character":26},"in_reply_to":"1a6eadb0_f1c25b33","updated":"2016-12-15 04:38:20.000000000","message":"When required_fd_types is placed into __init__, it will be overwritten to \u0027[]\u0027 even though it has value.\nTherefore, we delete it.","commit_id":"17f58a2a5b90f653d5194b2978e0f4eb71ae4e40"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ace2dea761bed59ecab9512e4de6e8456a122c36","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        :param command: A string encoding the command to send"},{"line_number":55,"context_line":"        :param fds: A list of file descriptors (integer) to pass with"},{"line_number":56,"context_line":"                    the command"},{"line_number":57,"context_line":"        :param metadatad: A list of dictionaries, where the i\u0027th dictionary"},{"line_number":58,"context_line":"                          is the metadata of the i\u0027th fd."},{"line_number":59,"context_line":"        :param params: A optional dictionary with parameters for the command"},{"line_number":60,"context_line":"                       execution"}],"source_content_type":"text/x-python","patch_set":27,"id":"1a6eadb0_f6ab3173","line":57,"range":{"start_line":57,"start_character":23,"end_line":57,"end_character":24},"updated":"2016-12-15 01:34:56.000000000","message":"s/metadatad/metadata/","commit_id":"17f58a2a5b90f653d5194b2978e0f4eb71ae4e40"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"9c1b6598c7f20b11577fa0ab989846e42e4382e1","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        :param command: A string encoding the command to send"},{"line_number":55,"context_line":"        :param fds: A list of file descriptors (integer) to pass with"},{"line_number":56,"context_line":"                    the command"},{"line_number":57,"context_line":"        :param metadatad: A list of dictionaries, where the i\u0027th dictionary"},{"line_number":58,"context_line":"                          is the metadata of the i\u0027th fd."},{"line_number":59,"context_line":"        :param params: A optional dictionary with parameters for the command"},{"line_number":60,"context_line":"                       execution"}],"source_content_type":"text/x-python","patch_set":27,"id":"1a6eadb0_11c0b729","line":57,"range":{"start_line":57,"start_character":23,"end_line":57,"end_character":24},"in_reply_to":"1a6eadb0_f6ab3173","updated":"2016-12-15 02:40:20.000000000","message":"Done","commit_id":"17f58a2a5b90f653d5194b2978e0f4eb71ae4e40"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ace2dea761bed59ecab9512e4de6e8456a122c36","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    \"\"\""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def __init__(self, command, fds, metadata, params\u003dNone, task_id\u003dNone):"},{"line_number":168,"context_line":"        self.required_fd_types \u003d [sbus_fd.SBUS_FD_SERVICE_OUT]"},{"line_number":169,"context_line":"        super(SBusServiceDatagram, self).__init__("},{"line_number":170,"context_line":"            command, fds, metadata, params, task_id)"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"1a6eadb0_76e561da","line":168,"updated":"2016-12-15 01:34:56.000000000","message":"Can\u0027t you place this outside __init__?","commit_id":"17f58a2a5b90f653d5194b2978e0f4eb71ae4e40"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"fc6e2783a1334f9a61df077189a635412b6cfb2c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    The manager class for the datagram passed over sbus protocol"},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    required_fd_types \u003d []"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, command, fds, metadata, params\u003dNone, task_id\u003dNone):"},{"line_number":51,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":31,"id":"1a6eadb0_7e28ce86","line":48,"range":{"start_line":48,"start_character":4,"end_line":48,"end_character":26},"updated":"2016-12-15 07:34:13.000000000","message":"when this line is deleted, SBusDatagram test is failed.\n# occur AttributeError\nso, we turn back it.","commit_id":"d2bb520623cd78b8554d741a27e5b9fabc3d4be7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"acee512712bff5e98021017e4cbb1671d39e3fa5","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                \u0027SBusDatagram class should define _required_fd_types\u0027)"},{"line_number":147,"context_line":"        # the first len(self._required_fd_types) types should be fit"},{"line_number":148,"context_line":"        # to the required list"},{"line_number":149,"context_line":"        if given_fd_types[:len(self._required_fd_types)] !\u003d \\"},{"line_number":150,"context_line":"                self._required_fd_types:"},{"line_number":151,"context_line":"            raise ValueError(\u0027Fd type mismatch given_fd_types:%s \\"},{"line_number":152,"context_line":"                             required_fd_types:%s\u0027 %"},{"line_number":153,"context_line":"                             (given_fd_types, self._required_fd_types))"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def __str__(self):"},{"line_number":156,"context_line":"        return \u0027num_fds\u003d%s, md\u003d%s, cmd_params\u003d%s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":32,"id":"1a6eadb0_66ab73d7","line":153,"range":{"start_line":149,"start_character":0,"end_line":153,"end_character":71},"updated":"2016-12-19 02:21:29.000000000","message":"I\u0027m still ok to leave it for follow-up, but it seems that we don\u0027t raise error if we have more fds than required in SBusServiceDatagram.","commit_id":"e2a144b292535042127124e3aa2a1db31e4cca14"}],"tests/unit/sbus/test_datagram.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9ab076cf8c853cc10adae90aeba35e51d1f99ccf","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.assertEqual(self.params, dtg.params)"},{"line_number":80,"context_line":"        self.assertEqual(self.task_id, dtg.task_id)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        # failure scenario"},{"line_number":83,"context_line":"        fds \u003d self.fds[1:]"},{"line_number":84,"context_line":"        with self.assertRaises(ValueError):"},{"line_number":85,"context_line":"            SBusDatagram(self.command, fds, self.metadata,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_4e62813f","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":26},"updated":"2016-11-10 02:46:40.000000000","message":"please describe why this fails","commit_id":"0416c1aa1de28f967c98697f8b315b835f2134f4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9ab076cf8c853cc10adae90aeba35e51d1f99ccf","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                         self.required_fd_types, self.params,"},{"line_number":87,"context_line":"                         self.task_id)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # failure scenario"},{"line_number":90,"context_line":"        required_fd_types \u003d list(self.required_fd_types)"},{"line_number":91,"context_line":"        required_fd_types[0] \u003d \u0027SBUS_FD_TEST\u0027"},{"line_number":92,"context_line":"        with self.assertRaises(ValueError):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_6e67454d","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":26},"updated":"2016-11-10 02:46:40.000000000","message":"ditto","commit_id":"0416c1aa1de28f967c98697f8b315b835f2134f4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9ab076cf8c853cc10adae90aeba35e51d1f99ccf","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"class TestSBusServiceDatagram(TestSBusDatagram):"},{"line_number":137,"context_line":"    def setUp(self):"},{"line_number":138,"context_line":"        self.command \u003d \u0027PING\u0027"},{"line_number":139,"context_line":"        self.types \u003d [sbus_fd.SBUS_FD_SERVICE_OUT]"},{"line_number":140,"context_line":"        self.fds \u003d [1]"},{"line_number":141,"context_line":"        self.metadata \u003d [FDMetadata(sbus_fd.SBUS_FD_SERVICE_OUT).to_dict()]"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_ee535569","line":138,"range":{"start_line":138,"start_character":24,"end_line":138,"end_character":28},"updated":"2016-11-10 02:46:40.000000000","message":"You should specify the command defined in sbus.command","commit_id":"0416c1aa1de28f967c98697f8b315b835f2134f4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d92e0c613c890778382c452ab461773a8b84e800","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.params \u003d {\u0027param1\u0027: \u0027paramvalue1\u0027}"},{"line_number":62,"context_line":"        self.task_id \u003d \u0027id\u0027"},{"line_number":63,"context_line":"        with mock.patch(\u0027storlets.sbus.datagram.SBusDatagram._check_fd_nums\u0027,"},{"line_number":64,"context_line":"                        self._fake_check_fd_nums), \\"},{"line_number":65,"context_line":"            mock.patch("},{"line_number":66,"context_line":"                \u0027storlets.sbus.datagram.SBusDatagram._check_required_fd_types\u0027,"},{"line_number":67,"context_line":"                self._fake_check_required_fd_types):"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a71b18c_27002eaa","line":64,"range":{"start_line":64,"start_character":24,"end_line":64,"end_character":48},"updated":"2016-12-03 18:54:22.000000000","message":"Do you really need this func? I mean, isn\u0027t it enough just to use mock.patch(\u0027storlets. ... check_fd_nums\u0027) ?","commit_id":"048217d6c1d419bd6eb52bc91f4ba138c9b5203c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d92e0c613c890778382c452ab461773a8b84e800","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                        self._fake_check_fd_nums), \\"},{"line_number":65,"context_line":"            mock.patch("},{"line_number":66,"context_line":"                \u0027storlets.sbus.datagram.SBusDatagram._check_required_fd_types\u0027,"},{"line_number":67,"context_line":"                self._fake_check_required_fd_types):"},{"line_number":68,"context_line":"            self.dtg \u003d SBusDatagram(self.command, self.fds, self.metadata,"},{"line_number":69,"context_line":"                                    self.params, self.task_id)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3a71b18c_472d2a45","line":67,"range":{"start_line":67,"start_character":16,"end_line":67,"end_character":50},"updated":"2016-12-03 18:54:22.000000000","message":"ditto","commit_id":"048217d6c1d419bd6eb52bc91f4ba138c9b5203c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d92e0c613c890778382c452ab461773a8b84e800","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class TestSBusDatagram(TestSBusBaseDatagram):"},{"line_number":92,"context_line":"    def setUp(self):"},{"line_number":93,"context_line":"        self.command \u003d \u0027SBUS_CMD_TEST\u0027"},{"line_number":94,"context_line":"        self.types \u003d [sbus_fd.SBUS_FD_SERVICE_OUT,"},{"line_number":95,"context_line":"                      sbus_fd.SBUS_FD_OUTPUT_OBJECT,"},{"line_number":96,"context_line":"                      sbus_fd.SBUS_FD_OUTPUT_OBJECT,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a71b18c_6730669f","line":93,"range":{"start_line":93,"start_character":24,"end_line":93,"end_character":37},"updated":"2016-12-03 18:54:22.000000000","message":"Honestly I don\u0027t like to use invalid value for testing...","commit_id":"048217d6c1d419bd6eb52bc91f4ba138c9b5203c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d92e0c613c890778382c452ab461773a8b84e800","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        self.assertEqual(1, self.dtg.service_out_fd)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class TestSBusExecutedatagram(TestSBusBaseDatagram):"},{"line_number":187,"context_line":"    def setUp(self):"},{"line_number":188,"context_line":"        self.command \u003d SBUS_CMD_EXECUTE"},{"line_number":189,"context_line":"        self.types \u003d [sbus_fd.SBUS_FD_INPUT_OBJECT,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a71b18c_87274263","line":186,"range":{"start_line":186,"start_character":21,"end_line":186,"end_character":22},"updated":"2016-12-03 18:54:22.000000000","message":"D","commit_id":"048217d6c1d419bd6eb52bc91f4ba138c9b5203c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ace2dea761bed59ecab9512e4de6e8456a122c36","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            self.dtg._find_fd(\u0027DUMMY_TYPE\u0027))"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def test_check_fd_nums(self):"},{"line_number":141,"context_line":"        self.assertIsNone(self.dtg._check_fd_nums(self.fds, self.metadata))"},{"line_number":142,"context_line":"        with self.assertRaises(ValueError):"},{"line_number":143,"context_line":"            self.dtg._check_fd_nums(self.fds[1:], self.metadata)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"1a6eadb0_d66c7537","line":141,"range":{"start_line":141,"start_character":8,"end_line":141,"end_character":26},"updated":"2016-12-15 01:34:56.000000000","message":"If you don\u0027t expect _check_fd_nums explicitly return None, it is better to remove this assert","commit_id":"17f58a2a5b90f653d5194b2978e0f4eb71ae4e40"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"9c1b6598c7f20b11577fa0ab989846e42e4382e1","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            self.dtg._find_fd(\u0027DUMMY_TYPE\u0027))"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def test_check_fd_nums(self):"},{"line_number":141,"context_line":"        self.assertIsNone(self.dtg._check_fd_nums(self.fds, self.metadata))"},{"line_number":142,"context_line":"        with self.assertRaises(ValueError):"},{"line_number":143,"context_line":"            self.dtg._check_fd_nums(self.fds[1:], self.metadata)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"1a6eadb0_51e4efdf","line":141,"range":{"start_line":141,"start_character":8,"end_line":141,"end_character":26},"in_reply_to":"1a6eadb0_d66c7537","updated":"2016-12-15 02:40:20.000000000","message":"Done","commit_id":"17f58a2a5b90f653d5194b2978e0f4eb71ae4e40"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ace2dea761bed59ecab9512e4de6e8456a122c36","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    def test_check_required_fd_types(self):"},{"line_number":146,"context_line":"        required_fd_types \u003d self.types"},{"line_number":147,"context_line":"        fd_types \u003d [md[\u0027storlets\u0027][\u0027type\u0027] for md in self.metadata]"},{"line_number":148,"context_line":"        self.assertIsNone(self.dtg._check_required_fd_types("},{"line_number":149,"context_line":"                          fd_types, required_fd_types))"},{"line_number":150,"context_line":"        with self.assertRaises(ValueError):"},{"line_number":151,"context_line":"            fd_types \u003d [md[\u0027storlets\u0027][\u0027type\u0027] for md in self.metadata]"}],"source_content_type":"text/x-python","patch_set":27,"id":"1a6eadb0_5667854c","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":25},"updated":"2016-12-15 01:34:56.000000000","message":"ditto","commit_id":"17f58a2a5b90f653d5194b2978e0f4eb71ae4e40"},{"author":{"_account_id":17901,"name":"Akihito Takai","email":"takaiak@nttdata.co.jp","username":"AkihitoTakai"},"change_message_id":"9c1b6598c7f20b11577fa0ab989846e42e4382e1","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    def test_check_required_fd_types(self):"},{"line_number":146,"context_line":"        required_fd_types \u003d self.types"},{"line_number":147,"context_line":"        fd_types \u003d [md[\u0027storlets\u0027][\u0027type\u0027] for md in self.metadata]"},{"line_number":148,"context_line":"        self.assertIsNone(self.dtg._check_required_fd_types("},{"line_number":149,"context_line":"                          fd_types, required_fd_types))"},{"line_number":150,"context_line":"        with self.assertRaises(ValueError):"},{"line_number":151,"context_line":"            fd_types \u003d [md[\u0027storlets\u0027][\u0027type\u0027] for md in self.metadata]"}],"source_content_type":"text/x-python","patch_set":27,"id":"1a6eadb0_71e56bda","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":25},"in_reply_to":"1a6eadb0_5667854c","updated":"2016-12-15 02:40:20.000000000","message":"Done","commit_id":"17f58a2a5b90f653d5194b2978e0f4eb71ae4e40"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"70ef330ed11299eca15ebed8ac68f2c921f5a6c7","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.metadata \u003d []"},{"line_number":56,"context_line":"        self.params \u003d {\u0027param1\u0027: \u0027paramvalue1\u0027}"},{"line_number":57,"context_line":"        self.task_id \u003d \u0027id\u0027"},{"line_number":58,"context_line":"        with mock.patch(\u0027storlets.sbus.datagram.SBusDatagram._check_fd_nums\u0027),\\"},{"line_number":59,"context_line":"            mock.patch("},{"line_number":60,"context_line":"                \u0027storlets.sbus.datagram.SBusDatagram.\u0027"},{"line_number":61,"context_line":"                \u0027_check_required_fd_types\u0027):"},{"line_number":62,"context_line":"            self.dtg \u003d SBusDatagram(self.command, self.fds, self.metadata,"},{"line_number":63,"context_line":"                                    self.params, self.task_id)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"1a6eadb0_c18027fa","line":61,"range":{"start_line":58,"start_character":7,"end_line":61,"end_character":44},"updated":"2016-12-15 08:24:36.000000000","message":"I think this is guilty because any other tests can assert nothing because both method is patched wiht MagicMock here.\n\nI\u0027m now writing the fix to resolve the problem. Please wait a bit to progress this patch.","commit_id":"d2bb520623cd78b8554d741a27e5b9fabc3d4be7"}]}
