Skip to content

Commit

Permalink
apache#13624 clojure nightly tests
Browse files Browse the repository at this point in the history
  • Loading branch information
hellonico committed Jan 21, 2019
1 parent e8a2b8b commit 6507124
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 17 deletions.
8 changes: 8 additions & 0 deletions ci/docker/runtime_functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -868,6 +868,14 @@ unittest_ubuntu_cpu_clojure() {
./contrib/clojure-package/ci-test.sh
}

unittest_ubuntu_cpu_clojure_integration() {
set -ex
make scalapkg USE_OPENCV=1 USE_BLAS=openblas USE_DIST_KVSTORE=1 ENABLE_TESTCOVERAGE=1
make scalainstall USE_OPENCV=1 USE_BLAS=openblas USE_DIST_KVSTORE=1 ENABLE_TESTCOVERAGE=1
./contrib/clojure-package/integration-tests.sh
}


unittest_ubuntu_cpugpu_perl() {
set -ex
./perl-package/test.sh
Expand Down
13 changes: 13 additions & 0 deletions ci/jenkins/Jenkins_steps.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -887,6 +887,19 @@ def test_unix_clojure_cpu() {
}]
}

def test_unix_clojure_integration_cpu() {
return ['Clojure: CPU Integration': {
node(NODE_LINUX_CPU) {
ws('workspace/ut-clojure-integration-cpu') {
timeout(time: max_time, unit: 'MINUTES') {
utils.unpack_and_init('cpu', mx_lib, true)
utils.docker_run('ubuntu_cpu', 'unittest_ubuntu_cpu_clojure_integration', false)
}
}
}
}]
}

def test_unix_r_cpu() {
return ['Perl: CPU': {
node(NODE_LINUX_CPU) {
Expand Down
1 change: 1 addition & 0 deletions ci/jenkins/Jenkinsfile_unix_cpu
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ core_logic: {
custom_steps.test_unix_scala_cpu(),
custom_steps.test_unix_scala_mkldnn_cpu(),
custom_steps.test_unix_clojure_cpu(),
custom_steps.test_unix_clojure_integration_cpu(),
custom_steps.test_unix_r_cpu(),
custom_steps.test_unix_julia07_cpu(),
custom_steps.test_unix_julia10_cpu(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,17 +78,25 @@

(defn detect-single-image
"Detect objects in a single image and print top-5 predictions"
[detector input-image output-dir]
([detector input-dir] (detect-single-image detector input-dir "results"))
([detector input-image output-dir]
(.mkdir (io/file output-dir))
(let [image (infer/load-image-from-file input-image)
topk 5]
topk 5
res (infer/detect-objects detector image topk)
]
(process-results
[input-image]
(infer/detect-objects detector image topk)
output-dir)))
res
output-dir)
(first res)
)))

(defn detect-images-in-dir
"Detect objects in all jpg images in the directory"
[detector input-dir output-dir]
([detector input-dir] (detect-images-in-dir detector input-dir "results"))
([detector input-dir output-dir]
(.mkdir (io/file output-dir))
(let [batch-size 20
image-file-batches (->> input-dir
io/file
Expand All @@ -97,13 +105,16 @@
(filter #(re-matches #".*\.jpg$" (.getPath %)))
(mapv #(.getPath %))
(partition-all batch-size))]
(doall
(apply concat
(for [image-files image-file-batches]
(let [image-batch (infer/load-image-paths image-files) topk 5]
(let [image-batch (infer/load-image-paths image-files)
topk 5
res (infer/detect-objects-batch detector image-batch topk) ]
(process-results
image-files
(infer/detect-objects-batch detector image-batch topk)
output-dir))))))
res
output-dir)
res))))))

(defn run-detector
"Runs an image detector based on options provided"
Expand All @@ -119,7 +130,7 @@
detector (infer/create-object-detector
factory
{:contexts [(context/default-context)]})]
(println "Output results to:" output-dir ":" (.mkdir (io/file output-dir)))
(println "Output results to:" output-dir ":")
(println "Object detection on a single image")
(detect-single-image detector input-image output-dir)
(println "Object detection on images in a directory")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
(let [detector (create-detector)
predictions (detect-single-image detector image-file)
{:keys [class prob x-min x-max y-min y-max] :as pred} (first predictions)]
(clojure.pprint/pprint predictions)
(is (some? predictions))
(is (= 5 (count predictions)))
(is (string? class))
Expand All @@ -55,11 +56,13 @@
(deftest test-batch-detection
(let [detector (create-detector)
batch-predictions (detect-images-in-dir detector image-dir)
_ (clojure.pprint/pprint batch-predictions)
predictions (first batch-predictions)
{:keys [class prob x-min x-max y-min y-max] :as pred} (first predictions)]
(is (some? batch-predictions))
(is (= 5 (count predictions)))
(is (string? class))
(is (< 0.8 prob))
(println [x-min x-max y-min y-max])
(every? #(< 0 % 1) [x-min x-max y-min y-max])
(is (= #{"dog" "person" "bicycle" "car"} (set (mapv :class predictions))))))
18 changes: 11 additions & 7 deletions contrib/clojure-package/integration-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,15 @@

set -evx

MXNET_HOME=$(cd "$(dirname $0)/../.."; pwd)
MXNET_HOME=${PWD}
cd ${MXNET_HOME}/contrib/clojure-package
# first build the package and install it
lein install

# then run through the examples
EXAMPLES_HOME=${MXNET_HOME}/contrib/clojure-package/examples
#cd ${MXNET_HOME}/contrib/clojure-package
#lein test
#lein cloverage --codecov
for test_dir in `find ${EXAMPLES_HOME} -name test` ; do
cd ${test_dir} && lein test
done
# use AWK pattern for blacklisting
TEST_CASES=`find ${EXAMPLES_HOME} -name test | awk '!/dontselect1|dontselect2/'`
for i in $TEST_CASES ; do
cd ${i} && lein test
done
8 changes: 8 additions & 0 deletions tests/nightly/JenkinsfileForBinaries
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,14 @@ core_logic: {
utils.docker_run('ubuntu_nightly_gpu', 'nightly_tutorial_test_ubuntu_python3_gpu', true)
}
}
},
'Clojure Nightly: CPU': {
node(NODE_LINUX_GPU) {
ws('workspace/clojure') {
utils.unpack_and_init('gpu', mx_lib)
utils.docker_run('ubuntu_nightly_gpu', 'unittest_ubuntu_cpu_clojure_integration', false)
}
}
}
}
}
Expand Down

0 comments on commit 6507124

Please sign in to comment.