Mercurial > hg > orthanc
comparison UnitTests/FileStorage.cpp @ 233:c11273198cef
rename
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 30 Nov 2012 14:30:05 +0100 |
parents | 5368bbe813cf |
children | 7c1faef915a4 |
comparison
equal
deleted
inserted
replaced
232:5368bbe813cf | 233:c11273198cef |
---|---|
64 { | 64 { |
65 FileStorage s("FileStorageUnitTests"); | 65 FileStorage s("FileStorageUnitTests"); |
66 FileStorageAccessor accessor(s); | 66 FileStorageAccessor accessor(s); |
67 | 67 |
68 std::string data = "Hello world"; | 68 std::string data = "Hello world"; |
69 FileInfo info = accessor.Write(data, FileType_Dicom); | 69 FileInfo info = accessor.Write(data, FileContentType_Dicom); |
70 | 70 |
71 std::string r; | 71 std::string r; |
72 accessor.Read(r, info.GetUuid()); | 72 accessor.Read(r, info.GetUuid()); |
73 | 73 |
74 ASSERT_EQ(data, r); | 74 ASSERT_EQ(data, r); |
75 ASSERT_EQ(CompressionType_None, info.GetCompressionType()); | 75 ASSERT_EQ(CompressionType_None, info.GetCompressionType()); |
76 ASSERT_EQ(11u, info.GetUncompressedSize()); | 76 ASSERT_EQ(11u, info.GetUncompressedSize()); |
77 ASSERT_EQ(11u, info.GetCompressedSize()); | 77 ASSERT_EQ(11u, info.GetCompressedSize()); |
78 ASSERT_EQ(FileType_Dicom, info.GetFileType()); | 78 ASSERT_EQ(FileContentType_Dicom, info.GetContentType()); |
79 } | 79 } |
80 | 80 |
81 | 81 |
82 TEST(FileStorageAccessor, NoCompression) | 82 TEST(FileStorageAccessor, NoCompression) |
83 { | 83 { |
84 FileStorage s("FileStorageUnitTests"); | 84 FileStorage s("FileStorageUnitTests"); |
85 CompressedFileStorageAccessor accessor(s); | 85 CompressedFileStorageAccessor accessor(s); |
86 | 86 |
87 accessor.SetCompressionForNextOperations(CompressionType_None); | 87 accessor.SetCompressionForNextOperations(CompressionType_None); |
88 std::string data = "Hello world"; | 88 std::string data = "Hello world"; |
89 FileInfo info = accessor.Write(data, FileType_Dicom); | 89 FileInfo info = accessor.Write(data, FileContentType_Dicom); |
90 | 90 |
91 std::string r; | 91 std::string r; |
92 accessor.Read(r, info.GetUuid()); | 92 accessor.Read(r, info.GetUuid()); |
93 | 93 |
94 ASSERT_EQ(data, r); | 94 ASSERT_EQ(data, r); |
95 ASSERT_EQ(CompressionType_None, info.GetCompressionType()); | 95 ASSERT_EQ(CompressionType_None, info.GetCompressionType()); |
96 ASSERT_EQ(11u, info.GetUncompressedSize()); | 96 ASSERT_EQ(11u, info.GetUncompressedSize()); |
97 ASSERT_EQ(11u, info.GetCompressedSize()); | 97 ASSERT_EQ(11u, info.GetCompressedSize()); |
98 ASSERT_EQ(FileType_Dicom, info.GetFileType()); | 98 ASSERT_EQ(FileContentType_Dicom, info.GetContentType()); |
99 } | 99 } |
100 | 100 |
101 | 101 |
102 TEST(FileStorageAccessor, Compression) | 102 TEST(FileStorageAccessor, Compression) |
103 { | 103 { |
104 FileStorage s("FileStorageUnitTests"); | 104 FileStorage s("FileStorageUnitTests"); |
105 CompressedFileStorageAccessor accessor(s); | 105 CompressedFileStorageAccessor accessor(s); |
106 | 106 |
107 accessor.SetCompressionForNextOperations(CompressionType_Zlib); | 107 accessor.SetCompressionForNextOperations(CompressionType_Zlib); |
108 std::string data = "Hello world"; | 108 std::string data = "Hello world"; |
109 FileInfo info = accessor.Write(data, FileType_Dicom); | 109 FileInfo info = accessor.Write(data, FileContentType_Dicom); |
110 | 110 |
111 std::string r; | 111 std::string r; |
112 accessor.Read(r, info.GetUuid()); | 112 accessor.Read(r, info.GetUuid()); |
113 | 113 |
114 ASSERT_EQ(data, r); | 114 ASSERT_EQ(data, r); |
115 ASSERT_EQ(CompressionType_Zlib, info.GetCompressionType()); | 115 ASSERT_EQ(CompressionType_Zlib, info.GetCompressionType()); |
116 ASSERT_EQ(11u, info.GetUncompressedSize()); | 116 ASSERT_EQ(11u, info.GetUncompressedSize()); |
117 ASSERT_EQ(FileType_Dicom, info.GetFileType()); | 117 ASSERT_EQ(FileContentType_Dicom, info.GetContentType()); |
118 } | 118 } |
119 | 119 |
120 | 120 |
121 TEST(FileStorageAccessor, Mix) | 121 TEST(FileStorageAccessor, Mix) |
122 { | 122 { |
126 std::string r; | 126 std::string r; |
127 std::string compressedData = "Hello"; | 127 std::string compressedData = "Hello"; |
128 std::string uncompressedData = "HelloWorld"; | 128 std::string uncompressedData = "HelloWorld"; |
129 | 129 |
130 accessor.SetCompressionForNextOperations(CompressionType_Zlib); | 130 accessor.SetCompressionForNextOperations(CompressionType_Zlib); |
131 FileInfo compressedInfo = accessor.Write(compressedData, FileType_Dicom); | 131 FileInfo compressedInfo = accessor.Write(compressedData, FileContentType_Dicom); |
132 | 132 |
133 accessor.SetCompressionForNextOperations(CompressionType_None); | 133 accessor.SetCompressionForNextOperations(CompressionType_None); |
134 FileInfo uncompressedInfo = accessor.Write(uncompressedData, FileType_Dicom); | 134 FileInfo uncompressedInfo = accessor.Write(uncompressedData, FileContentType_Dicom); |
135 | 135 |
136 accessor.SetCompressionForNextOperations(CompressionType_Zlib); | 136 accessor.SetCompressionForNextOperations(CompressionType_Zlib); |
137 accessor.Read(r, compressedInfo.GetUuid()); | 137 accessor.Read(r, compressedInfo.GetUuid()); |
138 ASSERT_EQ(compressedData, r); | 138 ASSERT_EQ(compressedData, r); |
139 | 139 |
145 // This test is too slow on Windows | 145 // This test is too slow on Windows |
146 accessor.SetCompressionForNextOperations(CompressionType_Zlib); | 146 accessor.SetCompressionForNextOperations(CompressionType_Zlib); |
147 ASSERT_THROW(accessor.Read(r, uncompressedInfo.GetUuid()), OrthancException); | 147 ASSERT_THROW(accessor.Read(r, uncompressedInfo.GetUuid()), OrthancException); |
148 */ | 148 */ |
149 } | 149 } |
150 | |
151 | |
152 | |
153 #if 0 | |
154 // TODO REMOVE THIS STUFF | |
155 namespace Orthanc | |
156 { | |
157 class ServerStorageAccessor : public StorageAccessor | |
158 { | |
159 private: | |
160 CompressedFileStorageAccessor composite_; | |
161 ServerIndex& index_; | |
162 AttachedFileType contentType_; | |
163 | |
164 protected: | |
165 virtual std::string WriteInternal(const void* data, | |
166 size_t size) | |
167 { | |
168 switch (contentType_) | |
169 { | |
170 case AttachedFileType_Json: | |
171 composite_.SetCompressionForNextOperations(CompressionType_None); | |
172 break; | |
173 | |
174 case AttachedFileType_Dicom: | |
175 // TODO GLOBAL PARAMETER | |
176 composite_.SetCompressionForNextOperations(CompressionType_Zlib); | |
177 break; | |
178 | |
179 default: | |
180 throw OrthancException(ErrorCode_InternalError); | |
181 } | |
182 | |
183 std::string fileUuid = composite_.Write(data, size); | |
184 | |
185 | |
186 } | |
187 | |
188 public: | |
189 ServerStorageAccessor(FileStorage& storage, | |
190 ServerIndex& index) : | |
191 composite_(storage), | |
192 index_(index) | |
193 { | |
194 contentType_ = AttachedFileType_Dicom; | |
195 } | |
196 | |
197 void SetAttachmentType(AttachedFileType type) | |
198 { | |
199 contentType_ = type; | |
200 } | |
201 | |
202 AttachedFileType GetAttachmentType() const | |
203 { | |
204 return contentType_; | |
205 } | |
206 | |
207 virtual void Read(std::string& content, | |
208 const std::string& uuid) | |
209 { | |
210 std::string fileUuid; | |
211 CompressionType compression; | |
212 | |
213 if (index_.GetFile(fileUuid, compression, uuid, contentType_)) | |
214 { | |
215 composite_.SetCompressionForNextOperations(compression); | |
216 composite_.Read(content, fileUuid); | |
217 } | |
218 else | |
219 { | |
220 throw OrthancException(ErrorCode_InternalError); | |
221 } | |
222 } | |
223 | |
224 virtual HttpFileSender* ConstructHttpFileSender(const std::string& uuid) | |
225 { | |
226 std::string fileUuid; | |
227 CompressionType compression; | |
228 | |
229 if (index_.GetFile(fileUuid, compression, uuid, contentType_)) | |
230 { | |
231 composite_.SetCompressionForNextOperations(compression); | |
232 return composite_.ConstructHttpFileSender(fileUuid); | |
233 } | |
234 else | |
235 { | |
236 throw OrthancException(ErrorCode_InternalError); | |
237 } | |
238 } | |
239 }; | |
240 } | |
241 #endif |