Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
.git

# --- Below Should mirror .gitignore, without leading '/' --- #
.DS_Store
.*sw[op]
*.py[co]
*.egg-info
testdata
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
.*sw[op]
*.py[co]
*.egg-info
testdata
36 changes: 13 additions & 23 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,39 +1,29 @@
sudo: false
language: python
python:
- "2.7"
dist: trusty
services:
- docker

env:
global:
- DCMTK_VERSION="dcmtk-3.6.1_20150924"
- DCMTK_DB_DIR="dcmtk_dicom_db"
- TESTDATA_DIR="testdata"
- ORTHANC_VERSION="Orthanc-1.1.0"
- TESTDATA_DIR="$HOME/.cache/testdata"
- DOCKER_DIR="$HOME/.cache/docker"
- secure: tLyIDfETpHCDRyEqF2ROM8ue+D+fl/IeOdFBY/Mov7zhAHpgBdQQJi+HQ1/RK+G7DDsnM/FIjvCcf4etphmBHK3xs8vDM1oPntYs+3iE2AbTcVGglHYoX1++H76xPt3eXyf1S0frgVg6qYCNmuP0chhDUkYXPydcKvq1ANjfTQU= # BUILD_TRIGGER_URL

cache:
pip: true
directories:
- $DCMTK_VERSION
- $DCMTK_DB_DIR
- $TESTDATA_DIR
- $ORTHANC_VERSION
- $DOCKER_DIR

addons:
apt:
packages:
- uuid-dev

before_install:
- ln -s bin $VIRTUAL_ENV/sbin

install:
- pip install .
- pip install -r test/requirements.txt
- ./test/install_deps.sh
install: true

script:
- ./test/lint.sh && ./test/test.sh
- test -f "$DOCKER_DIR/image.tar" && sudo docker load -i "$DOCKER_DIR/image.tar" || true
- docker build -t my_image .
- docker save -o "$DOCKER_DIR/image.tar" $(docker history -q my_image | grep -v '<missing>')
- mkdir -p "$TESTDATA_DIR"
- curl -L https://github.com/scitran/testdata/archive/master.tar.gz | tar xz -C "$TESTDATA_DIR" --strip-components 1
- ./docker/test.sh --testdata "$TESTDATA_DIR"

after_success:
- if [ "$TRAVIS_TAG" ]; then
Expand Down
3 changes: 2 additions & 1 deletion bin/dicom_sniper
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ auth_group.add_argument('--key', help='user API key')
args = arg_parser.parse_args(sys.argv[1:] or ['--help'])
args.query = dict(args.query)


