def test_invalidate(self): with patch('impala.dbms.ImpalaDbms._get_different_tables' ) as get_different_tables: with patch( 'desktop.models.ClusterConfig.get_hive_metastore_interpreters' ) as get_hive_metastore_interpreters: ddms = ImpalaDbms(Mock(query_server={'server_name': ''}), None) get_different_tables.return_value = ['customers'] get_hive_metastore_interpreters.return_value = [] assert_raises(PopupException, ddms.invalidate, 'default') # No hive/metastore configured get_hive_metastore_interpreters.return_value = ['hive'] ddms.invalidate('default') ddms.client.query.assert_called_once_with( ddms.client.query.call_args[0][0]) assert_true('customers' in ddms.client.query.call_args[0] [0].hql_query) # diff of 1 table get_different_tables.return_value = [ 'customers', '', '', '', '', '', '', '', '', '', '' ] assert_raises(PopupException, ddms.invalidate, 'default') # diff of 11 tables. Limit is 10. ddms.invalidate('default', 'customers') assert_true(ddms.client.query.call_count == 2) # Second call assert_true('customers' in ddms.client.query.call_args[0] [0].hql_query) # invalidate 1 table ddms.invalidate() assert_true(ddms.client.query.call_count == 3) # Third call assert_true('customers' not in ddms.client.query.call_args[0] [0].hql_query) # Full invalidate