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