# HG changeset patch # User Sebastien Jodogne # Date 1392366083 -3600 # Node ID 9d1973813d8b9180728ff7a28c1c351fa8c50e5b # Parent 9e3f214419033007e3bfec70b9e07fa7c8db66e6 test attachment recycling diff -r 9e3f21441903 -r 9d1973813d8b UnitTestsSources/ServerIndex.cpp --- a/UnitTestsSources/ServerIndex.cpp Thu Feb 13 16:16:07 2014 +0100 +++ b/UnitTestsSources/ServerIndex.cpp Fri Feb 14 09:21:23 2014 +0100 @@ -504,7 +504,7 @@ -TEST(DatabaseWrapper, AttachmentRecycling) +TEST(ServerIndex, AttachmentRecycling) { const std::string path = "OrthancStorageUnitTests"; Toolbox::RemoveFile(path + "/index"); @@ -515,16 +515,41 @@ Json::Value tmp; index.ComputeStatistics(tmp); - ASSERT_EQ(0, tmp["PatientCount"].asInt()); + ASSERT_EQ(0, tmp["CountPatients"].asInt()); + ASSERT_EQ(0, boost::lexical_cast(tmp["TotalDiskSize"].asString())); ServerIndex::Attachments attachments; - DicomMap instance; - instance.SetValue(DICOM_TAG_PATIENT_ID, "patient1"); - instance.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "study1"); - instance.SetValue(DICOM_TAG_SERIES_INSTANCE_UID, "series1"); - instance.SetValue(DICOM_TAG_SOP_INSTANCE_UID, "instance1"); - ASSERT_EQ(StoreStatus_Success, index.Store(instance, attachments, "")); + std::vector ids; + for (int i = 0; i < 10; i++) + { + std::string id = boost::lexical_cast(i); + DicomMap instance; + instance.SetValue(DICOM_TAG_PATIENT_ID, "patient-" + id); + instance.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "study-" + id); + instance.SetValue(DICOM_TAG_SERIES_INSTANCE_UID, "series-" + id); + instance.SetValue(DICOM_TAG_SOP_INSTANCE_UID, "instance-" + id); + ASSERT_EQ(StoreStatus_Success, index.Store(instance, attachments, "")); + + DicomInstanceHasher hasher(instance); + ids.push_back(hasher.HashPatient()); + ids.push_back(hasher.HashStudy()); + ids.push_back(hasher.HashSeries()); + ids.push_back(hasher.HashInstance()); + } + + index.ComputeStatistics(tmp); + ASSERT_EQ(10, tmp["CountPatients"].asInt()); + ASSERT_EQ(0, boost::lexical_cast(tmp["TotalDiskSize"].asString())); + + for (size_t i = 0; i < ids.size(); i++) + { + FileInfo info(Toolbox::GenerateUuid(), FileContentType_Dicom, 1, "md5"); + index.AddAttachment(info, ids[i]); + + index.ComputeStatistics(tmp); + ASSERT_GE(10, boost::lexical_cast(tmp["TotalDiskSize"].asString())); + } // Because the DB is in memory, the SQLite index must not have been created ASSERT_THROW(Toolbox::GetFileSize(path + "/index"), OrthancException);