Isolate GYP target and .isolate files for tests

This is a re-land attempt of http://review.webrtc.org/1673004/
It now includes a build/isolate.gypi in WebRTC that includes the same
file as the one that would be included when WebRTC is used in a Chromium
checkout. It is needed since it is not possible to use variables in GYP's
includes sections.

Implemented according to the instructions at
http://www.chromium.org/developers/testing/isolated-testing

Workflow has been like this:
1. create _run GYP target
2. create a stripped down .isolate file
3. export GYP_DEFINES="$GYP_DEFINES test_isolation_mode=check"
4. runhooks
5. compile
6. test if the test would run (i.e. find it's dependencies) without
   actually executing it:
   tools/swarm_client/isolate.py run --isolated out/Release/testname.isolated
7. If failing, run the fix_test_cases.py script like this:
   tools/swarm_client/googletest/fix_test_cases.py --isolated out/Release/testname.isolated

All tests that run on the bots for WebRTC has got _run target
and .isolate file created.

"Normal tests" that run fine on any machine:
* audio_decoder_unittests
* common_audio_unittests
* common_video_unittests
* metrics_unittests
* modules_tests
* modules_unittests
* neteq_unittests
* system_wrappers_unittests
* test_support_unittests
* tools_unittests
* video_engine_core_unittests
* voice_engine_unittests

Tests that requires bare-metal and audio/video devices:
* audio_device_tests
* video_capture_tests

I also added the isolate boilerplate code for the following
tests that are not yet pure gtest binaries (which means they
cannot run isolated yet):
* video_render_tests
* vie_auto_test
* voe_auto_test

TEST=running isolate.py as described above. WebRTC trybots passing. Created a Chromium checkout with third_party/webrtc ToT and this patch applied, passing the runhooks step.
BUG=1916
R=henrike@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2056004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4590 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/.gitignore b/.gitignore
index 7fb825b..7b45f3a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -85,6 +85,7 @@
 /tools/gyp
 /tools/protoc_wrapper
 /tools/python
+/tools/swarm_client
 /tools/valgrind
 /tools/win
 /webrtc/supplement.gypi
diff --git a/DEPS b/DEPS
index eccce43..1409c46 100644
--- a/DEPS
+++ b/DEPS
@@ -104,6 +104,9 @@
   "tools/python":
     Var("chromium_trunk") + "/src/tools/python@" + Var("chromium_revision"),
 
+  "tools/swarm_client":
+    Var("chromium_trunk") + "/tools/swarm_client@" + Var("chromium_revision"),
+
   "tools/valgrind":
     Var("chromium_trunk") + "/src/tools/valgrind@" + Var("chromium_revision"),
 
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 16a3bb9..b8a702f 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -106,7 +106,8 @@
                   r'^tools/protoc_wrapper/.*\.py$',
                   r'^tools/python/.*\.py$',
                   r'^tools/python_charts/data/.*\.py$',
-                  r'^tools/refactoring.*\.py$',
+                  r'^tools/refactoring/.*\.py$',
+                  r'^tools/swarm_client/.*\.py$',
                   # TODO(phoglund): should arguably be checked.
                   r'^tools/valgrind-webrtc/.*\.py$',
                   r'^tools/valgrind/.*\.py$',
diff --git a/webrtc/build/common.gypi b/webrtc/build/common.gypi
index e8ba842..baaf7df 100644
--- a/webrtc/build/common.gypi
+++ b/webrtc/build/common.gypi
@@ -25,11 +25,13 @@
             'build_with_libjingle': 1,
             'webrtc_root%': '<(DEPTH)/third_party/webrtc',
             'apk_tests_path%': '<(DEPTH)/third_party/webrtc/build/apk_tests.gyp',
+            'import_isolate_path%': '<(DEPTH)/third_party/webrtc/build/import_isolate_chromium.gyp',
             'modules_java_gyp_path%': '<(DEPTH)/third_party/webrtc/modules/modules_java_chromium.gyp',
           }, {
             'build_with_libjingle%': 0,
             'webrtc_root%': '<(DEPTH)/webrtc',
             'apk_tests_path%': '<(DEPTH)/webrtc/build/apk_test_noop.gyp',
+            'import_isolate_path%': '<(DEPTH)/webrtc/build/import_isolate_webrtc.gyp',
             'modules_java_gyp_path%': '<(DEPTH)/webrtc/modules/modules_java.gyp',
           }],
         ],
