nacl_browsertest.cc revision ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include <stdio.h> 6#if defined(OS_POSIX) 7#include <unistd.h> 8#elif defined(OS_WIN) 9#include <windows.h> 10#endif 11 12#define TELEMETRY 1 13 14#include "chrome/test/nacl/nacl_browsertest_util.h" 15 16namespace { 17 18// These tests fail on Linux ASAN bots: <http://crbug.com/161709>. 19#if defined(OS_LINUX) && defined(ADDRESS_SANITIZER) 20#define MAYBE_SimpleLoad DISABLED_SimpleLoad 21#define MAYBE_ExitStatus0 DISABLED_ExitStatus0 22#define MAYBE_ExitStatus254 DISABLED_ExitStatus254 23#define MAYBE_ExitStatusNeg2 DISABLED_ExitStatusNeg2 24#define MAYBE_PPAPICore DISABLED_PPAPICore 25#define MAYBE_ProgressEvents DISABLED_ProgressEvents 26#define MAYBE_PnaclMimeType DISABLED_PnaclMimeType 27#define MAYBE_CrossOriginCORS DISABLED_CrossOriginCORS 28#define MAYBE_CrossOriginFail DISABLED_CrossOriginFail 29#define MAYBE_SameOriginCookie DISABLED_SameOriginCookie 30#define MAYBE_CORSNoCookie DISABLED_CORSNoCookie 31#define MAYBE_SysconfNprocessorsOnln DISABLED_SysconfNprocessorsOnln 32#else 33#define MAYBE_SimpleLoad SimpleLoad 34#define MAYBE_ExitStatus0 ExitStatus0 35#define MAYBE_ExitStatus254 ExitStatus254 36#define MAYBE_ExitStatusNeg2 ExitStatusNeg2 37#define MAYBE_PPAPICore PPAPICore 38#define MAYBE_ProgressEvents ProgressEvents 39#define MAYBE_PnaclMimeType PnaclMimeType 40#define MAYBE_CrossOriginCORS CrossOriginCORS 41#define MAYBE_CrossOriginFail CrossOriginFail 42#define MAYBE_SameOriginCookie SameOriginCookie 43#define MAYBE_CORSNoCookie CORSNoCookie 44# if defined(OS_WIN) 45# define MAYBE_SysconfNprocessorsOnln DISABLED_SysconfNprocessorsOnln 46# else 47# define MAYBE_SysconfNprocessorsOnln SysconfNprocessorsOnln 48# endif 49#endif 50 51NACL_BROWSER_TEST_F(NaClBrowserTest, MAYBE_SimpleLoad, { 52 RunLoadTest(FILE_PATH_LITERAL("nacl_load_test.html")); 53}) 54 55IN_PROC_BROWSER_TEST_F(NaClBrowserTestPnaclWithOldCache, 56 MAYBE_PNACL(SimpleLoad)) { 57 RunLoadTest(FILE_PATH_LITERAL("nacl_load_test.html")); 58} 59 60IN_PROC_BROWSER_TEST_F(NaClBrowserTestPnaclWithOldCache, 61 MAYBE_PNACL(PnaclErrorHandling)) { 62 RunNaClIntegrationTest(FILE_PATH_LITERAL("pnacl_error_handling.html")); 63} 64 65NACL_BROWSER_TEST_F(NaClBrowserTest, MAYBE_ExitStatus0, { 66 RunNaClIntegrationTest(FILE_PATH_LITERAL( 67 "pm_exit_status_test.html?trigger=exit0&expected_exit=0")); 68}) 69 70NACL_BROWSER_TEST_F(NaClBrowserTest, MAYBE_ExitStatus254, { 71 RunNaClIntegrationTest(FILE_PATH_LITERAL( 72 "pm_exit_status_test.html?trigger=exit254&expected_exit=254")); 73}) 74 75NACL_BROWSER_TEST_F(NaClBrowserTest, MAYBE_ExitStatusNeg2, { 76 RunNaClIntegrationTest(FILE_PATH_LITERAL( 77 "pm_exit_status_test.html?trigger=exitneg2&expected_exit=254")); 78}) 79 80NACL_BROWSER_TEST_F(NaClBrowserTest, MAYBE_PPAPICore, { 81 RunNaClIntegrationTest(FILE_PATH_LITERAL("ppapi_ppb_core.html")); 82}) 83 84NACL_BROWSER_TEST_F(NaClBrowserTest, MAYBE_ProgressEvents, { 85 RunNaClIntegrationTest(FILE_PATH_LITERAL("ppapi_progress_events.html")); 86}) 87 88// Some versions of Visual Studio does not like preprocessor 89// conditionals inside the argument of a macro, so we put the 90// conditionals on a helper function. We are already in an anonymous 91// namespace, so the name of the helper is not visible in external 92// scope. 93#if defined(OS_POSIX) 94base::FilePath::StringType NumberOfCoresAsFilePathString() { 95 char string_rep[23]; 96 long nprocessors = sysconf(_SC_NPROCESSORS_ONLN); 97#if TELEMETRY 98 fprintf(stderr, "browser says nprocessors = %ld\n", nprocessors); 99 fflush(NULL); 100#endif 101 snprintf(string_rep, sizeof string_rep, "%ld", nprocessors); 102 return string_rep; 103} 104#elif defined(OS_WIN) 105base::FilePath::StringType NumberOfCoresAsFilePathString() { 106 wchar_t string_rep[23]; 107 SYSTEM_INFO system_info; 108 GetSystemInfo(&system_info); 109#if TELEMETRY 110 fprintf(stderr, "browser says nprocessors = %d\n", 111 system_info.dwNumberOfProcessors); 112 fflush(NULL); 113#endif 114 _snwprintf_s(string_rep, sizeof string_rep / sizeof string_rep[0], _TRUNCATE, 115 L"%u", system_info.dwNumberOfProcessors); 116 return string_rep; 117} 118#endif 119 120#if TELEMETRY 121static void PathTelemetry(base::FilePath::StringType const &path) { 122# if defined(OS_WIN) 123 fwprintf(stderr, L"path = %s\n", path.c_str()); 124# else 125 fprintf(stderr, "path = %s\n", path.c_str()); 126# endif 127 fflush(NULL); 128} 129#else 130static void PathTelemetry(base::FilePath::StringType const &path) { 131 (void) path; 132} 133#endif 134 135NACL_BROWSER_TEST_F(NaClBrowserTest, MAYBE_SysconfNprocessorsOnln, { 136 base::FilePath::StringType path = 137 FILE_PATH_LITERAL("sysconf_nprocessors_onln_test.html?cpu_count="); 138 path = path + NumberOfCoresAsFilePathString(); 139 PathTelemetry(path); 140 RunNaClIntegrationTest(path); 141}) 142 143IN_PROC_BROWSER_TEST_F(NaClBrowserTestStatic, MAYBE_CrossOriginCORS) { 144 RunLoadTest(FILE_PATH_LITERAL("cross_origin/cors.html")); 145} 146 147IN_PROC_BROWSER_TEST_F(NaClBrowserTestStatic, MAYBE_CrossOriginFail) { 148 RunLoadTest(FILE_PATH_LITERAL("cross_origin/fail.html")); 149} 150 151IN_PROC_BROWSER_TEST_F(NaClBrowserTestStatic, MAYBE_SameOriginCookie) { 152 RunLoadTest(FILE_PATH_LITERAL("cross_origin/same_origin_cookie.html")); 153} 154 155IN_PROC_BROWSER_TEST_F(NaClBrowserTestStatic, MAYBE_CORSNoCookie) { 156 RunLoadTest(FILE_PATH_LITERAL("cross_origin/cors_no_cookie.html")); 157} 158 159IN_PROC_BROWSER_TEST_F(NaClBrowserTestPnacl, 160 MAYBE_PNACL(PnaclErrorHandling)) { 161 RunNaClIntegrationTest(FILE_PATH_LITERAL("pnacl_error_handling.html")); 162} 163 164IN_PROC_BROWSER_TEST_F(NaClBrowserTestPnacl, 165 MAYBE_PNACL(PnaclNMFOptionsO0)) { 166 RunLoadTest(FILE_PATH_LITERAL("pnacl_options.html?use_nmf=o_0")); 167} 168 169IN_PROC_BROWSER_TEST_F(NaClBrowserTestPnacl, 170 MAYBE_PNACL(PnaclNMFOptionsO2)) { 171 RunLoadTest(FILE_PATH_LITERAL("pnacl_options.html?use_nmf=o_2")); 172} 173 174IN_PROC_BROWSER_TEST_F(NaClBrowserTestPnacl, 175 MAYBE_PNACL(PnaclNMFOptionsOlarge)) { 176 RunLoadTest(FILE_PATH_LITERAL("pnacl_options.html?use_nmf=o_large")); 177} 178 179IN_PROC_BROWSER_TEST_F(NaClBrowserTestPnacl, 180 MAYBE_PNACL(PnaclDyncodeSyscallDisabled)) { 181 RunNaClIntegrationTest(FILE_PATH_LITERAL( 182 "pnacl_dyncode_syscall_disabled.html")); 183} 184 185IN_PROC_BROWSER_TEST_F(NaClBrowserTestPnacl, 186 MAYBE_PNACL(PnaclExceptionHandlingDisabled)) { 187 RunNaClIntegrationTest(FILE_PATH_LITERAL( 188 "pnacl_exception_handling_disabled.html")); 189} 190 191IN_PROC_BROWSER_TEST_F(NaClBrowserTestPnacl, MAYBE_PNACL(PnaclMimeType)) { 192 RunLoadTest(FILE_PATH_LITERAL("pnacl_mime_type.html")); 193} 194 195IN_PROC_BROWSER_TEST_F(NaClBrowserTestPnaclDisabled, 196 MAYBE_PNACL(PnaclMimeType)) { 197 RunLoadTest(FILE_PATH_LITERAL("pnacl_mime_type.html")); 198} 199 200} // namespace 201