#!/usr/bin/env python3 import os import sys from testflows.core import * append_path(sys.path, "..") from helpers.cluster import Cluster from helpers.argparser import argparser from datetime64_extended_range.requirements import * from datetime64_extended_range.common import * # cross-outs # https://github.com/ClickHouse/ClickHouse/issues/16581#issuecomment-804360350: 128 and 256-bit types are not supported for now # https://github.com/ClickHouse/ClickHouse/issues/17079#issuecomment-783396589 : leap seconds unsupported # https://github.com/ClickHouse/ClickHouse/issues/22824 : dateDiff not working woth dt64 # https://github.com/ClickHouse/ClickHouse/issues/22852 : formatDateTime wrong value # https://github.com/ClickHouse/ClickHouse/issues/22854 : timeSlot(), toMonday() wrong when out of normal # https://github.com/ClickHouse/ClickHouse/issues/16260 : timeSlots(), dateDiff() not working with DT64 # https://github.com/ClickHouse/ClickHouse/issues/22927#issuecomment-816574952 : toRelative...Num() wrong when out of normal range # https://github.com/ClickHouse/ClickHouse/issues/22928 : toStartOf...() wrong when out of normal range # https://github.com/ClickHouse/ClickHouse/issues/22929 : toUnixTimestamp() exception when out of normal # https://github.com/ClickHouse/ClickHouse/issues/22930 : toWeek() # https://github.com/ClickHouse/ClickHouse/issues/22948 : toYearWeek() # https://github.com/ClickHouse/ClickHouse/issues/22959 : toUnixTimestamp64*() wrong fractal seconds treatment # For `reference times` test it is unclear how to evaluate correctness - majority of test cases are correct, and ONLY # Juba and Monrovia timezones are damaged - probably, due to wrong DST shifts lookup tables xfails = { "type conversion/to int 8 16 32 64 128 256/:": [ ( Fail, "https://github.com/ClickHouse/ClickHouse/issues/16581#issuecomment-804360350", ) ], "type conversion/to uint 8 16 32 64 256/:": [ ( Fail, "https://github.com/ClickHouse/ClickHouse/issues/16581#issuecomment-804360350", ) ], "non existent time/leap seconds/:": [ ( Fail, "https://github.com/ClickHouse/ClickHouse/issues/17079#issuecomment-783396589", ) ], "date time funcs/date diff/:": [ (Fail, "https://github.com/ClickHouse/ClickHouse/issues/22824") ], "date time funcs/format date time/:": [ (Fail, "https://github.com/ClickHouse/ClickHouse/issues/22852") ], "date time funcs/time slot/:": [ (Fail, "https://github.com/ClickHouse/ClickHouse/issues/22854") ], "date time funcs/to monday/:": [ (Fail, "https://github.com/ClickHouse/ClickHouse/issues/22854") ], "date time funcs/time slots/:": [ (Fail, "https://github.com/ClickHouse/ClickHouse/issues/16260") ], "date time funcs/to relative :/:": [ ( Fail, "https://github.com/ClickHouse/ClickHouse/issues/22927#issuecomment-816574952", ) ], "date time funcs/to start of :/:": [ (Fail, "https://github.com/ClickHouse/ClickHouse/issues/22928") ], "date time funcs/to unix timestamp/:": [ (Fail, "https://github.com/ClickHouse/ClickHouse/issues/22929") ], "date time funcs/to week/:": [ (Fail, "https://github.com/ClickHouse/ClickHouse/issues/22930") ], "date time funcs/to year week/:": [ (Fail, "https://github.com/ClickHouse/ClickHouse/issues/22948") ], "type conversion/to unix timestamp64 */:": [ (Fail, "https://github.com/ClickHouse/ClickHouse/issues/22959") ], "type conversion/from unix timestamp64 */:": [ (Fail, "https://github.com/ClickHouse/ClickHouse/issues/22959") ], "type conversion/to int 8 16 32 64 128 256/:": [ ( Fail, "https://github.com/ClickHouse/ClickHouse/issues/16581#issuecomment-804360350", ) ], "reference times/:": [(Fail, "check procedure unclear")], # need to investigate "type conversion/to datetime/cast=True": [(Fail, "need to investigate")], "date time funcs/today": [(Fail, "need to investigate")], } @TestModule @Name("datetime64 extended range") @ArgumentParser(argparser) @Specifications(SRS_010_ClickHouse_DateTime64_Extended_Range) @Requirements( RQ_SRS_010_DateTime64_ExtendedRange("1.0"), ) @XFails(xfails) def regression( self, local, clickhouse_binary_path, clickhouse_version=None, stress=False ): """ClickHouse DateTime64 Extended Range regression module.""" nodes = { "clickhouse": ("clickhouse1", "clickhouse2", "clickhouse3"), } if stress is not None: self.context.stress = stress self.context.clickhouse_version = clickhouse_version with Cluster( local, clickhouse_binary_path, nodes=nodes, docker_compose_project_dir=os.path.join( current_dir(), "datetime64_extended_range_env" ), ) as cluster: self.context.cluster = cluster with Pool(2) as pool: try: Scenario( run=load("datetime64_extended_range.tests.generic", "generic"), parallel=True, executor=pool, ) Scenario( run=load( "datetime64_extended_range.tests.non_existent_time", "feature" ), parallel=True, executor=pool, ) Scenario( run=load( "datetime64_extended_range.tests.reference_times", "reference_times", ), parallel=True, executor=pool, ) Scenario( run=load( "datetime64_extended_range.tests.date_time_functions", "date_time_funcs", ), parallel=True, executor=pool, ) Scenario( run=load( "datetime64_extended_range.tests.type_conversion", "type_conversion", ), parallel=True, executor=pool, ) finally: join() if main(): regression()