Reduce regression test runtime

-Added 2 more schedules for task-tracker and multi-binary
 instead of running multi_schedule 3 times
-set task-tracker-delay for each long running schedule
pull/585/head
Murat Tuncer 2016-06-07 16:30:42 +03:00
parent 936fab3610
commit 9cb6a022a5
7 changed files with 166 additions and 14 deletions

View File

@ -37,7 +37,7 @@ output_files := $(patsubst $(citus_abs_srcdir)/output/%.source,expected/%.out, $
# intermediate, for muscle memory backward compatibility.
check: check-full
# check-full triggers all tests that ought to be run routinely
check-full: check-multi check-multi-task-tracker check-multi-binary check-worker check-multi-fdw
check-full: check-multi check-multi-task-tracker-extra check-multi-binary check-worker check-multi-fdw
# using pg_regress_multi_check unnecessarily starts up multiple nodes, which isn't needed
# for check-worker. But that's harmless besides a few cycles.
@ -57,17 +57,17 @@ check-multi-hll: all tempinstall-main
$(pg_regress_multi_check) --load-extension=citus --load-extension=hll -- \
$(MULTI_REGRESS_OPTS) $(EXTRA_TESTS) multi_create_table multi_master_protocol multi_stage_data multi_agg_approximate_distinct
check-multi-task-tracker: all tempinstall-main
check-multi-task-tracker-extra: all tempinstall-main
$(pg_regress_multi_check) --load-extension=citus \
--server-option=citus.task_executor_type=task-tracker \
--server-option=citus.task_tracker_delay=50ms \
--server-option=citus.large_table_shard_count=1 \
-- $(MULTI_REGRESS_OPTS) --schedule=$(citus_abs_srcdir)/multi_schedule $(EXTRA_TESTS)
-- $(MULTI_REGRESS_OPTS) --schedule=$(citus_abs_srcdir)/multi_task_tracker_extra_schedule $(EXTRA_TESTS)
check-multi-binary: all tempinstall-main
$(pg_regress_multi_check) --load-extension=citus \
--server-option=citus.binary_worker_copy_format=on \
-- $(MULTI_REGRESS_OPTS) --schedule=$(citus_abs_srcdir)/multi_schedule $(EXTRA_TESTS)
-- $(MULTI_REGRESS_OPTS) --schedule=$(citus_abs_srcdir)/multi_binary_schedule $(EXTRA_TESTS)
clean distclean maintainer-clean:
rm -f $(output_files) $(input_files)

View File

@ -198,7 +198,7 @@ SELECT max(l_suppkey) FROM
l_suppkey,
count(*)
FROM
lineitem_subquery
lineitem
WHERE
l_orderkey < 20000
GROUP BY

View File

@ -0,0 +1,33 @@
# ----------
# $Id$
#
# Regression tests that test binary mode data transfer between workers.
# No new tests are expected here unless they are specifically testing for changes
# in binary mode data transfer
#
# ----------
# ---
# Tests around schema changes, these are run first, so there's no preexisting objects.
# ---
test: multi_extension
test: multi_table_ddl
# ----------
# The following distributed tests depend on creating a partitioned table and
# uploading data to it.
# ----------
test: multi_create_table
test: multi_stage_data
test: multi_basic_queries multi_complex_expressions multi_verify_no_subquery
test: multi_single_relation_subquery
test: multi_binary_master_copy_format
test: multi_simple_queries
# ---------
# multi_copy creates hash and range-partitioned tables and performs COPY
# ---------
test: multi_copy

View File

@ -3,6 +3,10 @@
#
# Regression tests that exercise distributed planning/execution functionality.
#
# All new regression tests are expected to be run by this schedule. Tests that
# do not set specific task executor type should also be added to
# multi_task_tracker_extra_schedule.
#
# Note that we use variant comparison files to test version dependent regression
# test results. For more information:
# http://www.postgresql.org/docs/9.5/static/regress-variant.html
@ -108,10 +112,11 @@ test: multi_outer_join
# Tests covering mostly modification queries and required preliminary
# functionality related to metadata, shard creation, shard pruning and
# "hacky" copy script for hash partitioned tables.
# Note that the order of the following tests are important.
# Note that the order of the following tests are important. multi_complex_count_distinct
# is independed from the rest of the group, it is added to increase parallelism.
# ---
test: multi_create_fdw
test: multi_connection_cache
test: multi_connection_cache multi_complex_count_distinct
test: multi_distribution_metadata
test: multi_generate_ddl_commands
test: multi_create_shards
@ -144,8 +149,3 @@ test: multi_large_shardid
# multi_drop_extension makes sure we can safely drop and recreate the extension
# ----------
test: multi_drop_extension
# ----------
# multi_complex_count_distinct creates table lineitem_hash, creates shards and load data
# ----------
test: multi_complex_count_distinct

View File

@ -0,0 +1,111 @@
# ----------
# $Id$
#
# Regression tests for task tracker executor. This schedule runs tests
# in task tracker executor. Any test that do not explicitly set the task executor
# are expected to be placed here in addition to multi_schedule.
#
# Note that we use variant comparison files to test version dependent regression
# test results. For more information:
# http://www.postgresql.org/docs/9.5/static/regress-variant.html
# ----------
# ---
# Tests around schema changes, these are run first, so there's no preexisting objects.
# ---
test: multi_extension
test: multi_table_ddl
# ----------
# The following distributed tests depend on creating a partitioned table and
# uploading data to it.
# ----------
test: multi_create_table
test: multi_master_protocol
test: multi_stage_data
# ----------
# Miscellaneous tests to check our query planning behavior
# ----------
test: multi_basic_queries multi_complex_expressions multi_verify_no_subquery
test: multi_agg_distinct multi_limit_clause multi_limit_clause_approximate
test: multi_average_expression multi_working_columns
test: multi_array_agg
test: multi_agg_type_conversion multi_count_type_conversion
test: multi_partition_pruning
test: multi_join_pruning multi_hash_pruning
test: multi_null_minmax_value_pruning
test: multi_query_directory_cleanup
test: multi_task_assignment_policy
test: multi_utility_statements
test: multi_dropped_column_aliases
test: multi_verify_no_join_with_alias
# ----------
# Parallel TPC-H tests to check our distributed execution behavior
# ----------
test: multi_tpch_query1 multi_tpch_query3 multi_tpch_query6 multi_tpch_query10
test: multi_tpch_query12 multi_tpch_query14 multi_tpch_query19
test: multi_tpch_query7 multi_tpch_query7_nested
# ----------
# Parallel tests to check our join order planning logic. Note that we stage data
# below; and therefore these tests should come after the execution tests.
# ----------
test: multi_join_order_tpch_small multi_join_order_additional
test: multi_stage_more_data
test: multi_join_order_tpch_large
# ----------
# Tests to check our large record staging and shard deletion behavior
# ----------
test: multi_stage_large_records
test: multi_master_delete_protocol
test: multi_shard_modify
# ----------
# multi_create_schema tests creation, staging and querying of a table in a new
# schema (namespace).
# ----------
test: multi_create_schema
# ---------
# multi_outer_join stages shards to create different mappings for outer joins
# ---------
test: multi_outer_join
# ---
# Tests covering mostly modification queries and required preliminary
# functionality related to metadata, shard creation, shard pruning and
# "hacky" copy script for hash partitioned tables.
# Note that the order of the following tests are important.
# ---
test: multi_create_fdw
test: multi_connection_cache
test: multi_distribution_metadata
test: multi_generate_ddl_commands
test: multi_create_shards
test: multi_prune_shard_list
test: multi_repair_shards
test: multi_modifications
test: multi_upsert
test: multi_simple_queries
test: multi_utilities
test: multi_create_insert_proxy
test: multi_data_types
# ---------
# multi_copy creates hash and range-partitioned tables and performs COPY
# ---------
test: multi_copy
# ----------
# multi_large_shardid stages more shards into lineitem
# ----------
test: multi_large_shardid
# ----------
# multi_drop_extension makes sure we can safely drop and recreate the extension
# ----------
test: multi_drop_extension

View File

@ -96,6 +96,8 @@ push(@pgOptions, '-c', "max_prepared_transactions=100");
push(@pgOptions, '-c', "citus.shard_max_size=300kB");
push(@pgOptions, '-c', "citus.max_running_tasks_per_node=4");
push(@pgOptions, '-c', "citus.expire_cached_shards=on");
push(@pgOptions, '-c', "citus.task_tracker_delay=10ms");
push(@pgOptions, '-c', "citus.remote_task_check_interval=1ms");
# Add externally added options last, so they overwrite the default ones above
for my $option (@userPgOptions)
@ -301,8 +303,14 @@ for my $extension (@extensions)
# Append remaining ARGV arguments to pg_regress arguments
push(@arguments, @ARGV);
my $startTime = time();
# Finally run the tests
system("$pgxsdir/src/test/regress/pg_regress", @arguments) == 0
or die "Could not run regression tests";
my $endTime = time();
print "Finished in ". ($endTime - $startTime)." seconds. \n";
exit 0;

View File

@ -152,7 +152,7 @@ SELECT max(l_suppkey) FROM
l_suppkey,
count(*)
FROM
lineitem_subquery
lineitem
WHERE
l_orderkey < 20000
GROUP BY