Add a config to disable table dumps.

Table dumps often take time and not desired on local testing.

BUG=None
TEST=bin/run_tests && bin/run_yapf -i && bin/run_lint

Change-Id: Iac3533decf01b805305a312937d00be1999382b9
Reviewed-on: https://chromium-review.googlesource.com/734982
Commit-Ready: Shuhei Takahashi <nya@chromium.org>
Tested-by: Shuhei Takahashi <nya@chromium.org>
Reviewed-by: Prathmesh Prabhu <pprabhu@chromium.org>
diff --git a/ci_results_archiver/archive_builder.py b/ci_results_archiver/archive_builder.py
index 64df62a..d6b6af8 100644
--- a/ci_results_archiver/archive_builder.py
+++ b/ci_results_archiver/archive_builder.py
@@ -109,7 +109,7 @@
       importer: AbstractImporter object.
       modifier: AbstractModifier object.
       exporter: BigQueryExporter object.
-      dumper: BigQueryDumper object.
+      dumper: BigQueryDumper object or None.
       checkpointer: Checkpointer object.
     """
     self._table_type = table_type
@@ -155,7 +155,7 @@
           updated_table_suffixes.update(exported_table_suffixes)
 
       # Dump updated tables.
-      if updated_table_suffixes:
+      if updated_table_suffixes and self._dumper:
         with timer.Step('dump'):
           self._dumper.DumpTables(list(updated_table_suffixes))
 
diff --git a/ci_results_archiver/archive_builder_factory.py b/ci_results_archiver/archive_builder_factory.py
index bb755c5..e8a5dec 100644
--- a/ci_results_archiver/archive_builder_factory.py
+++ b/ci_results_archiver/archive_builder_factory.py
@@ -79,10 +79,14 @@
   exporter = bigquery_exporter.BigQueryExporter(
       bigquery_tables=bigquery_tables, table_spec=table_spec)
 
-  dumper = bigquery_dumper.BigQueryDumper(
-      bigquery_tables=bigquery_tables,
-      table_spec=table_spec,
-      bucket_name=persistent_bucket.name)
+  dump_enabled = configs['tables'][table_type.value].get('dump', True)
+  if dump_enabled:
+    dumper = bigquery_dumper.BigQueryDumper(
+        bigquery_tables=bigquery_tables,
+        table_spec=table_spec,
+        bucket_name=persistent_bucket.name)
+  else:
+    dumper = None
 
   checkpointer = checkpointer_lib.Checkpointer(
       bucket=persistent_bucket,
diff --git a/ci_results_archiver/archive_builder_factory_unittest.py b/ci_results_archiver/archive_builder_factory_unittest.py
index 3e83edc..33494d8 100644
--- a/ci_results_archiver/archive_builder_factory_unittest.py
+++ b/ci_results_archiver/archive_builder_factory_unittest.py
@@ -117,7 +117,7 @@
     self.assertIsInstance(builder._importer,
                           cidb_build_importer.CidbBuildImporter)
     self.assertIs(builder._modifier, None)
-    self.assertIsInstance(builder._dumper, bigquery_dumper.BigQueryDumper)
+    self.assertIs(builder._dumper, None)
     self.assertIsInstance(builder._exporter, bigquery_exporter.BigQueryExporter)
     self.assertIsInstance(builder._checkpointer, checkpointer.Checkpointer)
 
diff --git a/ci_results_archiver/test/config_example.yaml b/ci_results_archiver/test/config_example.yaml
index 73f7495..61d4cb2 100644
--- a/ci_results_archiver/test/config_example.yaml
+++ b/ci_results_archiver/test/config_example.yaml
@@ -7,14 +7,17 @@
     max_entries: 1000
     grace_period:
      timeout: 10s
+    dump: true
   tko_jobs:
     max_entries: 2000
     grace_period:
       capacity: 200
+    dump: true
   cidb_builds:
     max_entries: 3000
     grace_period:
       timeout: 30s
+    dump: false
 
 databases:
   afe: