| Index: test/step_test.cc
|
| diff --git a/test/step_test.cc b/test/step_test.cc
|
| deleted file mode 100644
|
| index ed0625d0732b867154ebf75c9a6ae3bb265a7da8..0000000000000000000000000000000000000000
|
| --- a/test/step_test.cc
|
| +++ /dev/null
|
| @@ -1,157 +0,0 @@
|
| -// Copyright 2007-2009 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 "omaha/test/step_test.h"
|
| -
|
| -const TCHAR *StepTestBase::RESUME_EVENT_TEMPLATE = _T("R %s");
|
| -const TCHAR *StepTestBase::STEP_REACHED_EVENT_TEMPLATE = _T("SR %s");
|
| -const TCHAR *StepTestBase::STATE_REG_KEY_TEMPLATE = _T("SOFTWARE\\GAT %s");
|
| -const TCHAR *StepTestBase::STATE_REG_VALUE_NAME = _T("state");
|
| -
|
| -StepTestBase::StepTestBase(const TCHAR*) : step_reached_event_(NULL),
|
| -resume_event_(NULL), state_key_(NULL) {
|
| -}
|
| -
|
| -void StepTestBase::Terminate() {
|
| - CloseHandle(step_reached_event_);
|
| - CloseHandle(resume_event_);
|
| - RegCloseKey(state_key_);
|
| -}
|
| -
|
| -StepTestBase::~StepTestBase() {
|
| - Terminate();
|
| -}
|
| -
|
| -StepTestStepper::StepTestStepper(const TCHAR* name) :
|
| - StepTestBase(name),
|
| - is_someone_listening_(false) {
|
| - CString namebuf;
|
| -
|
| - // A "broadcaster" is a program that notifies the "listener" program that
|
| - // the broadcaster has reached an interesting point in its execution, and
|
| - // the listener should check state.
|
| - //
|
| - // Results will be unpredictable if two broadcasters are running at the
|
| - // same time. However, since a broadcaster will only open the resume event
|
| - // and not create it, we shouldn't see any problems where two broadcasters
|
| - // deadlock each other.
|
| - namebuf.Format(RESUME_EVENT_TEMPLATE, name);
|
| - resume_event_ = OpenEvent(EVENT_ALL_ACCESS, FALSE, namebuf);
|
| - if (resume_event_ != NULL) {
|
| - is_someone_listening_ = true;
|
| -
|
| - namebuf.Format(STEP_REACHED_EVENT_TEMPLATE, name);
|
| - step_reached_event_ = OpenEvent(EVENT_ALL_ACCESS, FALSE, namebuf);
|
| -
|
| - namebuf.Format(STATE_REG_KEY_TEMPLATE, name);
|
| - RegCreateKeyEx(HKEY_CURRENT_USER, namebuf, 0, NULL, REG_OPTION_VOLATILE,
|
| - KEY_READ | KEY_WRITE, NULL, &state_key_, NULL);
|
| - } else {
|
| - Terminate();
|
| - }
|
| -}
|
| -
|
| -StepTestStepper::~StepTestStepper() {
|
| - Terminate();
|
| -}
|
| -
|
| -void StepTestStepper::Step(DWORD step) {
|
| - if (!is_someone_listening_) {
|
| - return;
|
| - }
|
| - RegSetValueEx(state_key_, STATE_REG_VALUE_NAME, 0, REG_DWORD,
|
| - reinterpret_cast<BYTE*>(&step), sizeof(step));
|
| - SetEvent(step_reached_event_);
|
| - WaitForSingleObject(resume_event_, INFINITE);
|
| -}
|
| -
|
| -StepTestWatcher::StepTestWatcher(const TCHAR* name) : StepTestBase(name),
|
| - name_(name) {
|
| -}
|
| -
|
| -StepTestWatcher::~StepTestWatcher() {
|
| - Terminate();
|
| -}
|
| -
|
| -void StepTestWatcher::Go() {
|
| - DWORD step = 0;
|
| - bool done = false;
|
| -
|
| - PrintIntroduction();
|
| -
|
| - printf("Verifying preconditions...\r\n");
|
| - bool passed = VerifyStep(0, &done);
|
| - if (passed) {
|
| - _tprintf(_T("Preconditions OK.\r\n"));
|
| - } else {
|
| - _tprintf(_T("*** Preconditions FAILED. ***\r\n"));
|
| - }
|
| -
|
| - CString namebuf;
|
| -
|
| - namebuf.Format(RESUME_EVENT_TEMPLATE, name_);
|
| - resume_event_ = CreateEvent(NULL, FALSE, FALSE, namebuf);
|
| - namebuf.Format(STEP_REACHED_EVENT_TEMPLATE, name_);
|
| - step_reached_event_ = CreateEvent(NULL, FALSE, FALSE, namebuf);
|
| -
|
| - namebuf.Format(STATE_REG_KEY_TEMPLATE, name_);
|
| - RegCreateKeyEx(HKEY_CURRENT_USER, namebuf, 0, NULL, REG_OPTION_VOLATILE,
|
| - KEY_READ, NULL, &state_key_, NULL);
|
| -
|
| - printf("Begin test now.\r\n");
|
| -
|
| - done = false;
|
| - while (!done) {
|
| - WaitForSingleObject(step_reached_event_, INFINITE);
|
| - DWORD step_size = sizeof(step);
|
| - RegQueryValueEx(state_key_, STATE_REG_VALUE_NAME, NULL, NULL,
|
| - reinterpret_cast<BYTE*>(&step), &step_size);
|
| - printf("Testing step %d.\r\n", step);
|
| - passed = VerifyStep(step, &done);
|
| - if (!passed) {
|
| - _tprintf(_T("\r\n\r\n*** TEST FAILURE: Step %d. ***\r\nr\n"), step);
|
| - }
|
| - SetEvent(resume_event_);
|
| - }
|
| -
|
| - PrintConclusion();
|
| -}
|
| -
|
| -bool StepTestWatcher::RegistryKeyExists(HKEY root, const TCHAR* name) {
|
| - HKEY key;
|
| - LONG result = RegOpenKeyEx(root, name, 0, KEY_READ, &key);
|
| - if (ERROR_SUCCESS == result) {
|
| - RegCloseKey(key);
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -bool StepTestWatcher::RegistryValueExists(HKEY root, const TCHAR* key_name,
|
| - const TCHAR* value_name) {
|
| - bool result = false;
|
| - HKEY key;
|
| - LONG reg_result = RegOpenKeyEx(root, key_name, 0, KEY_READ, &key);
|
| - if (ERROR_SUCCESS == reg_result) {
|
| - DWORD dummy_size = 0;
|
| - reg_result = RegQueryValueEx(key, value_name, NULL, NULL, NULL,
|
| - &dummy_size);
|
| - if (reg_result == ERROR_SUCCESS && dummy_size > 0) {
|
| - result = true;
|
| - }
|
| - RegCloseKey(key);
|
| - }
|
| - return result;
|
| -}
|
|
|