Index: common/ping_test.cc |
diff --git a/common/ping_test.cc b/common/ping_test.cc |
deleted file mode 100644 |
index f073f7e60df1b64da45bb2840bac45a104998ab1..0000000000000000000000000000000000000000 |
--- a/common/ping_test.cc |
+++ /dev/null |
@@ -1,366 +0,0 @@ |
-// Copyright 2010 Google Inc. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
-// ======================================================================== |
- |
-#include <string.h> |
-#include "omaha/base/string.h" |
-#include "omaha/base/logging.h" |
-#include "omaha/base/omaha_version.h" |
-#include "omaha/base/utils.h" |
-#include "omaha/common/command_line.h" |
-#include "omaha/common/ping.h" |
-#include "omaha/testing/unit_test.h" |
- |
-namespace omaha { |
- |
-class PingTest : public testing::Test { |
-}; |
- |
-TEST_F(PingTest, BuildOmahaPing) { |
- PingEventPtr ping_event1( |
- new PingEvent(PingEvent::EVENT_INSTALL_COMPLETE, |
- PingEvent::EVENT_RESULT_SUCCESS, |
- 10, |
- 20)); |
- |
- PingEventPtr ping_event2( |
- new PingEvent(PingEvent::EVENT_INSTALL_COMPLETE, |
- PingEvent::EVENT_RESULT_SUCCESS, |
- 30, |
- 40)); |
- |
- CommandLineExtraArgs command_line_extra_args; |
- StringToGuidSafe(_T("{DE06587E-E5AB-4364-A46B-F3AC733007B3}"), |
- &command_line_extra_args.installation_id); |
- command_line_extra_args.brand_code = _T("GGLS"); |
- command_line_extra_args.client_id = _T("a client id"); |
- command_line_extra_args.language = _T("en"); |
- |
- // Machine ping. |
- Ping install_ping(true, _T("session"), _T("oneclick")); |
- install_ping.LoadAppDataFromExtraArgs(command_line_extra_args); |
- install_ping.BuildOmahaPing(_T("1.0.0.0"), |
- _T("2.0.0.0"), |
- ping_event1, |
- ping_event2); |
- |
- CString expected_ping_request_substring; |
- expected_ping_request_substring.Format(_T("<app appid=\"{430FD4D0-B729-4F61-AA34-91526481799D}\" version=\"1.0.0.0\" nextversion=\"2.0.0.0\" lang=\"en\" brand=\"GGLS\" client=\"a client id\" iid=\"{DE06587E-E5AB-4364-A46B-F3AC733007B3}\"><event eventtype=\"2\" eventresult=\"1\" errorcode=\"10\" extracode1=\"20\"/><event eventtype=\"2\" eventresult=\"1\" errorcode=\"30\" extracode1=\"40\"/></app>")); // NOLINT |
- |
- CString actual_ping_request; |
- install_ping.BuildRequestString(&actual_ping_request); |
- |
- // The ping_request_string contains some data that depends on the machine |
- // environment, such as operating system version. Look for a partial match in |
- // the string corresponding to the <app> element. |
- EXPECT_NE(-1, actual_ping_request.Find(expected_ping_request_substring)); |
-} |
- |
-TEST_F(PingTest, BuildAppsPing) { |
- const TCHAR* const kOmahaUserClientStatePath = |
- _T("HKCU\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME |
- _T("\\ClientState\\") GOOPDATE_APP_ID; |
- |
- const CString expected_pv = _T("1.3.23.0"); |
- const CString expected_lang = _T("en"); |
- const CString expected_brand_code = _T("GGLS"); |
- const CString expected_client_id = _T("someclientid"); |
- const CString expected_iid = |
- _T("{7C0B6E56-B24B-436b-A960-A6EA201E886F}"); |
- const CString expected_experiment_label = |
- _T("some_experiment=a|Fri, 14 Aug 2015 16:13:03 GMT"); |
- |
- EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, |
- kRegValueProductVersion, |
- expected_pv)); |
- EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, |
- kRegValueLanguage, |
- expected_lang)); |
- EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, |
- kRegValueBrandCode, |
- expected_brand_code)); |
- EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, |
- kRegValueClientId, |
- expected_client_id)); |
- EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, |
- kRegValueInstallationId, |
- expected_iid)); |
- EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, |
- kRegValueExperimentLabels, |
- expected_experiment_label)); |
- |
- PingEventPtr ping_event( |
- new PingEvent(PingEvent::EVENT_INSTALL_COMPLETE, |
- PingEvent::EVENT_RESULT_SUCCESS, |
- 34, |
- 6)); |
- |
- Ping apps_ping(false, _T("unittest"), _T("InstallSource_Foo")); |
- std::vector<CString> apps; |
- apps.push_back(GOOPDATE_APP_ID); |
- apps_ping.LoadAppDataFromRegistry(apps); |
- apps_ping.BuildAppsPing(ping_event); |
- |
- CString expected_ping_request_substring; |
- expected_ping_request_substring.Format(_T("<app appid=\"{430FD4D0-B729-4F61-AA34-91526481799D}\" version=\"1.3.23.0\" nextversion=\"\" lang=\"en\" brand=\"GGLS\" client=\"someclientid\" experiments=\"some_experiment=a|Fri, 14 Aug 2015 16:13:03 GMT\" iid=\"{7C0B6E56-B24B-436b-A960-A6EA201E886F}\"><event eventtype=\"2\" eventresult=\"1\" errorcode=\"34\" extracode1=\"6\"/></app>")); // NOLINT |
- |
- CString actual_ping_request; |
- apps_ping.BuildRequestString(&actual_ping_request); |
- |
- EXPECT_NE(-1, actual_ping_request.Find(expected_ping_request_substring)); |
-} |
- |
-TEST_F(PingTest, SendString) { |
- CString request_string = _T("<?xml version=\"1.0\" encoding=\"UTF-8\"?><request protocol=\"3.0\" version=\"1.3.23.0\" ismachine=\"1\" sessionid=\"unittest\" installsource=\"oneclick\" testsource=\"dev\" requestid=\"{EC821C33-E4EE-4E75-BC85-7E9DFC3652F5}\" periodoverridesec=\"7407360\"><os platform=\"win\" version=\"6.0\" sp=\"Service Pack 1\"/><app appid=\"{430FD4D0-B729-4F61-AA34-91526481799D}\" version=\"1.0.0.0\" nextversion=\"2.0.0.0\" lang=\"en\" brand=\"GGLS\" client=\"a client id\" iid=\"{DE06587E-E5AB-4364-A46B-F3AC733007B3}\"><event eventtype=\"10\" eventresult=\"1\" errorcode=\"0\" extracode1=\"0\"/></app></request>"); // NOLINT |
- EXPECT_HRESULT_SUCCEEDED(Ping::SendString(false, |
- HeadersVector(), |
- request_string)); |
- |
- // 400 Bad Request returned by the server. |
- EXPECT_EQ(0x80042190, Ping::SendString(false, HeadersVector(), _T(""))); |
-} |
- |
-TEST_F(PingTest, HandlePing) { |
- CString request_string = _T("<?xml version=\"1.0\" encoding=\"UTF-8\"?><request protocol=\"3.0\" version=\"1.3.23.0\" ismachine=\"1\" sessionid=\"unittest\" installsource=\"oneclick\" testsource=\"dev\" requestid=\"{EC821C33-E4EE-4E75-BC85-7E9DFC3652F5}\" periodoverridesec=\"7407360\"><os platform=\"win\" version=\"6.0\" sp=\"Service Pack 1\"/><app appid=\"{430FD4D0-B729-4F61-AA34-91526481799D}\" version=\"1.0.0.0\" nextversion=\"2.0.0.0\" lang=\"en\" brand=\"GGLS\" client=\"a client id\" iid=\"{DE06587E-E5AB-4364-A46B-F3AC733007B3}\"><event eventtype=\"10\" eventresult=\"1\" errorcode=\"0\" extracode1=\"0\"/></app></request>"); // NOLINT |
- |
- CStringA request_string_utf8(WideToUtf8(request_string)); |
- CStringA ping_string_utf8; |
- WebSafeBase64Escape(request_string_utf8, &ping_string_utf8); |
- |
- EXPECT_HRESULT_SUCCEEDED( |
- Ping::HandlePing(false, Utf8ToWideChar(ping_string_utf8, |
- ping_string_utf8.GetLength()))); |
- |
- // 400 Bad Request returned by the server. |
- EXPECT_EQ(0x80042190, Ping::HandlePing(false, _T(""))); |
-} |
- |
-TEST_F(PingTest, SendInProcess) { |
- PingEventPtr ping_event( |
- new PingEvent(PingEvent::EVENT_INSTALL_COMPLETE, |
- PingEvent::EVENT_RESULT_SUCCESS, |
- 0, |
- 0)); |
- |
- CommandLineExtraArgs command_line_extra_args; |
- StringToGuidSafe(_T("{DE06587E-E5AB-4364-A46B-F3AC733007B3}"), |
- &command_line_extra_args.installation_id); |
- command_line_extra_args.brand_code = _T("GGLS"); |
- command_line_extra_args.client_id = _T("a client id"); |
- command_line_extra_args.language = _T("en"); |
- |
- // User ping. |
- Ping install_ping(false, _T("unittest"), _T("oneclick")); |
- install_ping.LoadAppDataFromExtraArgs(command_line_extra_args); |
- install_ping.BuildOmahaPing(_T("1.0.0.0"), _T("2.0.0.0"), ping_event); |
- |
- CString request_string; |
- EXPECT_HRESULT_SUCCEEDED(install_ping.BuildRequestString(&request_string)); |
- EXPECT_HRESULT_SUCCEEDED(install_ping.SendInProcess(request_string)); |
-} |
- |
-TEST_F(PingTest, IsPingExpired_PastTime) { |
- const time64 time = GetCurrent100NSTime() - (Ping::kPingExpiry100ns + 1); |
- EXPECT_TRUE(Ping::IsPingExpired(time)); |
-} |
- |
-TEST_F(PingTest, IsPingExpired_CurrentTime) { |
- const time64 time = GetCurrent100NSTime(); |
- EXPECT_FALSE(Ping::IsPingExpired(time)); |
-} |
- |
-TEST_F(PingTest, IsPingExpired_FutureTime) { |
- const time64 time = GetCurrent100NSTime() + 10; |
- EXPECT_TRUE(Ping::IsPingExpired(time)); |
-} |
- |
-TEST_F(PingTest, LoadPersistedPings_NoPersistedPings) { |
- Ping::PingsVector pings; |
- EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), |
- Ping::LoadPersistedPings(false, &pings)); |
- EXPECT_EQ(0, pings.size()); |
-} |
- |
-TEST_F(PingTest, LoadPersistedPings) { |
- CString ping_reg_path(Ping::GetPingRegPath(false)); |
- |
- EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(ping_reg_path, |
- _T("1"), |
- _T("Test Ping String 1"))); |
- EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(ping_reg_path, |
- _T("2"), |
- _T("Test Ping String 2"))); |
- EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(ping_reg_path, |
- _T("3"), |
- _T("Test Ping String 3"))); |
- |
- Ping::PingsVector pings; |
- EXPECT_HRESULT_SUCCEEDED(Ping::LoadPersistedPings(false, &pings)); |
- EXPECT_EQ(3, pings.size()); |
- |
- EXPECT_EQ(1, pings[0].first); |
- EXPECT_EQ(2, pings[1].first); |
- EXPECT_EQ(3, pings[2].first); |
- EXPECT_STREQ(_T("Test Ping String 1"), pings[0].second); |
- EXPECT_STREQ(_T("Test Ping String 2"), pings[1].second); |
- EXPECT_STREQ(_T("Test Ping String 3"), pings[2].second); |
- |
- EXPECT_HRESULT_SUCCEEDED(RegKey::DeleteKey(ping_reg_path)); |
-} |
- |
-TEST_F(PingTest, PersistPing) { |
- EXPECT_HRESULT_SUCCEEDED(Ping::PersistPing(false, _T("Test Ping String 1"))); |
- ::Sleep(15); |
- EXPECT_HRESULT_SUCCEEDED(Ping::PersistPing(false, _T("Test Ping String 2"))); |
- ::Sleep(15); |
- EXPECT_HRESULT_SUCCEEDED(Ping::PersistPing(false, _T("Test Ping String 3"))); |
- |
- Ping::PingsVector pings; |
- EXPECT_HRESULT_SUCCEEDED(Ping::LoadPersistedPings(false, &pings)); |
- EXPECT_EQ(3, pings.size()); |
- |
- EXPECT_FALSE(Ping::IsPingExpired(pings[0].first)); |
- EXPECT_FALSE(Ping::IsPingExpired(pings[1].first)); |
- EXPECT_FALSE(Ping::IsPingExpired(pings[2].first)); |
- EXPECT_STREQ(_T("Test Ping String 1"), pings[0].second); |
- EXPECT_STREQ(_T("Test Ping String 2"), pings[1].second); |
- EXPECT_STREQ(_T("Test Ping String 3"), pings[2].second); |
- |
- EXPECT_HRESULT_SUCCEEDED(RegKey::DeleteKey(Ping::GetPingRegPath(false))); |
-} |
- |
-TEST_F(PingTest, DeletePersistedPing) { |
- CString ping_reg_path(Ping::GetPingRegPath(false)); |
- |
- EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(ping_reg_path, |
- _T("1"), |
- _T("Test Ping String 1"))); |
- EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(ping_reg_path, |
- _T("2"), |
- _T("Test Ping String 2"))); |
- |
- EXPECT_HRESULT_SUCCEEDED(Ping::DeletePersistedPing(false, 1)); |
- EXPECT_HRESULT_SUCCEEDED(Ping::DeletePersistedPing(false, 2)); |
- |
- EXPECT_FALSE(RegKey::HasKey(ping_reg_path)); |
-} |
- |
-TEST_F(PingTest, SendPersistedPings) { |
- PingEventPtr ping_event( |
- new PingEvent(PingEvent::EVENT_INSTALL_COMPLETE, |
- PingEvent::EVENT_RESULT_SUCCESS, |
- 0, |
- 0)); |
- |
- CommandLineExtraArgs command_line_extra_args; |
- StringToGuidSafe(_T("{DE06587E-E5AB-4364-A46B-F3AC733007B3}"), |
- &command_line_extra_args.installation_id); |
- command_line_extra_args.brand_code = _T("GGLS"); |
- command_line_extra_args.client_id = _T("a client id"); |
- command_line_extra_args.language = _T("en"); |
- |
- // User ping. |
- Ping install_ping(false, _T("unittest"), _T("oneclick")); |
- install_ping.LoadAppDataFromExtraArgs(command_line_extra_args); |
- install_ping.BuildOmahaPing(_T("1.0.0.0"), _T("2.0.0.0"), ping_event); |
- |
- CString request_string; |
- EXPECT_HRESULT_SUCCEEDED(install_ping.BuildRequestString(&request_string)); |
- EXPECT_HRESULT_SUCCEEDED(Ping::PersistPing(false, request_string)); |
- |
- EXPECT_HRESULT_SUCCEEDED(Ping::SendPersistedPings(false)); |
- |
- EXPECT_FALSE(RegKey::HasKey(Ping::GetPingRegPath(false))); |
-} |
- |
-// The tests below rely on the out-of-process mechanism to send install pings. |
-// Enable the test to debug the sending code. |
-TEST_F(PingTest, DISABLED_SendUsingGoogleUpdate) { |
- PingEventPtr ping_event( |
- new PingEvent(PingEvent::EVENT_INSTALL_COMPLETE, |
- PingEvent::EVENT_RESULT_SUCCESS, |
- 0, |
- 0)); |
- |
- CommandLineExtraArgs command_line_extra_args; |
- StringToGuidSafe(_T("{DE06587E-E5AB-4364-A46B-F3AC733007B3}"), |
- &command_line_extra_args.installation_id); |
- command_line_extra_args.brand_code = _T("GGLS"); |
- command_line_extra_args.client_id = _T("a client id"); |
- command_line_extra_args.language = _T("en"); |
- |
- // User ping and wait for completion. |
- Ping install_ping(false, _T("unittest"), _T("oneclick")); |
- install_ping.LoadAppDataFromExtraArgs(command_line_extra_args); |
- install_ping.BuildOmahaPing(_T("1.0.0.0"), _T("2.0.0.0"), ping_event); |
- |
- const int kWaitForPingProcessToCompleteMs = 60000; |
- CString request_string; |
- EXPECT_HRESULT_SUCCEEDED(install_ping.BuildRequestString(&request_string)); |
- EXPECT_HRESULT_SUCCEEDED(install_ping.SendUsingGoogleUpdate( |
- request_string, kWaitForPingProcessToCompleteMs)); |
-} |
- |
-TEST_F(PingTest, Send_Empty) { |
- CommandLineExtraArgs command_line_extra_args; |
- Ping install_ping(false, _T("unittest"), _T("oneclick")); |
- EXPECT_EQ(S_FALSE, install_ping.Send(false)); |
-} |
- |
-TEST_F(PingTest, DISABLED_Send) { |
- PingEventPtr ping_event( |
- new PingEvent(PingEvent::EVENT_INSTALL_COMPLETE, |
- PingEvent::EVENT_RESULT_SUCCESS, |
- 0, |
- 0)); |
- |
- CommandLineExtraArgs command_line_extra_args; |
- StringToGuidSafe(_T("{DE06587E-E5AB-4364-A46B-F3AC733007B3}"), |
- &command_line_extra_args.installation_id); |
- command_line_extra_args.brand_code = _T("GGLS"); |
- command_line_extra_args.client_id = _T("a client id"); |
- command_line_extra_args.language = _T("en"); |
- |
- // User ping and wait for completion. |
- Ping install_ping(false, _T("unittest"), _T("oneclick")); |
- install_ping.LoadAppDataFromExtraArgs(command_line_extra_args); |
- install_ping.BuildOmahaPing(_T("1.0.0.0"), _T("2.0.0.0"), ping_event); |
- |
- EXPECT_HRESULT_SUCCEEDED(install_ping.Send(false)); |
-} |
- |
-TEST_F(PingTest, DISABLED_SendFireAndForget) { |
- PingEventPtr ping_event( |
- new PingEvent(PingEvent::EVENT_INSTALL_COMPLETE, |
- PingEvent::EVENT_RESULT_SUCCESS, |
- 0, |
- 0)); |
- |
- CommandLineExtraArgs command_line_extra_args; |
- StringToGuidSafe(_T("{DE06587E-E5AB-4364-A46B-F3AC733007B3}"), |
- &command_line_extra_args.installation_id); |
- command_line_extra_args.brand_code = _T("GGLS"); |
- command_line_extra_args.client_id = _T("a client id"); |
- command_line_extra_args.language = _T("en"); |
- |
- // User ping and do not wait for completion. |
- Ping install_ping(false, _T("unittest"), _T("oneclick")); |
- install_ping.LoadAppDataFromExtraArgs(command_line_extra_args); |
- install_ping.BuildOmahaPing(_T("1.0.0.0"), _T("2.0.0.0"), ping_event); |
- |
- EXPECT_HRESULT_SUCCEEDED(install_ping.Send(true)); |
-} |
- |
-} // namespace omaha |
- |