예제 #1
0
    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