diff options
author | Jose <jose@zeroc.com> | 2009-12-04 06:51:23 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2009-12-04 06:51:23 +0100 |
commit | 0ad40835182795b5f9bedeea10aeb6f07c666e7d (patch) | |
tree | 5dff55b02aefb5854a972eb2cef128d1537d5c47 /cpp/test/Freeze/fileLock/Client.cpp | |
parent | Bug 4408 - plugin does not work with x64 only installation (diff) | |
download | ice-0ad40835182795b5f9bedeea10aeb6f07c666e7d.tar.bz2 ice-0ad40835182795b5f9bedeea10aeb6f07c666e7d.tar.xz ice-0ad40835182795b5f9bedeea10aeb6f07c666e7d.zip |
4089 - IceGrid database corruption.
Diffstat (limited to 'cpp/test/Freeze/fileLock/Client.cpp')
-rw-r--r-- | cpp/test/Freeze/fileLock/Client.cpp | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/cpp/test/Freeze/fileLock/Client.cpp b/cpp/test/Freeze/fileLock/Client.cpp new file mode 100644 index 00000000000..4ec7180863b --- /dev/null +++ b/cpp/test/Freeze/fileLock/Client.cpp @@ -0,0 +1,91 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2009 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <IceUtil/IceUtil.h> +#include <Freeze/Freeze.h> +#include <TestCommon.h> + +using namespace std; +using namespace Ice; +using namespace Freeze; + +//COMPILERFIX: Borland C++ 2010 doesn't support wmain for console applications. +#if defined(_WIN32) && !defined(__BCPLUSPLUS__) +int +wmain(int argc, wchar_t* argv[]) + +#else + +int +main(int argc, char* argv[]) + +#endif +{ + int status = EXIT_SUCCESS; + Ice::CommunicatorPtr communicator; + + string envName = "db"; + + communicator = Ice::initialize(argc, argv); + if(argc != 1) + { +#if defined(_WIN32) && !defined(__BCPLUSPLUS__) + envName = IceUtil::wstringToString(argv[1]); +#else + envName = argv[1]; +#endif + envName += "/db"; + } + + { + Freeze::ConnectionPtr connection; + try + { + connection = Freeze::createConnection(communicator, envName); + test(true); + } + catch(const exception& ex) + { + cerr << "excetpion:\n" << ex.what() << endl; + test(false); + } + catch(...) + { + test(false); + } + + cout << "File lock acquired.\n" + << "Enter some input and press enter, to release the lock and terminate the program." << endl; + // + // Block the test waiting for IO, so the file lock is preserved. + // + string foo; + cin >> foo; + + // + // Clean up. + // + if(connection) + { + connection->close(); + } + } + cout << "File lock released." << endl; + + try + { + communicator->destroy(); + } + catch(const Ice::Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + return status; +} |