예제 #1
0
 def test_union_wildcard_one_table(self):
     mock_kusto_client = MockKustoClient(
         tables_response=mock_tables_response([
             ('test_table_1', [('foo', _KustoType.STRING),
                               ('bar', _KustoType.INT)]),
             ('other_table_2', [('baz', _KustoType.BOOL)])
         ]),
         record_metadata=True,
     )
     db = PyKustoClient(mock_kusto_client,
                        fetch_by_default=False)['test_db']
     db.blocking_refresh()
     self.assertEqual(
         [
             RecordedQuery(
                 'test_db',
                 '.show database schema | project TableName, ColumnName, ColumnType | limit 10000'
             )
         ],
         mock_kusto_client.recorded_queries,
     )
     table = db.get_table('test_table_*')
     self.assertEqual(type(table.foo), _StringColumn)
     self.assertEqual(type(table.bar), _NumberColumn)
     self.assertEqual(type(table['baz']), _AnyTypeColumn)
예제 #2
0
 def test_column_fetch(self):
     mock_kusto_client = MockKustoClient(
         columns_response=mock_columns_response([('foo', _KustoType.STRING),
                                                 ('bar', _KustoType.INT)]),
         record_metadata=True,
     )
     table = PyKustoClient(mock_kusto_client,
                           fetch_by_default=False)['test_db']['mock_table']
     table.blocking_refresh()
     # Fetch query
     self.assertEqual(
         [
             RecordedQuery(
                 'test_db',
                 '.show table mock_table | project AttributeName, AttributeType | limit 10000'
             )
         ],
         mock_kusto_client.recorded_queries,
     )
     # Dot notation
     self.assertEqual(type(table.foo), _StringColumn)
     self.assertEqual(type(table.bar), _NumberColumn)
     # Bracket notation
     self.assertEqual(type(table['foo']), _StringColumn)
     self.assertEqual(type(table['bar']), _NumberColumn)
     self.assertEqual(type(table['baz']), _AnyTypeColumn)
예제 #3
0
 def test_table_fetch(self):
     mock_kusto_client = MockKustoClient(
         tables_response=mock_tables_response([
             ('mock_table', [('foo', _KustoType.STRING),
                             ('bar', _KustoType.INT)])
         ]),
         record_metadata=True,
     )
     db = PyKustoClient(mock_kusto_client,
                        fetch_by_default=False)['test_db']
     db.blocking_refresh()
     self.assertEqual(
         [
             RecordedQuery(
                 'test_db',
                 '.show database schema | project TableName, ColumnName, ColumnType | limit 10000'
             )
         ],
         mock_kusto_client.recorded_queries,
     )
     table = db.mock_table
     # Table columns
     self.assertEqual(type(table.foo), _StringColumn)
     self.assertEqual(type(table.bar), _NumberColumn)
     self.assertEqual(type(table['baz']), _AnyTypeColumn)
     # Bracket notation
     self.assertEqual(type(db['other_table']['foo']), _AnyTypeColumn)
     # Dot notation error
     self.assertRaises(
         AttributeError(
             "PyKustoClient(test_cluster.kusto.windows.net).Database(test_db) has no attribute 'test_table_1'"
         ), lambda: db.test_table_1)
예제 #4
0
 def test_union_column_name_conflict(self):
     mock_client = MockKustoClient(
         tables_response=mock_tables_response([
             ('test_table_1', [('foo', _KustoType.STRING), ('bar', _KustoType.INT)]),
             ('test_table_2', [('foo', _KustoType.BOOL)])
         ]),
         getschema_response=mock_getschema_response([
             ('foo_string', _KustoType.STRING), ('bar', _KustoType.INT), ('foo_bool', _KustoType.BOOL)
         ]),
         record_metadata=True,
     )
     db = PyKustoClient(mock_client, fetch_by_default=False)['test_db']
     db.blocking_refresh()
     table = db.get_table('test_table_*')
     table.blocking_refresh()  # To trigger name conflict resolution
     self.assertEqual(
         [
             # First trying the usual fetch
             RecordedQuery('test_db', '.show database schema | project TableName, ColumnName, ColumnType | limit 10000'),
             # Fallback for name conflict resolution
             RecordedQuery('test_db', 'union test_table_* | getschema | project ColumnName, DataType | limit 10000')
         ],
         mock_client.recorded_queries,
     )
     self.assertType(table.foo_string, _StringColumn)
     self.assertType(table.bar, _NumberColumn)
     self.assertType(table.foo_bool, _BooleanColumn)
예제 #5
0
 def test_union_wildcard_one_table(self):
     mock_client = MockKustoClient(record_metadata=True)
     db = PyKustoClient(mock_client, fetch_by_default=False)['test_db']
     db.blocking_refresh()
     self.assertEqual(
         [RecordedQuery('test_db', '.show database schema | project TableName, ColumnName, ColumnType | limit 10000')],
         mock_client.recorded_queries,
     )
     table = db.get_table('mock_table_*')
     self.assertType(table.foo, _AnyTypeColumn)
     self.assertType(table.bar, _AnyTypeColumn)
     self.assertType(table['baz'], _BooleanColumn)
예제 #6
0
 def test_two_tables_fetch(self):
     mock_client = MockKustoClient(record_metadata=True)
     db = PyKustoClient(mock_client, fetch_by_default=False)['test_db']
     db.blocking_refresh()
     self.assertEqual(
         [RecordedQuery('test_db', '.show database schema | project TableName, ColumnName, ColumnType | limit 10000')],
         mock_client.recorded_queries,
     )
     # Table columns
     self.assertType(db.mock_table.foo, _StringColumn)
     self.assertType(db.mock_table.bar, _NumberColumn)
     self.assertType(db.mock_table_2['baz'], _BooleanColumn)
     self.assertType(db['other_table']['foo'], _AnyTypeColumn)
     # Union
     table = db.get_table('mock_table', 'mock_table_2')
     self.assertType(table.foo, _StringColumn)
     self.assertType(table.bar, _NumberColumn)
     self.assertType(table.baz, _BooleanColumn)
     # Wildcard
     table = db.get_table('mock_*')
     self.assertType(table.foo, _StringColumn)
     self.assertType(table.bar, _NumberColumn)
     self.assertType(table.baz, _BooleanColumn)