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

Side by Side Diff: rlz/lib/rlz_lib_test.cc

Issue 26929004: Add periodic check to see if context has been reset (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « rlz/lib/financial_ping.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 // A test application for the RLZ library. 5 // A test application for the RLZ library.
6 // 6 //
7 // These tests should not be executed on the build server: 7 // These tests should not be executed on the build server:
8 // - They assert for the failed cases. 8 // - They assert for the failed cases.
9 // - They modify machine state (registry). 9 // - They modify machine state (registry).
10 // 10 //
11 // These tests require write access to HKLM and HKCU. 11 // These tests require write access to HKLM and HKCU.
12 // 12 //
13 // The "GGLA" brand is used to test the normal code flow of the code, and the 13 // The "GGLA" brand is used to test the normal code flow of the code, and the
14 // "TEST" brand is used to test the supplementary brand code code flow. 14 // "TEST" brand is used to test the supplementary brand code code flow.
15 15
16 #include "base/posix/eintr_wrapper.h" 16 #include "base/posix/eintr_wrapper.h"
17 #include "base/logging.h" 17 #include "base/logging.h"
18 #include "base/memory/scoped_ptr.h" 18 #include "base/memory/scoped_ptr.h"
19 #include "testing/gmock/include/gmock/gmock.h" 19 #include "testing/gmock/include/gmock/gmock.h"
20 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
21 21
22 #include "rlz/lib/financial_ping.h"
22 #include "rlz/lib/rlz_lib.h" 23 #include "rlz/lib/rlz_lib.h"
23 #include "rlz/lib/rlz_value_store.h" 24 #include "rlz/lib/rlz_value_store.h"
24 #include "rlz/test/rlz_test_helpers.h" 25 #include "rlz/test/rlz_test_helpers.h"
25 26
26 #if defined(OS_WIN) 27 #if defined(OS_WIN)
27 #include <Windows.h> 28 #include <Windows.h>
28 #include "rlz/win/lib/machine_deal.h" 29 #include "rlz/win/lib/machine_deal.h"
29 #endif 30 #endif
30 31
31 #if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) 32 #if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET)
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 // calling it, trying to record a stateful again should result in it being 410 // calling it, trying to record a stateful again should result in it being
410 // recorded again. 411 // recorded again.
411 EXPECT_TRUE(rlz_lib::ClearAllProductEvents(rlz_lib::TOOLBAR_NOTIFIER)); 412 EXPECT_TRUE(rlz_lib::ClearAllProductEvents(rlz_lib::TOOLBAR_NOTIFIER));
412 EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER, 413 EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER,
413 rlz_lib::IE_HOME_PAGE, rlz_lib::INSTALL)); 414 rlz_lib::IE_HOME_PAGE, rlz_lib::INSTALL));
414 EXPECT_TRUE(rlz_lib::GetProductEventsAsCgi(rlz_lib::TOOLBAR_NOTIFIER, 415 EXPECT_TRUE(rlz_lib::GetProductEventsAsCgi(rlz_lib::TOOLBAR_NOTIFIER,
415 value, 50)); 416 value, 50));
416 EXPECT_STREQ("events=W1I", value); 417 EXPECT_STREQ("events=W1I", value);
417 } 418 }
418 419
420 class URLRequestRAII {
421 public:
422 URLRequestRAII(net::URLRequestContextGetter* context) {
423 rlz_lib::SetURLRequestContext(context);
424 }
425 ~URLRequestRAII() {
426 rlz_lib::SetURLRequestContext(NULL);
427 }
428 };
429
419 TEST_F(RlzLibTest, SendFinancialPing) { 430 TEST_F(RlzLibTest, SendFinancialPing) {
420 // We don't really check a value or result in this test. All this does is 431 // We don't really check a value or result in this test. All this does is
421 // attempt to ping the financial server, which you can verify in Fiddler. 432 // attempt to ping the financial server, which you can verify in Fiddler.
422 // TODO: Make this a measurable test. 433 // TODO: Make this a measurable test.
423 434
424 #if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) 435 #if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET)
425 #if defined(OS_MACOSX) 436 #if defined(OS_MACOSX)
426 base::mac::ScopedNSAutoreleasePool pool; 437 base::mac::ScopedNSAutoreleasePool pool;
427 #endif 438 #endif
428 439
429 base::Thread::Options options; 440 base::Thread::Options options;
430 options.message_loop_type = base::MessageLoop::TYPE_IO; 441 options.message_loop_type = base::MessageLoop::TYPE_IO;
431 442
432 base::Thread io_thread("rlz_unittest_io_thread"); 443 base::Thread io_thread("rlz_unittest_io_thread");
433 ASSERT_TRUE(io_thread.StartWithOptions(options)); 444 ASSERT_TRUE(io_thread.StartWithOptions(options));
434 445
435 scoped_refptr<net::TestURLRequestContextGetter> context = 446 scoped_refptr<net::TestURLRequestContextGetter> context =
436 new net::TestURLRequestContextGetter( 447 new net::TestURLRequestContextGetter(
437 io_thread.message_loop()->message_loop_proxy()); 448 io_thread.message_loop()->message_loop_proxy());
438 rlz_lib::SetURLRequestContext(context.get()); 449 rlz_lib::SetURLRequestContext(context.get());
439 450
440 class URLRequestRAII {
441 public:
442 URLRequestRAII(net::URLRequestContextGetter* context) {
443 rlz_lib::SetURLRequestContext(context);
444 }
445 ~URLRequestRAII() {
446 rlz_lib::SetURLRequestContext(NULL);
447 }
448 };
449
450 URLRequestRAII set_context(context.get()); 451 URLRequestRAII set_context(context.get());
451 #endif 452 #endif
452 453
453 MachineDealCodeHelper::Clear(); 454 MachineDealCodeHelper::Clear();
454 #if defined(OS_WIN) 455 #if defined(OS_WIN)
455 EXPECT_TRUE(rlz_lib::MachineDealCode::Set("dcc_value")); 456 EXPECT_TRUE(rlz_lib::MachineDealCode::Set("dcc_value"));
456 #endif 457 #endif
457 458
458 EXPECT_TRUE(rlz_lib::SetAccessPointRlz(rlz_lib::IETB_SEARCH_BOX, 459 EXPECT_TRUE(rlz_lib::SetAccessPointRlz(rlz_lib::IETB_SEARCH_BOX,
459 "TbRlzValue")); 460 "TbRlzValue"));
460 461
461 EXPECT_TRUE(rlz_lib::ClearAllProductEvents(rlz_lib::TOOLBAR_NOTIFIER)); 462 EXPECT_TRUE(rlz_lib::ClearAllProductEvents(rlz_lib::TOOLBAR_NOTIFIER));
462 EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER, 463 EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER,
463 rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::SET_TO_GOOGLE)); 464 rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::SET_TO_GOOGLE));
464 EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER, 465 EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER,
465 rlz_lib::IE_HOME_PAGE, rlz_lib::INSTALL)); 466 rlz_lib::IE_HOME_PAGE, rlz_lib::INSTALL));
466 467
467 rlz_lib::AccessPoint points[] = 468 rlz_lib::AccessPoint points[] =
468 {rlz_lib::IETB_SEARCH_BOX, rlz_lib::NO_ACCESS_POINT, 469 {rlz_lib::IETB_SEARCH_BOX, rlz_lib::NO_ACCESS_POINT,
469 rlz_lib::NO_ACCESS_POINT}; 470 rlz_lib::NO_ACCESS_POINT};
470 471
471 std::string request; 472 std::string request;
472 rlz_lib::SendFinancialPing(rlz_lib::TOOLBAR_NOTIFIER, points, 473 rlz_lib::SendFinancialPing(rlz_lib::TOOLBAR_NOTIFIER, points,
473 "swg", "GGLA", "SwgProductId1234", "en-UK", false, 474 "swg", "GGLA", "SwgProductId1234", "en-UK", false,
474 /*skip_time_check=*/true); 475 /*skip_time_check=*/true);
475 } 476 }
476 477
478 #if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET)
479
480 void ResetContext() {
481 rlz_lib::SetURLRequestContext(NULL);
482 }
483
484 TEST_F(RlzLibTest, SendFinancialPingDuringShutdown) {
485 // rlz_lib::SendFinancialPing fails when this is set.
486 if (!rlz_lib::SupplementaryBranding::GetBrand().empty())
487 return;
488
489 #if defined(OS_MACOSX)
490 base::mac::ScopedNSAutoreleasePool pool;
491 #endif
492
493 base::Thread::Options options;
494 options.message_loop_type = base::MessageLoop::TYPE_IO;
495
496 base::Thread io_thread("rlz_unittest_io_thread");
497 ASSERT_TRUE(io_thread.StartWithOptions(options));
498
499 scoped_refptr<net::TestURLRequestContextGetter> context =
500 new net::TestURLRequestContextGetter(
501 io_thread.message_loop()->message_loop_proxy());
502 rlz_lib::SetURLRequestContext(context.get());
503
504 URLRequestRAII set_context(context.get());
505
506 rlz_lib::AccessPoint points[] =
507 {rlz_lib::IETB_SEARCH_BOX, rlz_lib::NO_ACCESS_POINT,
508 rlz_lib::NO_ACCESS_POINT};
509 rlz_lib::test::ResetSendFinancialPingInterrupted();
510 EXPECT_FALSE(rlz_lib::test::WasSendFinancialPingInterrupted());
511
512 base::MessageLoop loop;
513 loop.PostTask(FROM_HERE, base::Bind(&ResetContext));
514 std::string request;
515 EXPECT_FALSE(rlz_lib::SendFinancialPing(rlz_lib::TOOLBAR_NOTIFIER, points,
516 "swg", "GGLA", "SwgProductId1234", "en-UK", false,
517 /*skip_time_check=*/true));
518
519 EXPECT_TRUE(rlz_lib::test::WasSendFinancialPingInterrupted());
520 rlz_lib::test::ResetSendFinancialPingInterrupted();
521 }
522 #endif
523
477 TEST_F(RlzLibTest, ClearProductState) { 524 TEST_F(RlzLibTest, ClearProductState) {
478 MachineDealCodeHelper::Clear(); 525 MachineDealCodeHelper::Clear();
479 526
480 EXPECT_TRUE(rlz_lib::SetAccessPointRlz(rlz_lib::IETB_SEARCH_BOX, 527 EXPECT_TRUE(rlz_lib::SetAccessPointRlz(rlz_lib::IETB_SEARCH_BOX,
481 "TbRlzValue")); 528 "TbRlzValue"));
482 EXPECT_TRUE(rlz_lib::SetAccessPointRlz(rlz_lib::GD_DESKBAND, 529 EXPECT_TRUE(rlz_lib::SetAccessPointRlz(rlz_lib::GD_DESKBAND,
483 "GdbRlzValue")); 530 "GdbRlzValue"));
484 531
485 rlz_lib::AccessPoint points[] = 532 rlz_lib::AccessPoint points[] =
486 { rlz_lib::IETB_SEARCH_BOX, rlz_lib::NO_ACCESS_POINT }; 533 { rlz_lib::IETB_SEARCH_BOX, rlz_lib::NO_ACCESS_POINT };
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 int mkdir_result = mkdir(rlz_lib::testing::RlzStoreFilenameStr().c_str(), 930 int mkdir_result = mkdir(rlz_lib::testing::RlzStoreFilenameStr().c_str(),
884 0500); 931 0500);
885 ASSERT_EQ(0, mkdir_result); 932 ASSERT_EQ(0, mkdir_result);
886 933
887 rlz_lib::SupplementaryBranding branding("TEST"); 934 rlz_lib::SupplementaryBranding branding("TEST");
888 EXPECT_FALSE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER, 935 EXPECT_FALSE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER,
889 rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::INSTALL)); 936 rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::INSTALL));
890 } 937 }
891 938
892 #endif 939 #endif
OLDNEW
« no previous file with comments | « rlz/lib/financial_ping.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698