Mercurial > hg > orthanc-tests
annotate README @ 735:be8f174d3c9d find-refactoring tip
tools/find: Limit and Since are now forbidden when filtering on DICOM tags that are not stored in DB
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Thu, 24 Oct 2024 15:08:59 +0200 |
parents | 31a7e52b3da6 |
children |
rev | line source |
---|---|
19 | 1 Orthanc - A Lightweight, RESTful DICOM Server |
2 ============================================= | |
3 | |
4 | |
5 General Information | |
6 =================== | |
7 | |
8 This repository contains the integration tests that are used to | |
9 validate Orthanc before each official release, in complement to the | |
22 | 10 unit tests that are part of the Orthanc core repository. These |
11 integration tests should be run by the package maintainers of the | |
12 various platforms supported by Orthanc. | |
19 | 13 |
14 General information about Orthanc can be found on its official | |
15 Website: http://www.orthanc-server.com/ | |
16 | |
174 | 17 Prerequisites: |
18 ============= | |
19 | |
564 | 20 For python2.7 tests, you need the following package |
21 # pip2 install easywebdav httplib2 pillow pydicom==1.4.1 pynetdicom==1.5.6 | |
22 | |
23 For python3 tests, you need the following package | |
24 # pip3 install httplib2 pillow pydicom pynetdicom | |
174 | 25 |
26 You also need DCMTK and Dicom3Tools | |
175 | 27 # sudo apt-get install -y dicom3tools dcmtk libgdcm-tools |
19 | 28 |
22 | 29 Quick-start: Running tests on the localhost |
30 =========================================== | |
31 | |
32 This section explains how to run the integration tests in the simplest | |
33 framework. First, install Orthanc. Then, open 2 command shells and | |
34 run the instructions that follow: | |
35 | |
36 1. In the first command shell: | |
37 | |
38 # python ./GenerateConfigurationForTests.py --force | |
39 # Orthanc IntegrationTestsConfiguration.json | |
40 | |
41 2. In the second command shell: | |
42 | |
43 # python ./Tests/Run.py | |
44 | |
176
48cc188ffb09
strip trailing 0 char that appears with some findscu versions
am@osimis.io
parents:
175
diff
changeset
|
45 to run a single test: |
48cc188ffb09
strip trailing 0 char that appears with some findscu versions
am@osimis.io
parents:
175
diff
changeset
|
46 |
48cc188ffb09
strip trailing 0 char that appears with some findscu versions
am@osimis.io
parents:
175
diff
changeset
|
47 # python Tests/Run.py Orthanc.test_findscu_counters |
48cc188ffb09
strip trailing 0 char that appears with some findscu versions
am@osimis.io
parents:
175
diff
changeset
|
48 |
174 | 49 To test the worklist plugin |
50 --------------------------- | |
51 | |
52 1. In the first command shell: | |
53 | |
54 # python ./GenerateConfigurationForTests.py --force --plugins /home/.../libModalityWorklists.so | |
55 # Orthanc IntegrationTestsConfiguration.json | |
56 | |
57 2. In the second command shell: | |
58 | |
456 | 59 # python ./Plugins/Worklists/Run.py |
174 | 60 |
22 | 61 |
62 | |
19 | 63 Running the tests |
64 ================= | |
65 | |
66 The integration tests are written in Python and are started by the | |
22 | 67 "./Tests/Run.py" script. The tests will validate some "remote" |
68 instance of Orthanc (whose AET is "ORTHANC") that is assumed to be | |
69 running before the tests are started. | |
70 | |
71 To test the DICOM protocol, a second, "local" instance of Orthanc is | |
72 automatically started by the integration tests (its AET is | |
73 "ORTHANCTEST"). This situation is depicted on the following | |
74 illustration: | |
75 | |
19 | 76 |
22 | 77 +--------------------------+ +-----------------------+ |
78 | Local computer | | Remote computer | | |
79 +--------------------------+ HTTP +-----------------------+ | |
80 | | 5000 : 8042 | | | |
81 | Run.py <---> ORTHANCTEST <===============> ORTHANC | | |
82 | | 5001 : 4242 | | | |
83 +--------------------------+ DICOM +-----------------------+ | |
84 | |
85 | |
86 Obviously, Orthanc must be installed both on the local and remote | |
87 computers. | |
88 | |
89 NB: Of course, the "local" and "remote" computers are allowed be the | |
90 same computer. | |
91 | |
19 | 92 |
93 | |
94 1. Configure the remote Orthanc | |
95 ------------------------------- | |
96 | |
97 To run the integration tests, you first have to create a configuration | |
98 file for the remote instance of Orthanc. This is done by running the | |
99 "./GenerateConfigurationForTests.py" script on the *local* | |
22 | 100 computer. This script will try and autodetect the proper network |
101 parameters. For instance (a help is available): | |
19 | 102 |
103 # ./GenerateConfigurationForTests.py --force | |
104 | |
105 This will create the "./IntegrationTestsConfiguration.json" | |
106 configuration file that must be copied to the remote computer. Then, | |
22 | 107 start Orthanc on the remote computer using this configuration file. |
19 | 108 |
109 By default, the configuration file will use "ORTHANC" as the AET, 8042 | |
110 as the HTTP port, and 4242 as the DICOM port. You can of course | |
111 adapt these parameters by editing the generated configuration file, | |
112 if you have special constraints or if the autodetection fails. | |
113 | |
114 | |
115 | |
22 | 116 2. Start the integration tests on the local computer |
117 ---------------------------------------------------- | |
118 | |
119 Once the remote instance of Orthanc is up and running, you can start | |
120 the integration tests. You have 2 possibilities: (a) use your local | |
121 computer as is, or (b) use Docker to have the best reproducibility. | |
122 | |
123 | |
124 (Option 2a) Without Docker: | |
125 | |
126 # python ./Tests/Run.py | |
127 | |
445
09ebdee8eda2
added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents:
294
diff
changeset
|
128 To run a single test with by fixing the Orthanc 0.8.6 executable path: |
608 | 129 # python2 ./Tests/Run.py --force --orthanc /home/alain/Releases/Orthanc-0.8.6/Build/Orthanc Orthanc.test_peer_store_straight |
445
09ebdee8eda2
added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents:
294
diff
changeset
|
130 |
456 | 131 To run a plugin test (no need for Orthanc 0.8.6) |
608 | 132 # python2 ./Plugins/DicomWeb/Run.py --force |
133 # python2 ./Plugins/DicomWeb/Run.py --force Orthanc.test_forwarded_headers | |
445
09ebdee8eda2
added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents:
294
diff
changeset
|
134 |
22 | 135 Use the flag "--help" to get the full list of arguments. These |
136 arguments will notably allow you to specify the network parameters | |
137 of your remote instance of Orthanc. | |
138 | |
541 | 139 To run the IngestTranscoding tests: |
140 # rm -rf /tmp/OrthancTest && python ./Tests/CheckIngestTranscoding.py /home/alain/o/build/orthanc/orthanc | |
141 | |
658
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
142 To run the DICOM TLS tests without Client certificate checks: |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
143 # cd ./Tests |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
144 # python CheckDicomTls.py --config-no-check-client |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
145 # /home/alain/o/build/orthanc/Orthanc --verbose dicom-tls.json |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
146 #### or |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
147 # docker run -p 8042:8042 -p 4242:4242 -e ORTHANC__DICOM_TLS_ENABLED=true -e ORTHANC__DICOM_TLS_CERTIFICATE=/certs/dicom-tls-a.crt -e ORTHANC__DICOM_TLS_PRIVATE_KEY=/certs/dicom-tls-a.key -e ORTHANC__DICOM_TLS_REMOTE_CERTIFICATE_REQUIRED=false -e ORTHANC__DICOM_TLS_TRUSTED_CERTIFICATES=/certs/dicom-tls-trusted.crt -e ORTHANC__EXECUTE_LUA_ENABLED=true -v .:/certs/ -e ORTHANC__AUTHENTICATION_ENABLED=false -e VERBOSE_ENABLED=true orthancteam/orthanc:24.6.1 |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
148 # python CheckDicomTls.py --force OrthancNoCheckClient |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
149 |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
150 To run the DICOM TLS tests without Client certificate checks: |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
151 # cd ./Tests |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
152 # python CheckDicomTls.py --config-check-client |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
153 # /home/alain/o/build/orthanc/Orthanc --verbose dicom-tls.json |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
154 #### or |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
155 # docker run -p 8042:8042 -p 4242:4242 -e ORTHANC__DICOM_TLS_ENABLED=true -e ORTHANC__DICOM_TLS_CERTIFICATE=/certs/dicom-tls-a.crt -e ORTHANC__DICOM_TLS_PRIVATE_KEY=/certs/dicom-tls-a.key -e ORTHANC__DICOM_TLS_REMOTE_CERTIFICATE_REQUIRED=true -e ORTHANC__DICOM_TLS_TRUSTED_CERTIFICATES=/certs/dicom-tls-trusted.crt -e ORTHANC__EXECUTE_LUA_ENABLED=true -v .:/certs/ -e ORTHANC__AUTHENTICATION_ENABLED=false -e VERBOSE_ENABLED=true orthancteam/orthanc:24.6.1 |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
156 # python CheckDicomTls.py --force OrthancCheckClient |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
157 |
31a7e52b3da6
split DICOM TLS in 2: check-client and no-check-client
Alain Mazy <am@orthanc.team>
parents:
608
diff
changeset
|
158 |
22 | 159 |
160 (Option 2b) With Docker: | |
161 | |
162 # sudo docker pull jodogne/orthanc-tests | |
163 # ./Start.sh | |
164 | |
165 Note that you will have to grant root access for Docker. | |
166 | |
167 | |
294
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
168 (Option 2c) On Windows: |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
169 |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
170 Easiest way to run the integration test under windows is actually |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
171 run the remote Orthanc and the python script under WSL and run the |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
172 orthanc under test on Windows (such that you can debug it). |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
173 Note that if Orthanc on Windows is not using the standard port, you |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
174 may specify them when starting the test as shown below |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
175 |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
176 # bash |
445
09ebdee8eda2
added test for /attachments/../info
Alain Mazy <am@osimis.io>
parents:
294
diff
changeset
|
177 # python2 Tests/Run.py --force --dicom 4242 --rest 8042 --orthanc /home/alain/Releases/Orthanc-0.8.6/Build/Orthanc Orthanc.test_peer_store_straight |
294
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
178 |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
179 Note that you will have to install Linux prerequisites under WSL |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
180 and the orthanc package as well. |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
181 |
192665e6113f
instruction to run on Windows (with WSL)
Alain Mazy <alain@mazy.be>
parents:
176
diff
changeset
|
182 |
473
4ee85b016a40
added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents:
456
diff
changeset
|
183 NewTests |
4ee85b016a40
added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents:
456
diff
changeset
|
184 ======== |
4ee85b016a40
added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents:
456
diff
changeset
|
185 |
4ee85b016a40
added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents:
456
diff
changeset
|
186 Check the README in the NewTests folder for more complex scenarios |
4ee85b016a40
added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents:
456
diff
changeset
|
187 using python3 and a new test framework. |
4ee85b016a40
added NewTests framework - only the Housekeeper tests right now
Alain Mazy <am@osimis.io>
parents:
456
diff
changeset
|
188 |
22 | 189 |
574 | 190 Contributing |
191 ============ | |
192 | |
193 Instructions for contributing to the Orthanc project are included in | |
194 the Orthanc Book: | |
588
8aa101e126d0
migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
574
diff
changeset
|
195 https://orthanc.uclouvain.be/book/developers/repositories.html |
574 | 196 |
197 | |
19 | 198 Licensing |
199 ========= | |
200 | |
201 The integration tests are licensed under the GPLv3 license. The sample | |
202 DICOM images contained in the "Database" folder are the property of | |
203 their respective owners, as listed in the "Database/README.txt" file. | |
204 | |
205 We also kindly ask scientific works and clinical studies that make | |
206 use of Orthanc to cite Orthanc in their associated publications. | |
207 Similarly, we ask open-source and closed-source products that make | |
208 use of Orthanc to warn us about this use. You can cite our work | |
209 using the following BibTeX entry: | |
210 | |
135 | 211 @Article{Jodogne2018, |
212 author="Jodogne, S{\'e}bastien", | |
213 title="The {O}rthanc Ecosystem for Medical Imaging", | |
214 journal="Journal of Digital Imaging", | |
215 year="2018", | |
216 month="May", | |
217 day="03", | |
218 issn="1618-727X", | |
219 doi="10.1007/s10278-018-0082-y", | |
220 url="https://doi.org/10.1007/s10278-018-0082-y" | |
19 | 221 } |