diff --git a/server/cros/dynamic_suite/suite.py b/server/cros/dynamic_suite/suite.py
index f9b10a6..0268350 100644
--- a/server/cros/dynamic_suite/suite.py
+++ b/server/cros/dynamic_suite/suite.py
@@ -346,10 +346,7 @@
     """
     logging.debug('Getting control file list for suite: %s', suite_name)
     tests = {}
-    use_batch = (ENABLE_CONTROLS_IN_BATCH
-                 and isinstance(cf_getter,
-                                control_file_getter.DevServerGetter))
-    if use_batch:
+    if _should_batch_with(cf_getter):
         suite_info = cf_getter.get_suite_info(suite_name=suite_name)
         files = suite_info.keys()
     else:
@@ -359,7 +356,7 @@
     logging.debug('Parsing control files ...')
     matcher = re.compile(r'[^/]+/(deps|profilers)/.+')
     for file in filter(lambda f: not matcher.match(f), files):
-        if use_batch:
+        if _should_batch_with(cf_getter):
             text = suite_info[file]
         else:
             text = cf_getter.get_control_file_contents(file)
@@ -385,6 +382,18 @@
     return tests
 
 
+def _should_batch_with(cf_getter):
+    """Return whether control files should be fetched in batch.
+
+    This depends on the control file getter and configuration options.
+
+    @param cf_getter: a control_file_getter.ControlFileGetter used to list
+           and fetch the content of control files
+    """
+    return (ENABLE_CONTROLS_IN_BATCH
+            and isinstance(cf_getter, control_file_getter.DevServerGetter))
+
+
 class Suite(object):
     """
     A suite of tests, defined by some predicate over control file variables.
