summaryrefslogtreecommitdiff
path: root/cppe/test/IceE/uuid/Client.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cppe/test/IceE/uuid/Client.cpp')
-rw-r--r--cppe/test/IceE/uuid/Client.cpp331
1 files changed, 0 insertions, 331 deletions
diff --git a/cppe/test/IceE/uuid/Client.cpp b/cppe/test/IceE/uuid/Client.cpp
deleted file mode 100644
index 52199e95295..00000000000
--- a/cppe/test/IceE/uuid/Client.cpp
+++ /dev/null
@@ -1,331 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice-E is licensed to you under the terms described in the
-// ICEE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-#include <IceE/UUID.h>
-#include <IceE/Time.h>
-#include <IceE/Thread.h>
-#include <IceE/StaticMutex.h>
-#include <IceE/Monitor.h>
-#include <TestApplication.h>
-#include <set>
-#include <vector>
-
-using namespace IceUtil;
-using namespace std;
-
-static StaticMutex staticMutex = ICE_STATIC_MUTEX_INITIALIZER;
-
-inline void usage(const char* myName)
-{
- tprintf("Usage: %s [number of UUIDs to generate] [number of threads]\n", myName);
-}
-
-class CountedBarrier : public Shared, public Monitor<Mutex>
-{
-public:
-
- CountedBarrier(int count) :
- _count(count)
- {
- }
-
- void
- decrement()
- {
- Lock sync(*this);
- --_count;
- if(_count == 0)
- {
- notifyAll();
- }
- }
-
- void
- waitZero()
- {
- Lock sync(*this);
- while(_count != 0)
- {
- wait();
- }
- }
-
- bool
- isZero() const
- {
- Lock sync(*this);
- return _count == 0;
- }
-
-private:
-
- int _count;
-};
-typedef Handle<CountedBarrier> CountedBarrierPtr;
-
-class InsertThread : public Thread, public Mutex
-{
-public:
-
- InsertThread(const CountedBarrierPtr& start, const CountedBarrierPtr& stop, int threadId, set<string>& uuidSet, long howMany, bool verbose)
- : _start(start), _stop(stop), _threadId(threadId), _uuidSet(uuidSet), _howMany(howMany), _verbose(verbose), _destroyed(false)
- {
- }
-
- virtual void
- run()
- {
- _start->decrement();
- _start->waitZero();
-
- for(long i = 0; i < _howMany && !destroyed(); i++)
- {
- string uuid = generateUUID();
- {
- StaticMutex::Lock lock(staticMutex);
- pair<set<string>::iterator, bool> ok = _uuidSet.insert(uuid);
- if(!ok.second)
- {
- tprintf("******* iteration %d\n", i);
- tprintf("******* Duplicate UUID: %s\n", (*ok.first).c_str());
- }
-
- test(ok.second);
- }
-
-#ifdef _WIN32_WCE
- if(i > 0 && (i % 100) == 0)
- {
- tprintf(".");
- }
-#else
- if(_verbose && i > 0 && (i % 100000 == 0))
- {
- tprintf("Thread %d: generated %d UUIDs.\n", _threadId, i);
- }
-#endif
- }
-
- _stop->decrement();
-#ifdef _WIN32_WCE
- // This will cause the main thread to wake.
- tprintf(".");
-#endif
- }
-
- void
- destroy()
- {
- Lock sync(*this);
- _destroyed = true;
- }
-
- bool
- destroyed() const
- {
- Lock sync(*this);
- return _destroyed;
- }
- private:
-
- const CountedBarrierPtr _start;
- const CountedBarrierPtr _stop;
- const int _threadId;
- set<string>& _uuidSet;
- const long _howMany;
- const bool _verbose;
- bool _destroyed;
-};
-typedef Handle<InsertThread> InsertThreadPtr;
-
-class UuidTestApplication : public TestApplication
-{
-public:
-
- UuidTestApplication() :
- TestApplication("uuid test")
- {
- }
-
- virtual int
- run(int argc, char* argv[])
- {
-#ifdef _WIN32_WCE
- long howMany = 3000;
-#else
- long howMany = 300000;
-#endif
- int threadCount = 3;
- bool verbose = false;
-
- if(argc > 3)
- {
- usage(argv[0]);
- return EXIT_FAILURE;
- }
- else if(argc == 3)
- {
- howMany = atol(argv[1]);
- if (howMany == 0)
- {
- usage(argv[0]);
- return EXIT_FAILURE;
- }
- threadCount = atoi(argv[2]);
- if(threadCount <= 0)
- {
- usage(argv[0]);
- return EXIT_FAILURE;
- }
- verbose = true;
- }
- else if(argc == 2)
- {
- howMany = atol(argv[1]);
- if (howMany == 0)
- {
- usage(argv[0]);
- return EXIT_FAILURE;
- }
- }
-
- tprintf("Generating %d UUIDs", howMany);
- tprintf("... ");
-
- if(verbose)
- {
- tprintf("\n");
- }
- //
- // First measure raw time to produce UUIDs.
- //
- Time startTime = Time::now();
- long i;
- for(i = 0; i < howMany; i++)
- {
- generateUUID();
- }
-#ifdef _WIN32_WCE
- if(terminated())
- {
- return EXIT_SUCCESS;
- }
-#endif
-
- Time finish = Time::now();
-
- tprintf("ok\n");
-
-#ifndef _WIN32_WCE
- if(verbose)
-#endif
- {
- tprintf("Each UUID took an average of %.04f ms to generate and insert into a set<string>.\n",
- ((double) ((finish - startTime).toMilliSeconds())) / howMany);
- }
-
- tprintf("Generating %d UUIDs using %d thread", howMany, threadCount);
- if(threadCount > 1)
- {
- tprintf("s");
- }
- tprintf("... ");
-
- if(verbose)
- {
- tprintf("\n");
- }
-
- set<string> uuidSet;
-
- startTime = Time::now();
- vector<InsertThreadPtr> threads;
-
- CountedBarrierPtr stop = new CountedBarrier(threadCount);
- CountedBarrierPtr start = new CountedBarrier(threadCount);
- for(i = 0; i < threadCount; i++)
- {
- InsertThreadPtr t = new InsertThread(start, stop, i, uuidSet, howMany / threadCount, verbose);
- t->start();
- threads.push_back(t);
- }
-
- vector<InsertThreadPtr>::iterator p;
-
-#ifdef _WIN32_WCE
- while(!stop->isZero() && !terminated())
- {
- MSG Msg;
- if(GetMessage(&Msg, NULL, 0, 0))
- {
- //
- // Process all pending events.
- //
- do
- {
- TranslateMessage(&Msg);
- DispatchMessage(&Msg);
- }
- while(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE));
- }
- }
-
- //
- // If the user terminated the app, the destroy all the
- // threads. This loop will end once all the threads have gone.
- //
- if(terminated())
- {
- for(p = threads.begin(); p != threads.end(); ++p)
- {
- (*p)->destroy();
- }
- }
-#endif
- stop->waitZero();
- finish = Time::now();
-
- for(p = threads.begin(); p != threads.end(); ++p)
- {
- (*p)->getThreadControl().join();
- }
-
- tprintf("ok\n");
-
-#ifndef _WIN32_WCE
- if(verbose)
-#endif
- {
- tprintf("Each UUID took an average of %.04f ms to generate and insert into a set<string>.\n",
- ((double) ((finish - startTime).toMilliSeconds())) / howMany);
- }
-
- return EXIT_SUCCESS;
- }
-};
-
-#ifdef _WIN32_WCE
-
-int WINAPI
-WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
-{
- UuidTestApplication app;
- return app.main(hInstance);
-}
-
-#else
-
-int
-main(int argc, char** argv)
-{
- UuidTestApplication app;
- return app.main(argc, argv);
-}
-
-#endif