comparison UnitTestsSources/MultiThreading.cpp @ 930:27d256e0b458 mac

integration mainline -> mac
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 24 Jun 2014 16:47:18 +0200
parents 84513f2ee1f3
children 394a19d44f9d
comparison
equal deleted inserted replaced
928:882833632b1f 930:27d256e0b458
1 /**
2 * Orthanc - A Lightweight, RESTful DICOM Store
3 * Copyright (C) 2012-2014 Medical Physics Department, CHU of Liege,
4 * Belgium
5 *
6 * This program is free software: you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation, either version 3 of the
9 * License, or (at your option) any later version.
10 *
11 * In addition, as a special exception, the copyright holders of this
12 * program give permission to link the code of its release with the
13 * OpenSSL project's "OpenSSL" library (or with modified versions of it
14 * that use the same license as the "OpenSSL" library), and distribute
15 * the linked executables. You must obey the GNU General Public License
16 * in all respects for all of the code used other than "OpenSSL". If you
17 * modify file(s) with this exception, you may extend this exception to
18 * your version of the file(s), but you are not obligated to do so. If
19 * you do not wish to do so, delete this exception statement from your
20 * version. If you delete this exception statement from all source files
21 * in the program, then also delete it here.
22 *
23 * This program is distributed in the hope that it will be useful, but
24 * WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26 * General Public License for more details.
27 *
28 * You should have received a copy of the GNU General Public License
29 * along with this program. If not, see <http://www.gnu.org/licenses/>.
30 **/
31
32
33 #include "PrecompiledHeadersUnitTests.h"
1 #include "gtest/gtest.h" 34 #include "gtest/gtest.h"
35
36 #include <glog/logging.h>
2 37
3 #include "../Core/OrthancException.h" 38 #include "../Core/OrthancException.h"
4 #include "../Core/Toolbox.h" 39 #include "../Core/Toolbox.h"
5 #include "../Core/MultiThreading/ArrayFilledByThreads.h" 40 #include "../Core/MultiThreading/ArrayFilledByThreads.h"
41 #include "../Core/MultiThreading/Locker.h"
42 #include "../Core/MultiThreading/Mutex.h"
43 #include "../Core/MultiThreading/ReaderWriterLock.h"
6 #include "../Core/MultiThreading/ThreadedCommandProcessor.h" 44 #include "../Core/MultiThreading/ThreadedCommandProcessor.h"
7 45
8 using namespace Orthanc; 46 using namespace Orthanc;
9 47
10 namespace 48 namespace
183 ASSERT_TRUE(s.find(i) == s.end()); 221 ASSERT_TRUE(s.find(i) == s.end());
184 else 222 else
185 ASSERT_TRUE(s.find(i) != s.end()); 223 ASSERT_TRUE(s.find(i) != s.end());
186 } 224 }
187 } 225 }
226
227
228 TEST(MultiThreading, Mutex)
229 {
230 Mutex mutex;
231 Locker locker(mutex);
232 }
233
234
235 TEST(MultiThreading, ReaderWriterLock)
236 {
237 ReaderWriterLock lock;
238
239 {
240 Locker locker1(lock.ForReader());
241 Locker locker2(lock.ForReader());
242 }
243
244 {
245 Locker locker3(lock.ForWriter());
246 }
247 }
248
249
250
251
252
253 #include "../OrthancServer/DicomProtocol/ReusableDicomUserConnection.h"
254
255 TEST(ReusableDicomUserConnection, DISABLED_Basic)
256 {
257 ReusableDicomUserConnection c;
258 c.SetMillisecondsBeforeClose(200);
259 printf("START\n"); fflush(stdout);
260 {
261 ReusableDicomUserConnection::Locker lock(c, "STORESCP", "localhost", 2000, ModalityManufacturer_Generic);
262 lock.GetConnection().StoreFile("/home/jodogne/DICOM/Cardiac/MR.X.1.2.276.0.7230010.3.1.4.2831157719.2256.1336386844.676281");
263 }
264
265 printf("**\n"); fflush(stdout);
266 Toolbox::USleep(1000000);
267 printf("**\n"); fflush(stdout);
268
269 {
270 ReusableDicomUserConnection::Locker lock(c, "STORESCP", "localhost", 2000, ModalityManufacturer_Generic);
271 lock.GetConnection().StoreFile("/home/jodogne/DICOM/Cardiac/MR.X.1.2.276.0.7230010.3.1.4.2831157719.2256.1336386844.676277");
272 }
273
274 Toolbox::ServerBarrier();
275 printf("DONE\n"); fflush(stdout);
276 }