@@ -38,6 +40,7 @@
       'build_with_libjingle%': '<(build_with_libjingle)',
       'webrtc_root%': '<(webrtc_root)',
       'apk_tests_path%': '<(apk_tests_path)',
+      'import_isolate_path%': '<(import_isolate_path)',
       'modules_java_gyp_path%': '<(modules_java_gyp_path)',
 
       'webrtc_vp8_dir%': '<(webrtc_root)/modules/video_coding/codecs/vp8',
@@ -48,6 +51,7 @@
     'build_with_libjingle%': '<(build_with_libjingle)',
     'webrtc_root%': '<(webrtc_root)',
     'apk_tests_path%': '<(apk_tests_path)',
+    'import_isolate_path%': '<(import_isolate_path)',
     'modules_java_gyp_path%': '<(modules_java_gyp_path)',
     'webrtc_vp8_dir%': '<(webrtc_vp8_dir)',
     'include_opus%': '<(include_opus)',
diff --git a/webrtc/build/import_isolate_chromium.gyp b/webrtc/build/import_isolate_chromium.gyp
new file mode 100644
index 0000000..587f995
--- /dev/null
+++ b/webrtc/build/import_isolate_chromium.gyp
@@ -0,0 +1,22 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+# See webrtc/build/import_isolate_webrtc.gyp for information about this file.
+{
+  'targets': [
+    {
+      'target_name': 'import_isolate_gypi',
+      'type': 'none',
+      'includes': [
+        # Relative path to isolate.gypi when WebRTC is built from inside
+        # Chromium (i.e. the webrtc/ folder is checked out into third_party/).
+        '../../../build/apk_test.gypi',
+      ],
+    },
+  ],
+}
diff --git a/webrtc/build/import_isolate_webrtc.gyp b/webrtc/build/import_isolate_webrtc.gyp
new file mode 100644
index 0000000..b585fae
--- /dev/null
+++ b/webrtc/build/import_isolate_webrtc.gyp
@@ -0,0 +1,25 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+# This file exists so we can find the isolate.gypi both when WebRTC is built
+# stand-alone and when built as a part of Chrome.
+# This is needed since GYP does not support evaluating variables in the
+# includes sections of a target, so we cannot use <(DEPTH) or <(webrtc_root).
+{
+  'targets': [
+    {
+      'target_name': 'import_isolate_gypi',
+      'type': 'none',
+      'includes': [
+        # Relative path to isolate.gypi when WebRTC built as a stand-alone
+        # project (i.e. Chromium's build/ folder is checked out into the root).
+        '../../build/isolate.gypi',
+      ],
+    },
+  ],
+}
diff --git a/webrtc/common_audio/common_audio.gyp b/webrtc/common_audio/common_audio.gyp
index 7955d23..7ddf22d 100644
--- a/webrtc/common_audio/common_audio.gyp
+++ b/webrtc/common_audio/common_audio.gyp
@@ -219,7 +219,25 @@
             },
           ],
         }],
-      ]
+        ['test_isolation_mode != "noop"', {
+          'targets': [
+            {
+              'target_name': 'common_audio_unittests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'common_audio_unittests',
+              ],
+              'includes': [
+                'common_audio_unittests.isolate',
+              ],
+              'sources': [
+                'common_audio_unittests.isolate',
+              ],
+            },
+          ],
+        }],
+      ],
     }],
   ],  # conditions
 }
diff --git a/webrtc/common_audio/common_audio_unittests.isolate b/webrtc/common_audio/common_audio_unittests.isolate
new file mode 100644
index 0000000..7eedcd7
--- /dev/null
+++ b/webrtc/common_audio/common_audio_unittests.isolate
@@ -0,0 +1,27 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/common_audio_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/run_isolated.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/common_audio_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/common_video/common_video.gyp b/webrtc/common_video/common_video.gyp
index 554333c..f92563a 100644
--- a/webrtc/common_video/common_video.gyp
+++ b/webrtc/common_video/common_video.gyp
@@ -122,6 +122,24 @@
             },
           ],
         }],
+        ['test_isolation_mode != "noop"', {
+          'targets': [
+            {
+              'target_name': 'common_video_unittests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'common_video_unittests',
+              ],
+              'includes': [
+                'common_video_unittests.isolate',
+              ],
+              'sources': [
+                'common_video_unittests.isolate',
+              ],
+            },
+          ],
+        }],
       ],
     }],  # include_tests
   ],
diff --git a/webrtc/common_video/common_video_unittests.isolate b/webrtc/common_video/common_video_unittests.isolate
new file mode 100644
index 0000000..f173ff7
--- /dev/null
+++ b/webrtc/common_video/common_video_unittests.isolate
@@ -0,0 +1,29 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/common_video_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../DEPS',
+          '../../resources/foreman_cif.yuv',
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../tools/swarm_client/run_isolated.py',
+          '../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/common_video_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/modules/audio_coding/neteq/neteq.gypi b/webrtc/modules/audio_coding/neteq/neteq.gypi
index 9a460c4..c94f7f8 100644
--- a/webrtc/modules/audio_coding/neteq/neteq.gypi
+++ b/webrtc/modules/audio_coding/neteq/neteq.gypi
@@ -231,6 +231,24 @@
             },
           ],
         }],
+        ['test_isolation_mode != "noop"', {
+          'targets': [
+            {
+              'target_name': 'neteq_unittests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'neteq_unittests',
+              ],
+              'includes': [
+                'neteq_unittests.isolate',
+              ],
+              'sources': [
+                'neteq_unittests.isolate',
+              ],
+            },
+          ],
+        }],
       ],
     }], # include_tests
   ], # conditions
diff --git a/webrtc/modules/audio_coding/neteq/neteq_unittests.isolate b/webrtc/modules/audio_coding/neteq/neteq_unittests.isolate
new file mode 100644
index 0000000..a2c0613
--- /dev/null
+++ b/webrtc/modules/audio_coding/neteq/neteq_unittests.isolate
@@ -0,0 +1,35 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../../../testing/test_env.py',
+          '../../../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/neteq_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_touched': [
+          '../../../../DEPS',
+        ],
+        'isolate_dependency_tracked': [
+          '../../../../resources/audio_coding/neteq_network_stats.dat',
+          '../../../../resources/audio_coding/neteq_rtcp_stats.dat',
+          '../../../../resources/audio_coding/neteq_universal.rtp',
+          '../../../../resources/audio_coding/neteq_universal_ref.pcm',
+          '../../../../resources/audio_coding/testfile32kHz.pcm',
+          '../../../../testing/test_env.py',
+          '../../../../tools/swarm_client/run_isolated.py',
+          '../../../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/neteq_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/modules/audio_coding/neteq4/audio_decoder_unittests.isolate b/webrtc/modules/audio_coding/neteq4/audio_decoder_unittests.isolate
new file mode 100644
index 0000000..33c4a4b
--- /dev/null
+++ b/webrtc/modules/audio_coding/neteq4/audio_decoder_unittests.isolate
@@ -0,0 +1,31 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../../../testing/test_env.py',
+          '../../../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/audio_decoder_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_touched': [
+          '../../../../DEPS',
+        ],
+        'isolate_dependency_tracked': [
+          '../../../../resources/audio_coding/testfile32kHz.pcm',
+          '../../../../testing/test_env.py',
+          '../../../../tools/swarm_client/run_isolated.py',
+          '../../../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/audio_decoder_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/modules/audio_coding/neteq4/neteq.gypi b/webrtc/modules/audio_coding/neteq4/neteq.gypi
index ad6787c..936ab04 100644
--- a/webrtc/modules/audio_coding/neteq4/neteq.gypi
+++ b/webrtc/modules/audio_coding/neteq4/neteq.gypi
@@ -204,6 +204,24 @@
             },
           ],
         }],
+        ['test_isolation_mode != "noop"', {
+          'targets': [
+            {
+              'target_name': 'audio_decoder_unittests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'audio_decoder_unittests',
+              ],
+              'includes': [
+                'audio_decoder_unittests.isolate',
+              ],
+              'sources': [
+                'audio_decoder_unittests.isolate',
+              ],
+            },
+          ],
+        }],
       ],
     }], # include_tests
   ], # conditions
diff --git a/webrtc/modules/audio_device/audio_device.gypi b/webrtc/modules/audio_device/audio_device.gypi
index 65f3505..c3741540 100644
--- a/webrtc/modules/audio_device/audio_device.gypi
+++ b/webrtc/modules/audio_device/audio_device.gypi
@@ -219,8 +219,28 @@
             'test/func_test_manager.h',
           ],
         },
+      ], # targets
+      'conditions': [
+        ['test_isolation_mode != "noop"', {
+          'targets': [
+            {
+              'target_name': 'audio_device_tests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'audio_device_tests',
+              ],
+              'includes': [
+                'audio_device_tests.isolate',
+              ],
+              'sources': [
+                'audio_device_tests.isolate',
+              ],
+            },
+          ],
+        }],
       ],
-    }],
+    }], # include_tests
   ],
 }
 
diff --git a/webrtc/modules/audio_device/audio_device_test_api.isolate b/webrtc/modules/audio_device/audio_device_test_api.isolate
new file mode 100644
index 0000000..ec04929
--- /dev/null
+++ b/webrtc/modules/audio_device/audio_device_test_api.isolate
@@ -0,0 +1,27 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/audio_device_test_api<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/run_isolated.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/audio_device_test_api<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/modules/audio_device/audio_device_tests.isolate b/webrtc/modules/audio_device/audio_device_tests.isolate
new file mode 100644
index 0000000..65b1b06
--- /dev/null
+++ b/webrtc/modules/audio_device/audio_device_tests.isolate
@@ -0,0 +1,27 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/audio_device_tests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/run_isolated.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/audio_device_tests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/modules/modules.gyp b/webrtc/modules/modules.gyp
index 34930da..bee2195 100644
--- a/webrtc/modules/modules.gyp
+++ b/webrtc/modules/modules.gyp
@@ -335,6 +335,38 @@
             },
           ],
         }],
+        ['test_isolation_mode != "noop"', {
+          'targets': [
+            {
+              'target_name': 'modules_tests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'modules_tests',
+              ],
+              'includes': [
+                'modules_tests.isolate',
+              ],
+              'sources': [
+                'modules_tests.isolate',
+              ],
+            },
+            {
+              'target_name': 'modules_unittests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'modules_unittests',
+              ],
+              'includes': [
+                'modules_unittests.isolate',
+              ],
+              'sources': [
+                'modules_unittests.isolate',
+              ],
+            },
+          ],
+        }],
       ],
     }], # include_tests
   ], # conditions
diff --git a/webrtc/modules/modules_tests.isolate b/webrtc/modules/modules_tests.isolate
new file mode 100644
index 0000000..36eb446
--- /dev/null
+++ b/webrtc/modules/modules_tests.isolate
@@ -0,0 +1,32 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/modules_tests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../DEPS',
+          '../../resources/audio_coding/testfile32kHz.pcm',
+          '../../resources/audio_coding/teststereo32kHz.pcm',
+          '../../resources/foreman_cif.yuv',
+          '../../resources/paris_qcif.yuv',
+           '../../testing/test_env.py',
+          '../../tools/swarm_client/run_isolated.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/modules_tests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/modules/modules_unittests.isolate b/webrtc/modules/modules_unittests.isolate
index cfe2943..353c24e 100644
--- a/webrtc/modules/modules_unittests.isolate
+++ b/webrtc/modules/modules_unittests.isolate
@@ -15,5 +15,43 @@
         ],
       },
     }],
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/modules_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../data/voice_engine/audio_tiny48.wav',
+          '../../DEPS',
+          '../../resources/audio_coding/neteq_network_stats.dat',
+          '../../resources/audio_coding/neteq_rtcp_stats.dat',
+          '../../resources/audio_coding/neteq_universal_new.rtp',
+          '../../resources/audio_coding/neteq_universal_ref.pcm',
+          '../../resources/audio_coding/testfile32kHz.pcm',
+          '../../resources/deflicker_before_cif_short.yuv',
+          '../../resources/far16_stereo.pcm',
+          '../../resources/far32_stereo.pcm',
+          '../../resources/far8_stereo.pcm',
+          '../../resources/foremanColorEnhanced_cif_short.yuv',
+          '../../resources/foreman_cif.yuv',
+          '../../resources/foreman_cif_short.yuv',
+          '../../resources/near16_stereo.pcm',
+          '../../resources/near32_stereo.pcm',
+          '../../resources/near8_stereo.pcm',
+          '../../resources/video_coding/frame-ethernet-ii.pcap',
+          '../../resources/video_coding/frame-loopback.pcap',
+          '../../resources/video_coding/pltype103.rtp',
+          '../../resources/video_coding/ssrcs-2.pcap',
+          '../../resources/video_coding/ssrcs-3.pcap',
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/run_isolated.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/modules_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
   ],
-}
\ No newline at end of file
+}
diff --git a/webrtc/modules/video_capture/video_capture.gypi b/webrtc/modules/video_capture/video_capture.gypi
index cf58295..bbba9bf 100644
--- a/webrtc/modules/video_capture/video_capture.gypi
+++ b/webrtc/modules/video_capture/video_capture.gypi
@@ -196,6 +196,26 @@
             }], # OS!="mac"
           ] # conditions
         },
+      ], # targets
+      'conditions': [
+        ['test_isolation_mode != "noop"', {
+          'targets': [
+            {
+              'target_name': 'video_capture_tests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'video_capture_tests',
+              ],
+              'includes': [
+                'video_capture_tests.isolate',
+              ],
+              'sources': [
+                'video_capture_tests.isolate',
+              ],
+            },
+          ],
+        }],
       ],
     }],
   ],
diff --git a/webrtc/modules/video_capture/video_capture_module_test.isolate b/webrtc/modules/video_capture/video_capture_module_test.isolate
new file mode 100644
index 0000000..1c3a4b5
--- /dev/null
+++ b/webrtc/modules/video_capture/video_capture_module_test.isolate
@@ -0,0 +1,27 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/vp8_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/run_isolated.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/vp8_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/modules/video_capture/video_capture_tests.isolate b/webrtc/modules/video_capture/video_capture_tests.isolate
new file mode 100644
index 0000000..fd4ed0e
--- /dev/null
+++ b/webrtc/modules/video_capture/video_capture_tests.isolate
@@ -0,0 +1,27 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/video_capture_tests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/run_isolated.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/video_capture_tests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/modules/video_render/video_render.gypi b/webrtc/modules/video_render/video_render.gypi
index 83802c0..098abc0 100644
--- a/webrtc/modules/video_render/video_render.gypi
+++ b/webrtc/modules/video_render/video_render.gypi
@@ -200,6 +200,26 @@
           ] # conditions
         }, # video_render_module_test
       ], # targets
+      'conditions': [
+        ['test_isolation_mode != "noop"', {
+          'targets': [
+            {
+              'target_name': 'video_render_tests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'video_render_tests',
+              ],
+              'includes': [
+                'video_render_tests.isolate',
+              ],
+              'sources': [
+                'video_render_tests.isolate',
+              ],
+            },
+          ],
+        }],
+      ],
     }], # include_tests==0
   ], # conditions
 }
diff --git a/webrtc/modules/video_render/video_render_module_test.isolate b/webrtc/modules/video_render/video_render_module_test.isolate
new file mode 100644
index 0000000..6157b6d
--- /dev/null
+++ b/webrtc/modules/video_render/video_render_module_test.isolate
@@ -0,0 +1,27 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/video_render_module_test<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/run_isolated.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/video_render_module_test<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/modules/video_render/video_render_tests.isolate b/webrtc/modules/video_render/video_render_tests.isolate
new file mode 100644
index 0000000..ffc875d
--- /dev/null
+++ b/webrtc/modules/video_render/video_render_tests.isolate
@@ -0,0 +1,27 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/video_render_tests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/run_isolated.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/video_render_tests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/system_wrappers/source/system_wrappers_tests.gyp b/webrtc/system_wrappers/source/system_wrappers_tests.gyp
index a24b874..36c47d2 100644
--- a/webrtc/system_wrappers/source/system_wrappers_tests.gyp
+++ b/webrtc/system_wrappers/source/system_wrappers_tests.gyp
@@ -73,6 +73,24 @@
         },
       ],
     }],
+    ['test_isolation_mode != "noop"', {
+      'targets': [
+        {
+          'target_name': 'system_wrappers_unittests_run',
+          'type': 'none',
+          'dependencies': [
+            '<(import_isolate_path):import_isolate_gypi',
+            'system_wrappers_unittests',
+          ],
+          'includes': [
+            'system_wrappers_unittests.isolate',
+          ],
+          'sources': [
+            'system_wrappers_unittests.isolate',
+          ],
+        },
+      ],
+    }],
   ],
 }
 
diff --git a/webrtc/system_wrappers/source/system_wrappers_unittests.isolate b/webrtc/system_wrappers/source/system_wrappers_unittests.isolate
new file mode 100644
index 0000000..84672c7
--- /dev/null
+++ b/webrtc/system_wrappers/source/system_wrappers_unittests.isolate
@@ -0,0 +1,27 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/system_wrappers_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../../testing/test_env.py',
+          '../../../tools/swarm_client/run_isolated.py',
+          '../../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/system_wrappers_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/test/metrics.gyp b/webrtc/test/metrics.gyp
index 0f0774a..3660bec 100644
--- a/webrtc/test/metrics.gyp
+++ b/webrtc/test/metrics.gyp
@@ -52,7 +52,7 @@
         }],
       ],
     },
-  ],
+  ], # targets
   'conditions': [
     # TODO(henrike): remove build_with_chromium==1 when the bots are using
     # Chromium's buildbots.
@@ -67,5 +67,23 @@
         },
       ],
     }],
+    ['test_isolation_mode != "noop"', {
+      'targets': [
+        {
+          'target_name': 'metrics_unittests_run',
+          'type': 'none',
+          'dependencies': [
+            '<(import_isolate_path):import_isolate_gypi',
+            'metrics_unittests',
+          ],
+          'includes': [
+            'metrics_unittests.isolate',
+          ],
+          'sources': [
+            'metrics_unittests.isolate',
+          ],
+        },
+      ],
+    }],
   ],
 }
diff --git a/webrtc/test/metrics_unittests.isolate b/webrtc/test/metrics_unittests.isolate
new file mode 100644
index 0000000..5254df0
--- /dev/null
+++ b/webrtc/test/metrics_unittests.isolate
@@ -0,0 +1,29 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/metrics_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../DEPS',
+          '../../resources/foreman_cif_short.yuv',
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/run_isolated.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/metrics_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/test/test.gyp b/webrtc/test/test.gyp
index f49e313..31ba4ea 100644
--- a/webrtc/test/test.gyp
+++ b/webrtc/test/test.gyp
@@ -201,5 +201,23 @@
         },
       ],
     }],
+    ['test_isolation_mode != "noop"', {
+      'targets': [
+        {
+          'target_name': 'test_support_unittests_run',
+          'type': 'none',
+          'dependencies': [
+            '<(import_isolate_path):import_isolate_gypi',
+            'test_support_unittests',
+          ],
+          'includes': [
+            'test_support_unittests.isolate',
+          ],
+          'sources': [
+            'test_support_unittests.isolate',
+          ],
+        },
+      ],
+    }],
   ],
 }
diff --git a/webrtc/test/test_support_unittests.isolate b/webrtc/test/test_support_unittests.isolate
new file mode 100644
index 0000000..d60dce4
--- /dev/null
+++ b/webrtc/test/test_support_unittests.isolate
@@ -0,0 +1,28 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/test_support_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../DEPS',
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/run_isolated.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/test_support_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/tools/tools.gyp b/webrtc/tools/tools.gyp
index b7e6ac0..04ebd5e 100644
--- a/webrtc/tools/tools.gyp
+++ b/webrtc/tools/tools.gyp
@@ -150,6 +150,24 @@
             },
           ],
         }],
+        ['test_isolation_mode != "noop"', {
+          'targets': [
+            {
+              'target_name': 'tools_unittests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'tools_unittests',
+              ],
+              'includes': [
+                'tools_unittests.isolate',
+              ],
+              'sources': [
+                'tools_unittests.isolate',
+              ],
+            },
+          ],
+        }],
       ],
     }], # include_tests
   ], # conditions
diff --git a/webrtc/tools/tools_unittests.isolate b/webrtc/tools/tools_unittests.isolate
new file mode 100644
index 0000000..60c2231
--- /dev/null
+++ b/webrtc/tools/tools_unittests.isolate
@@ -0,0 +1,29 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/tools_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../DEPS',
+          '../../resources/foreman_cif.yuv',
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/run_isolated.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/tools_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/video_engine/test/auto_test/vie_auto_test.gypi b/webrtc/video_engine/test/auto_test/vie_auto_test.gypi
index 06b70b2..1c226b8 100644
--- a/webrtc/video_engine/test/auto_test/vie_auto_test.gypi
+++ b/webrtc/video_engine/test/auto_test/vie_auto_test.gypi
@@ -126,4 +126,24 @@
       ],
     },
   ],
+  'conditions': [
+    ['test_isolation_mode != "noop"', {
+      'targets': [
+        {
+          'target_name': 'vie_auto_test_run',
+          'type': 'none',
+          'dependencies': [
+            '<(import_isolate_path):import_isolate_gypi',
+            'vie_auto_test',
+          ],
+          'includes': [
+            'vie_auto_test.isolate',
+          ],
+          'sources': [
+            'vie_auto_test.isolate',
+          ],
+        },
+      ],
+    }],
+  ],
 }
diff --git a/webrtc/video_engine/test/auto_test/vie_auto_test.isolate b/webrtc/video_engine/test/auto_test/vie_auto_test.isolate
new file mode 100644
index 0000000..fb3b930
--- /dev/null
+++ b/webrtc/video_engine/test/auto_test/vie_auto_test.isolate
@@ -0,0 +1,30 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../../../testing/test_env.py',
+          '../../../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/vie_auto_test<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_touched': [
+          '../../../../DEPS',
+        ],
+        'isolate_dependency_tracked': [
+          '../../../../testing/test_env.py',
+          '../../../../tools/swarm_client/run_isolated.py',
+          '../../../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/vie_auto_test<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/video_engine/video_engine_core.gypi b/webrtc/video_engine/video_engine_core.gypi
index 42100df..29849fa 100644
--- a/webrtc/video_engine/video_engine_core.gypi
+++ b/webrtc/video_engine/video_engine_core.gypi
@@ -182,6 +182,24 @@
             },
           ],
         }],
+        ['test_isolation_mode != "noop"', {
+          'targets': [
+            {
+              'target_name': 'video_engine_core_unittests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'video_engine_core_unittests',
+              ],
+              'includes': [
+                'video_engine_core_unittests.isolate',
+              ],
+              'sources': [
+                'video_engine_core_unittests.isolate',
+              ],
+            },
+          ],
+        }],
       ],
     }], # include_tests
   ], # conditions
diff --git a/webrtc/video_engine/video_engine_core_unittests.isolate b/webrtc/video_engine/video_engine_core_unittests.isolate
new file mode 100644
index 0000000..28f5151
--- /dev/null
+++ b/webrtc/video_engine/video_engine_core_unittests.isolate
@@ -0,0 +1,27 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/video_engine_core_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/run_isolated.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/video_engine_core_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/voice_engine/voe_auto_test.isolate b/webrtc/voice_engine/voe_auto_test.isolate
new file mode 100644
index 0000000..465ec1a
--- /dev/null
+++ b/webrtc/voice_engine/voe_auto_test.isolate
@@ -0,0 +1,27 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/voe_auto_test<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/run_isolated.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/voe_auto_test<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}
diff --git a/webrtc/voice_engine/voice_engine.gyp b/webrtc/voice_engine/voice_engine.gyp
index d228341..035a575 100644
--- a/webrtc/voice_engine/voice_engine.gyp
+++ b/webrtc/voice_engine/voice_engine.gyp
@@ -320,6 +320,38 @@
             },
           ],
         }],
+        ['test_isolation_mode != "noop"', {
+          'targets': [
+            {
+              'target_name': 'voice_engine_unittests_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'voice_engine_unittests',
+              ],
+              'includes': [
+                'voice_engine_unittests.isolate',
+              ],
+              'sources': [
+                'voice_engine_unittests.isolate',
+              ],
+            },
+            {
+              'target_name': 'voe_auto_test_run',
+              'type': 'none',
+              'dependencies': [
+                '<(import_isolate_path):import_isolate_gypi',
+                'voe_auto_test',
+              ],
+              'includes': [
+                'voe_auto_test.isolate',
+              ],
+              'sources': [
+                'voe_auto_test.isolate',
+              ],
+            },
+          ],
+        }],
       ],  # conditions
     }], # include_tests
   ], # conditions
diff --git a/webrtc/voice_engine/voice_engine_unittests.isolate b/webrtc/voice_engine/voice_engine_unittests.isolate
new file mode 100644
index 0000000..d90fa3c
--- /dev/null
+++ b/webrtc/voice_engine/voice_engine_unittests.isolate
@@ -0,0 +1,27 @@
+# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+{
+  'conditions': [
+    ['OS=="linux" or OS=="mac" or OS=="win"', {
+      'variables': {
+        'command': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '<(PRODUCT_DIR)/voice_engine_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+        'isolate_dependency_tracked': [
+          '../../testing/test_env.py',
+          '../../tools/swarm_client/run_isolated.py',
+          '../../tools/swarm_client/googletest/run_test_cases.py',
+          '../../tools/swarm_client/third_party/upload.py',
+          '<(PRODUCT_DIR)/voice_engine_unittests<(EXECUTABLE_SUFFIX)',
+        ],
+      },
+    }],
+  ],
+}