Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(625)

Side by Side Diff: chrome/browser/copresence/chrome_whispernet_client_browsertest.cc

Issue 969843002: Two small bugfixes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing test name Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/resources/whispernet_proxy/js/nacl.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/copresence/chrome_whispernet_client.h" 5 #include "chrome/browser/copresence/chrome_whispernet_client.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <cstdlib> 8 #include <cstdlib>
9 #include <string> 9 #include <string>
10 10
(...skipping 15 matching lines...) Expand all
26 #include "media/base/audio_bus.h" 26 #include "media/base/audio_bus.h"
27 #include "media/base/audio_converter.h" 27 #include "media/base/audio_converter.h"
28 28
29 using audio_modem::WhispernetClient; 29 using audio_modem::WhispernetClient;
30 using audio_modem::AUDIBLE; 30 using audio_modem::AUDIBLE;
31 using audio_modem::INAUDIBLE; 31 using audio_modem::INAUDIBLE;
32 using audio_modem::TokenParameters; 32 using audio_modem::TokenParameters;
33 33
34 namespace { 34 namespace {
35 35
36 // TODO(rkc): Add more varied test input. 36 // TODO(ckehoe): Use randomly generated tokens instead.
37 const char kSixZeros[] = "MDAwMDAw"; 37 const char kSixZeros[] = "MDAwMDAw";
38 const char kEightZeros[] = "MDAwMDAwMDA"; 38 const char kEightZeros[] = "MDAwMDAwMDA";
39 const char kNineZeros[] = "MDAwMDAwMDAw"; 39 const char kNineZeros[] = "MDAwMDAwMDAw";
40 40
41 const size_t kTokenLengths[2] = {6, 6}; 41 const size_t kTokenLengths[2] = {6, 6};
42 42
43 // Copied from src/components/copresence/mediums/audio/audio_recorder.cc 43 // Copied from src/components/copresence/mediums/audio/audio_recorder.cc
44 std::string AudioBusToString(scoped_refptr<media::AudioBusRefCounted> source) { 44 std::string AudioBusToString(scoped_refptr<media::AudioBusRefCounted> source) {
45 std::string buffer; 45 std::string buffer;
46 buffer.resize(source->frames() * source->channels() * sizeof(float)); 46 buffer.resize(source->frames() * source->channels() * sizeof(float));
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 media::AudioParameters::NO_EFFECTS); 107 media::AudioParameters::NO_EFFECTS);
108 108
109 converter_.reset(new media::AudioConverter( 109 converter_.reset(new media::AudioConverter(
110 coder_params_, default_params_, 110 coder_params_, default_params_,
111 default_params_.sample_rate() == coder_params_.sample_rate())); 111 default_params_.sample_rate() == coder_params_.sample_rate()));
112 converter_->AddInput(this); 112 converter_->AddInput(this);
113 } 113 }
114 114
115 void EncodeTokenAndSaveSamples(WhispernetClient* client, 115 void EncodeTokenAndSaveSamples(WhispernetClient* client,
116 bool audible, 116 bool audible,
117 const std::string& token) { 117 const std::string& token,
118 const TokenParameters token_params[2]) {
118 run_loop_.reset(new base::RunLoop()); 119 run_loop_.reset(new base::RunLoop());
119 client->RegisterSamplesCallback( 120 client->RegisterSamplesCallback(
120 base::Bind(&ChromeWhispernetClientTest::SamplesCallback, 121 base::Bind(&ChromeWhispernetClientTest::SamplesCallback,
121 base::Unretained(this))); 122 base::Unretained(this)));
122 expected_token_ = token; 123 expected_token_ = token;
123 expected_audible_ = audible; 124 expected_audible_ = audible;
124 125
125 TokenParameters token_params[2];
126 client->EncodeToken(token, audible ? AUDIBLE : INAUDIBLE, token_params); 126 client->EncodeToken(token, audible ? AUDIBLE : INAUDIBLE, token_params);
127 run_loop_->Run(); 127 run_loop_->Run();
128 128
129 EXPECT_GT(saved_samples_->frames(), 0); 129 EXPECT_GT(saved_samples_->frames(), 0);
130 } 130 }
131 131
132 void DecodeSamplesAndVerifyToken(WhispernetClient* client, 132 void DecodeSamplesAndVerifyToken(WhispernetClient* client,
133 bool expect_audible, 133 bool expect_audible,
134 const std::string& expected_token, 134 const std::string& expected_token,
135 const TokenParameters token_params[2]) { 135 const TokenParameters token_params[2]) {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 media::AudioParameters coder_params_; 229 media::AudioParameters coder_params_;
230 230
231 DISALLOW_COPY_AND_ASSIGN(ChromeWhispernetClientTest); 231 DISALLOW_COPY_AND_ASSIGN(ChromeWhispernetClientTest);
232 }; 232 };
233 233
234 // These tests are irrelevant if NACL is disabled. See crbug.com/449198 234 // These tests are irrelevant if NACL is disabled. See crbug.com/449198
235 #if defined(DISABLE_NACL) 235 #if defined(DISABLE_NACL)
236 #define MAYBE_Initialize DISABLED_Initialize 236 #define MAYBE_Initialize DISABLED_Initialize
237 #define MAYBE_EncodeAndDecode DISABLED_EncodeAndDecode 237 #define MAYBE_EncodeAndDecode DISABLED_EncodeAndDecode
238 #define MAYBE_TokenLengths DISABLED_TokenLengths 238 #define MAYBE_TokenLengths DISABLED_TokenLengths
239 #define MAYBE_Crc DISABLED_Crc
239 #define MAYBE_MultipleClients DISABLED_MultipleClients 240 #define MAYBE_MultipleClients DISABLED_MultipleClients
240 #else 241 #else
241 #define MAYBE_Initialize Initialize 242 #define MAYBE_Initialize Initialize
242 #define MAYBE_EncodeAndDecode EncodeAndDecode 243 #define MAYBE_EncodeAndDecode EncodeAndDecode
243 #define MAYBE_TokenLengths TokenLengths 244 #define MAYBE_TokenLengths TokenLengths
245 #define MAYBE_Crc Crc
244 #define MAYBE_MultipleClients MultipleClients 246 #define MAYBE_MultipleClients MultipleClients
245 #endif 247 #endif
246 248
247 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_Initialize) { 249 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_Initialize) {
248 InitializeWhispernet(); 250 InitializeWhispernet();
249 } 251 }
250 252
251 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_EncodeAndDecode) { 253 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_EncodeAndDecode) {
252 scoped_ptr<WhispernetClient> client( 254 scoped_ptr<WhispernetClient> client(
253 new ChromeWhispernetClient(browser()->profile())); 255 new ChromeWhispernetClient(browser()->profile()));
254 client->Initialize(base::Bind(&IgnoreResult)); 256 client->Initialize(base::Bind(&IgnoreResult));
255 SetupDecode(); 257 SetupDecode();
256 258
257 TokenParameters token_params[2]; 259 TokenParameters token_params[2];
258 GetTokenParamsForLengths(kTokenLengths, token_params); 260 GetTokenParamsForLengths(kTokenLengths, token_params);
259 261
260 EncodeTokenAndSaveSamples(client.get(), true, kSixZeros); 262 EncodeTokenAndSaveSamples(client.get(), true, kSixZeros, token_params);
261 DecodeSamplesAndVerifyToken(client.get(), true, kSixZeros, token_params); 263 DecodeSamplesAndVerifyToken(client.get(), true, kSixZeros, token_params);
262 264
263 EncodeTokenAndSaveSamples(client.get(), false, kSixZeros); 265 EncodeTokenAndSaveSamples(client.get(), false, kSixZeros, token_params);
264 DecodeSamplesAndVerifyToken(client.get(), false, kSixZeros, token_params); 266 DecodeSamplesAndVerifyToken(client.get(), false, kSixZeros, token_params);
265 } 267 }
266 268
267 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_TokenLengths) { 269 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_TokenLengths) {
268 scoped_ptr<WhispernetClient> client( 270 scoped_ptr<WhispernetClient> client(
269 new ChromeWhispernetClient(browser()->profile())); 271 new ChromeWhispernetClient(browser()->profile()));
270 client->Initialize(base::Bind(&IgnoreResult)); 272 client->Initialize(base::Bind(&IgnoreResult));
271 SetupDecode(); 273 SetupDecode();
272 274
273 const size_t kLongTokenLengths[2] = {8, 9}; 275 const size_t kLongTokenLengths[2] = {8, 9};
274 TokenParameters token_params[2]; 276 TokenParameters token_params[2];
275 GetTokenParamsForLengths(kLongTokenLengths, token_params); 277 GetTokenParamsForLengths(kLongTokenLengths, token_params);
276 278
277 EncodeTokenAndSaveSamples(client.get(), true, kEightZeros); 279 EncodeTokenAndSaveSamples(client.get(), true, kEightZeros, token_params);
278 DecodeSamplesAndVerifyToken(client.get(), true, kEightZeros, token_params); 280 DecodeSamplesAndVerifyToken(client.get(), true, kEightZeros, token_params);
279 281
280 EncodeTokenAndSaveSamples(client.get(), false, kNineZeros); 282 EncodeTokenAndSaveSamples(client.get(), false, kNineZeros, token_params);
281 DecodeSamplesAndVerifyToken(client.get(), false, kNineZeros, token_params); 283 DecodeSamplesAndVerifyToken(client.get(), false, kNineZeros, token_params);
282 } 284 }
283 285
286 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_Crc) {
287 scoped_ptr<WhispernetClient> client(
288 new ChromeWhispernetClient(browser()->profile()));
289 client->Initialize(base::Bind(&IgnoreResult));
290 SetupDecode();
291
292 TokenParameters token_params[2];
293 GetTokenParamsForLengths(kTokenLengths, token_params);
294 token_params[0].crc = true;
295 token_params[1].crc = true;
296
297 EncodeTokenAndSaveSamples(client.get(), true, kSixZeros, token_params);
298 DecodeSamplesAndVerifyToken(client.get(), true, kSixZeros, token_params);
299
300 EncodeTokenAndSaveSamples(client.get(), false, kSixZeros, token_params);
301 DecodeSamplesAndVerifyToken(client.get(), false, kSixZeros, token_params);
302 }
303
284 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_MultipleClients) { 304 IN_PROC_BROWSER_TEST_F(ChromeWhispernetClientTest, MAYBE_MultipleClients) {
285 scoped_ptr<WhispernetClient> client_1( 305 scoped_ptr<WhispernetClient> client_1(
286 new ChromeWhispernetClient(browser()->profile())); 306 new ChromeWhispernetClient(browser()->profile()));
287 scoped_ptr<WhispernetClient> client_2( 307 scoped_ptr<WhispernetClient> client_2(
288 new ChromeWhispernetClient(browser()->profile())); 308 new ChromeWhispernetClient(browser()->profile()));
289 scoped_ptr<WhispernetClient> client_3( 309 scoped_ptr<WhispernetClient> client_3(
290 new ChromeWhispernetClient(browser()->profile())); 310 new ChromeWhispernetClient(browser()->profile()));
291 SetupDecode(); 311 SetupDecode();
292 312
293 TokenParameters token_params[2]; 313 TokenParameters token_params[2];
294 GetTokenParamsForLengths(kTokenLengths, token_params); 314 GetTokenParamsForLengths(kTokenLengths, token_params);
295 315
296 // Test concurrent initialization. 316 // Test concurrent initialization.
297 client_1->Initialize(base::Bind(&IgnoreResult)); 317 client_1->Initialize(base::Bind(&IgnoreResult));
298 client_2->Initialize(base::Bind(&IgnoreResult)); 318 client_2->Initialize(base::Bind(&IgnoreResult));
299 319
300 EncodeTokenAndSaveSamples(client_1.get(), true, kSixZeros); 320 EncodeTokenAndSaveSamples(client_1.get(), true, kSixZeros, token_params);
301 DecodeSamplesAndVerifyToken(client_1.get(), true, kSixZeros, token_params); 321 DecodeSamplesAndVerifyToken(client_1.get(), true, kSixZeros, token_params);
302 322
303 EncodeTokenAndSaveSamples(client_2.get(), false, kSixZeros); 323 EncodeTokenAndSaveSamples(client_2.get(), false, kSixZeros, token_params);
304 DecodeSamplesAndVerifyToken(client_2.get(), false, kSixZeros, token_params); 324 DecodeSamplesAndVerifyToken(client_2.get(), false, kSixZeros, token_params);
305 325
306 // Test sequential initialization. 326 // Test sequential initialization.
307 client_3->Initialize(base::Bind(&IgnoreResult)); 327 client_3->Initialize(base::Bind(&IgnoreResult));
308 328
309 EncodeTokenAndSaveSamples(client_3.get(), true, kSixZeros); 329 EncodeTokenAndSaveSamples(client_3.get(), true, kSixZeros, token_params);
310 DecodeSamplesAndVerifyToken(client_3.get(), true, kSixZeros, token_params); 330 DecodeSamplesAndVerifyToken(client_3.get(), true, kSixZeros, token_params);
311 331
312 const size_t kLongTokenLengths[2] = {8, 9}; 332 const size_t kLongTokenLengths[2] = {8, 9};
313 GetTokenParamsForLengths(kLongTokenLengths, token_params); 333 GetTokenParamsForLengths(kLongTokenLengths, token_params);
314 334
315 EncodeTokenAndSaveSamples(client_2.get(), true, kEightZeros); 335 EncodeTokenAndSaveSamples(client_2.get(), true, kEightZeros, token_params);
316 DecodeSamplesAndVerifyToken(client_2.get(), true, kEightZeros, token_params); 336 DecodeSamplesAndVerifyToken(client_2.get(), true, kEightZeros, token_params);
317 } 337 }
318
319 // TODO(ckehoe): Test crc and parity
320 // TODO(ckehoe): More multi-client testing
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/whispernet_proxy/js/nacl.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698