From 1bc1eda032df5f11794f94c85e07adabcdc0d214 Mon Sep 17 00:00:00 2001 From: yifangchen Date: Fri, 23 Feb 2018 15:19:01 -0500 Subject: [PATCH 1/6] Add multiple query support to integration tests #120. --- .../testing/integration/run_tests.py | 40 +++++++++---------- .../integration/small_tests/valid_4_0.json | 28 +++++++------ .../small_tests/valid_4_0_bz2.json | 26 +++++++----- .../integration/small_tests/valid_4_0_gz.json | 26 +++++++----- .../integration/small_tests/valid_4_1.json | 26 +++++++----- .../integration/small_tests/valid_4_1_gz.json | 26 +++++++----- .../integration/small_tests/valid_4_2.json | 26 +++++++----- .../small_tests/valid_4_2_VEP.json | 20 ++++++---- .../integration/small_tests/valid_4_2_gz.json | 26 +++++++----- 9 files changed, 138 insertions(+), 106 deletions(-) diff --git a/gcp_variant_transforms/testing/integration/run_tests.py b/gcp_variant_transforms/testing/integration/run_tests.py index f8b7f5404..b31684c5d 100644 --- a/gcp_variant_transforms/testing/integration/run_tests.py +++ b/gcp_variant_transforms/testing/integration/run_tests.py @@ -73,8 +73,7 @@ def __init__(self, test_name, table_name, input_pattern, - validation_query, - expected_query_result, + test_cases, **kwargs): self._name = test_name @@ -82,8 +81,7 @@ def __init__(self, self._project = context.project self._table_name = '{}.{}'.format(dataset_id, table_name) output_table = '{}:{}'.format(context.project, self._table_name) - self._validation_query = (" ").join(validation_query) - self._expected_query_result = expected_query_result + self._test_cases = test_cases args = ['--input_pattern {}'.format(input_pattern), '--output_table {}'.format(output_table), '--project {}'.format(context.project), @@ -152,24 +150,26 @@ def validate_table(self): client = bigquery.Client(project=self._project) # TODO(bashir2): Create macros for common queries and add the option for # having a list of queries instead of just one. - query = self._validation_query.format(TABLE_NAME=self._table_name) - query_job = client.query(query) - assert query_job.state == 'RUNNING' - iterator = query_job.result(timeout=60) - rows = list(iterator) - if len(rows) != 1: - raise TestCaseFailure('Expected one row in query result, got {}'.format( + for test_case in self._test_cases: + query = (" ").join(test_case['validation_query']).format(TABLE_NAME=self._table_name) + query_job = client.query(query) + assert query_job.state == 'RUNNING' + iterator = query_job.result(timeout=60) + rows = list(iterator) + if len(rows) != 1: + raise TestCaseFailure('Expected one row in query result, got {}'.format( len(rows))) - row = rows[0] - if len(self._expected_query_result) != len(row): - raise TestCaseFailure( - 'Expected {} columns in the query result, got {}'.format( - len(self._expected_query_result), len(row))) - for key in self._expected_query_result.keys(): - if self._expected_query_result[key] != row.get(key): + row = rows[0] + expected_result = test_case['expected_query_result'] + if len(expected_result) != len(row): raise TestCaseFailure( + 'Expected {} columns in the query result, got {}'.format( + len(expected_result), len(row))) + for key in expected_result.keys(): + if expected_result[key] != row.get(key): + raise TestCaseFailure( 'Column {} mismatch: expected {}, got {}'.format( - key, self._expected_query_result[key], row.get(key))) + key, expected_result[key], row.get(key))) class TestContextManager(object): @@ -272,7 +272,7 @@ def _load_test_config(filename): def _validate_test(test, filename): required_keys = ['test_name', 'table_name', 'input_pattern', - 'validation_query', 'expected_query_result'] + 'test_cases'] for key in required_keys: if key not in test: raise ValueError('Test case in {} is missing required key: {}'.format( diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json index ce3f94c58..0345324a6 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json @@ -3,15 +3,19 @@ "table_name": "valid_4_0", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.0.vcf", "runner": "DataflowRunner", - "validation_query": [ - "SELECT COUNT(0) AS num_rows, ", - " SUM(start_position) AS sum_start, ", - " SUM(end_position) AS sum_end ", - "FROM {TABLE_NAME}" - ], - "expected_query_result": { - "num_rows": 5, - "sum_start": 3607195, - "sum_end": 3607203 - } -} + "test_cases": [ + { + "validation_query": [ + "SELECT COUNT(0) AS num_rows, ", + " SUM(start_position) AS sum_start, ", + " SUM(end_position) AS sum_end ", + "FROM {TABLE_NAME}" + ], + "expected_query_result": { + "num_rows": 5, + "sum_start": 3607195, + "sum_end": 3607203 + } + } + ] +} \ No newline at end of file diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_bz2.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_bz2.json index eaae90194..af5c3802d 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_bz2.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_bz2.json @@ -3,15 +3,19 @@ "table_name": "valid_4_0_bz2", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.0.vcf.bz2", "runner": "DataflowRunner", - "validation_query": [ - "SELECT COUNT(0) AS num_rows, ", - " SUM(start_position) AS sum_start, ", - " SUM(end_position) AS sum_end ", - "FROM {TABLE_NAME}" - ], - "expected_query_result": { - "num_rows": 5, - "sum_start": 3607195, - "sum_end": 3607203 - } + "test_cases": [ + { + "validation_query": [ + "SELECT COUNT(0) AS num_rows, ", + " SUM(start_position) AS sum_start, ", + " SUM(end_position) AS sum_end ", + "FROM {TABLE_NAME}" + ], + "expected_query_result": { + "num_rows": 5, + "sum_start": 3607195, + "sum_end": 3607203 + } + } + ] } diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_gz.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_gz.json index 3d09dccfd..0d7f4d66a 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_gz.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_gz.json @@ -3,15 +3,19 @@ "table_name": "valid_4_0_gz", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.0.vcf.gz", "runner": "DataflowRunner", - "validation_query": [ - "SELECT COUNT(0) AS num_rows, ", - " SUM(start_position) AS sum_start, ", - " SUM(end_position) AS sum_end ", - "FROM {TABLE_NAME}" - ], - "expected_query_result": { - "num_rows": 5, - "sum_start": 3607195, - "sum_end": 3607203 - } + "test_cases": [ + { + "validation_query": [ + "SELECT COUNT(0) AS num_rows, ", + " SUM(start_position) AS sum_start, ", + " SUM(end_position) AS sum_end ", + "FROM {TABLE_NAME}" + ], + "expected_query_result": { + "num_rows": 5, + "sum_start": 3607195, + "sum_end": 3607203 + } + } + ] } diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_1.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_1.json index d93d28eb4..0a4c6d309 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_1.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_1.json @@ -3,15 +3,19 @@ "table_name": "valid_4_1", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.1-large.vcf", "runner": "DataflowRunner", - "validation_query": [ - "SELECT COUNT(0) AS num_rows, ", - " SUM(start_position) AS sum_start, ", - " SUM(end_position) AS sum_end ", - "FROM {TABLE_NAME}" - ], - "expected_query_result": { - "num_rows": 9882, - "sum_start": 5434957328, - "sum_end": 5435327553 - } + "test_cases": [ + { + "validation_query": [ + "SELECT COUNT(0) AS num_rows, ", + " SUM(start_position) AS sum_start, ", + " SUM(end_position) AS sum_end ", + "FROM {TABLE_NAME}" + ], + "expected_query_result": { + "num_rows": 9882, + "sum_start": 5434957328, + "sum_end": 5435327553 + } + } + ] } diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_1_gz.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_1_gz.json index 9b6991a2d..4a1faa11f 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_1_gz.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_1_gz.json @@ -3,15 +3,19 @@ "table_name": "valid_4_1_gz", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.1-large.vcf.gz", "runner": "DataflowRunner", - "validation_query": [ - "SELECT COUNT(0) AS num_rows, ", - " SUM(start_position) AS sum_start, ", - " SUM(end_position) AS sum_end ", - "FROM {TABLE_NAME}" - ], - "expected_query_result": { - "num_rows": 9882, - "sum_start": 5434957328, - "sum_end": 5435327553 - } + "test_cases": [ + { + "validation_query": [ + "SELECT COUNT(0) AS num_rows, ", + " SUM(start_position) AS sum_start, ", + " SUM(end_position) AS sum_end ", + "FROM {TABLE_NAME}" + ], + "expected_query_result": { + "num_rows": 9882, + "sum_start": 5434957328, + "sum_end": 5435327553 + } + } + ] } diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2.json index 3557026da..b2760f107 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2.json @@ -3,15 +3,19 @@ "table_name": "valid_4_2", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.2.vcf", "runner": "DataflowRunner", - "validation_query": [ - "SELECT COUNT(0) AS num_rows, ", - " SUM(start_position) AS sum_start, ", - " SUM(end_position) AS sum_end ", - "FROM {TABLE_NAME}" - ], - "expected_query_result": { - "num_rows": 13, - "sum_start": 23031929, - "sum_end": 23033052 - } + "test_cases": [ + { + "validation_query": [ + "SELECT COUNT(0) AS num_rows, ", + " SUM(start_position) AS sum_start, ", + " SUM(end_position) AS sum_end ", + "FROM {TABLE_NAME}" + ], + "expected_query_result": { + "num_rows": 13, + "sum_start": 23031929, + "sum_end": 23033052 + } + } + ] } diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json index a8fd827eb..f92edab38 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json @@ -4,12 +4,16 @@ "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.2_VEP.vcf", "annotation_field": "CSQ", "runner": "DataflowRunner", - "validation_query": [ - "SELECT COUNT(DISTINCT CSQ.Feature) AS num_features ", - "FROM {TABLE_NAME} AS t, t.alternate_bases as alts, alts.CSQ as CSQ ", - "WHERE start_position = 1110695 AND alts.alt = 'G'" - ], - "expected_query_result": { - "num_features": 3 - } + "test_cases": [ + { + "validation_query": [ + "SELECT COUNT(DISTINCT CSQ.Feature) AS num_features ", + "FROM {TABLE_NAME} AS t, t.alternate_bases as alts, alts.CSQ as CSQ ", + "WHERE start_position = 1110695 AND alts.alt = 'G'" + ], + "expected_query_result": { + "num_features": 3 + } + } + ] } diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_gz.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_gz.json index dba30fcdb..7e895e70c 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_gz.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_gz.json @@ -3,15 +3,19 @@ "table_name": "valid_4_2_gz", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.2.vcf.gz", "runner": "DataflowRunner", - "validation_query": [ - "SELECT COUNT(0) AS num_rows, ", - " SUM(start_position) AS sum_start, ", - " SUM(end_position) AS sum_end ", - "FROM {TABLE_NAME}" - ], - "expected_query_result": { - "num_rows": 13, - "sum_start": 23031929, - "sum_end": 23033052 - } + "test_cases": [ + { + "validation_query": [ + "SELECT COUNT(0) AS num_rows, ", + " SUM(start_position) AS sum_start, ", + " SUM(end_position) AS sum_end ", + "FROM {TABLE_NAME}" + ], + "expected_query_result": { + "num_rows": 13, + "sum_start": 23031929, + "sum_end": 23033052 + } + } + ] } From 615f7b951bd07532ea929bdabb5f5d9b972f159b Mon Sep 17 00:00:00 2001 From: yifangchen Date: Fri, 23 Feb 2018 16:25:40 -0500 Subject: [PATCH 2/6] multiple queries --- .idea/codeStyles/codeStyleConfig.xml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .idea/codeStyles/codeStyleConfig.xml diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 000000000..a55e7a179 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file From 841e2938e4cb29fe6aecb779af9e7227d773e27e Mon Sep 17 00:00:00 2001 From: yifangchen Date: Fri, 23 Feb 2018 16:54:56 -0500 Subject: [PATCH 3/6] remove unnecessary files --- .idea/codeStyles/codeStyleConfig.xml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .idea/codeStyles/codeStyleConfig.xml diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index a55e7a179..000000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file From db13f4dd63ce3c6407ff40d816e281ec30da62b6 Mon Sep 17 00:00:00 2001 From: yifangchen Date: Mon, 26 Feb 2018 13:10:41 -0500 Subject: [PATCH 4/6] 1. Rename assertions to assertion_configs. 2. Update the Assertion constructor. --- .../testing/integration/run_tests.py | 91 ++++++++++++++----- .../integration/small_tests/valid_4_0.json | 6 +- .../small_tests/valid_4_0_bz2.json | 6 +- .../integration/small_tests/valid_4_0_gz.json | 6 +- .../integration/small_tests/valid_4_1.json | 6 +- .../integration/small_tests/valid_4_1_gz.json | 6 +- .../integration/small_tests/valid_4_2.json | 6 +- .../small_tests/valid_4_2_VEP.json | 6 +- .../integration/small_tests/valid_4_2_gz.json | 6 +- 9 files changed, 92 insertions(+), 47 deletions(-) diff --git a/gcp_variant_transforms/testing/integration/run_tests.py b/gcp_variant_transforms/testing/integration/run_tests.py index b31684c5d..086db3c15 100644 --- a/gcp_variant_transforms/testing/integration/run_tests.py +++ b/gcp_variant_transforms/testing/integration/run_tests.py @@ -73,7 +73,7 @@ def __init__(self, test_name, table_name, input_pattern, - test_cases, + assertion_configs, **kwargs): self._name = test_name @@ -81,7 +81,7 @@ def __init__(self, self._project = context.project self._table_name = '{}.{}'.format(dataset_id, table_name) output_table = '{}:{}'.format(context.project, self._table_name) - self._test_cases = test_cases + self._assertion_configs = assertion_configs args = ['--input_pattern {}'.format(input_pattern), '--output_table {}'.format(output_table), '--project {}'.format(context.project), @@ -146,30 +146,64 @@ def _handle_failure(self, response): 'No traceback. See logs for more information on error.') def validate_table(self): - """Runs a simple query against the output table and verifies aggregates.""" + """Runs queries against the output table and verifies results.""" client = bigquery.Client(project=self._project) - # TODO(bashir2): Create macros for common queries and add the option for - # having a list of queries instead of just one. - for test_case in self._test_cases: - query = (" ").join(test_case['validation_query']).format(TABLE_NAME=self._table_name) - query_job = client.query(query) - assert query_job.state == 'RUNNING' - iterator = query_job.result(timeout=60) - rows = list(iterator) - if len(rows) != 1: - raise TestCaseFailure('Expected one row in query result, got {}'.format( + # TODO(yifangchen): Create macros for common queries + query_formatter = QueryFormatter(self._table_name) + for assertion_config in self._assertion_configs: + query = query_formatter.format_query(assertion_config['query']) + assertion = QueryAssertion(client, query, assertion_config[ + 'expected_result']) + assertion.run_assertion() + + +class QueryAssertion(object): + """Runs a query and verifies that the output matches the expected result.""" + + def __init__(self, client, query, expected_result): + self._client = client + self._query = query + self._expected_result = expected_result + + def run_assertion(self): + query_job = self._client.query(self._query) + assert query_job.state == 'RUNNING' + iterator = query_job.result(timeout=60) + rows = list(iterator) + if len(rows) != 1: + raise TestCaseFailure('Expected one row in query result, got {}'.format( len(rows))) - row = rows[0] - expected_result = test_case['expected_query_result'] - if len(expected_result) != len(row): - raise TestCaseFailure( + row = rows[0] + if len(self._expected_result) != len(row): + raise TestCaseFailure( 'Expected {} columns in the query result, got {}'.format( - len(expected_result), len(row))) - for key in expected_result.keys(): - if expected_result[key] != row.get(key): - raise TestCaseFailure( + len(self._expected_result), len(row))) + for key in self._expected_result.keys(): + if self._expected_result[key] != row.get(key): + raise TestCaseFailure( 'Column {} mismatch: expected {}, got {}'.format( - key, expected_result[key], row.get(key))) + key, self._expected_result[key], row.get(key))) + + +class QueryFormatter(object): + """Formats a query. + + Replaces keyword TABLE_NAME and eventually macros in the query. + """ + + def __init__(self, table_name): + # type: (str) -> None + self._table_name = table_name + + def format_query(self, query): + # type: (List[str]) -> str + """Formats the given ''query''. + + Formatting logic is as follows: + Concatenates ''query'' parts into one string. + Replaces TABLE_NAME with the table associated for the query. + """ + return (' ').join(query).format(TABLE_NAME=self._table_name) class TestContextManager(object): @@ -272,11 +306,22 @@ def _load_test_config(filename): def _validate_test(test, filename): required_keys = ['test_name', 'table_name', 'input_pattern', - 'test_cases'] + 'assertion_configs'] for key in required_keys: if key not in test: raise ValueError('Test case in {} is missing required key: {}'.format( filename, key)) + assertion_configs = test['assertion_configs'] + for assertion_config in assertion_configs: + _validate_assertion_config(assertion_config) + + +def _validate_assertion_config(assertion_config): + required_keys = ['query', 'expected_result'] + for key in required_keys: + if key not in assertion_config: + raise ValueError('Test case in {} is missing required key: {}'.format( + assertion_config, key)) def _run_test(test, context): diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json index 0345324a6..4232e455e 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json @@ -3,15 +3,15 @@ "table_name": "valid_4_0", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.0.vcf", "runner": "DataflowRunner", - "test_cases": [ + "assertion_configs": [ { - "validation_query": [ + "query": [ "SELECT COUNT(0) AS num_rows, ", " SUM(start_position) AS sum_start, ", " SUM(end_position) AS sum_end ", "FROM {TABLE_NAME}" ], - "expected_query_result": { + "expected_result": { "num_rows": 5, "sum_start": 3607195, "sum_end": 3607203 diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_bz2.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_bz2.json index af5c3802d..257b7b05d 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_bz2.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_bz2.json @@ -3,15 +3,15 @@ "table_name": "valid_4_0_bz2", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.0.vcf.bz2", "runner": "DataflowRunner", - "test_cases": [ + "assertion_configs": [ { - "validation_query": [ + "query": [ "SELECT COUNT(0) AS num_rows, ", " SUM(start_position) AS sum_start, ", " SUM(end_position) AS sum_end ", "FROM {TABLE_NAME}" ], - "expected_query_result": { + "expected_result": { "num_rows": 5, "sum_start": 3607195, "sum_end": 3607203 diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_gz.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_gz.json index 0d7f4d66a..c0530b997 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_gz.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0_gz.json @@ -3,15 +3,15 @@ "table_name": "valid_4_0_gz", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.0.vcf.gz", "runner": "DataflowRunner", - "test_cases": [ + "assertion_configs": [ { - "validation_query": [ + "query": [ "SELECT COUNT(0) AS num_rows, ", " SUM(start_position) AS sum_start, ", " SUM(end_position) AS sum_end ", "FROM {TABLE_NAME}" ], - "expected_query_result": { + "expected_result": { "num_rows": 5, "sum_start": 3607195, "sum_end": 3607203 diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_1.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_1.json index 0a4c6d309..08e0a56d8 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_1.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_1.json @@ -3,15 +3,15 @@ "table_name": "valid_4_1", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.1-large.vcf", "runner": "DataflowRunner", - "test_cases": [ + "assertion_configs": [ { - "validation_query": [ + "query": [ "SELECT COUNT(0) AS num_rows, ", " SUM(start_position) AS sum_start, ", " SUM(end_position) AS sum_end ", "FROM {TABLE_NAME}" ], - "expected_query_result": { + "expected_result": { "num_rows": 9882, "sum_start": 5434957328, "sum_end": 5435327553 diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_1_gz.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_1_gz.json index 4a1faa11f..87855e64d 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_1_gz.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_1_gz.json @@ -3,15 +3,15 @@ "table_name": "valid_4_1_gz", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.1-large.vcf.gz", "runner": "DataflowRunner", - "test_cases": [ + "assertion_configs": [ { - "validation_query": [ + "query": [ "SELECT COUNT(0) AS num_rows, ", " SUM(start_position) AS sum_start, ", " SUM(end_position) AS sum_end ", "FROM {TABLE_NAME}" ], - "expected_query_result": { + "expected_result": { "num_rows": 9882, "sum_start": 5434957328, "sum_end": 5435327553 diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2.json index b2760f107..ea5085e2f 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2.json @@ -3,15 +3,15 @@ "table_name": "valid_4_2", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.2.vcf", "runner": "DataflowRunner", - "test_cases": [ + "assertion_configs": [ { - "validation_query": [ + "query": [ "SELECT COUNT(0) AS num_rows, ", " SUM(start_position) AS sum_start, ", " SUM(end_position) AS sum_end ", "FROM {TABLE_NAME}" ], - "expected_query_result": { + "expected_result": { "num_rows": 13, "sum_start": 23031929, "sum_end": 23033052 diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json index f92edab38..0b1e0f431 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json @@ -4,14 +4,14 @@ "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.2_VEP.vcf", "annotation_field": "CSQ", "runner": "DataflowRunner", - "test_cases": [ + "assertion_configs": [ { - "validation_query": [ + "query": [ "SELECT COUNT(DISTINCT CSQ.Feature) AS num_features ", "FROM {TABLE_NAME} AS t, t.alternate_bases as alts, alts.CSQ as CSQ ", "WHERE start_position = 1110695 AND alts.alt = 'G'" ], - "expected_query_result": { + "expected_result": { "num_features": 3 } } diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_gz.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_gz.json index 7e895e70c..9b6f21065 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_gz.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_gz.json @@ -3,15 +3,15 @@ "table_name": "valid_4_2_gz", "input_pattern": "gs://gcp-variant-transforms-testfiles/small_tests/valid-4.2.vcf.gz", "runner": "DataflowRunner", - "test_cases": [ + "assertion_configs": [ { - "validation_query": [ + "query": [ "SELECT COUNT(0) AS num_rows, ", " SUM(start_position) AS sum_start, ", " SUM(end_position) AS sum_end ", "FROM {TABLE_NAME}" ], - "expected_query_result": { + "expected_result": { "num_rows": 13, "sum_start": 23031929, "sum_end": 23033052 From f7bfeb36e78b46e1e9a738baf5108cc36d4c1f3d Mon Sep 17 00:00:00 2001 From: yifangchen Date: Wed, 28 Feb 2018 17:23:46 -0500 Subject: [PATCH 5/6] Add one more assertion config in valid_4_2_VEP. --- .../integration/small_tests/valid_4_2_VEP.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json index 0b1e0f431..10f5fba47 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_2_VEP.json @@ -5,6 +5,19 @@ "annotation_field": "CSQ", "runner": "DataflowRunner", "assertion_configs": [ + { + "query": [ + "SELECT COUNT(0) AS num_rows, ", + " SUM(start_position) AS sum_start, ", + " SUM(end_position) AS sum_end ", + "FROM {TABLE_NAME}" + ], + "expected_result": { + "num_rows": 11, + "sum_start": 21801693, + "sum_end": 21802814 + } + }, { "query": [ "SELECT COUNT(DISTINCT CSQ.Feature) AS num_features ", From f86adb69fda721de63868e497d8d7f195b4ed461 Mon Sep 17 00:00:00 2001 From: yifangchen Date: Thu, 1 Mar 2018 11:09:48 -0500 Subject: [PATCH 6/6] Correct some format issues. 1. Change the quotes to backquotes. 2. Add a newline at the end of one JSON file. --- gcp_variant_transforms/testing/integration/run_tests.py | 6 +++--- .../testing/integration/small_tests/valid_4_0.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gcp_variant_transforms/testing/integration/run_tests.py b/gcp_variant_transforms/testing/integration/run_tests.py index 086db3c15..7b32cdc08 100644 --- a/gcp_variant_transforms/testing/integration/run_tests.py +++ b/gcp_variant_transforms/testing/integration/run_tests.py @@ -197,11 +197,11 @@ def __init__(self, table_name): def format_query(self, query): # type: (List[str]) -> str - """Formats the given ''query''. + """Formats the given ``query``. Formatting logic is as follows: - Concatenates ''query'' parts into one string. - Replaces TABLE_NAME with the table associated for the query. + - Concatenates ``query`` parts into one string. + - Replaces TABLE_NAME with the table associated for the query. """ return (' ').join(query).format(TABLE_NAME=self._table_name) diff --git a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json index 4232e455e..30a78e1d2 100644 --- a/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json +++ b/gcp_variant_transforms/testing/integration/small_tests/valid_4_0.json @@ -18,4 +18,4 @@ } } ] -} \ No newline at end of file +}