comparison Framework/Plugins/IndexUnitTests.h @ 266:cc7af42d4f23

Store revisions for metadata and attachments in PostgreSQL
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 20 Apr 2021 17:41:44 +0200
parents b0c65094b299
children 07881ac5404b
comparison
equal deleted inserted replaced
265:cd73e34d5411 266:cc7af42d4f23
31 31
32 #include <gtest/gtest.h> 32 #include <gtest/gtest.h>
33 #include <list> 33 #include <list>
34 34
35 35
36 #if ORTHANC_ENABLE_POSTGRESQL == 1
37 # define HAS_REVISIONS 1
38 #elif ORTHANC_ENABLE_MYSQL == 1
39 # define HAS_REVISIONS 0
40 #elif ORTHANC_ENABLE_SQLITE == 1
41 # define HAS_REVISIONS 1
42 #else
43 # error Unknown database backend
44 #endif
45
46
36 namespace Orthanc 47 namespace Orthanc
37 { 48 {
38 /** 49 /**
39 * Mock enumeration inspired from the source code of Orthanc... only 50 * Mock enumeration inspired from the source code of Orthanc... only
40 * for use in the unit tests! 51 * for use in the unit tests!
275 int64_t revision = -1; 286 int64_t revision = -1;
276 ASSERT_FALSE(db.LookupMetadata(s, revision, *manager, b, Orthanc::MetadataType_LastUpdate)); 287 ASSERT_FALSE(db.LookupMetadata(s, revision, *manager, b, Orthanc::MetadataType_LastUpdate));
277 ASSERT_TRUE(db.LookupMetadata(s, revision, *manager, a, Orthanc::MetadataType_LastUpdate)); 288 ASSERT_TRUE(db.LookupMetadata(s, revision, *manager, a, Orthanc::MetadataType_LastUpdate));
278 ASSERT_EQ("update2", s); 289 ASSERT_EQ("update2", s);
279 290
280 #if ORTHANC_ENABLE_SQLITE == 1 291 #if HAS_REVISIONS == 1
281 ASSERT_EQ(43, revision); // Only SQLite implements revisions so far 292 ASSERT_EQ(43, revision);
282 #else 293 #else
283 ASSERT_EQ(0, revision); 294 ASSERT_EQ(0, revision);
284 #endif 295 #endif
285 296
286 db.SetMetadata(*manager, a, Orthanc::MetadataType_LastUpdate, "update", 44); 297 db.SetMetadata(*manager, a, Orthanc::MetadataType_LastUpdate, "update", 44);
287 ASSERT_TRUE(db.LookupMetadata(s, revision, *manager, a, Orthanc::MetadataType_LastUpdate)); 298 ASSERT_TRUE(db.LookupMetadata(s, revision, *manager, a, Orthanc::MetadataType_LastUpdate));
288 ASSERT_EQ("update", s); 299 ASSERT_EQ("update", s);
289 300
290 #if ORTHANC_ENABLE_SQLITE == 1 301 #if HAS_REVISIONS == 1
291 ASSERT_EQ(44, revision); // Only SQLite implements revisions so far 302 ASSERT_EQ(44, revision);
292 #else 303 #else
293 ASSERT_EQ(0, revision); 304 ASSERT_EQ(0, revision);
294 #endif 305 #endif
295 306
296 std::list<int32_t> md; 307 std::list<int32_t> md;
300 ASSERT_TRUE(md.front() == Orthanc::MetadataType_LastUpdate || md.back() == Orthanc::MetadataType_LastUpdate); 311 ASSERT_TRUE(md.front() == Orthanc::MetadataType_LastUpdate || md.back() == Orthanc::MetadataType_LastUpdate);
301 std::string mdd; 312 std::string mdd;
302 ASSERT_TRUE(db.LookupMetadata(mdd, revision, *manager, a, Orthanc::MetadataType_ModifiedFrom)); 313 ASSERT_TRUE(db.LookupMetadata(mdd, revision, *manager, a, Orthanc::MetadataType_ModifiedFrom));
303 ASSERT_EQ("modified", mdd); 314 ASSERT_EQ("modified", mdd);
304 315
305 #if ORTHANC_ENABLE_SQLITE == 1 316 #if HAS_REVISIONS == 1
306 ASSERT_EQ(42, revision); // Only SQLite implements revisions so far 317 ASSERT_EQ(42, revision);
307 #else 318 #else
308 ASSERT_EQ(0, revision); 319 ASSERT_EQ(0, revision);
309 #endif 320 #endif
310 321
311 ASSERT_TRUE(db.LookupMetadata(mdd, revision, *manager, a, Orthanc::MetadataType_LastUpdate)); 322 ASSERT_TRUE(db.LookupMetadata(mdd, revision, *manager, a, Orthanc::MetadataType_LastUpdate));
312 ASSERT_EQ("update", mdd); 323 ASSERT_EQ("update", mdd);
313 324
314 #if ORTHANC_ENABLE_SQLITE == 1 325 #if HAS_REVISIONS == 1
315 ASSERT_EQ(44, revision); // Only SQLite implements revisions so far 326 ASSERT_EQ(44, revision);
316 #else 327 #else
317 ASSERT_EQ(0, revision); 328 ASSERT_EQ(0, revision);
318 #endif 329 #endif
319 330
320 db.ListAvailableMetadata(md, *manager, b); 331 db.ListAvailableMetadata(md, *manager, b);
374 expectedAttachment->compressionType = Orthanc::CompressionType_None; 385 expectedAttachment->compressionType = Orthanc::CompressionType_None;
375 expectedAttachment->compressedSize = 42; 386 expectedAttachment->compressedSize = 42;
376 expectedAttachment->compressedHash = "md5_1"; 387 expectedAttachment->compressedHash = "md5_1";
377 ASSERT_TRUE(db.LookupAttachment(*output, revision, *manager, a, Orthanc::FileContentType_Dicom)); 388 ASSERT_TRUE(db.LookupAttachment(*output, revision, *manager, a, Orthanc::FileContentType_Dicom));
378 389
379 #if ORTHANC_ENABLE_SQLITE == 1 390 #if HAS_REVISIONS == 1
380 ASSERT_EQ(42, revision); // Only SQLite implements revisions so far 391 ASSERT_EQ(42, revision);
381 #else 392 #else
382 ASSERT_EQ(0, revision); 393 ASSERT_EQ(0, revision);
383 #endif 394 #endif
384 395
385 expectedAttachment.reset(new OrthancPluginAttachment); 396 expectedAttachment.reset(new OrthancPluginAttachment);
391 expectedAttachment->compressedSize = 4242; 402 expectedAttachment->compressedSize = 4242;
392 expectedAttachment->compressedHash = "md5_2"; 403 expectedAttachment->compressedHash = "md5_2";
393 revision = -1; 404 revision = -1;
394 ASSERT_TRUE(db.LookupAttachment(*output, revision, *manager, a, Orthanc::FileContentType_DicomAsJson)); 405 ASSERT_TRUE(db.LookupAttachment(*output, revision, *manager, a, Orthanc::FileContentType_DicomAsJson));
395 406
396 #if ORTHANC_ENABLE_SQLITE == 1 407 #if HAS_REVISIONS == 1
397 ASSERT_EQ(43, revision); // Only SQLite implements revisions so far 408 ASSERT_EQ(43, revision);
398 #else 409 #else
399 ASSERT_EQ(0, revision); 410 ASSERT_EQ(0, revision);
400 #endif 411 #endif
401 412
402 db.ListAvailableAttachments(fc, *manager, b); 413 db.ListAvailableAttachments(fc, *manager, b);