blob: b8e983fe4a582a2cae597fa604da22176669cb00 [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//media/media_options.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
source_set("run_all_unittests") {
testonly = true
sources = [
"run_all_unittests.cc",
]
configs += [ "//media:media_config" ]
deps = [
"//base",
"//base/test:test_support",
"//media:test_support",
"//mojo/edk/system",
]
if (is_android) {
deps += [ "//ui/gl" ]
}
}
source_set("pipeline_integration_test_base") {
testonly = true
if (media_use_ffmpeg) {
sources = [
"fake_encrypted_media.cc",
"fake_encrypted_media.h",
"mock_media_source.cc",
"mock_media_source.h",
"pipeline_integration_test_base.cc",
"pipeline_integration_test_base.h",
]
configs += [ "//media:media_config" ]
deps = [
"//base",
"//base/test:test_support",
"//media:test_support",
"//testing/gmock",
"//testing/gtest",
"//url",
]
}
}
source_set("pipeline_integration_tests") {
testonly = true
# Even if FFmpeg is enabled on Android we don't want these.
# TODO(watk): Refactor tests that could be made to run on Android. See
# http://crbug.com/570762
if (media_use_ffmpeg && !is_android) {
sources = [
"pipeline_integration_test.cc",
]
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
deps = [
":pipeline_integration_test_base",
"//base",
"//media:test_support",
"//media/mojo/clients",
"//services/service_manager/public/cpp:service_test_support",
# Needed for the opus_config
"//third_party/opus",
"//url",
# TODO(dalecurtis): Required since the gmock header is included in the
# header for pipeline_integration_test_base.h. This should be moved into
# the .cc file to avoid the extra dependency here.
"//testing/gmock",
]
}
}
source_set("pipeline_integration_perftests") {
testonly = true
if (media_use_ffmpeg) {
sources = [
"pipeline_integration_perftest.cc",
]
deps = [
":pipeline_integration_test_base",
"//media:test_support",
"//testing/gtest",
"//testing/perf",
# TODO(dalecurtis): Required since the gmock header is included in the
# header for pipeline_integration_test_base.h. This should be moved into
# the .cc file to avoid the extra dependency here.
"//testing/gmock",
]
}
}
source_set("mojo_pipeline_integration_tests") {
testonly = true
if (media_use_ffmpeg && !is_android) {
sources = [
"pipeline_integration_test.cc",
]
defines = [ "MOJO_RENDERER" ]
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
deps = [
":pipeline_integration_test_base",
"//base",
"//base/test:test_support",
"//media:test_support",
"//media/mojo/clients",
"//media/mojo/interfaces",
"//media/mojo/services",
"//services/service_manager/public/cpp:service_test_support",
"//testing/gtest",
"//ui/gfx:test_support",
"//ui/gfx/geometry",
# TODO(dalecurtis): Required since the gmock header is included in the
# header for pipeline_integration_test_base.h. This should be moved
# into the .cc file to avoid the extra dependency here.
"//testing/gmock",
]
}
}
# Keep these aligned with FuzzerVariant in pipeline_integration_fuzzertest.c
pipeline_integration_fuzzer_variants = [
"SRC", # A SRC= version (not MSE) pipeline fuzzer test
# MSE pipeline fuzzer test variants. Note, while it would be nice to have one
# generic MSE fuzzer, we use distinct fuzzers corresponding 1:1 to a set of
# mimetype+codec strings for now because maintaining the association of a
# (mutated) corpus item with the same MSE SourceBuffer configuration requires
# associating that item with the same mimetype+codec string. The benefits are
# simpler fuzzers and the ability to slice per-fuzzer coverage stats. The
# costs include more fuzzers and more potential duplicate bugs from different
# fuzzers for common issues exposed across mimetype+codec string variants.
# TODO(wolenetz): Add more MSE fuzzer variants for different bytestreams and
# codec combos. See https://crbug.com/750818.
"MP4_FLAC",
"MP4_AVC1",
"WEBM_VP9",
"MP3",
]
foreach(variant, pipeline_integration_fuzzer_variants) {
if (variant == "SRC") {
test_name = "media_pipeline_integration_fuzzer"
} else {
test_name = "mediasource_${variant}_pipeline_integration_fuzzer"
}
fuzzer_test(test_name) {
sources = [
"pipeline_integration_fuzzertest.cc",
]
deps = [
":pipeline_integration_test_base",
"//base",
"//media",
# TODO(dalecurtis): Required since the gmock header is included in the
# header for pipeline_integration_test_base.h. This should be
# moved into the .cc file to avoid the extra dependency here.
"//testing/gmock",
"//ui/gfx:test_support",
]
libfuzzer_options = [
# This is done to avoid DEATH of ASan with "Thread limit exceeded" error.
"runs=500000",
# This is done to suppress tons of log messages generated by gmock asserts.
"close_fd_mask=1",
]
defines = [ "PIPELINE_FUZZER_VARIANT=${variant}" ]
seed_corpus = "//media/test/data/"
}
}