args.timezone = reaper.util.validate_timezone(args.timezone)
if args.timezone is None:
log.error('invalid timezone')
Expand All @@ -60,7 +61,7 @@ matched_series = {}
for study in scu_studies:
scu_series = scu_.find(reaper.scu.SeriesQuery(**reaper.scu.SCUQuery(StudyInstanceUID=study.StudyInstanceUID)))
for series in scu_series:
if series.NumberOfSeriesRelatedInstances is None:
if not series.NumberOfSeriesRelatedInstances:
scu_images = scu_.find(reaper.scu.ImageQuery(**reaper.scu.SCUQuery(SeriesInstanceUID=series.SeriesInstanceUID)))
series.NumberOfSeriesRelatedInstances = len(scu_images)
matched_series[series.SeriesInstanceUID] = {
Expand Down
20 changes: 20 additions & 0 deletions docker/Dockerfile-orthanc
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#
# Image used for hosting .
#
# Example usage is in README.md
#

FROM ubuntu:16.04


# Install pre-requisites
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates curl \
dcmtk \
orthanc \
&& rm -rf /var/lib/apt/lists/*

COPY orthanc-config.json /etc/orthanc/orthanc-reaper-config.json

ENTRYPOINT ["Orthanc", "/etc/orthanc/orthanc-reaper-config.json"]
7 changes: 7 additions & 0 deletions docker/orthanc-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"UnknownSopClassAccepted" : true,
"RemoteAccessAllowed" : true,
"DicomModalities" : {
"reaper" : [ "REAPER", "reaper-test", 5104]
}
}
130 changes: 130 additions & 0 deletions docker/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
#!/usr/bin/env bash

set -e

unset CDPATH
cd "$( dirname "${BASH_SOURCE[0]}" )/.."

function usage() {
cat >&2 <<EOF
Run scitran-reaper tests

Usage:
$0 [OPTION...] [-- TEST_ARGS...]

Options:
-B, --no-build Skip Docker Builds
-h, --help Print this help and exit
--testdata path Path to testdata.
-- TEST_ARGS Arguments passed to test/bin/test.sh

EOF
}

function main() {
local DOCKER_BUILD=true
local TEST_ARGS=
local TESTDATA_DIR=

while [[ "$#" > 0 ]]; do
case "$1" in
-B|--no-build) DOCKER_BUILD=false; ;;
-h|--help) usage; exit 0 ;;
--testdata)
TESTDATA_DIR="$2";
if [ ! "$(ls -A $TESTDATA_DIR)" ] ; then
>&2 echo "ERROR: --testdata must exist and not be empty."
exit 1
fi
shift
;;
--) TEST_ARGS="${@:2}"; break;;
*) echo "Invalid argument: $1" >&2; usage; exit 1 ;;
esac
shift
done

if $DOCKER_BUILD ; then
# build this repo
docker build -t reaper-test .

# build dependencies
docker build -t orthanc-test -f docker/Dockerfile-orthanc docker/
fi

#Spin up dependencies
docker network create reaper-test


# Orthanc
# calledAE = ORTHANC 4242
# REST port = 8042
docker run -d --name orthanc-test --network reaper-test orthanc-test


# scitran-core
docker run -d --name scitran-core-mongo --network reaper-test mongo
docker run -d --name scitran-core \
--network reaper-test \
-e "SCITRAN_PERSISTENT_DB_URI=mongodb://scitran-core-mongo:27017/scitran" \
-e "SCITRAN_PERSISTENT_DB_LOG_URI=mongodb://scitran-core-mongo:27017/logs" \
-e "SCITRAN_CORE_DRONE_SECRET=secret" \
scitran/core


# Fetch test data
if [ -z ${TESTDATA_DIR} ]; then
TESTDATA_DIR="./testdata"
mkdir -p $TESTDATA_DIR
if [ ! "$(ls -A $TESTDATA_DIR)" ]; then
curl -L https://github.com/scitran/testdata/archive/master.tar.gz | tar xz -C "$TESTDATA_DIR" --strip-components 1
fi
fi

# Make sure testdata path is absolute. Could be either absolute or relative.
TESTDATA_DIR="$(cd "$(dirname "$TESTDATA_DIR")" && pwd)/$(basename "$TESTDATA_DIR")"

set +e
docker run -it \
--rm \
--name reaper-test \
--network reaper-test \
-v "$TESTDATA_DIR:/testdata" \
-v "$(pwd)/bin:/src/reaper/bin" \
-v "$(pwd)/reaper:/src/reaper/reaper" \
-v "$(pwd)/tests:/src/reaper/tests" \
reaper-test \
/src/reaper/tests/bin/test.sh \
--testdata /testdata \
--core-url http://scitran-core:8080 \
--core-secret secret \
--dicom-scp-host orthanc-test \
--dicom-scp-port 4242 \
--dicom-scp-aet ORTHANC \
--orthanc http://orthanc-test:8042 \
$TEST_ARGS

TEST_RESULT_CODE=$?
>&2 echo
>&2 echo "INFO: Test return code = $TEST_RESULT_CODE"
if [ "${TEST_RESULT_CODE}" != "0" ] ; then
>&2 echo "INFO: Printing container logs..."
docker logs scitran-core-mongo
docker logs scitran-core
docker logs orthanc-test
>&2 echo
>&2 echo "ERROR: Test return code = $TEST_RESULT_CODE. Container logs printed above."
fi
}

clean_up () {(
set +e
# Spin down dependencies
docker rm -f -v scitran-core-mongo
docker rm -f -v scitran-core
docker rm -f -v orthanc-test
docker network rm reaper-test
)}
trap clean_up EXIT

main "$@"
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
'pydicom',
'python-dateutil',
'pytz',
'requests',
'requests<2.16',
'requests_toolbelt',
'tzlocal',
]
Expand Down
32 changes: 0 additions & 32 deletions test/install_deps.sh

This file was deleted.

91 changes: 0 additions & 91 deletions test/test.sh

This file was deleted.

6 changes: 0 additions & 6 deletions test/upload_receiver.wsgi

This file was deleted.

Loading