Mercurial > hg > orthanc
comparison OrthancFramework/UnitTestsSources/FromDcmtkTests.cpp @ 4457:789676a8c96a
Refactoring and improvements to the cache of DICOM files in ServerContext
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 19 Jan 2021 19:05:04 +0100 |
parents | 3e4f7b7840f0 |
children | fe774d8e904b |
comparison
equal
deleted
inserted
replaced
4456:3e4f7b7840f0 | 4457:789676a8c96a |
---|---|
2086 | 2086 |
2087 | 2087 |
2088 TEST(ParsedDicomCache, Basic) | 2088 TEST(ParsedDicomCache, Basic) |
2089 { | 2089 { |
2090 ParsedDicomCache cache(10); | 2090 ParsedDicomCache cache(10); |
2091 ASSERT_EQ(0, cache.GetCurrentSize()); | 2091 ASSERT_EQ(0u, cache.GetCurrentSize()); |
2092 ASSERT_EQ(0u, cache.GetNumberOfItems()); | |
2092 | 2093 |
2093 DicomMap tags; | 2094 DicomMap tags; |
2094 tags.SetValue(DICOM_TAG_PATIENT_ID, "patient1", false); | 2095 tags.SetValue(DICOM_TAG_PATIENT_ID, "patient1", false); |
2095 cache.Acquire("a", new ParsedDicomFile(tags, Encoding_Latin1, true), 20); | 2096 cache.Acquire("a", new ParsedDicomFile(tags, Encoding_Latin1, true), 20); |
2096 ASSERT_EQ(20, cache.GetCurrentSize()); | 2097 ASSERT_EQ(20u, cache.GetCurrentSize()); |
2098 ASSERT_EQ(1u, cache.GetNumberOfItems()); | |
2097 | 2099 |
2098 { | 2100 { |
2099 ParsedDicomCache::Accessor accessor(cache, "b"); | 2101 ParsedDicomCache::Accessor accessor(cache, "b"); |
2100 ASSERT_FALSE(accessor.IsValid()); | 2102 ASSERT_FALSE(accessor.IsValid()); |
2101 ASSERT_THROW(accessor.GetDicom(), OrthancException); | 2103 ASSERT_THROW(accessor.GetDicom(), OrthancException); |
2111 ASSERT_EQ(20u, accessor.GetFileSize()); | 2113 ASSERT_EQ(20u, accessor.GetFileSize()); |
2112 } | 2114 } |
2113 | 2115 |
2114 tags.SetValue(DICOM_TAG_PATIENT_ID, "patient2", false); | 2116 tags.SetValue(DICOM_TAG_PATIENT_ID, "patient2", false); |
2115 cache.Acquire("b", new ParsedDicomFile(tags, Encoding_Latin1, true), 5); | 2117 cache.Acquire("b", new ParsedDicomFile(tags, Encoding_Latin1, true), 5); |
2116 ASSERT_EQ(5, cache.GetCurrentSize()); | 2118 ASSERT_EQ(5u, cache.GetCurrentSize()); |
2119 ASSERT_EQ(1u, cache.GetNumberOfItems()); | |
2117 | 2120 |
2118 cache.Acquire("c", new ParsedDicomFile(true), 5); | 2121 cache.Acquire("c", new ParsedDicomFile(true), 5); |
2119 ASSERT_EQ(10, cache.GetCurrentSize()); | 2122 ASSERT_EQ(10u, cache.GetCurrentSize()); |
2123 ASSERT_EQ(2u, cache.GetNumberOfItems()); | |
2120 | 2124 |
2121 { | 2125 { |
2122 ParsedDicomCache::Accessor accessor(cache, "b"); | 2126 ParsedDicomCache::Accessor accessor(cache, "b"); |
2123 ASSERT_TRUE(accessor.IsValid()); | 2127 ASSERT_TRUE(accessor.IsValid()); |
2124 std::string s; | 2128 std::string s; |
2126 ASSERT_EQ("patient2", s); | 2130 ASSERT_EQ("patient2", s); |
2127 ASSERT_EQ(5u, accessor.GetFileSize()); | 2131 ASSERT_EQ(5u, accessor.GetFileSize()); |
2128 } | 2132 } |
2129 | 2133 |
2130 cache.Acquire("d", new ParsedDicomFile(true), 5); | 2134 cache.Acquire("d", new ParsedDicomFile(true), 5); |
2131 ASSERT_EQ(10, cache.GetCurrentSize()); | 2135 ASSERT_EQ(10u, cache.GetCurrentSize()); |
2136 ASSERT_EQ(2u, cache.GetNumberOfItems()); | |
2132 | 2137 |
2133 ASSERT_TRUE(ParsedDicomCache::Accessor(cache, "b").IsValid()); | 2138 ASSERT_TRUE(ParsedDicomCache::Accessor(cache, "b").IsValid()); |
2134 ASSERT_FALSE(ParsedDicomCache::Accessor(cache, "c").IsValid()); // recycled by LRU | 2139 ASSERT_FALSE(ParsedDicomCache::Accessor(cache, "c").IsValid()); // recycled by LRU |
2135 ASSERT_TRUE(ParsedDicomCache::Accessor(cache, "d").IsValid()); | 2140 ASSERT_TRUE(ParsedDicomCache::Accessor(cache, "d").IsValid()); |
2136 | 2141 |
2142 cache.Invalidate("d"); | |
2143 ASSERT_EQ(5u, cache.GetCurrentSize()); | |
2144 ASSERT_EQ(1u, cache.GetNumberOfItems()); | |
2145 ASSERT_TRUE(ParsedDicomCache::Accessor(cache, "b").IsValid()); | |
2146 ASSERT_FALSE(ParsedDicomCache::Accessor(cache, "d").IsValid()); | |
2147 | |
2137 cache.Acquire("e", new ParsedDicomFile(true), 15); | 2148 cache.Acquire("e", new ParsedDicomFile(true), 15); |
2138 ASSERT_EQ(15, cache.GetCurrentSize()); | 2149 ASSERT_EQ(15u, cache.GetCurrentSize()); |
2150 ASSERT_EQ(1u, cache.GetNumberOfItems()); | |
2139 | 2151 |
2140 ASSERT_FALSE(ParsedDicomCache::Accessor(cache, "c").IsValid()); | 2152 ASSERT_FALSE(ParsedDicomCache::Accessor(cache, "c").IsValid()); |
2141 ASSERT_FALSE(ParsedDicomCache::Accessor(cache, "d").IsValid()); | 2153 ASSERT_FALSE(ParsedDicomCache::Accessor(cache, "d").IsValid()); |
2142 ASSERT_TRUE(ParsedDicomCache::Accessor(cache, "e").IsValid()); | 2154 ASSERT_TRUE(ParsedDicomCache::Accessor(cache, "e").IsValid()); |
2155 | |
2156 cache.Invalidate("e"); | |
2157 ASSERT_EQ(0u, cache.GetCurrentSize()); | |
2158 ASSERT_EQ(0u, cache.GetNumberOfItems()); | |
2159 ASSERT_FALSE(ParsedDicomCache::Accessor(cache, "e").IsValid()); | |
2143 } | 2160 } |
2144 | 2161 |
2145 | 2162 |
2146 | 2163 |
2147 | 2164 |