)]}'
{"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"27e482180b4e3d162e36c4e40033fa3d989018e7","unresolved":false,"context_lines":[{"line_number":2173,"context_line":"    def test_logout_success(self):"},{"line_number":2174,"context_line":"        self.driver.client.logout()"},{"line_number":2175,"context_line":""},{"line_number":2176,"context_line":"    def test_assert_rest_result(self):"},{"line_number":2177,"context_line":"        fake_result \u003d {"},{"line_number":2178,"context_line":"            \"error\": {"},{"line_number":2179,"context_line":"                \"code\": 1234567"},{"line_number":2180,"context_line":"            }"},{"line_number":2181,"context_line":"        }"},{"line_number":2182,"context_line":"        fake_msg \u003d \"fake_error_msg\""},{"line_number":2183,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":2184,"context_line":"                          self.driver.client._assert_rest_result,"},{"line_number":2185,"context_line":"                          fake_result, fake_msg)"},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"    def test_assert_data_in_result(self):"},{"line_number":2188,"context_line":"        fake_result \u003d {"},{"line_number":2189,"context_line":"            \"error\": {"},{"line_number":2190,"context_line":"                \"code\": 1234567"},{"line_number":2191,"context_line":"            }"},{"line_number":2192,"context_line":"        }"},{"line_number":2193,"context_line":"        fake_msg \u003d \"fake_error_msg\""},{"line_number":2194,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":2195,"context_line":"                          self.driver.client._assert_data_in_result,"},{"line_number":2196,"context_line":"                          fake_result, fake_msg)"},{"line_number":2197,"context_line":""},{"line_number":2198,"context_line":"    def test_create_volume_success(self):"},{"line_number":2199,"context_line":"        # Have pool info in the volume."}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_4a4f2cbe","line":2196,"range":{"start_line":2176,"start_character":0,"end_line":2196,"end_character":48},"updated":"2016-04-23 17:55:16.000000000","message":"These test cases have almost everything common, ddt can be used with rest and data arguments to combine these testcases into one for code simplification.","commit_id":"61c604adacd13f10821901baa506001d3d0cccd6"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"6a60a3cad057831f9ffe62d223c3c542d9468603","unresolved":false,"context_lines":[{"line_number":2173,"context_line":"    def test_logout_success(self):"},{"line_number":2174,"context_line":"        self.driver.client.logout()"},{"line_number":2175,"context_line":""},{"line_number":2176,"context_line":"    def test_assert_rest_result(self):"},{"line_number":2177,"context_line":"        fake_result \u003d {"},{"line_number":2178,"context_line":"            \"error\": {"},{"line_number":2179,"context_line":"                \"code\": 1234567"},{"line_number":2180,"context_line":"            }"},{"line_number":2181,"context_line":"        }"},{"line_number":2182,"context_line":"        fake_msg \u003d \"fake_error_msg\""},{"line_number":2183,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":2184,"context_line":"                          self.driver.client._assert_rest_result,"},{"line_number":2185,"context_line":"                          fake_result, fake_msg)"},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"    def test_assert_data_in_result(self):"},{"line_number":2188,"context_line":"        fake_result \u003d {"},{"line_number":2189,"context_line":"            \"error\": {"},{"line_number":2190,"context_line":"                \"code\": 1234567"},{"line_number":2191,"context_line":"            }"},{"line_number":2192,"context_line":"        }"},{"line_number":2193,"context_line":"        fake_msg \u003d \"fake_error_msg\""},{"line_number":2194,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":2195,"context_line":"                          self.driver.client._assert_data_in_result,"},{"line_number":2196,"context_line":"                          fake_result, fake_msg)"},{"line_number":2197,"context_line":""},{"line_number":2198,"context_line":"    def test_create_volume_success(self):"},{"line_number":2199,"context_line":"        # Have pool info in the volume."}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_e8aa76d1","line":2196,"range":{"start_line":2176,"start_character":0,"end_line":2196,"end_character":48},"in_reply_to":"1a122d0e_4a4f2cbe","updated":"2016-04-25 03:02:22.000000000","message":"Done","commit_id":"61c604adacd13f10821901baa506001d3d0cccd6"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"27e482180b4e3d162e36c4e40033fa3d989018e7","unresolved":false,"context_lines":[{"line_number":2242,"context_line":"        lun_info \u003d self.driver.create_volume(temp_volume)"},{"line_number":2243,"context_line":"        self.assertEqual(\u00271\u0027, lun_info[\u0027provider_location\u0027])"},{"line_number":2244,"context_line":""},{"line_number":2245,"context_line":"    def test_create_volume_from_snapshot_success(self):"},{"line_number":2246,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_snapshot_id_by_name\u0027,"},{"line_number":2247,"context_line":"                         mock.Mock(return_value\u003d\u002711\u0027))"},{"line_number":2248,"context_line":"        lun_info \u003d self.driver.create_volume_from_snapshot(test_volume,"},{"line_number":2249,"context_line":"                                                           test_volume)"},{"line_number":2250,"context_line":"        self.assertEqual(\u00271\u0027, lun_info[\u0027provider_location\u0027])"},{"line_number":2251,"context_line":""},{"line_number":2252,"context_line":"    def test_create_clone_volume_success(self):"},{"line_number":2253,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_snapshot_id_by_name\u0027,"},{"line_number":2254,"context_line":"                         mock.Mock(return_value\u003d\u002711\u0027))"},{"line_number":2255,"context_line":"        lun_info \u003d self.driver.create_cloned_volume(test_volume, test_volume)"},{"line_number":2256,"context_line":"        self.assertEqual(\u00271\u0027, lun_info[\u0027provider_location\u0027])"},{"line_number":2257,"context_line":""},{"line_number":2258,"context_line":"    def test_create_clone_volume_fail_with_volume_nonexistent(self):"},{"line_number":2259,"context_line":"        self.mock_object(huawei_driver.HuaweiBaseDriver,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_6adb08ee","line":2256,"range":{"start_line":2245,"start_character":0,"end_line":2256,"end_character":60},"updated":"2016-04-23 17:55:16.000000000","message":"same as above... test_clone_and_volume_from_snapshot(self)","commit_id":"61c604adacd13f10821901baa506001d3d0cccd6"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"27e482180b4e3d162e36c4e40033fa3d989018e7","unresolved":false,"context_lines":[{"line_number":2297,"context_line":"                          self.driver.delete_volume, replication_volume)"},{"line_number":2298,"context_line":""},{"line_number":2299,"context_line":"    def test_migrate_volume_success_no_data(self):"},{"line_number":2300,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2301,"context_line":"                               \"ID\": \"9\","},{"line_number":2302,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2303,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2304,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2305,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2306,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2307,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2308,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2309,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2310,"context_line":"                               \"TYPE\": 253,"},{"line_number":2311,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2312,"context_line":"                               }],"},{"line_number":2313,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2314,"context_line":"                               \"description\": \"0\"}"},{"line_number":2315,"context_line":"                     }"},{"line_number":2316,"context_line":"        moved \u003d False"},{"line_number":2317,"context_line":"        empty_dict \u003d {}"},{"line_number":2318,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2319,"context_line":"                         mock.Mock(side_effect\u003d[{}, task_info]))"},{"line_number":2320,"context_line":"        moved, model_update \u003d self.driver.migrate_volume(None,"},{"line_number":2321,"context_line":"                                                         test_volume,"},{"line_number":2322,"context_line":"                                                         test_host,"},{"line_number":2323,"context_line":"                                                         None)"},{"line_number":2324,"context_line":"        self.assertTrue(moved)"},{"line_number":2325,"context_line":"        self.assertEqual(empty_dict, model_update)"},{"line_number":2326,"context_line":""},{"line_number":2327,"context_line":"    def test_migrate_volume_success_with_replication(self):"},{"line_number":2328,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2329,"context_line":"                               \"ID\": \"9\","},{"line_number":2330,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2331,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2332,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2333,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2334,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2335,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2336,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2337,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2338,"context_line":"                               \"TYPE\": 253,"},{"line_number":2339,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2340,"context_line":"                               }],"},{"line_number":2341,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2342,"context_line":"                               \"description\": \"0\"}"},{"line_number":2343,"context_line":"                     }"},{"line_number":2344,"context_line":"        moved \u003d False"},{"line_number":2345,"context_line":"        empty_dict \u003d {}"},{"line_number":2346,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2347,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2348,"context_line":"        moved, model_update \u003d self.driver.migrate_volume(None,"},{"line_number":2349,"context_line":"                                                         replication_volume,"},{"line_number":2350,"context_line":"                                                         test_host,"},{"line_number":2351,"context_line":"                                                         None)"},{"line_number":2352,"context_line":"        self.assertTrue(moved)"},{"line_number":2353,"context_line":"        self.assertEqual(empty_dict, model_update)"},{"line_number":2354,"context_line":""},{"line_number":2355,"context_line":"    def test_migrate_volume_fail_migration_fault(self):"},{"line_number":2356,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2357,"context_line":"                               \"ID\": \"9\","},{"line_number":2358,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2359,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2360,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2361,"context_line":"                               \"RUNNINGSTATUS\": \"74\","},{"line_number":2362,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2363,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2364,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2365,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2366,"context_line":"                               \"TYPE\": 253,"},{"line_number":2367,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2368,"context_line":"                               }],"},{"line_number":2369,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2370,"context_line":"                               \"description\": \"0\"}"},{"line_number":2371,"context_line":"                     }"},{"line_number":2372,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2373,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2374,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":2375,"context_line":"                          self.driver.migrate_volume,"},{"line_number":2376,"context_line":"                          None, test_volume, test_host, None)"},{"line_number":2377,"context_line":""},{"line_number":2378,"context_line":"    def test_migrate_volume_fail_no_migrate_task(self):"},{"line_number":2379,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2380,"context_line":"                               \"ID\": \"9\","},{"line_number":2381,"context_line":"                               \"PARENTID\": \"12\","},{"line_number":2382,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2383,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2384,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2385,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2386,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2387,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2388,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2389,"context_line":"                               \"TYPE\": 253,"},{"line_number":2390,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2391,"context_line":"                               }],"},{"line_number":2392,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2393,"context_line":"                               \"description\": \"0\"}"},{"line_number":2394,"context_line":"                     }"},{"line_number":2395,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2396,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2397,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":2398,"context_line":"                          self.driver.migrate_volume,"},{"line_number":2399,"context_line":"                          None, test_volume, test_host, None)"},{"line_number":2400,"context_line":""},{"line_number":2401,"context_line":"    def test_migrate_volume_fail_wait_for_condition(self):"},{"line_number":2402,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2403,"context_line":"                               \"ID\": \"9\","},{"line_number":2404,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2405,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2406,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2407,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2408,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2409,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2410,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2411,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2412,"context_line":"                               \"TYPE\": 253,"},{"line_number":2413,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2414,"context_line":"                               }],"},{"line_number":2415,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2416,"context_line":"                               \"description\": \"0\"}"},{"line_number":2417,"context_line":"                     }"},{"line_number":2418,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2419,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2420,"context_line":"        self.mock_object(huawei_utils, \u0027wait_for_condition\u0027,"},{"line_number":2421,"context_line":"                         mock.Mock("},{"line_number":2422,"context_line":"                             side_effect\u003dexception.VolumeBackendAPIException("},{"line_number":2423,"context_line":"                                 data\u003d\u0027err\u0027)))"},{"line_number":2424,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":2425,"context_line":"                          self.driver.migrate_volume,"},{"line_number":2426,"context_line":"                          None, test_volume, test_host, None)"},{"line_number":2427,"context_line":""},{"line_number":2428,"context_line":"    def test_check_migrate_valid_wrong_protocal(self):"},{"line_number":2429,"context_line":"        temp_host \u003d copy.deepcopy(test_host)"},{"line_number":2430,"context_line":"        temp_host[\u0027capabilities\u0027][\u0027storage_protocol\u0027] \u003d \u0027wrong\u0027"},{"line_number":2431,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2432,"context_line":"                               \"ID\": \"9\","},{"line_number":2433,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2434,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2435,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2436,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2437,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2438,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2439,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2440,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2441,"context_line":"                               \"TYPE\": 253,"},{"line_number":2442,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2443,"context_line":"                               }],"},{"line_number":2444,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2445,"context_line":"                               \"description\": \"0\"}"},{"line_number":2446,"context_line":"                     }"},{"line_number":2447,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2448,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2449,"context_line":"        self.mock_object(huawei_driver.HuaweiBaseDriver,"},{"line_number":2450,"context_line":"                         \u0027_get_original_status\u0027,"},{"line_number":2451,"context_line":"                         mock.Mock(return_value\u003d\u0027in-use\u0027))"},{"line_number":2452,"context_line":""},{"line_number":2453,"context_line":"        moved, model_update \u003d self.driver.migrate_volume(None,"},{"line_number":2454,"context_line":"                                                         test_volume,"},{"line_number":2455,"context_line":"                                                         temp_host,"},{"line_number":2456,"context_line":"                                                         None)"},{"line_number":2457,"context_line":"        self.assertFalse(moved)"},{"line_number":2458,"context_line":"        self.assertIsNone(model_update)"},{"line_number":2459,"context_line":""},{"line_number":2460,"context_line":"    def test_check_migrate_valid_pool_name(self):"},{"line_number":2461,"context_line":"        temp_host \u003d copy.deepcopy(test_host)"},{"line_number":2462,"context_line":"        temp_host[\u0027capabilities\u0027][\u0027pool_name\u0027] \u003d \u0027\u0027"},{"line_number":2463,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2464,"context_line":"                               \"ID\": \"9\","},{"line_number":2465,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2466,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2467,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2468,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2469,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2470,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2471,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2472,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2473,"context_line":"                               \"TYPE\": 253,"},{"line_number":2474,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2475,"context_line":"                               }],"},{"line_number":2476,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2477,"context_line":"                               \"description\": \"0\"}"},{"line_number":2478,"context_line":"                     }"},{"line_number":2479,"context_line":"        moved \u003d False"},{"line_number":2480,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2481,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2482,"context_line":"        moved, model_update \u003d self.driver.migrate_volume(None,"},{"line_number":2483,"context_line":"                                                         test_volume,"},{"line_number":2484,"context_line":"                                                         temp_host,"},{"line_number":2485,"context_line":"                                                         None)"},{"line_number":2486,"context_line":"        self.assertFalse(moved)"},{"line_number":2487,"context_line":"        self.assertIsNone(model_update)"},{"line_number":2488,"context_line":""},{"line_number":2489,"context_line":"    def test_migrate_volume_with_type_id(self):"},{"line_number":2490,"context_line":"        temp_volume \u003d copy.deepcopy(test_volume)"},{"line_number":2491,"context_line":"        temp_volume[\u0027volume_type_id\u0027] \u003d \u0027550c089b-bfdd-4f7f-86e1-3ba88125555c\u0027"},{"line_number":2492,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2493,"context_line":"                               \"ID\": \"9\","},{"line_number":2494,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2495,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2496,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2497,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2498,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2499,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2500,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2501,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2502,"context_line":"                               \"TYPE\": 253,"},{"line_number":2503,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2504,"context_line":"                               }],"},{"line_number":2505,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2506,"context_line":"                               \"description\": \"0\"}"},{"line_number":2507,"context_line":"                     }"},{"line_number":2508,"context_line":"        empty_dict \u003d {}"},{"line_number":2509,"context_line":"        self.mock_object(volume_types, \u0027get_volume_type\u0027,"},{"line_number":2510,"context_line":"                         mock.Mock(return_value\u003dtest_new_type))"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_4a844cb0","line":2507,"range":{"start_line":2300,"start_character":0,"end_line":2507,"end_character":22},"updated":"2016-04-23 17:55:16.000000000","message":"we can create one constant kind of field for task_info and reuse in all of highlighted functions as same data is used in all functions.\nWe may have to override some fields like PARENTID and RUNNINGSTATUS in 3-4 functions which seems reasonable then writing whole task_info data in each function.\n\nI am sorry for painting large length of code to yellow.","commit_id":"61c604adacd13f10821901baa506001d3d0cccd6"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"6a60a3cad057831f9ffe62d223c3c542d9468603","unresolved":false,"context_lines":[{"line_number":2297,"context_line":"                          self.driver.delete_volume, replication_volume)"},{"line_number":2298,"context_line":""},{"line_number":2299,"context_line":"    def test_migrate_volume_success_no_data(self):"},{"line_number":2300,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2301,"context_line":"                               \"ID\": \"9\","},{"line_number":2302,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2303,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2304,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2305,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2306,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2307,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2308,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2309,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2310,"context_line":"                               \"TYPE\": 253,"},{"line_number":2311,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2312,"context_line":"                               }],"},{"line_number":2313,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2314,"context_line":"                               \"description\": \"0\"}"},{"line_number":2315,"context_line":"                     }"},{"line_number":2316,"context_line":"        moved \u003d False"},{"line_number":2317,"context_line":"        empty_dict \u003d {}"},{"line_number":2318,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2319,"context_line":"                         mock.Mock(side_effect\u003d[{}, task_info]))"},{"line_number":2320,"context_line":"        moved, model_update \u003d self.driver.migrate_volume(None,"},{"line_number":2321,"context_line":"                                                         test_volume,"},{"line_number":2322,"context_line":"                                                         test_host,"},{"line_number":2323,"context_line":"                                                         None)"},{"line_number":2324,"context_line":"        self.assertTrue(moved)"},{"line_number":2325,"context_line":"        self.assertEqual(empty_dict, model_update)"},{"line_number":2326,"context_line":""},{"line_number":2327,"context_line":"    def test_migrate_volume_success_with_replication(self):"},{"line_number":2328,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2329,"context_line":"                               \"ID\": \"9\","},{"line_number":2330,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2331,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2332,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2333,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2334,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2335,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2336,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2337,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2338,"context_line":"                               \"TYPE\": 253,"},{"line_number":2339,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2340,"context_line":"                               }],"},{"line_number":2341,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2342,"context_line":"                               \"description\": \"0\"}"},{"line_number":2343,"context_line":"                     }"},{"line_number":2344,"context_line":"        moved \u003d False"},{"line_number":2345,"context_line":"        empty_dict \u003d {}"},{"line_number":2346,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2347,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2348,"context_line":"        moved, model_update \u003d self.driver.migrate_volume(None,"},{"line_number":2349,"context_line":"                                                         replication_volume,"},{"line_number":2350,"context_line":"                                                         test_host,"},{"line_number":2351,"context_line":"                                                         None)"},{"line_number":2352,"context_line":"        self.assertTrue(moved)"},{"line_number":2353,"context_line":"        self.assertEqual(empty_dict, model_update)"},{"line_number":2354,"context_line":""},{"line_number":2355,"context_line":"    def test_migrate_volume_fail_migration_fault(self):"},{"line_number":2356,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2357,"context_line":"                               \"ID\": \"9\","},{"line_number":2358,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2359,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2360,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2361,"context_line":"                               \"RUNNINGSTATUS\": \"74\","},{"line_number":2362,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2363,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2364,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2365,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2366,"context_line":"                               \"TYPE\": 253,"},{"line_number":2367,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2368,"context_line":"                               }],"},{"line_number":2369,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2370,"context_line":"                               \"description\": \"0\"}"},{"line_number":2371,"context_line":"                     }"},{"line_number":2372,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2373,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2374,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":2375,"context_line":"                          self.driver.migrate_volume,"},{"line_number":2376,"context_line":"                          None, test_volume, test_host, None)"},{"line_number":2377,"context_line":""},{"line_number":2378,"context_line":"    def test_migrate_volume_fail_no_migrate_task(self):"},{"line_number":2379,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2380,"context_line":"                               \"ID\": \"9\","},{"line_number":2381,"context_line":"                               \"PARENTID\": \"12\","},{"line_number":2382,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2383,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2384,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2385,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2386,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2387,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2388,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2389,"context_line":"                               \"TYPE\": 253,"},{"line_number":2390,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2391,"context_line":"                               }],"},{"line_number":2392,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2393,"context_line":"                               \"description\": \"0\"}"},{"line_number":2394,"context_line":"                     }"},{"line_number":2395,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2396,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2397,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":2398,"context_line":"                          self.driver.migrate_volume,"},{"line_number":2399,"context_line":"                          None, test_volume, test_host, None)"},{"line_number":2400,"context_line":""},{"line_number":2401,"context_line":"    def test_migrate_volume_fail_wait_for_condition(self):"},{"line_number":2402,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2403,"context_line":"                               \"ID\": \"9\","},{"line_number":2404,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2405,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2406,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2407,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2408,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2409,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2410,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2411,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2412,"context_line":"                               \"TYPE\": 253,"},{"line_number":2413,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2414,"context_line":"                               }],"},{"line_number":2415,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2416,"context_line":"                               \"description\": \"0\"}"},{"line_number":2417,"context_line":"                     }"},{"line_number":2418,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2419,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2420,"context_line":"        self.mock_object(huawei_utils, \u0027wait_for_condition\u0027,"},{"line_number":2421,"context_line":"                         mock.Mock("},{"line_number":2422,"context_line":"                             side_effect\u003dexception.VolumeBackendAPIException("},{"line_number":2423,"context_line":"                                 data\u003d\u0027err\u0027)))"},{"line_number":2424,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":2425,"context_line":"                          self.driver.migrate_volume,"},{"line_number":2426,"context_line":"                          None, test_volume, test_host, None)"},{"line_number":2427,"context_line":""},{"line_number":2428,"context_line":"    def test_check_migrate_valid_wrong_protocal(self):"},{"line_number":2429,"context_line":"        temp_host \u003d copy.deepcopy(test_host)"},{"line_number":2430,"context_line":"        temp_host[\u0027capabilities\u0027][\u0027storage_protocol\u0027] \u003d \u0027wrong\u0027"},{"line_number":2431,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2432,"context_line":"                               \"ID\": \"9\","},{"line_number":2433,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2434,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2435,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2436,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2437,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2438,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2439,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2440,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2441,"context_line":"                               \"TYPE\": 253,"},{"line_number":2442,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2443,"context_line":"                               }],"},{"line_number":2444,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2445,"context_line":"                               \"description\": \"0\"}"},{"line_number":2446,"context_line":"                     }"},{"line_number":2447,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2448,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2449,"context_line":"        self.mock_object(huawei_driver.HuaweiBaseDriver,"},{"line_number":2450,"context_line":"                         \u0027_get_original_status\u0027,"},{"line_number":2451,"context_line":"                         mock.Mock(return_value\u003d\u0027in-use\u0027))"},{"line_number":2452,"context_line":""},{"line_number":2453,"context_line":"        moved, model_update \u003d self.driver.migrate_volume(None,"},{"line_number":2454,"context_line":"                                                         test_volume,"},{"line_number":2455,"context_line":"                                                         temp_host,"},{"line_number":2456,"context_line":"                                                         None)"},{"line_number":2457,"context_line":"        self.assertFalse(moved)"},{"line_number":2458,"context_line":"        self.assertIsNone(model_update)"},{"line_number":2459,"context_line":""},{"line_number":2460,"context_line":"    def test_check_migrate_valid_pool_name(self):"},{"line_number":2461,"context_line":"        temp_host \u003d copy.deepcopy(test_host)"},{"line_number":2462,"context_line":"        temp_host[\u0027capabilities\u0027][\u0027pool_name\u0027] \u003d \u0027\u0027"},{"line_number":2463,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2464,"context_line":"                               \"ID\": \"9\","},{"line_number":2465,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2466,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2467,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2468,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2469,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2470,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2471,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2472,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2473,"context_line":"                               \"TYPE\": 253,"},{"line_number":2474,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2475,"context_line":"                               }],"},{"line_number":2476,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2477,"context_line":"                               \"description\": \"0\"}"},{"line_number":2478,"context_line":"                     }"},{"line_number":2479,"context_line":"        moved \u003d False"},{"line_number":2480,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_migration_task\u0027,"},{"line_number":2481,"context_line":"                         mock.Mock(return_value\u003dtask_info))"},{"line_number":2482,"context_line":"        moved, model_update \u003d self.driver.migrate_volume(None,"},{"line_number":2483,"context_line":"                                                         test_volume,"},{"line_number":2484,"context_line":"                                                         temp_host,"},{"line_number":2485,"context_line":"                                                         None)"},{"line_number":2486,"context_line":"        self.assertFalse(moved)"},{"line_number":2487,"context_line":"        self.assertIsNone(model_update)"},{"line_number":2488,"context_line":""},{"line_number":2489,"context_line":"    def test_migrate_volume_with_type_id(self):"},{"line_number":2490,"context_line":"        temp_volume \u003d copy.deepcopy(test_volume)"},{"line_number":2491,"context_line":"        temp_volume[\u0027volume_type_id\u0027] \u003d \u0027550c089b-bfdd-4f7f-86e1-3ba88125555c\u0027"},{"line_number":2492,"context_line":"        task_info \u003d {\"data\": [{\"ENDTIME\": \"1436816174\","},{"line_number":2493,"context_line":"                               \"ID\": \"9\","},{"line_number":2494,"context_line":"                               \"PARENTID\": \"11\","},{"line_number":2495,"context_line":"                               \"PARENTNAME\": \"xmRBHMlVRruql5vwthpPXQ\","},{"line_number":2496,"context_line":"                               \"PROCESS\": \"-1\","},{"line_number":2497,"context_line":"                               \"RUNNINGSTATUS\": \"76\","},{"line_number":2498,"context_line":"                               \"SPEED\": \"2\","},{"line_number":2499,"context_line":"                               \"STARTTIME\": \"1436816111\","},{"line_number":2500,"context_line":"                               \"TARGETLUNID\": \"1\","},{"line_number":2501,"context_line":"                               \"TARGETLUNNAME\": \"4924891454902893639\","},{"line_number":2502,"context_line":"                               \"TYPE\": 253,"},{"line_number":2503,"context_line":"                               \"WORKMODE\": \"0\""},{"line_number":2504,"context_line":"                               }],"},{"line_number":2505,"context_line":"                     \"error\": {\"code\": 0,"},{"line_number":2506,"context_line":"                               \"description\": \"0\"}"},{"line_number":2507,"context_line":"                     }"},{"line_number":2508,"context_line":"        empty_dict \u003d {}"},{"line_number":2509,"context_line":"        self.mock_object(volume_types, \u0027get_volume_type\u0027,"},{"line_number":2510,"context_line":"                         mock.Mock(return_value\u003dtest_new_type))"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_0869b2be","line":2507,"range":{"start_line":2300,"start_character":0,"end_line":2507,"end_character":22},"in_reply_to":"1a122d0e_4a844cb0","updated":"2016-04-25 03:02:22.000000000","message":"Done","commit_id":"61c604adacd13f10821901baa506001d3d0cccd6"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"27e482180b4e3d162e36c4e40033fa3d989018e7","unresolved":false,"context_lines":[{"line_number":2553,"context_line":""},{"line_number":2554,"context_line":"        self.driver.unmanage(temp_volume)"},{"line_number":2555,"context_line":""},{"line_number":2556,"context_line":"    def test_manage_existing_snapshot_fail_no_name(self):"},{"line_number":2557,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_snapshot_info\u0027,"},{"line_number":2558,"context_line":"                         mock.Mock(return_value\u003d{\u0027USERCAPACITY\u0027: 2097152}))"},{"line_number":2559,"context_line":"        external_ref \u003d {\u0027source-name\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_cabe9c63","line":2556,"range":{"start_line":2556,"start_character":1,"end_line":2556,"end_character":44},"updated":"2016-04-23 17:55:16.000000000","message":"I would suggest to sort use cases specific to resource like all test cases related to manage_existing_snapshot must be at one place and after that unmanage test cases should be started for easy maintenance and readability of code.","commit_id":"61c604adacd13f10821901baa506001d3d0cccd6"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"6a60a3cad057831f9ffe62d223c3c542d9468603","unresolved":false,"context_lines":[{"line_number":2553,"context_line":""},{"line_number":2554,"context_line":"        self.driver.unmanage(temp_volume)"},{"line_number":2555,"context_line":""},{"line_number":2556,"context_line":"    def test_manage_existing_snapshot_fail_no_name(self):"},{"line_number":2557,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_snapshot_info\u0027,"},{"line_number":2558,"context_line":"                         mock.Mock(return_value\u003d{\u0027USERCAPACITY\u0027: 2097152}))"},{"line_number":2559,"context_line":"        external_ref \u003d {\u0027source-name\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_68294689","line":2556,"range":{"start_line":2556,"start_character":1,"end_line":2556,"end_character":44},"in_reply_to":"1a122d0e_cabe9c63","updated":"2016-04-25 03:02:22.000000000","message":"Done","commit_id":"61c604adacd13f10821901baa506001d3d0cccd6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6fdbf2096355f49be06360e64231b3f9c4c38c08","unresolved":false,"context_lines":[{"line_number":4946,"context_line":""},{"line_number":4947,"context_line":"    @mock.patch.object(huawei_conf.HuaweiConf, \u0027_encode_authentication\u0027)"},{"line_number":4948,"context_line":"    @mock.patch.object(base64, \u0027b64decode\u0027)"},{"line_number":4949,"context_line":"    def test_update_config_value(self, mock_auth, mock_decode):"},{"line_number":4950,"context_line":"        self._create_fake_conf_file()"},{"line_number":4951,"context_line":"        self.addCleanup(shutil.rmtree, self.tmp_dir)"},{"line_number":4952,"context_line":"        self.addCleanup(os.remove, self.fake_xml_file)"}],"source_content_type":"text/x-python","patch_set":13,"id":"dab17558_dd22fcb8","line":4949,"updated":"2016-05-07 03:14:45.000000000","message":"The order of the mocks are wrong. \nIt should be in the reverse order of the decorators like this:\n \ndef test_update_config_value(self, mock_decode, mock_auth):\n\nSee doc:\nhttps://docs.python.org/3/library/unittest.mock.html#nesting-patch-decorators","commit_id":"a3ef58a6b0600c244d9d1f3a1a0a9e6f7a3cbe5f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"86affd794960bd238d6e16dda0a3e49645f91690","unresolved":false,"context_lines":[{"line_number":4946,"context_line":""},{"line_number":4947,"context_line":"    @mock.patch.object(huawei_conf.HuaweiConf, \u0027_encode_authentication\u0027)"},{"line_number":4948,"context_line":"    @mock.patch.object(base64, \u0027b64decode\u0027)"},{"line_number":4949,"context_line":"    def test_update_config_value(self, mock_auth, mock_decode):"},{"line_number":4950,"context_line":"        self._create_fake_conf_file()"},{"line_number":4951,"context_line":"        self.addCleanup(shutil.rmtree, self.tmp_dir)"},{"line_number":4952,"context_line":"        self.addCleanup(os.remove, self.fake_xml_file)"}],"source_content_type":"text/x-python","patch_set":13,"id":"dab17558_e14f49bb","line":4949,"in_reply_to":"dab17558_dd22fcb8","updated":"2016-05-09 01:42:10.000000000","message":"Done, thanks xing!","commit_id":"a3ef58a6b0600c244d9d1f3a1a0a9e6f7a3cbe5f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6fdbf2096355f49be06360e64231b3f9c4c38c08","unresolved":false,"context_lines":[{"line_number":4953,"context_line":""},{"line_number":4954,"context_line":"        self.huawei_conf.update_config_value()"},{"line_number":4955,"context_line":""},{"line_number":4956,"context_line":"        self.assertEqual(self.conf.san_address,"},{"line_number":4957,"context_line":"                         [\u0027http://192.0.2.69:8082/deviceManager/rest/\u0027])"},{"line_number":4958,"context_line":"        self.assertEqual(self.conf.san_product, \u0027V3\u0027)"},{"line_number":4959,"context_line":"        self.assertEqual(self.conf.san_protocol, \u0027iSCSI\u0027)"},{"line_number":4960,"context_line":"        self.assertEqual(self.conf.lun_type, constants.THICK_LUNTYPE)"}],"source_content_type":"text/x-python","patch_set":13,"id":"dab17558_d8104a51","line":4957,"range":{"start_line":4956,"start_character":0,"end_line":4957,"end_character":72},"updated":"2016-05-07 03:14:45.000000000","message":"The order should be expected, actual. It should be as follows:\n\nself.assertEqual([\u0027http://192.0.2.69:8082/deviceManager/rest/\u0027], self.conf.san_address)\n\nAll the assertEqual below has the same issue.","commit_id":"a3ef58a6b0600c244d9d1f3a1a0a9e6f7a3cbe5f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"86affd794960bd238d6e16dda0a3e49645f91690","unresolved":false,"context_lines":[{"line_number":4953,"context_line":""},{"line_number":4954,"context_line":"        self.huawei_conf.update_config_value()"},{"line_number":4955,"context_line":""},{"line_number":4956,"context_line":"        self.assertEqual(self.conf.san_address,"},{"line_number":4957,"context_line":"                         [\u0027http://192.0.2.69:8082/deviceManager/rest/\u0027])"},{"line_number":4958,"context_line":"        self.assertEqual(self.conf.san_product, \u0027V3\u0027)"},{"line_number":4959,"context_line":"        self.assertEqual(self.conf.san_protocol, \u0027iSCSI\u0027)"},{"line_number":4960,"context_line":"        self.assertEqual(self.conf.lun_type, constants.THICK_LUNTYPE)"}],"source_content_type":"text/x-python","patch_set":13,"id":"dab17558_21c83122","line":4957,"range":{"start_line":4956,"start_character":0,"end_line":4957,"end_character":72},"in_reply_to":"dab17558_d8104a51","updated":"2016-05-09 01:42:10.000000000","message":"Done thanks!","commit_id":"a3ef58a6b0600c244d9d1f3a1a0a9e6f7a3cbe5f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fad0d4753b1f983f08e066bccf2f318fbca032be","unresolved":false,"context_lines":[{"line_number":2861,"context_line":"    def test_create_smartqos_on_v3r3_with_no_qos(self,"},{"line_number":2862,"context_line":"                                                 mock_find_available_qos,"},{"line_number":2863,"context_line":"                                                 mock_qos_value,"},{"line_number":2864,"context_line":"                                                 mock_array_version):"},{"line_number":2865,"context_line":"        lun_info \u003d self.driver.create_volume(test_volume)"},{"line_number":2866,"context_line":"        self.assertEqual(\u00271\u0027, lun_info[\u0027provider_location\u0027])"},{"line_number":2867,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bab6814e_6578c22c","line":2864,"updated":"2016-05-24 05:34:50.000000000","message":"Same as below.","commit_id":"67a0498392d96b6b4c47744f7e5b9a4a72feb5d9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fad0d4753b1f983f08e066bccf2f318fbca032be","unresolved":false,"context_lines":[{"line_number":2875,"context_line":"    def test_create_smartqos_on_v3r3_with_qos(self,"},{"line_number":2876,"context_line":"                                              mock_find_available_qos,"},{"line_number":2877,"context_line":"                                              mock_qos_value,"},{"line_number":2878,"context_line":"                                              mock_array_version):"},{"line_number":2879,"context_line":"        lun_info \u003d self.driver.create_volume(test_volume)"},{"line_number":2880,"context_line":"        self.assertEqual(\u00271\u0027, lun_info[\u0027provider_location\u0027])"},{"line_number":2881,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bab6814e_45813efb","line":2878,"updated":"2016-05-24 05:34:50.000000000","message":"Mock parameter order is not right. See same comments later on line 4730.","commit_id":"67a0498392d96b6b4c47744f7e5b9a4a72feb5d9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fad0d4753b1f983f08e066bccf2f318fbca032be","unresolved":false,"context_lines":[{"line_number":2891,"context_line":"                                                   mock_activate_qos,"},{"line_number":2892,"context_line":"                                                   mock_find_available_qos,"},{"line_number":2893,"context_line":"                                                   mock_qos_value,"},{"line_number":2894,"context_line":"                                                   mock_array_version):"},{"line_number":2895,"context_line":"        mock_activate_qos.side_effect \u003d ("},{"line_number":2896,"context_line":"            exception.VolumeBackendAPIException(data\u003d\u0027Activate or deactivate \u0027"},{"line_number":2897,"context_line":"                                                \u0027QoS error. \u0027))"}],"source_content_type":"text/x-python","patch_set":15,"id":"bab6814e_a59bca71","line":2894,"updated":"2016-05-24 05:34:50.000000000","message":"Mock parameter order is not right. See same comments later on line 4730.","commit_id":"67a0498392d96b6b4c47744f7e5b9a4a72feb5d9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fad0d4753b1f983f08e066bccf2f318fbca032be","unresolved":false,"context_lines":[{"line_number":2910,"context_line":"                                                mock_create_qos,"},{"line_number":2911,"context_line":"                                                mock_find_available_qos,"},{"line_number":2912,"context_line":"                                                mock_qos_value,"},{"line_number":2913,"context_line":"                                                mock_array_version):"},{"line_number":2914,"context_line":"        mock_create_qos.side_effect \u003d ("},{"line_number":2915,"context_line":"            exception.VolumeBackendAPIException(data\u003d\u0027Create QoS policy \u0027"},{"line_number":2916,"context_line":"                                                \u0027error.\u0027))"}],"source_content_type":"text/x-python","patch_set":15,"id":"bab6814e_8594c644","line":2913,"updated":"2016-05-24 05:34:50.000000000","message":"Mock parameter order is not right. See same comments later on line 4730.","commit_id":"67a0498392d96b6b4c47744f7e5b9a4a72feb5d9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fad0d4753b1f983f08e066bccf2f318fbca032be","unresolved":false,"context_lines":[{"line_number":4727,"context_line":"                                    mock_all_pool_info,"},{"line_number":4728,"context_line":"                                    mock_pool_info,"},{"line_number":4729,"context_line":"                                    mock_hyper_domain,"},{"line_number":4730,"context_line":"                                    mock_volume_ready,"},{"line_number":4731,"context_line":"                                    ):"},{"line_number":4732,"context_line":"        mock_pair_info.side_effect \u003d ("},{"line_number":4733,"context_line":"            exception.VolumeBackendAPIException(data\u003d\u0027Error occurred.\u0027))"}],"source_content_type":"text/x-python","patch_set":15,"id":"bab6814e_e5bdd2d8","line":4730,"updated":"2016-05-24 05:34:50.000000000","message":"The mock parameters order does not looks right.  It should be in the reverse order of the mock.patch.objects.\n\ntest_create_hypermetro_fail(self, mock_hypermetro, mock_volume_ready, mock_hyper_domain_id, mock_pool_info, mock_all_pools, mock_volume_params)","commit_id":"67a0498392d96b6b4c47744f7e5b9a4a72feb5d9"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"132384fa5310d9ffd83c27567a5823d00bace08c","unresolved":false,"context_lines":[{"line_number":4727,"context_line":"                                    mock_all_pool_info,"},{"line_number":4728,"context_line":"                                    mock_pool_info,"},{"line_number":4729,"context_line":"                                    mock_hyper_domain,"},{"line_number":4730,"context_line":"                                    mock_volume_ready,"},{"line_number":4731,"context_line":"                                    ):"},{"line_number":4732,"context_line":"        mock_pair_info.side_effect \u003d ("},{"line_number":4733,"context_line":"            exception.VolumeBackendAPIException(data\u003d\u0027Error occurred.\u0027))"}],"source_content_type":"text/x-python","patch_set":15,"id":"bab6814e_e81be97e","line":4730,"in_reply_to":"bab6814e_e5bdd2d8","updated":"2016-05-24 12:09:02.000000000","message":"Thanks xing,I will check all of them.","commit_id":"67a0498392d96b6b4c47744f7e5b9a4a72feb5d9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fad0d4753b1f983f08e066bccf2f318fbca032be","unresolved":false,"context_lines":[{"line_number":4757,"context_line":"                                     \u0027remote_lun_id\u0027: None})"},{"line_number":4758,"context_line":"    @mock.patch.object(rest_client.RestClient, \u0027get_lun_id_by_name\u0027,"},{"line_number":4759,"context_line":"                       return_value\u003dNone)"},{"line_number":4760,"context_line":"    def test_hypermetroid_none_fail(self, mock_metadata, moke_metro_name):"},{"line_number":4761,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":4762,"context_line":"                          self.driver.metro.connect_volume_fc,"},{"line_number":4763,"context_line":"                          test_volume,"}],"source_content_type":"text/x-python","patch_set":15,"id":"bab6814e_25b87ae5","line":4760,"updated":"2016-05-24 05:34:50.000000000","message":"Same","commit_id":"67a0498392d96b6b4c47744f7e5b9a4a72feb5d9"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"132384fa5310d9ffd83c27567a5823d00bace08c","unresolved":false,"context_lines":[{"line_number":4757,"context_line":"                                     \u0027remote_lun_id\u0027: None})"},{"line_number":4758,"context_line":"    @mock.patch.object(rest_client.RestClient, \u0027get_lun_id_by_name\u0027,"},{"line_number":4759,"context_line":"                       return_value\u003dNone)"},{"line_number":4760,"context_line":"    def test_hypermetroid_none_fail(self, mock_metadata, moke_metro_name):"},{"line_number":4761,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":4762,"context_line":"                          self.driver.metro.connect_volume_fc,"},{"line_number":4763,"context_line":"                          test_volume,"}],"source_content_type":"text/x-python","patch_set":15,"id":"bab6814e_48e795ac","line":4760,"in_reply_to":"bab6814e_25b87ae5","updated":"2016-05-24 12:09:02.000000000","message":"Done","commit_id":"67a0498392d96b6b4c47744f7e5b9a4a72feb5d9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fad0d4753b1f983f08e066bccf2f318fbca032be","unresolved":false,"context_lines":[{"line_number":4776,"context_line":"                       return_value\u003d[])"},{"line_number":4777,"context_line":"    def test_hypermetro_connection_fail(self, mock_metadata,"},{"line_number":4778,"context_line":"                                        mock_fc_initiator,"},{"line_number":4779,"context_line":"                                        mock_host_initiators):"},{"line_number":4780,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":4781,"context_line":"                          self.driver.metro.connect_volume_fc,"},{"line_number":4782,"context_line":"                          test_volume,"}],"source_content_type":"text/x-python","patch_set":15,"id":"bab6814e_85cde688","line":4779,"updated":"2016-05-24 05:34:50.000000000","message":"same","commit_id":"67a0498392d96b6b4c47744f7e5b9a4a72feb5d9"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"132384fa5310d9ffd83c27567a5823d00bace08c","unresolved":false,"context_lines":[{"line_number":4776,"context_line":"                       return_value\u003d[])"},{"line_number":4777,"context_line":"    def test_hypermetro_connection_fail(self, mock_metadata,"},{"line_number":4778,"context_line":"                                        mock_fc_initiator,"},{"line_number":4779,"context_line":"                                        mock_host_initiators):"},{"line_number":4780,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":4781,"context_line":"                          self.driver.metro.connect_volume_fc,"},{"line_number":4782,"context_line":"                          test_volume,"}],"source_content_type":"text/x-python","patch_set":15,"id":"bab6814e_e8cac919","line":4779,"in_reply_to":"bab6814e_85cde688","updated":"2016-05-24 12:09:02.000000000","message":"Done","commit_id":"67a0498392d96b6b4c47744f7e5b9a4a72feb5d9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e902814f55d1be42c03c1b4358badb49b1470bfe","unresolved":false,"context_lines":[{"line_number":2861,"context_line":"    def test_create_smartqos_on_v3r3_with_no_qos(self,"},{"line_number":2862,"context_line":"                                                 mock_find_available_qos,"},{"line_number":2863,"context_line":"                                                 mock_qos_value,"},{"line_number":2864,"context_line":"                                                 mock_array_version):"},{"line_number":2865,"context_line":"        lun_info \u003d self.driver.create_volume(test_volume)"},{"line_number":2866,"context_line":"        self.assertEqual(\u00271\u0027, lun_info[\u0027provider_location\u0027])"},{"line_number":2867,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"bab6814e_9ea6250d","line":2864,"updated":"2016-05-26 21:37:30.000000000","message":"mock_qos_value and mock_array_version are reversed.","commit_id":"00cd66fcd2a97cdbb17cf023e687f832309e3604"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"a47ccc994ada7343dee26b1af879fc459271e051","unresolved":false,"context_lines":[{"line_number":2861,"context_line":"    def test_create_smartqos_on_v3r3_with_no_qos(self,"},{"line_number":2862,"context_line":"                                                 mock_find_available_qos,"},{"line_number":2863,"context_line":"                                                 mock_qos_value,"},{"line_number":2864,"context_line":"                                                 mock_array_version):"},{"line_number":2865,"context_line":"        lun_info \u003d self.driver.create_volume(test_volume)"},{"line_number":2866,"context_line":"        self.assertEqual(\u00271\u0027, lun_info[\u0027provider_location\u0027])"},{"line_number":2867,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9abb7d3a_10b73dd9","line":2864,"in_reply_to":"bab6814e_9ea6250d","updated":"2016-05-30 06:38:40.000000000","message":"Have amended this, thanks!","commit_id":"00cd66fcd2a97cdbb17cf023e687f832309e3604"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e902814f55d1be42c03c1b4358badb49b1470bfe","unresolved":false,"context_lines":[{"line_number":2875,"context_line":"    def test_create_smartqos_on_v3r3_with_qos(self,"},{"line_number":2876,"context_line":"                                              mock_find_available_qos,"},{"line_number":2877,"context_line":"                                              mock_qos_value,"},{"line_number":2878,"context_line":"                                              mock_array_version):"},{"line_number":2879,"context_line":"        lun_info \u003d self.driver.create_volume(test_volume)"},{"line_number":2880,"context_line":"        self.assertEqual(\u00271\u0027, lun_info[\u0027provider_location\u0027])"},{"line_number":2881,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"bab6814e_deac2def","line":2878,"updated":"2016-05-26 21:37:30.000000000","message":"Same","commit_id":"00cd66fcd2a97cdbb17cf023e687f832309e3604"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"a47ccc994ada7343dee26b1af879fc459271e051","unresolved":false,"context_lines":[{"line_number":2875,"context_line":"    def test_create_smartqos_on_v3r3_with_qos(self,"},{"line_number":2876,"context_line":"                                              mock_find_available_qos,"},{"line_number":2877,"context_line":"                                              mock_qos_value,"},{"line_number":2878,"context_line":"                                              mock_array_version):"},{"line_number":2879,"context_line":"        lun_info \u003d self.driver.create_volume(test_volume)"},{"line_number":2880,"context_line":"        self.assertEqual(\u00271\u0027, lun_info[\u0027provider_location\u0027])"},{"line_number":2881,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9abb7d3a_7078492c","line":2878,"in_reply_to":"bab6814e_deac2def","updated":"2016-05-30 06:38:40.000000000","message":"Done","commit_id":"00cd66fcd2a97cdbb17cf023e687f832309e3604"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e902814f55d1be42c03c1b4358badb49b1470bfe","unresolved":false,"context_lines":[{"line_number":2891,"context_line":"                                                   mock_activate_qos,"},{"line_number":2892,"context_line":"                                                   mock_find_available_qos,"},{"line_number":2893,"context_line":"                                                   mock_qos_value,"},{"line_number":2894,"context_line":"                                                   mock_array_version):"},{"line_number":2895,"context_line":"        mock_activate_qos.side_effect \u003d ("},{"line_number":2896,"context_line":"            exception.VolumeBackendAPIException(data\u003d\u0027Activate or deactivate \u0027"},{"line_number":2897,"context_line":"                                                \u0027QoS error. \u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"bab6814e_be7a0975","line":2894,"updated":"2016-05-26 21:37:30.000000000","message":"Same","commit_id":"00cd66fcd2a97cdbb17cf023e687f832309e3604"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"a47ccc994ada7343dee26b1af879fc459271e051","unresolved":false,"context_lines":[{"line_number":2891,"context_line":"                                                   mock_activate_qos,"},{"line_number":2892,"context_line":"                                                   mock_find_available_qos,"},{"line_number":2893,"context_line":"                                                   mock_qos_value,"},{"line_number":2894,"context_line":"                                                   mock_array_version):"},{"line_number":2895,"context_line":"        mock_activate_qos.side_effect \u003d ("},{"line_number":2896,"context_line":"            exception.VolumeBackendAPIException(data\u003d\u0027Activate or deactivate \u0027"},{"line_number":2897,"context_line":"                                                \u0027QoS error. \u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"9abb7d3a_b09bd171","line":2894,"in_reply_to":"bab6814e_be7a0975","updated":"2016-05-30 06:38:40.000000000","message":"Done","commit_id":"00cd66fcd2a97cdbb17cf023e687f832309e3604"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e902814f55d1be42c03c1b4358badb49b1470bfe","unresolved":false,"context_lines":[{"line_number":2910,"context_line":"                                                mock_create_qos,"},{"line_number":2911,"context_line":"                                                mock_find_available_qos,"},{"line_number":2912,"context_line":"                                                mock_qos_value,"},{"line_number":2913,"context_line":"                                                mock_array_version):"},{"line_number":2914,"context_line":"        mock_create_qos.side_effect \u003d ("},{"line_number":2915,"context_line":"            exception.VolumeBackendAPIException(data\u003d\u0027Create QoS policy \u0027"},{"line_number":2916,"context_line":"                                                \u0027error.\u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"bab6814e_3e8f3976","line":2913,"updated":"2016-05-26 21:37:30.000000000","message":"Same","commit_id":"00cd66fcd2a97cdbb17cf023e687f832309e3604"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"a47ccc994ada7343dee26b1af879fc459271e051","unresolved":false,"context_lines":[{"line_number":2910,"context_line":"                                                mock_create_qos,"},{"line_number":2911,"context_line":"                                                mock_find_available_qos,"},{"line_number":2912,"context_line":"                                                mock_qos_value,"},{"line_number":2913,"context_line":"                                                mock_array_version):"},{"line_number":2914,"context_line":"        mock_create_qos.side_effect \u003d ("},{"line_number":2915,"context_line":"            exception.VolumeBackendAPIException(data\u003d\u0027Create QoS policy \u0027"},{"line_number":2916,"context_line":"                                                \u0027error.\u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"9abb7d3a_50270564","line":2913,"in_reply_to":"bab6814e_3e8f3976","updated":"2016-05-30 06:38:40.000000000","message":"Done","commit_id":"00cd66fcd2a97cdbb17cf023e687f832309e3604"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"1f4b9bed316b9eec3f18d5f26fd7c6f2900591bf","unresolved":false,"context_lines":[{"line_number":3010,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":3011,"context_line":"                          self.driver.create_volume, test_volume)"},{"line_number":3012,"context_line":""},{"line_number":3013,"context_line":"    @mock.patch.object(huawei_driver.HuaweiBaseDriver, \u0027_get_volume_params\u0027,"},{"line_number":3014,"context_line":"                       return_value\u003d{\u0027smarttier\u0027: \u0027true\u0027,"},{"line_number":3015,"context_line":"                                     \u0027smartcache\u0027: \u0027true\u0027,"},{"line_number":3016,"context_line":"                                     \u0027smartpartition\u0027: \u0027true\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9abb7d3a_b1662127","line":3013,"updated":"2016-05-30 14:25:16.000000000","message":"Looks like a few duplicate patch decorator blocks used like this, can you consider refinine them to one simple decorator?","commit_id":"8c3f99e772829fd614c669193e428841ad27ca88"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"9c39c3db6a1e01c4057483a40c223f36e9110305","unresolved":false,"context_lines":[{"line_number":3010,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":3011,"context_line":"                          self.driver.create_volume, test_volume)"},{"line_number":3012,"context_line":""},{"line_number":3013,"context_line":"    @mock.patch.object(huawei_driver.HuaweiBaseDriver, \u0027_get_volume_params\u0027,"},{"line_number":3014,"context_line":"                       return_value\u003d{\u0027smarttier\u0027: \u0027true\u0027,"},{"line_number":3015,"context_line":"                                     \u0027smartcache\u0027: \u0027true\u0027,"},{"line_number":3016,"context_line":"                                     \u0027smartpartition\u0027: \u0027true\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9abb7d3a_38515f0f","line":3013,"in_reply_to":"9abb7d3a_b1662127","updated":"2016-05-31 01:57:56.000000000","message":"Yes, these two test cases can be merged into one, thanks!","commit_id":"8c3f99e772829fd614c669193e428841ad27ca88"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"147cee7c7c45f75491948d10fe5aaeaad2fe3f1b","unresolved":false,"context_lines":[{"line_number":2956,"context_line":""},{"line_number":2957,"context_line":"    @ddt.data({\u0027smarttier\u0027: \u0027true\u0027, \u0027smartcache\u0027: \u0027true\u0027,"},{"line_number":2958,"context_line":"               \u0027smartpartition\u0027: \u0027true\u0027,"},{"line_number":2959,"context_line":"               \u0027thin_provisioning_support\u0027: \u0027false\u0027,"},{"line_number":2960,"context_line":"               \u0027thick_provisioning_support\u0027: \u0027true\u0027,"},{"line_number":2961,"context_line":"               \u0027policy\u0027: \u00274\u0027, \u0027cachename\u0027: \u0027cache-test\u0027,"},{"line_number":2962,"context_line":"               \u0027partitionname\u0027: \u0027partition-test\u0027},"}],"source_content_type":"text/x-python","patch_set":20,"id":"7aa08908_663b9dec","line":2959,"updated":"2016-06-06 04:08:07.000000000","message":"Why is this a string \u0027false\u0027, not a boolean \u0027False\u0027 as in capabilities reporting?","commit_id":"f75fd9baae162e871619b26ae76ff450c92fb3bc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"3f8f37f5e0df0c47533133f0a87f026554619919","unresolved":false,"context_lines":[{"line_number":2956,"context_line":""},{"line_number":2957,"context_line":"    @ddt.data({\u0027smarttier\u0027: \u0027true\u0027, \u0027smartcache\u0027: \u0027true\u0027,"},{"line_number":2958,"context_line":"               \u0027smartpartition\u0027: \u0027true\u0027,"},{"line_number":2959,"context_line":"               \u0027thin_provisioning_support\u0027: \u0027false\u0027,"},{"line_number":2960,"context_line":"               \u0027thick_provisioning_support\u0027: \u0027true\u0027,"},{"line_number":2961,"context_line":"               \u0027policy\u0027: \u00274\u0027, \u0027cachename\u0027: \u0027cache-test\u0027,"},{"line_number":2962,"context_line":"               \u0027partitionname\u0027: \u0027partition-test\u0027},"}],"source_content_type":"text/x-python","patch_set":20,"id":"7aa08908_ee58a258","line":2959,"in_reply_to":"7aa08908_663b9dec","updated":"2016-06-12 08:55:36.000000000","message":"Done, thanks!","commit_id":"f75fd9baae162e871619b26ae76ff450c92fb3bc"}],"cinder/tests/unit/volume/drivers/huawei/test_huawei_drivers.py":[{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"6fbd83f102718414f84af55061aac6c5f178ecb3","unresolved":false,"context_lines":[{"line_number":2516,"context_line":"                             exception.VolumeBackendAPIException(data\u003d\u0027err\u0027))))"},{"line_number":2517,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_snapshot_id_by_name\u0027,"},{"line_number":2518,"context_line":"                         mock.Mock(return_value\u003d\u0027ID1\u0027))"},{"line_number":2519,"context_line":"        self.driver.unmanage_snapshot(self.snapshot)"},{"line_number":2520,"context_line":""},{"line_number":2521,"context_line":"    def test_manage_existing_get_size_no_name(self):"},{"line_number":2522,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_info\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9ad45d7e_e430330a","line":2519,"range":{"start_line":2519,"start_character":0,"end_line":2519,"end_character":52},"updated":"2016-08-08 12:44:05.000000000","message":"If you are mocking things, you expect that they will be called. Add asserts to test it.\nYou could use \u0027assert_called_once_with\u0027 or \u0027function_mocked.called\u0027","commit_id":"1881bc267b361759a5c34a279905b19fbaac791c"}]}
