From 8a094bb0481a9c53646cc15db2e8acecafc3d10c Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 23 Aug 2018 22:29:35 +0300 Subject: Add basic support for CI request handling --- tests/ci/buildfile | 16 +++++++++ tests/ci/ci-dir.test | 77 ++++++++++++++++++++++++++++++++++++++++++++ tests/ci/data.test | 39 ++++++++++++++++++++++ tests/submit/buildfile | 2 ++ tests/submit/submit-dir.test | 12 +++---- 5 files changed, 140 insertions(+), 6 deletions(-) create mode 100644 tests/ci/buildfile create mode 100644 tests/ci/ci-dir.test create mode 100644 tests/ci/data.test (limited to 'tests') diff --git a/tests/ci/buildfile b/tests/ci/buildfile new file mode 100644 index 0000000..b1c3146 --- /dev/null +++ b/tests/ci/buildfile @@ -0,0 +1,16 @@ +# file : tests/ci/buildfile +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +define common: file +common{*}: extension = test + +dir = ../../brep/handler/ci/ + +include $dir + +commons = data + +./: test{* -{$commons}} common{$commons} $dir/exe{brep-ci-dir} + +test{ci-dir}@./: test = $out_base/$dir/brep-ci-dir diff --git a/tests/ci/ci-dir.test b/tests/ci/ci-dir.test new file mode 100644 index 0000000..5b9e8c8 --- /dev/null +++ b/tests/ci/ci-dir.test @@ -0,0 +1,77 @@ +# file : tests/ci/ci-dir.test +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +.include data.test + +: args +{ + : none + : + $* 2>>~%EOE% != 0 + %\[.+\] \[brep:error\] \[ref \] \[brep-ci-dir\]: usage: .+brep-ci-dir % + EOE + + : not-exist + : + $* $~/dir 2>>~%EOE% != 0 + %\[.+\] \[brep:error\] \[ref dir\] \[brep-ci-dir\]: '.+dir' does not exist or is not a directory% + EOE +} + +: success +: +{ + test.arguments += $data_dir + + : simulate + : + { + $clone_root_data; + + echo "simulate: success" >+$data_dir/request.manifest; + + $* >>"EOO"; + : 1 + status: 200 + message: CI request is queued + reference: $request_id + EOO + + test -d $data_dir != 0 + } + + : for-real + : + { + $clone_root_data_clean; + + $* >>"EOO" + : 1 + status: 200 + message: CI request is queued + reference: $request_id + EOO + } +} + +: failure +: +{ + test.arguments += $data_dir + + : bad-simulate + : + { + $clone_root_data_clean; + + echo "simulate: fly" >+$data_dir/request.manifest; + + $* >>"EOO" + : 1 + status: 400 + message: unrecognized simulation outcome 'fly' + reference: $request_id + EOO + } +} diff --git a/tests/ci/data.test b/tests/ci/data.test new file mode 100644 index 0000000..c30a691 --- /dev/null +++ b/tests/ci/data.test @@ -0,0 +1,39 @@ +# file : tests/ci/data.test +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +# Pre-created CI request submission data directory that will be copied by +# subsequent tests and scope setup commands. The common approach will be that +# group scopes copy and modify the parent scope submission directory as +# required by the nested tests and scopes. Tests will also clone the parent +# scope submission data directory to optionally modify it, use and cleanup at +# the end. Note that configuration can not be shared between multiple +# submission handler processes. Also we need to make sure that submission data +# directories are not cloned while being used by submission handler scripts. +# +request_id = 4cfa00ec-8459-4f4f-9ef0-8883ddcc4f5b +data_dir = $request_id/ + ++mkdir $data_dir + ++cat <<"EOI" >=$data_dir/request.manifest + : 1 + id: $request_id + repository: https://example.com/hello.git#master + package: foo + package: bar/1.0 + timestamp: 2018-08-24T18:08:01Z + EOI + +root_data_dir = $~/$data_dir + +# The most commonly used submission data directory cloning command that copies +# it from the parent scope working directory. +# +clone_data = cp --no-cleanup -r ../$data_dir ./ +clone_data_clean = cp --no-cleanup -r ../$data_dir ./ &$data_dir/*** + +# Clones the original submission data directory. +# +clone_root_data = cp --no-cleanup -r $root_data_dir ./ +clone_root_data_clean = cp --no-cleanup -r $root_data_dir ./ &$data_dir/*** diff --git a/tests/submit/buildfile b/tests/submit/buildfile index 46e38ad..32bb44e 100644 --- a/tests/submit/buildfile +++ b/tests/submit/buildfile @@ -7,6 +7,8 @@ common{*}: extension = test dir = ../../brep/handler/submit/ +include $dir + commons = data ./: test{* -{$commons}} common{$commons} {*/ -test/}{**} \ diff --git a/tests/submit/submit-dir.test b/tests/submit/submit-dir.test index 7fa7341..055449a 100644 --- a/tests/submit/submit-dir.test +++ b/tests/submit/submit-dir.test @@ -22,14 +22,14 @@ : success : { - test.arguments += $checksum + test.arguments += $data_dir : simulate : { $clone_root_data; - echo "simulate: success" >+$checksum/request.manifest; + echo "simulate: success" >+$data_dir/request.manifest; $* >>"EOO"; : 1 @@ -38,7 +38,7 @@ reference: $checksum EOO - test -d $checksum != 0 + test -d $data_dir != 0 } : for-real @@ -58,14 +58,14 @@ : failure : { - test.arguments += $checksum + test.arguments += $data_dir : bad-archive : { $clone_root_data_clean; - echo "junk" >=$checksum/libhello-0.1.0.tar.gz; + echo "junk" >=$data_dir/libhello-0.1.0.tar.gz; $* >>"EOO" : 1 @@ -80,7 +80,7 @@ { $clone_root_data_clean; - echo "simulate: fly" >+$checksum/request.manifest; + echo "simulate: fly" >+$data_dir/request.manifest; $* >>"EOO" : 1 -- cgit v1.1