|
1 | 1 | #
|
2 | 2 | # Copyright (c) 2016-2024 Deephaven Data Labs and Patent Pending
|
3 | 3 | #
|
4 |
| - |
5 | 4 | import unittest
|
6 | 5 | from time import sleep
|
7 | 6 |
|
@@ -54,26 +53,21 @@ def test_time_table(self):
|
54 | 53 | t = session.time_table(period=100000)
|
55 | 54 | self.assertFalse(t.is_static)
|
56 | 55 | session.bind_table("t", t)
|
57 |
| - session.run_script(""" |
| 56 | + |
| 57 | + console_script = (""" |
58 | 58 | from deephaven import empty_table
|
59 | 59 | try:
|
60 | 60 | del t1
|
61 | 61 | except NameError:
|
62 | 62 | pass
|
63 | 63 | t1 = empty_table(0) if t.is_blink else None
|
64 | 64 | """)
|
| 65 | + session.run_script(console_script) |
65 | 66 | self.assertNotIn("t1", session.tables)
|
66 | 67 |
|
67 | 68 | t = session.time_table(period=100000, blink_table=True)
|
68 | 69 | session.bind_table("t", t)
|
69 |
| - session.run_script(""" |
70 |
| -from deephaven import empty_table |
71 |
| -try: |
72 |
| - del t1 |
73 |
| -except NameError: |
74 |
| - pass |
75 |
| -t1 = empty_table(0) if t.is_blink else None |
76 |
| -""") |
| 70 | + session.run_script(console_script) |
77 | 71 | self.assertIn("t1", session.tables)
|
78 | 72 |
|
79 | 73 | def test_merge_tables(self):
|
@@ -273,6 +267,78 @@ def test_auto_close(self):
|
273 | 267 | session = None
|
274 | 268 | self.assertIsNone(session)
|
275 | 269 |
|
| 270 | + def test_blink_input_table(self): |
| 271 | + pa_types = [ |
| 272 | + pa.bool_(), |
| 273 | + pa.int8(), |
| 274 | + pa.int16(), |
| 275 | + pa.int32(), |
| 276 | + pa.int64(), |
| 277 | + pa.timestamp('ns', tz='UTC'), |
| 278 | + pa.float32(), |
| 279 | + pa.float64(), |
| 280 | + pa.string(), |
| 281 | + ] |
| 282 | + pa_data = [ |
| 283 | + pa.array([True, False]), |
| 284 | + pa.array([2 ** 7 - 1, -2 ** 7 + 1]), |
| 285 | + pa.array([2 ** 15 - 1, -2 ** 15 + 1]), |
| 286 | + pa.array([2 ** 31 - 1, -2 ** 31 + 1]), |
| 287 | + pa.array([2 ** 63 - 1, -2 ** 63 + 1]), |
| 288 | + pa.array([pd.Timestamp('2017-01-01T12:01:01', tz='UTC'), |
| 289 | + pd.Timestamp('2017-01-01T11:01:01', tz='Europe/Paris')]), |
| 290 | + pa.array([1.1, 2.2], pa.float32()), |
| 291 | + pa.array([1.1, 2.2], pa.float64()), |
| 292 | + pa.array(["foo", "bar"]), |
| 293 | + ] |
| 294 | + fields = [pa.field(f"f{i}", ty) for i, ty in enumerate(pa_types)] |
| 295 | + schema = pa.schema(fields) |
| 296 | + pa_table = pa.table(pa_data, schema=schema) |
| 297 | + with Session() as session: |
| 298 | + dh_table = session.import_table(pa_table) |
| 299 | + |
| 300 | + with self.subTest("Create blink Input Table"): |
| 301 | + with self.assertRaises(ValueError): |
| 302 | + session.input_table(schema=schema, key_cols="f1", blink_table=True) |
| 303 | + blink_input_table = session.input_table(schema=schema, blink_table=True) |
| 304 | + pa_table = blink_input_table.to_arrow() |
| 305 | + self.assertEqual(schema, pa_table.schema) |
| 306 | + session.bind_table("t", blink_input_table) |
| 307 | + console_script = (""" |
| 308 | +from deephaven import empty_table |
| 309 | +try: |
| 310 | + del t1 |
| 311 | +except NameError: |
| 312 | + pass |
| 313 | +t1 = empty_table(0) if t.is_blink else None |
| 314 | + """) |
| 315 | + session.run_script(console_script) |
| 316 | + self.assertIn("t1", session.tables) |
| 317 | + |
| 318 | + with self.assertRaises(ValueError): |
| 319 | + session.input_table(schema=schema, init_table=blink_input_table, blink_table=True) |
| 320 | + with self.assertRaises(ValueError): |
| 321 | + session.input_table(key_cols="f0", blink_table=True) |
| 322 | + |
| 323 | + with self.subTest("blink InputTable ops"): |
| 324 | + session.bind_table("dh_table", dh_table) |
| 325 | + console_script = (""" |
| 326 | +from deephaven import empty_table |
| 327 | +try: |
| 328 | + del t1 |
| 329 | +except NameError: |
| 330 | + pass |
| 331 | +t.add(dh_table) |
| 332 | +t.await_update() |
| 333 | +t1 = empty_table(0) if t.size == 2 else None |
| 334 | + """) |
| 335 | + session.run_script(console_script) |
| 336 | + self.assertIn("t1", session.tables) |
| 337 | + |
| 338 | + with self.assertRaises(PermissionError): |
| 339 | + blink_input_table.delete(dh_table.select(["f1"])) |
| 340 | + |
| 341 | + |
276 | 342 |
|
277 | 343 | if __name__ == '__main__':
|
278 | 344 | unittest.main()
|
0 commit comments