Add Fuchsia mixin, disable unsupported absl calls for fuchsia

Add a few tests to get started on debugging.

The goal of this CL is to get the Fuchsia bots running the tests without infra specific issues. After landing this, failures will be in test framework files (e.g. test/testsupport folder) and WebRTC code.

Bug: b/232740856
Change-Id: I332607fe875334769e7dadf6696d878a23a7e69f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/280440
Reviewed-by: Andrey Logvin <landrey@webrtc.org>
Reviewed-by: Andrey Logvin <landrey@google.com>
Reviewed-by: Jeremy Leconte <jleconte@google.com>
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/heads/main@{#38596}
diff --git a/infra/specs/client.webrtc.json b/infra/specs/client.webrtc.json
index 93615be..e9e9b56 100644
--- a/infra/specs/client.webrtc.json
+++ b/infra/specs/client.webrtc.json
@@ -2692,6 +2692,10 @@
   "Fuchsia Release": {
     "isolated_scripts": [
       {
+        "args": [
+          "--",
+          "--undefok=use-vulkan"
+        ],
         "isolate_name": "audio_decoder_unittests",
         "merge": {
           "args": [],
@@ -2713,6 +2717,10 @@
         "test_id_prefix": "ninja://modules/audio_coding:audio_decoder_unittests/"
       },
       {
+        "args": [
+          "--",
+          "--undefok=use-vulkan"
+        ],
         "isolate_name": "common_audio_unittests",
         "merge": {
           "args": [],
@@ -2734,6 +2742,10 @@
         "test_id_prefix": "ninja://common_audio:common_audio_unittests/"
       },
       {
+        "args": [
+          "--",
+          "--undefok=use-vulkan"
+        ],
         "isolate_name": "common_video_unittests",
         "merge": {
           "args": [],
@@ -2755,6 +2767,10 @@
         "test_id_prefix": "ninja://common_video:common_video_unittests/"
       },
       {
+        "args": [
+          "--",
+          "--undefok=use-vulkan"
+        ],
         "isolate_name": "dcsctp_unittests",
         "merge": {
           "args": [],
@@ -2777,7 +2793,8 @@
       },
       {
         "args": [
-          "--quick"
+          "--",
+          "--undefok=use-vulkan"
         ],
         "isolate_name": "low_bandwidth_audio_test",
         "merge": {
@@ -2798,327 +2815,6 @@
           ]
         },
         "test_id_prefix": "ninja://audio:low_bandwidth_audio_test/"
-      },
-      {
-        "isolate_name": "modules_tests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "modules_tests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "shards": 2
-        },
-        "test_id_prefix": "ninja://modules:modules_tests/"
-      },
-      {
-        "isolate_name": "modules_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "modules_unittests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "shards": 6
-        },
-        "test_id_prefix": "ninja://modules:modules_unittests/"
-      },
-      {
-        "isolate_name": "peerconnection_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "peerconnection_unittests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "shards": 4
-        },
-        "test_id_prefix": "ninja://pc:peerconnection_unittests/"
-      },
-      {
-        "isolate_name": "rtc_media_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "rtc_media_unittests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ]
-        },
-        "test_id_prefix": "ninja://media:rtc_media_unittests/"
-      },
-      {
-        "isolate_name": "rtc_pc_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "rtc_pc_unittests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ]
-        },
-        "test_id_prefix": "ninja://pc:rtc_pc_unittests/"
-      },
-      {
-        "isolate_name": "rtc_stats_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "rtc_stats_unittests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ]
-        },
-        "test_id_prefix": "ninja://stats:rtc_stats_unittests/"
-      },
-      {
-        "isolate_name": "rtc_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "rtc_unittests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "shards": 6
-        },
-        "test_id_prefix": "ninja://:rtc_unittests/"
-      },
-      {
-        "isolate_name": "slow_peer_connection_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "slow_peer_connection_unittests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ]
-        },
-        "test_id_prefix": "ninja://pc:slow_peer_connection_unittests/"
-      },
-      {
-        "isolate_name": "svc_tests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "svc_tests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "shards": 4
-        },
-        "test_id_prefix": "ninja://pc:svc_tests/"
-      },
-      {
-        "isolate_name": "system_wrappers_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "system_wrappers_unittests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ]
-        },
-        "test_id_prefix": "ninja://system_wrappers:system_wrappers_unittests/"
-      },
-      {
-        "isolate_name": "test_support_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "test_support_unittests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ]
-        },
-        "test_id_prefix": "ninja://test:test_support_unittests/"
-      },
-      {
-        "isolate_name": "tools_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "tools_unittests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ]
-        },
-        "test_id_prefix": "ninja://rtc_tools:tools_unittests/"
-      },
-      {
-        "isolate_name": "video_engine_tests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "video_engine_tests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ],
-          "shards": 4
-        },
-        "test_id_prefix": "ninja://:video_engine_tests/"
-      },
-      {
-        "isolate_name": "voip_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "voip_unittests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ]
-        },
-        "test_id_prefix": "ninja://:voip_unittests/"
-      },
-      {
-        "isolate_name": "webrtc_nonparallel_tests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "webrtc_nonparallel_tests",
-        "resultdb": {
-          "result_format": "json"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Ubuntu-18.04"
-            }
-          ]
-        },
-        "test_id_prefix": "ninja://:webrtc_nonparallel_tests/"
       }
     ]
   },
diff --git a/infra/specs/mixins.pyl b/infra/specs/mixins.pyl
index 49566ff..3e3c9b7 100644
--- a/infra/specs/mixins.pyl
+++ b/infra/specs/mixins.pyl
@@ -59,6 +59,11 @@
       }
     }
   },
+  'fuchsia': {
+    '$mixin_append': {
+      'args': ['--', '--undefok=use-vulkan']
+    }
+  },
   'hammerhead': {
     'swarming': {
       'dimensions': {
diff --git a/infra/specs/mixins_webrtc.pyl b/infra/specs/mixins_webrtc.pyl
index 1d270f4..357b94e 100644
--- a/infra/specs/mixins_webrtc.pyl
+++ b/infra/specs/mixins_webrtc.pyl
@@ -184,6 +184,11 @@
       }
     }
   },
+  'fuchsia': {
+    '$mixin_append': {
+      'args': ['--', '--undefok=use-vulkan']
+    }
+  },
   'resultdb-gtest-json-format': {
     '$mixin_append': {
       'args': [
diff --git a/infra/specs/test_suites.pyl b/infra/specs/test_suites.pyl
index 88de021..06338d3 100644
--- a/infra/specs/test_suites.pyl
+++ b/infra/specs/test_suites.pyl
@@ -116,6 +116,13 @@
       'voip_unittests': {},
       'webrtc_nonparallel_tests': {},
     },
+    'fuchsia_compatible_tests': {
+      'audio_decoder_unittests': {},
+      'common_audio_unittests': {},
+      'common_video_unittests': {},
+      'dcsctp_unittests': {},
+      'low_bandwidth_audio_test': {},
+    },
     'ios_device_tests': {
       # TODO(bugs.webrtc.org/11362): Real XCTests fail to start on devices.
       #'apprtcmobile_tests': {'mixins': ['xcodebuild-device-runner']},
diff --git a/infra/specs/tryserver.webrtc.json b/infra/specs/tryserver.webrtc.json
index a5dc5ae..302c94c 100644
--- a/infra/specs/tryserver.webrtc.json
+++ b/infra/specs/tryserver.webrtc.json
@@ -2828,7 +2828,135 @@
   "android_compile_x64_rel": {},
   "android_compile_x86_dbg": {},
   "android_compile_x86_rel": {},
-  "fuchsia_rel": {},
+  "fuchsia_rel": {
+    "isolated_scripts": [
+      {
+        "args": [
+          "--",
+          "--undefok=use-vulkan"
+        ],
+        "isolate_name": "audio_decoder_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "audio_decoder_unittests",
+        "resultdb": {
+          "result_format": "json"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Ubuntu-18.04"
+            }
+          ]
+        },
+        "test_id_prefix": "ninja://modules/audio_coding:audio_decoder_unittests/"
+      },
+      {
+        "args": [
+          "--",
+          "--undefok=use-vulkan"
+        ],
+        "isolate_name": "common_audio_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "common_audio_unittests",
+        "resultdb": {
+          "result_format": "json"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Ubuntu-18.04"
+            }
+          ]
+        },
+        "test_id_prefix": "ninja://common_audio:common_audio_unittests/"
+      },
+      {
+        "args": [
+          "--",
+          "--undefok=use-vulkan"
+        ],
+        "isolate_name": "common_video_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "common_video_unittests",
+        "resultdb": {
+          "result_format": "json"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Ubuntu-18.04"
+            }
+          ]
+        },
+        "test_id_prefix": "ninja://common_video:common_video_unittests/"
+      },
+      {
+        "args": [
+          "--",
+          "--undefok=use-vulkan"
+        ],
+        "isolate_name": "dcsctp_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "dcsctp_unittests",
+        "resultdb": {
+          "result_format": "json"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Ubuntu-18.04"
+            }
+          ]
+        },
+        "test_id_prefix": "ninja://net/dcsctp:dcsctp_unittests/"
+      },
+      {
+        "args": [
+          "--",
+          "--undefok=use-vulkan"
+        ],
+        "isolate_name": "low_bandwidth_audio_test",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "low_bandwidth_audio_test",
+        "resultdb": {
+          "result_format": "json"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Ubuntu-18.04"
+            }
+          ]
+        },
+        "test_id_prefix": "ninja://audio:low_bandwidth_audio_test/"
+      }
+    ]
+  },
   "ios_compile_arm64_dbg": {},
   "ios_compile_arm64_rel": {},
   "ios_sim_x64_dbg_ios12": {
diff --git a/infra/specs/waterfalls.pyl b/infra/specs/waterfalls.pyl
index 1a9257e..2dcaac9 100644
--- a/infra/specs/waterfalls.pyl
+++ b/infra/specs/waterfalls.pyl
@@ -67,9 +67,10 @@
       'Android64 Builder x64 (dbg)': {},
       'Fuchsia Release': {
         'os_type': 'linux',
-        'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'],
+        'mixins':
+        ['linux-bionic', 'x86-64', 'resultdb-json-format', 'fuchsia'],
         'test_suites': {
-          'isolated_scripts': 'desktop_tests',
+          'isolated_scripts': 'fuchsia_compatible_tests',
         },
       },
       'Linux (more configs)': {
@@ -458,9 +459,10 @@
       'android_compile_x86_rel': {},
       'fuchsia_rel': {
         'os_type': 'linux',
-        'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'],
-        'test_suties': {
-          'isolateds_scripts': 'desktop_tests',
+        'mixins':
+        ['linux-bionic', 'x86-64', 'resultdb-json-format', 'fuchsia'],
+        'test_suites': {
+          'isolated_scripts': 'fuchsia_compatible_tests',
         },
       },
       'ios_compile_arm64_dbg': {},
diff --git a/test/test_main.cc b/test/test_main.cc
index f919c4b..27c3d8c 100644
--- a/test/test_main.cc
+++ b/test/test_main.cc
@@ -22,8 +22,11 @@
   testing::InitGoogleMock(&argc, argv);
   absl::ParseCommandLine(argc, argv);
 
+// This absl handler use unsupported features/instructions on Fuchsia
+#if !defined(WEBRTC_FUCHSIA)
   absl::FailureSignalHandlerOptions options;
   absl::InstallFailureSignalHandler(options);
+#endif
 
   std::unique_ptr<webrtc::TestMain> main = webrtc::TestMain::Create();
   int err_code = main->Init();