From e96b54f4420570d132a5053917f9cb64ec4cfae4 Mon Sep 17 00:00:00 2001 From: "kjellander@webrtc.org" Date: Wed, 16 May 2012 12:02:13 +0000 Subject: [PATCH] Adding Mac and Windows Large Tests bots. This also means the old LinuxVideo bot is renamed to LinuxLargeTests. BUG=None TEST=Tested successfully with local buildbot master and remote slaves. Review URL: https://webrtc-codereview.appspot.com/582005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@2251 4adac7df-926f-26a2-2b94-8c16560cd09d --- tools/.gitignore | 8 +-- .../masters/master.webrtc/master.cfg | 52 ++++++++++---- .../masters/master.webrtc/slaves.cfg | 33 ++++++--- .../scripts/webrtc_buildbot/utils.py | 71 ++++++++++++++++++- 4 files changed, 137 insertions(+), 27 deletions(-) diff --git a/tools/.gitignore b/tools/.gitignore index dd63bb2c07..252d08b241 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -39,6 +39,7 @@ twistd.pid /continuous_build/build_internal/masters/master.webrtc/android-ndk /continuous_build/build_internal/masters/master.webrtc/chromeos /continuous_build/build_internal/masters/master.webrtc/linux-clang +/continuous_build/build_internal/masters/master.webrtc/linux-large-tests /continuous_build/build_internal/masters/master.webrtc/linux-slave-1 /continuous_build/build_internal/masters/master.webrtc/linux-slave-2 /continuous_build/build_internal/masters/master.webrtc/linux-slave-4 @@ -47,6 +48,7 @@ twistd.pid /continuous_build/build_internal/masters/master.webrtc/linux-valgrind /continuous_build/build_internal/masters/master.webrtc/LinuxChrome /continuous_build/build_internal/masters/master.webrtc/LinuxChromeBloat +/continuous_build/build_internal/masters/master.webrtc/mac-large-tests/ /continuous_build/build_internal/masters/master.webrtc/mac-slave-2 /continuous_build/build_internal/masters/master.webrtc/mac-slave-3 /continuous_build/build_internal/masters/master.webrtc/MacChrome @@ -54,7 +56,7 @@ twistd.pid /continuous_build/build_internal/masters/master.webrtc/win-32-dbg /continuous_build/build_internal/masters/master.webrtc/win-32-release /continuous_build/build_internal/masters/master.webrtc/WinChrome -/continuous_build/build_internal/masters/master.webrtc/video +/continuous_build/build_internal/masters/master.webrtc/win-large-tests /continuous_build/build_internal/masters/master.tryserver.webrtc/android-trybot /continuous_build/build_internal/masters/master.tryserver.webrtc/android-ndk-trybot /continuous_build/build_internal/masters/master.tryserver.webrtc/linux-trybot-1 @@ -64,7 +66,3 @@ twistd.pid /continuous_build/build_internal/masters/master.tryserver.webrtc/public_html /continuous_build/build_internal/masters/master.tryserver.webrtc/win-trybot-1 /continuous_build/build_internal/masters/master.tryserver.webrtc/win-trybot-2 - - - - diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg b/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg index 4cfeff1e23..870c1c946c 100755 --- a/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg +++ b/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg @@ -49,7 +49,9 @@ webrtc_scheduler = Scheduler(name='all', branch='trunk', 'LinuxClang', 'LinuxValgrind', 'Linux64DBG-GCC4.6', - 'LinuxVideoTest', + 'LinuxLargeTests', + 'MacLargeTests', + 'WinLargeTests', 'Android', 'AndroidNDK', 'ChromeOS', @@ -106,9 +108,9 @@ NORMAL_TESTS = { # Physical machine tests run on hardware with audio device and webcam present. PHYSICAL_MACHINE_TESTS = { # Test name Linux Mac Windows - 'audio_device_test_api': (False, True, True), # Issue 339 + 'audio_device_test_api': (False, False, False), # Issue 257+339 'video_render_module_test': (True, True, True), - 'vie_auto_test': (True, False, False), + 'vie_auto_test': (True, True, True), 'voe_auto_test': (True, True, True), } @@ -168,13 +170,13 @@ linux_factory_32_dbg.EnableTests(linux_normal_tests) # The video factory needs to prepare for valgrind since some tests will run # under tooling. Not all tests will though since that would be too slow. -linux_factory_video = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('linux_factory_video'), +linux_factory_large_tests = utils.WebRTCLinuxFactory( + utils.BuildStatusOracle('linux_factory_large_tests'), custom_deps_list=VALGRIND_DEPS_LIST) -linux_factory_video.EnableCoverage( +linux_factory_large_tests.EnableCoverage( coverage_url='http://webrtc-build-bot-se.lul/coverage/') -linux_factory_video.EnableBuild(compile_for_memory_tooling=True) -linux_factory_video.EnableTests(linux_physical_machine_tests) +linux_factory_large_tests.EnableBuild(compile_for_memory_tooling=True) +linux_factory_large_tests.EnableTests(linux_physical_machine_tests) chromeos_factory = utils.WebRTCLinuxFactory( utils.BuildStatusOracle('chromeos_factory')) @@ -214,6 +216,11 @@ mac_factory_32_release = utils.WebRTCMacFactory( mac_factory_32_release.EnableBuild(build_type='both', release=True) mac_factory_32_release.EnableTests(mac_normal_tests) +mac_factory_large_tests = utils.WebRTCMacFactory( + utils.BuildStatusOracle('mac_factory_large_tests')) +mac_factory_large_tests.EnableBuild(build_type='make') +mac_factory_large_tests.EnableTests(mac_physical_machine_tests) + # Windows win_factory_32_Debug = utils.WebRTCWinFactory( utils.BuildStatusOracle('win_factory_32_debug')) @@ -225,6 +232,11 @@ win_factory_32_Release = utils.WebRTCWinFactory( win_factory_32_Release.EnableBuild(configuration='Release') win_factory_32_Release.EnableTests(windows_normal_tests) +win_factory_large_tests = utils.WebRTCWinFactory( + utils.BuildStatusOracle('win_factory_large_tests')) +win_factory_large_tests.EnableBuild() +win_factory_large_tests.EnableTests(windows_physical_machine_tests) + ####### BUILDERS linux_builder_64_debug = { 'name': 'Linux64DBG', @@ -262,6 +274,12 @@ mac_builder_32_release = { 'builddir': 'mac-slave-2', 'factory': mac_factory_32_release, } +mac_builder_large_tests = { + 'name': 'MacLargeTests', + 'slavename': 'dhcp-172-28-249-168', + 'builddir': 'mac-large-tests', + 'factory': mac_factory_large_tests, + } chromeos_builder = { 'name': 'ChromeOS', 'slavename': 'webrtc-cb-linux-slave-3', @@ -280,11 +298,17 @@ win_builder_32_release = { 'builddir': 'win-32-release', 'factory': win_factory_32_Release, } -linux_builder_video = { - 'name': 'LinuxVideoTest', +win_builder_large_tests = { + 'name': 'WinLargeTests', + 'slavename': 'webrtc-test-w', + 'builddir': 'win-large-tests', + 'factory': win_factory_large_tests, + } +linux_builder_large_tests = { + 'name': 'LinuxLargeTests', 'slavename': 'webrtc-build-bot-se', - 'builddir': 'video', - 'factory': linux_factory_video, + 'builddir': 'linux-large-tests', + 'factory': linux_factory_large_tests, } linux_builder_clang = { 'name': 'LinuxClang', @@ -328,7 +352,9 @@ c['builders'] = [ linux_builder_clang, linux_builder_valgrind, linux_builder_gcc_4_6, - linux_builder_video, + win_builder_large_tests, + mac_builder_large_tests, + linux_builder_large_tests, android_builder_1, android_builder_ndk, chromeos_builder, diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/slaves.cfg b/tools/continuous_build/build_internal/masters/master.webrtc/slaves.cfg index 95c10f73b8..f11be7edb0 100644 --- a/tools/continuous_build/build_internal/masters/master.webrtc/slaves.cfg +++ b/tools/continuous_build/build_internal/masters/master.webrtc/slaves.cfg @@ -1,10 +1,11 @@ -# -*- python -*- -# ex: set syntax=python: -# Copyright (c) 2012 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. - -# See master.experimental/slaves.cfg for documentation. +#!/usr/bin/env python +# Copyright (c) 2012 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. def linux(): @@ -94,7 +95,7 @@ def linux(): 'os': 'linux', 'version': 'lucid', 'bits': '64', - 'builder': 'LinuxVideoTest', + 'builder': 'LinuxLargeTests', 'hostname': 'webrtc-build-bot-se', }, { @@ -125,6 +126,14 @@ def mac(): 'builder': 'MacOS32Release', 'hostname': 'dhcp-172-28-249-167', }, + { + 'master': 'WebRTC', + 'os': 'mac', + 'version': '10.7', + 'bits': '64', + 'builder': 'MacLargeTests', + 'hostname': 'dhcp-172-28-249-168', + }, { 'master': 'WebRTC', 'os': 'mac', @@ -153,6 +162,14 @@ def windows(): 'builder': 'Win32Release', 'hostname': 'webrtc-win2k8-2', }, + { + 'master': 'WebRTC', + 'os': 'win', + 'version': 'win7', + 'bits': '64', + 'builder': 'WinLargeTests', + 'hostname': 'webrtc-test-w', + }, { 'master': 'WebRTC', 'os': 'win', diff --git a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py index 35868cce46..0ec5f13714 100755 --- a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py +++ b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py @@ -7,7 +7,7 @@ # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. -__author__ = 'ivinnichenko@webrtc.org (Illya Vinnichenko)' +__author__ = 'kjellander@webrtc.org (Henrik Kjellander)' import ntpath import os @@ -750,6 +750,41 @@ class WebRTCMacFactory(WebRTCFactory): descriptor='EnableMake') self.AddCommonMakeStep('all') + def EnableTest(self, test): + """Adds a step for running a test on Mac. + + In general, this method will interpret the name as the name of a binary + in the default build output directory, except for a few special cases + which require custom command lines. + + Args: + test: the test name as a string. + """ + if test == 'vie_auto_test': + # Start ManyCam before the test starts: + self.AddCommonStep(cmd=['open', '/Applications/ManyCam/ManyCam.app'], + descriptor=['Starting ManyCam']) + # TODO(phoglund): Enable the full stack test once it is completed and + # nonflaky. + cmd = ( + 'out/Debug/vie_auto_test --automated --gtest_filter="' + 'ViEStandardIntegrationTest.*:' + 'ViEVideoVerificationTest.*:' + '-ViEVideoVerificationTest.RunsFullStackWithoutErrors:' + 'ViEVideoVerificationTest.RunsFileTestWithoutErrors:' # bug 524 + 'ViEStandardIntegrationTest.RunsRtpRtcpTestWithoutErrors" ' # bug 477 + '--capture_test_ensure_resolution_alignment_in_capture_device=false') + self.AddCommonTestRunStep(test=test, cmd=cmd) + self.AddCommonStep(cmd=['killall', 'ManyCam'], + descriptor=['Stopping ManyCam']) + elif test == 'voe_auto_test': + cmd = ('out/Debug/voe_auto_test --automated ' + # Disabled test until bug 527 is resolved. + '--gtest_filter=-VolumeTest.SetVolumeBeforePlayoutWorks') + self.AddCommonTestRunStep(test=test, cmd=cmd) + else: + self.AddCommonTestRunStep(test) + def AddCommonTestRunStep(self, test, extra_text=None, cmd=None): descriptor = [test, extra_text] if extra_text else [test] if cmd is None: @@ -790,6 +825,8 @@ class WebRTCWinFactory(WebRTCFactory): # Must provide full path to the command since we cannot add custom paths to # the PATH environment variable when using Chromium buildbot startup scripts. BUILD_CMD = r'C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe' + VCAM_PROCESS_NAME = 'VCamManager' + VCAM_PATH = r'C:\Program Files (x86)\e2eSoft\VCam\VCamManager.exe' def __init__(self, build_status_oracle, is_try_slave=False): WebRTCFactory.__init__(self, build_status_oracle, is_try_slave) @@ -861,6 +898,38 @@ class WebRTCWinFactory(WebRTCFactory): '/p:Configuration=Release;Platform=%s' % (self.platform)] self.AddCommonStep(cmd, descriptor='Build(Release)') + def EnableTest(self, test): + """Adds a step for running a test on Windows. + + In general, this method will interpret the name as the name of a binary + in the default build output directory, except for a few special cases + which require custom command lines. + + Args: + test: the test name as a string. + """ + if test == 'vie_auto_test': + # Start VCam before the test starts: + self.AddCommonStep(cmd=['cmd', '-c', WebRTCWinFactory.VCAM_PATH], + descriptor=['Starting VCam']) + # TODO(phoglund): Enable the full stack test once it is completed and + # nonflaky. + cmd = ( + 'build\\Debug\\vie_auto_test.exe --automated --gtest_filter="' + 'ViEStandardIntegrationTest.*:' + 'ViEVideoVerificationTest.*:' + '-ViEVideoVerificationTest.RunsFullStackWithoutErrors:' + 'ViEStandardIntegrationTest.RunsRtpRtcpTestWithoutErrors" ' # bug 477 + '--capture_test_ensure_resolution_alignment_in_capture_device=false') + self.AddCommonTestRunStep(test=test, cmd=cmd) + self.AddCommonStep(cmd=['tskill', WebRTCWinFactory.VCAM_PROCESS_NAME], + descriptor=['Stopping VCam']) + elif test == 'voe_auto_test': + cmd = 'build\\Debug\\voe_auto_test.exe --automated' + self.AddCommonTestRunStep(test=test, cmd=cmd) + else: + self.AddCommonTestRunStep(test) + def AddCommonTestRunStep(self, test, cmd=None): descriptor = [test] if self.configuration == 'Debug' or self.configuration == 'both':