Year 2007.
[metaproxy-moved-to-github.git] / src / test_session2.cpp
1 /* $Id: test_session2.cpp,v 1.9 2007-01-25 14:05:54 adam Exp $
2    Copyright (c) 2005-2007, Index Data.
3
4    See the LICENSE file for details
5  */
6 #include "config.hpp"
7 #include "session.hpp"
8
9 #include <iostream>
10 #include <list>
11
12 #include <boost/thread/mutex.hpp>
13 #include <boost/thread/thread.hpp>
14
15 #define BOOST_AUTO_TEST_MAIN
16 #include <boost/test/auto_unit_test.hpp>
17
18 using namespace boost::unit_test;
19 namespace mp = metaproxy_1;
20
21 boost::mutex io_mutex;
22
23 class Worker 
24 {
25     public:
26         Worker(int nr = 0) 
27             :  m_nr(nr){};
28         
29         void operator() (void) {
30             for (int i=0; i < 100; ++i)
31             {
32                 mp::Session session;
33                 m_id = session.id();   
34                 //print();
35             }
36         }
37
38         void print()
39         {
40             boost::mutex::scoped_lock scoped_lock(io_mutex);
41             std::cout << "Worker " << m_nr 
42                       << " session.id() " << m_id << std::endl;
43         }
44         
45     private: 
46         int m_nr;
47         int m_id;
48 };
49
50
51
52 BOOST_AUTO_UNIT_TEST( testsession2 ) 
53 {
54
55     // test session 
56     try {
57
58         const int num_threads = 100;
59         boost::thread_group thrds;
60         
61
62         for (int i=0; i < num_threads; ++i)
63         {
64             // Notice that each Worker has it's own session object!
65             Worker w(i);
66             thrds.add_thread(new boost::thread(w));
67         }
68         thrds.join_all();
69
70         mp::Session session;
71         BOOST_CHECK (session.id() == 10001);
72         
73     }
74     catch (std::exception &e) {
75         std::cout << e.what() << "\n";
76         BOOST_CHECK (false);
77     }
78     catch (...) {
79         BOOST_CHECK (false);
80     }
81 }
82
83 /*
84  * Local variables:
85  * c-basic-offset: 4
86  * indent-tabs-mode: nil
87  * c-file-style: "stroustrup"
88  * End:
89  * vim: shiftwidth=4 tabstop=8 expandtab
90  */